Timing Marigolds - Floriculture at Michigan State University
State Machine & Timing Design
-
Upload
raymond-rosario -
Category
Documents
-
view
100 -
download
0
description
Transcript of State Machine & Timing Design
1
State Machine & Timing Design
모바일컴퓨터특강 2
강의 내용
Finite State Machine(FSM) Mealy Machine Moore Machine
FSM in VHDL More VHDL codes for FSMs Techniques for simple sequential logic design
모바일컴퓨터특강 3
Finite State Machines (FSMs)
Any circuit with memory is a finite state machine (FSM: 유한 상태 기계 ) Even computers can be viewed as huge FSMs
Design of FSMs involves Defining states Defining transitions between states Optimization / minimization
Manual optimization/minimization is practical for small FSMs only
모바일컴퓨터특강 4
Moore FSM
Output is a function of a present state only
Present Stateregister
Next Statefunction
Outputfunction
Inputs
Present StateNext State
Outputs
clockreset
모바일컴퓨터특강 5
Moore Machine
state 1 /output 1
state 2 /output 2
transitioncondition 1
transitioncondition 2
모바일컴퓨터특강 6
Mealy FSM
Output is a function of a present state and inputs
Next Statefunction
Outputfunction
Inputs
Present StateNext State
Outputs
Present Stateregister
clockreset
모바일컴퓨터특강 7
Mealy Machine
state 1 state 2
transition condition 1 /output 1
transition condition 2 /output 2
모바일컴퓨터특강 8
Moore vs. Mealy FSM (1)
Moore and Mealy FSMs can be functionally equivalent Equivalent Mealy FSM can be derived from Moore FSM and
vice versa Mealy FSM has richer description and usually require
s smaller number of states Smaller circuit area
모바일컴퓨터특강 9
Moore vs. Mealy FSM (2)
Mealy FSM computes outputs as soon as inputs change Mealy FSM responds one clock cycle sooner than
equivalent Moore FSM Moore FSM has no combinational path
between inputs and outputs Moore FSM is more likely to have a shorter critical
path
모바일컴퓨터특강 10
Moore FSM - Example 1
Moore FSM that recognizes sequence “10”
S0 / 0 S1 / 0 S2 / 1
00
0
1
11
reset
Meaning of states:
S0: No elements of the sequenceobserved
S1: “1”observed
S2: “10”observed
모바일컴퓨터특강 11
Mealy FSM - Example 1
Mealy FSM that recognizes sequence “10”
S0 S1
0 / 0 1 / 0 1 / 0
0 / 1reset
Meaning of states:
S0: No elements of the sequenceobserved
S1: “1”observed
모바일컴퓨터특강 12
Moore & Mealy FSMs – Example 1
clock
input
Moore
Mealy
0 1 0 0 0
S0 S1 S2 S0 S0
S0 S1 S0 S0 S0
모바일컴퓨터특강 13
FSMs in VHDL
Finite state machines can be easily described with processes
Synthesis tools understand FSM description if certain rules are followed State transitions should be described in a process
sensitive to clock and asynchronous reset signals only
Outputs described as concurrent statements outside the process
모바일컴퓨터특강 14
State Machine - Mealy Machine
Mealy Machine 현재의 상태 (Current State) 와 현재의 입력 (Inputs) 에 의해
출력이 결정됨
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
모바일컴퓨터특강 15
해석
1. WindowAct 신호가 0 에서 1 로 변하면 S1 state 으로 전환 , 이 때 output RiseShot 을 1 로 ,
2. WindowAct 신호가 1 에서 0 으로 변하면 S0 state 으로 전환 , FallShot을 1 로 만들어야 함 .
3. State 전환이 없으면 output 들은 모두 0
해석
1. WindowAct 신호가 0 에서 1 로 변하면 S1 state 으로 전환 , 이 때 output RiseShot 을 1 로 ,
2. WindowAct 신호가 1 에서 0 으로 변하면 S0 state 으로 전환 , FallShot을 1 로 만들어야 함 .
3. State 전환이 없으면 output 들은 모두 0
S0
S1
0/00
1/00
0/01 1/10
WindowAct / RiseShot, FallShot
입력 / 출력 1, 출력2
Reset
Mealy FSM 의 해석 – State diagram
모바일컴퓨터특강 16
Mealy Machine 구현 – Process 2 개사용
Library ieee; Use ieee.std_logic_1164.all;
ENTITY RiseFallShot IS
PORT( clk : IN STD_LOGIC;
reset : IN STD_LOGIC;
WindowAct : IN STD_LOGIC;
RiseShot, FallShot : OUT STD_LOGIC);
END RiseFallShot;ARCHITECTURE a OF RiseFallShot IS
TYPE STATE_TYPE IS (s0, s1);SIGNAL state: STATE_TYPE;
BEGINPROCESS (clk, reset)BEGIN IF reset = '0' THEN state <= s0; ELSIF clk'EVENT AND clk = '1' THEN CASE state IS
WHEN s0 => IF WindowAct='1' THEN
state <= s1; ELSE
state <= s0; END IF;
WHEN others => IF WindowAct='0' THEN
state <= s0; ELSE
state <= s1; END IF;END CASE;
END IF;END PROCESS;
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
같은 부분같은 부분
새로운 Data type
“STATE_TYPE” 지정
새로운 Data type
“STATE_TYPE” 지정
모바일컴퓨터특강 17
Mealy Machine 구현 – Process 2 개 사용
PROCESS(state, WindowAct)
BEGIN
if( state= s0 and WindowAct='1') then
RiseShot <='1';
else
RiseShot <='0';
end if;
if( state= s1 and WindowAct='0') then
FallShot <='1';
else
FallShot <='0';
end if;
END PROCESS;
END a;
Combinational
Logic F/F
Outputs
Current State
Combinational
Logic
Next State
Inputs
같은 부분같은 부분
모바일컴퓨터특강 18
Mealy Machine 구현 – Process 3 개 사용
library ieee;Use ieee.std_logic_1164.all;ENTITY RiseFallShot_v2 IS
PORT(clk : IN STD_LOGIC;reset : IN STD_LOGIC;WindowAct : IN STD_LOGIC;RiseShot, FallShot : OUT STD_LOGIC);
END RiseFallShot_v2;
ARCHITECTURE a OF RiseFallShot_v2 ISTYPE STATE_TYPE IS (s0, s1);SIGNAL State, NextState: STATE_TYPE;
BEGINPROCESS (State, WindowAct)BEGIN
CASE State ISWHEN s0 =>
IF WindowAct='1' THENNextState <= s1;
ELSENextState <= s0;
END IF;WHEN others =>
IF WindowAct='0' THENNextState <= s0;
ELSENextState <= s1;
END IF;END CASE;
END PROCESS;
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
같은 부분같은 부분
모바일컴퓨터특강 19
Mealy Machine 구현– Process 3 개 사용
PROCESS(reset,clk)BEGIN
IF reset = '0' THENState <= s0;
ELSIF clk'EVENT AND clk = '1' THENState <= NextState;
END IF;END PROCESS;
process(State,WindowAct) begin if( State= s0 and WindowAct='1') then RiseShot <='1'; else RiseShot <='0'; end if; if( State= s1 and WindowAct='0') then FallShot <='1'; else FallShot <='0'; end if; end process;
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
같은 부분같은 부분
같은 부분같은 부분
모바일컴퓨터특강 20
State Machine - Moore Machine
Moore Machine 현재의 상태 (Current State) 만에 의해 출력 (Outputs) 이
결정됨 “Moore is less”
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
모바일컴퓨터특강 21
Moore Machine 해석– State diagram
상태출력
입력 : WindowAct 출력 : y(2:0)
해석
1. WindowAct 신호가 0 일 때는 State 의 변화가 없으며 , 1 일 때는 state 의 변화가 S0->S1->S2->S0 로 순환한다 .
2. 출력신호 y(2:0) 은 상태가 S0 인 경우 “ 000” 을 S1 인 경우에는 “ 010” 을 S2 인 경우에는 “ 101” 을 출력한다 .
해석
1. WindowAct 신호가 0 일 때는 State 의 변화가 없으며 , 1 일 때는 state 의 변화가 S0->S1->S2->S0 로 순환한다 .
2. 출력신호 y(2:0) 은 상태가 S0 인 경우 “ 000” 을 S1 인 경우에는 “ 010” 을 S2 인 경우에는 “ 101” 을 출력한다 .
S0000
S1010
0
01
1
S2101
1
Reset
모바일컴퓨터특강 22
Moore Machine 구현– Process 2 개 사용
Library ieee; Use ieee.std_logic_1164.all;
ENTITY MooreMachine ISPORT( clk, reset, WindowAct : IN STD_LOGIC;
y : OUT STD_LOGIC_vector(2 downto 0));END MooreMachine;
ARCHITECTURE a OF MooreMachine ISTYPE STATE_TYPE IS (s0, s1,s2);SIGNAL state: STATE_TYPE;
BEGINPROCESS (clk, reset)BEGIN IF reset = '0' THEN state <= s0; ELSIF clk'EVENT AND clk = '1' THEN CASE state IS
WHEN s0 => IF WindowAct='1' THEN state <= s1;
ELSE state <= s0; END IF;
WHEN s1 => IF WindowAct='1' THEN state <= s2;
ELSE state <= s1; END IF;
WHEN others => IF WindowAct='1' THEN state <= s0;
ELSE state <= s2; END IF;
END CASE; END IF;END PROCESS;
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
같은 부분같은 부분
모바일컴퓨터특강 23
Moore Machine 구현– Process 2 개 사용
PROCESS(state)BEGIN
CASE state ISWHEN s0 =>
y <= "000";WHEN s1 =>
y <= "010";WHEN others =>
y <= "101"; END CASE;END PROCESS;END a;
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
같은 부분같은 부분
모바일컴퓨터특강 24
Moore Machine 구현– Process 3 개 사용
Library ieee; Use ieee.std_logic_1164.all;
ENTITY MooreMachine_v3 ISPORT( clk, reset, WindowAct : IN STD_LOGIC;
y : OUT STD_LOGIC_vector(2 downto 0));END MooreMachine_v3;
ARCHITECTURE a OF MooreMachine_v3 ISTYPE STATE_TYPE IS (s0, s1,s2);SIGNAL state, NextState: STATE_TYPE;
BEGINPROCESS ( State, WindowAct)BEGIN
CASE State ISWHEN s0 =>
IF WindowAct='1' THEN NextState <= s1;ELSE NextState <= s0;
END IF;WHEN s1 =>
IF WindowAct='1' THEN NextState <= s2;ELSE NextState <= s1;
END IF;WHEN others =>
IF WindowAct='1' THEN NextState <= s0;ELSE NextState <= s2;
END IF;END CASE;
END PROCESS;
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
같은 부분같은 부분
모바일컴퓨터특강 25
Moore Machine 구현– Process 3 개 사용
PROCESS (clk, reset)BEGIN IF reset = '0' THEN state <= s0; ELSIF clk'EVENT AND clk = '1' THEN
state <= NextState; END IF;END PROCESS;
PROCESS(state)BEGIN
CASE state ISWHEN s0 =>
y <= "000";WHEN s1 =>
y <= "010";WHEN others =>
y <= "101"; END CASE;END PROCESS;END a;
Combinational
Logic F/FInputs
Outputs
Current State
Combinational
Logic
Next State
같은 부분같은 부분
같은 부분같은 부분
모바일컴퓨터특강 26
Moore FSM
Present StateRegister
Next Statefunction
Outputfunction
Inputs
Present State
Next State
Outputs
clockreset
process(clock, reset)
concurrent statements
모바일컴퓨터특강 27
Mealy FSM
Next Statefunction
Outputfunction
Inputs
Present StateNext State
Outputs
Present StateRegister
clockreset
process(clock, reset)
concurrent statements
모바일컴퓨터특강 28
Moore FSM - Example 1
Moore FSM that Recognizes Sequence “10”
S0 / 0 S1 / 0 S2 / 1
00
0
1
11
reset
모바일컴퓨터특강 29
TYPE state IS (S0, S1, S2);SIGNAL Moore_state: state;
U_Moore: PROCESS (clock, reset)BEGIN
IF(reset = ‘1’) THENMoore_state <= S0;
ELSIF (clock = ‘1’ AND clock’event) THENCASE Moore_state IS
WHEN S0 => IF input = ‘1’ THEN
Moore_state <= S1; ELSE Moore_state <= S0; END IF;
Moore FSM in VHDL (1)
모바일컴퓨터특강 30
Moore FSM in VHDL (2)
WHEN S1 => IF input = ‘0’ THEN
Moore_state <= S2; ELSE Moore_state <= S1; END IF;
WHEN S2 => IF input = ‘0’ THEN
Moore_state <= S0; ELSE
Moore_state <= S1; END IF;
END CASE;END IF;
END PROCESS;
Output <= ‘1’ WHEN Moore_state = S2 ELSE ‘0’;
모바일컴퓨터특강 31
Mealy FSM - Example 1
Mealy FSM that Recognizes Sequence “10”
S0 S1
0 / 0 1 / 0 1 / 0
0 / 1reset
모바일컴퓨터특강 32
Mealy FSM in VHDL (1)
TYPE state IS (S0, S1);SIGNAL Mealy_state: state;
U_Mealy: PROCESS(clock, reset)BEGIN
IF(reset = ‘1’) THENMealy_state <= S0;
ELSIF (clock = ‘1’ AND clock’event) THENCASE Mealy_state IS
WHEN S0 => IF input = ‘1’ THEN
Mealy_state <= S1; ELSE Mealy_state <= S0; END IF;
모바일컴퓨터특강 33
Mealy FSM in VHDL (2)
WHEN S1 => IF input = ‘0’ THEN
Mealy_state <= S0; ELSE Mealy_state <= S1; END IF;
END CASE;END IF;
END PROCESS;
Output <= ‘1’ WHEN (Mealy_state = S1 AND input = ‘0’) ELSE ‘0’;
모바일컴퓨터특강 34
C z 1 =
resetn
B z 0 = A z 0 = w 0 =
w 1 =
w 1 =
w 0 =
w 0 = w 1 =
Moore FSM – Example 2: State diagram
모바일컴퓨터특강 35
Present Next state Outputstate w = 0 w = 1 z
A A B 0 B A C 0 C A C 1
Moore FSM – Example 2: State table
모바일컴퓨터특강 36
Moore FSM with 2’s Processes
Present StateRegister
Next Statefunction
Outputfunction
Input: w
Present State: y
Next State
Output: z
clockresetn
process(clock, reset)
concurrent statements
모바일컴퓨터특강 37
USE ieee.std_logic_1164.all ;
ENTITY simple ISPORT ( clock : IN STD_LOGIC ;
resetn : IN STD_LOGIC ; w : IN STD_LOGIC ;
z : OUT STD_LOGIC ) ;END simple ;
ARCHITECTURE Behavior OF simple ISTYPE State_type IS (A, B, C) ;SIGNAL y : State_type ;
BEGINPROCESS ( resetn, clock )BEGIN
IF resetn = '0' THENy <= A ;
ELSIF (Clock'EVENT AND Clock = '1') THEN
Moore FSM – Example 2: VHDL code
(1)
모바일컴퓨터특강 38
CASE y ISWHEN A =>
IF w = '0' THEN y <= A ;
ELSE y <= B ;
END IF ;WHEN B =>
IF w = '0' THENy <= A ;
ELSEy <= C ;
END IF ;WHEN C =>
IF w = '0' THENy <= A ;
ELSEy <= C ;
END IF ;END CASE ;
Moore FSM – Example 2: VHDL code
(2)
모바일컴퓨터특강 39
END IF ; END PROCESS ;
z <= '1' WHEN y = C ELSE '0' ;
END Behavior ;
Moore FSM – Example 2: VHDL code
(3)
모바일컴퓨터특강 40
Moore FSM with 3’s Processes
Present StateRegister
Next Statefunction
Outputfunction
Input: w
Present State: y_present
Next State: y_next
Output: z
clockresetn
process(w, y_present)
concurrent statements
process(clock, resetn)
모바일컴퓨터특강 41
ARCHITECTURE Behavior OF simple ISTYPE State_type IS (A, B, C) ;SIGNAL y_present, y_next : State_type ;
BEGINPROCESS ( w, y_present )BEGIN
CASE y_present ISWHEN A =>
IF w = '0' THENy_next <= A ;
ELSEy_next <= B ;
END IF ;WHEN B =>
IF w = '0' THENy_next <= A ;
ELSEy_next <= C ;
END IF ;
Alternative VHDL code (1)
모바일컴퓨터특강 42
WHEN C =>IF w = '0' THEN
y_next <= A ;ELSE
y_next <= C ;END IF ;
END CASE ;END PROCESS ;
PROCESS (clock, resetn)BEGIN
IF resetn = '0' THENy_present <= A ;
ELSIF (clock'EVENT AND clock = '1') THENy_present <= y_next ;
END IF ;END PROCESS ;
z <= '1' WHEN y_present = C ELSE '0' ;END Behavior ;
Alternative VHDL code (2)
모바일컴퓨터특강 43
A
w 0 = z 0 = /
w 1 = z 1 = / B w 0 = z 0 = /
resetn w 1 = z 0 = /
Mealy FSM – Example 2: State diagram
모바일컴퓨터특강 44
Present Next state Outputz
state w = 0 w = 1 w = 0 w = 1
A A B 0 0 B A B 0 1
Mealy FSM – Example 2: State table
모바일컴퓨터특강 45
Mealy FSM with 2’s Processes
Next Statefunction
Outputfunction
Input: w
Present State: yNext State
Output: z
Present StateRegister
clockresetn
process(clock, reset)
concurrent statements
모바일컴퓨터특강 46
LIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY Mealy ISPORT ( clock : IN STD_LOGIC ;
resetn : IN STD_LOGIC ; w : IN STD_LOGIC ;
z : OUT STD_LOGIC ) ;END Mealy ;
ARCHITECTURE Behavior OF Mealy ISTYPE State_type IS (A, B) ;SIGNAL y : State_type ;
BEGINPROCESS ( resetn, clock )BEGIN
IF resetn = '0' THENy <= A ;
ELSIF (clock'EVENT AND clock = '1') THEN
Mealy FSM – Example 2: VHDL code
(1)
모바일컴퓨터특강 47
CASE y IS WHEN A => IF w = '0' THEN
y <= A ;ELSE
y <= B ;END IF ;
WHEN B =>IF w = '0' THEN
y <= A ;ELSE
y <= B ; END IF ;END CASE ;
Mealy FSM – Example 2: VHDL code
(2)
모바일컴퓨터특강 48
END IF ;END PROCESS ;
WITH y SELECTz <= w WHEN B,
z <= ‘0’ WHEN others;
END Behavior ;
Mealy FSM – Example 2: VHDL code
(3)
모바일컴퓨터특강 49
Timing Design - 강의순서
State Machine 응용 Shift Register 응용 Counter 응용
주어진 타이밍도로부터 회로를 설계하는 방법을 다양한 형태의 접근 방법을 통해
습득한다 . 각종 디바이스의 데이터 북상에 나타나는 타이밍 도의 이해를 위한 더욱 심화된
지식을 배양한다 .
주어진 타이밍도로부터 회로를 설계하는 방법을 다양한 형태의 접근 방법을 통해
습득한다 . 각종 디바이스의 데이터 북상에 나타나는 타이밍 도의 이해를 위한 더욱 심화된
지식을 배양한다 .
모바일컴퓨터특강 50
Timing Design – State Machine Application
(1)1. 아래와 같은 Timing 입출력 파형을 갖는 회로를 설계해보자
• 해석 : WindowAct 신호가 0 에서 1 로 변하는 순간부터 다음 clock 의 rising edge 까지 RiseShot 을 1 로 만들고
• WindowAct 신호가 1 에서 0 으로 변하는 순간부터 다음 clock 의 rising edge 까지 FallShot 을 1 로 만들어야 함 .
• 해석 : WindowAct 신호가 0 에서 1 로 변하는 순간부터 다음 clock 의 rising edge 까지 RiseShot 을 1 로 만들고
• WindowAct 신호가 1 에서 0 으로 변하는 순간부터 다음 clock 의 rising edge 까지 FallShot 을 1 로 만들어야 함 .
모바일컴퓨터특강 51
S0
S1
0/00
1/00
0/01 1/10
2.Excercise: Mealy-machine state diagram 을 완성하라
WindowAct / RiseShot, FallShot
입력 / 출력 1, 출력2
Timing Design – State Machine Application
(2)
모바일컴퓨터특강 52
Timing Design – State Machine
Application (3)
S0
S1
0/00
1/00
0/01 1/10
상태도에서 입력에 따른 상태의 변화만을
기술
상태도에서 입력에 따른 상태의 변화만을
기술
모바일컴퓨터특강 53
Timing Design – State Machine Application
(4)
S0
S1
0/00
1/00
0/01 1/10
상태도에서 입력에 따른 출력의 변화만을 기술
상태도에서 입력에 따른 출력의 변화만을 기술
Note: The outputs react to input asynchronously.
모바일컴퓨터특강 54
Timing Design – State Machine Application
(5) Result
모바일컴퓨터특강 55
Timing Design – State Machine Application
(6)3. 상태도를 이용하지 않는 다른 방법은 ?
Timing 만을 고려한 설계
Q 는 WindowAct 를 D F/F
으로 통과시킨 출력
Q 는 WindowAct 를 D F/F
으로 통과시킨 출력
1 3
24
1,3 에서 RiseShot= WindowAct
and Q’
1,3 에서 RiseShot= WindowAct
and Q’ 2,4 에서
FallShot= WindowAct’ and Q
2,4 에서
FallShot= WindowAct’ and Q
모바일컴퓨터특강 56
Timing Design – State Machine Application
(7)3. Timing 만을 고려한 설계방식 - BDF
Q 는 WindowAct를 D FF 으로 통과시킨 출력
Q 는 WindowAct를 D FF 으로 통과시킨 출력
not Q
WindowAct and Q’
WindowAct and Q’
WindowAct’ and QWindowAct’ and Q
not WindowAct
모바일컴퓨터특강 57
Timing Design – State Machine Application
(8)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity RiseFallShot_time is port( WindowAct : in std_logic; clk,nclr : in std_logic; RiseShot,FallShot : out std_logic);end RiseFallShot_time;architecture a of RiseFallShot_time is
signal q : std_logic;signal RisingShotPules :
std_logic;begin-- shift register 1bits process(nclr,clk) begin
if( nclr='0') thenq <='0';
elsif(clk'event and clk='1') thenq <= WindowAct;
end if; end process;-- rising shot pulse gen. RiseShot <= WindowAct and not q; FallShot <= not WindowAct and q;end a;
같은 회로같은 회로
같은 회로같은 회로
3. Timing 만을 고려한 설계방식 - VHDL
모바일컴퓨터특강 58
Timing Design – Shift Register
Application (1) 아래와 같은 Timing 입출력 파형을 갖는 회로를
설계해보자 . 입력신호 : reset, clk, WindowAct 출력신호 : y0, y1, y2, y3, y4, y5, y6
모바일컴퓨터특강 59
Timing Design – Shift Register
Application (2)
1. 먼저 아래의 회로를 만들어보자 . 입력신호 : reset, clk, WindowAct 출력신호 : y0
어떤 방식으로 설계해야 하는가 ? 1 차적으로 생각할 수 있는 방법은 Shift Register 를 이용하는
방법
모바일컴퓨터특강 60
Timing Design – Shift Register
Application (3)
그림과 같은 Shift Register 를 사용하게 되면 Q0, Q1, Q2 의
타이밍을 예상할 수 있다 .
그림과 같은 Shift Register 를 사용하게 되면 Q0, Q1, Q2 의
타이밍을 예상할 수 있다 .
출력신호 y0 는 Q1가 1 이 되는 부분과 Q2 가 0 이 되는 700-900ns
부분에서 1 이 된다 .
Y0=Q1 and Q2’
출력신호 y0 는 Q1가 1 이 되는 부분과 Q2 가 0 이 되는 700-900ns
부분에서 1 이 된다 .
Y0=Q1 and Q2’
Y0 = Q1 and not Q2
모바일컴퓨터특강 61
Timing Design – Shift Register
Application (4)2. 이번에는 y1 을 만들어보자 .
모바일컴퓨터특강 62
Timing Design – Shift Register
Application (5)
Y0 를 clk 의 falling edge 를 이용하여 shift 하면 반클럭 shift 된 Y1 을 만들 수
있다 .
Y0 를 clk 의 falling edge 를 이용하여 shift 하면 반클럭 shift 된 Y1 을 만들 수
있다 .
모바일컴퓨터특강 63
Timing Design – Shift Register
Application (6)3. 이번에는 y2 를 만들어보자 .
모바일컴퓨터특강 64
Timing Design – Shift Register
Application (7)
Y2 는 Y0 와 Y1 을 OR 한 것임을 알 수
있다 .
Y2 = Y0 or Y1
Y2 는 Y0 와 Y1 을 OR 한 것임을 알 수
있다 .
Y2 = Y0 or Y1
Y2 = Y0 or Y1
모바일컴퓨터특강 65
Timing Design – Shift Register
Application (8)4. 이번에는 y3 을 만들어보자 .
모바일컴퓨터특강 66
Timing Design – Shift Register
Application (9)
Y3 는 11 개의 shift register중에서 Q9 가 1
이면 Q10 이 0 인 구간에 1 이
출력되는 신호 .
Y3 는 11 개의 shift register중에서 Q9 가 1
이면 Q10 이 0 인 구간에 1 이
출력되는 신호 .
11 bits Shift
Register
11 bits Shift
Register
모바일컴퓨터특강 67
Timing Design – Shift Register
Application (10)
Y3 는 11 개의 shift register 중에서 Q10 과
Q9 를 이용한 신호임 .
Y3 = Q9 and Q10’
Y3 는 11 개의 shift register 중에서 Q10 과
Q9 를 이용한 신호임 .
Y3 = Q9 and Q10’
모바일컴퓨터특강 68
Timing Design – Shift Register
Application (11)
5. 이번에는 y4 을 만들어보자 .
모바일컴퓨터특강 69
Timing Design – Shift Register
Application (12)
Y4 는 Y1 와 Y3 을 OR 한
것임을 알 수 있다 .
Y4 = Y1 or Y3
Y4 는 Y1 와 Y3 을 OR 한
것임을 알 수 있다 .
Y4 = Y1 or Y3
모바일컴퓨터특강 70
Timing Design – Shift Register
Application (13)
6. 이번에는 y5 을 만들어보자 .
모바일컴퓨터특강 71
Timing Design – Shift Register
Application (14)
Y5 는 Q2 가 1이며 Q10 이 0인 구간에 1 을
출력 .
Y5 는 Q2 가 1이며 Q10 이 0인 구간에 1 을
출력 .
모바일컴퓨터특강 72
Timing Design – Shift Register
Application (15)7. 이번에는 y6 을 만들어보자 .
모바일컴퓨터특강 73
Timing Design – Shift Register
Application (16)
Y6p 는 Q1 이 1이며 Q9가 0 인
구간에 1을 출력 .
Y6p 는 Q1 이 1이며 Q9가 0 인
구간에 1을 출력 .
Y6 는 Y6p 를 Clk 의 Falling Edge 를 이용하여 반 클럭 밀어준 신호임 .
Y6 는 Y6p 를 Clk 의 Falling Edge 를 이용하여 반 클럭 밀어준 신호임 .
모바일컴퓨터특강 74
Timing Design – Shift Register
Application (17)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shift_app2 is port( clk,nclr,WindowAct : in
std_logic; y : buffer std_logic_vector(0 to
6));end shift_app2;architecture a of shift_app2 is
signal q : std_logic_vector(0 to 10);signal y6p : std_logic;
beginShiftRegster :
process(nclr,clk)begin
if( nclr='0') thenq<="00000000000";
elsif(clk'event and clk='1') then
q(0)<= WindowAct;for i in 0 to 9 loop
q(i+1) <= q(i);
end loop;end if;
end process;
y(0) <= q(1) and not q(2);
동일회로
동일회로
동일회로
동일회로
모바일컴퓨터특강 75
Timing Design – Shift Register
Application (18)process(nclr,clk)begin
if( nclr='0') theny(1)<='0';
elsif(clk'event and clk='0') then
y(1)<=y(0);end if;
end process;
y(2) <= y(0) or y(1); y(3) <= q(9) and not q(10); y(4) <= y(1) or y(3);y(5) <= q(2) and not q(10);
y6p <= q(1) and not q(9); process(nclr,clk)begin
if( nclr='0') theny(6)<='0';
elsif(clk'event and clk='0') then
y(6)<=y6p;end if;
end process;
end a;
동일회로
동일회로
동일회로
동일회로
동일회로
동일회로
모바일컴퓨터특강 76
Timing Design – Result (1)
모바일컴퓨터특강 77
Timing Design – Result (2)
모바일컴퓨터특강 78
Timing Design – Resource Usage
모바일컴퓨터특강 79
Timing Design – Counter Application (1)
아래와 같은 Timing 입출력 파형을 갖는 회로를 Shift Register 가 아닌 다른 방식 (Counter 응용 ) 으로 설계해보자 .
입력신호 : reset, clk, WindowAct 출력신호 : y0, y1, y2, y3, y4, y5, y6
모바일컴퓨터특강 80
Timing Design – Counter Application (2)
1. 입력신호 들로부터 cnt[3..0] 을 만들 수 있는가 ?
모바일컴퓨터특강 81
Timing Design – Counter Application (3)
이 카운터는 WindowAct 가 1 일
때만 증가되며 , WindowAct 가 0 일 때는 0 으로 된다 .
이 카운터는 WindowAct 가 1 일
때만 증가되며 , WindowAct 가 0 일 때는 0 으로 된다 .
process(nclr,clk)
begin
if( nclr='0') then
cnt<="0000";
elsif(clk'event and clk='1') then
if(WindowAct='0') then
cnt<="0000";
else
cnt <= cnt+1;
end if;
end if;
end process;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt_app2 is
port( clk,nclr,WindowAct : in std_logic;
y : buffer std_logic_vector(0 to 6));
end cnt_app2;
architecture a of cnt_app2 is
signal cnt : std_logic_vector(3 downto 0);
begin
Cnt[3..0] 을 사용
Cnt[3..0] 을 사용
Cnt 회로
Cnt 회로
모바일컴퓨터특강 82
Timing Design – Counter Application (4)
2. 입력신호 들과 cnt[3..0] 로 부터 Y0, Y3 을 만들 수 있는가 ?
모바일컴퓨터특강 83
Timing Design – Counter Application (5)
process(cnt)
begin
if( cnt=2) then
y(0)<='1';
else
y(0)<='0';
end if;
end process;
Y0 발생부Y0 발생부Y3 발생부Y3 발생부
process(cnt)begin
if( cnt=10) theny(3)<='1';
elsey(3)<='0';
end if;end process;
모바일컴퓨터특강 84
Timing Design – Counter Application (6)
3. Y1,Y2,Y4 의 발생은 ?
모바일컴퓨터특강 85
Timing Design – Counter Application (7)
process(nclr,clk)begin
if( nclr='0') theny(1)<='0';
elsif(clk'event and clk='0') then
y(1)<=y(0);end if;
end process;
y(2) <= y(0) or y(1); y(4) <= y(1) or y(3);
Y2,Y4발생
부
Y2,Y4발생
부
Y2 는 Y0 와 Y1을 OR 한 것임을
알 수 있다 .
Y2 = Y0 or Y1
Y2 는 Y0 와 Y1을 OR 한 것임을
알 수 있다 .
Y2 = Y0 or Y1
Y0 를 clk 의 falling edge 를
이용하여 시프트하면
반클럭 시프트된 Y1 을 만들 수 있다 .
Y0 를 clk 의 falling edge 를
이용하여 시프트하면
반클럭 시프트된 Y1 을 만들 수 있다 .
Y4 는 Y1 와 Y3을 OR 한 것임을
알 수 있다 .
Y2 = Y0 or Y1
Y4 는 Y1 와 Y3을 OR 한 것임을
알 수 있다 .
Y2 = Y0 or Y1
모바일컴퓨터특강 86
Timing Design – Counter Application (8)
4. Y5,Y6 의 발생은 ?
모바일컴퓨터특강 87
Timing Design – Counter Application (9)
process(nclr,clk)begin
if( nclr='0') theny(5)<='0';
elsif(clk'event and clk='1') thenif(cnt=2) then
y(5)<='1';elsif(cnt=10) then
y(5)<='0';else
y(5)<=y(5);end if;
end if;end process;
Y5 발생부 : Cnt=2일 때 1 로 변하고
Cnt=0 일 때 0 으로 변한다 . Clk 의 risin
g Edge 기준
Y5 발생부 : Cnt=2일 때 1 로 변하고
Cnt=0 일 때 0 으로 변한다 . Clk 의 risin
g Edge 기준
Y6 발생부 : Cnt=2일 때 1 로 변하고
Cnt=0 일 때 0으로 변한다 . Clk의 Falling Edge
기준
Y6 발생부 : Cnt=2일 때 1 로 변하고
Cnt=0 일 때 0으로 변한다 . Clk의 Falling Edge
기준
process(nclr,clk)begin
if( nclr='0') theny(6)<='0';
elsif(clk'event and clk='0') then
if(cnt=2) then
y(6)<='1';elsif(cnt=10)
then
y(6)<='0';else
y(6)<=y(6);end if;
end if;end process;
end a;
모바일컴퓨터특강 88
Timing Design – Result (1)
모바일컴퓨터특강 89
Timing Design – Result (2)
모바일컴퓨터특강 90
Timing Design – Result (3)