Upload
miroslav-solovyov
View
87
Download
0
Embed Size (px)
DESCRIPTION
타이밍 분석 및 설계. Lecture #8. 학습목표. 타이밍 분석 (Timing Analysis) 에서는 기본적인 타이밍 특성인 Propagation Delay, Setup Time, Hold Time 의 개념을 이해 D 플립 플롭 , Shift Register, Counter 그리고 State Machine 의 타이밍 그림을 통해 기본적인 타이밍 특성을 깊이 이해 - PowerPoint PPT Presentation
Citation preview
1
타이밍 분석 및 설계타이밍 분석 및 설계
Lecture #8Lecture #8
모바일컴퓨팅특강 2
학습목표
타이밍 분석 (Timing Analysis) 에서는 기본적인 타이밍 특성인 Propagation Delay, Setup Time, Hold Time 의 개념을 이해
D 플립 플롭 , Shift Register, Counter 그리고 State Machine 의 타이밍 그림을 통해 기본적인 타이밍 특성을 깊이 이해
타이밍 설계 (Timing Design) 에서는 특정한 타이밍 그림이 주어졌을 때 , 주어진 타이밍 그림으로부터 논리회로를 설계하는 방법을 State Machine, Shift Register, Counter 등을 응용하여 설계하는 방식을 습득
다양한 디바이스의 데이터북상에 표현되어있는 타이밍 그림으로부터 디바이스를 제어하기 위한 심화된 지식을 배양
모바일컴퓨팅특강 3
강의순서
타이밍 분석 (Timing Analysis) 타이밍 설계 (Timing Design)
모바일컴퓨팅특강 4
Timing Analysis - 강의순서
D Flipflop 의 Timing Analysis Propagation Delay Setup Time Hold Time
Shift Register 의 Timing Analysis Counter 의 Timing Analysis State Machine 의 Timing Analysis
모바일컴퓨팅특강 5
Timing Analysis – D-F/Flibrary ieee;use ieee.std_logic_1164.all;entity dff_1 is port( d, clk, nclr : in std_logic; q : out std_logic );end dff_1 ;architecture a of dff_1 isbegin
process(nclr,clk)begin if( nclr='0') then
q <='0'; elsif(clk'event and clk='1') then
q <= d; end if;end process;
end a;
D F/F 을 시뮬레이션 해보고 파형으로부터 Propagation Delay, Setup time, Hold time 의
개념을 살펴보자 .
D F/F 을 시뮬레이션 해보고 파형으로부터 Propagation Delay, Setup time, Hold time 의
개념을 살펴보자 .
모바일컴퓨팅특강 6
Timing Analysis - D-F/F
시뮬레이션 결과
시뮬레이션 결과
시뮬레이션 전
시뮬레이션 전
모바일컴퓨팅특강 7
Timing Analysis – Propagation Delay
확대
4ns 4ns
확대
Clk 의 상승 edge 중의 하나인
500ns 에서 보면 입력신호는 1 로
안정되어있다 . 그러므로 출력 q 는
clk 의 1 주기 동안 1 을 출력한다 .
Clk 의 상승 edge 중의 하나인
500ns 에서 보면 입력신호는 1 로
안정되어있다 . 그러므로 출력 q 는
clk 의 1 주기 동안 1 을 출력한다 .
Clk 의 상승 edge 를 기준으로 약 4ns 의 전파지연이 발생함
Clk 의 상승 edge 를 기준으로 약 4ns 의 전파지연이 발생함
Clk 의 상승 edge 를 기준으로 약 4ns 의
전파지연이 발생함
Clk 의 상승 edge 를 기준으로 약 4ns 의
전파지연이 발생함
모바일컴퓨팅특강 8
Timing Analysis – Setup Time(1)
확대
1.1ns
Clk 의 상승 edge 보다
입력신호 d 가 앞서 도달했다고 해도
정해진 시간 (Setup time) 보다 길지 못하면
D 값을 출력으로 내보내지 못함 .
Clk 의 상승 edge 보다
입력신호 d 가 앞서 도달했다고 해도
정해진 시간 (Setup time) 보다 길지 못하면
D 값을 출력으로 내보내지 못함 .
1ns 는 setup time 보다 작은 값이므로 출력 y 는 그전의 상태인 0 을
내보내고있음 .
1ns 는 setup time 보다 작은 값이므로 출력 y 는 그전의 상태인 0 을
내보내고있음 .
모바일컴퓨팅특강 9
Timing Analysis – Setup Time(2)
확대
2.1ns
Clk 의 상승 edge 를 기준으로 입력신호 d 의 1 값이 2.1ns 는 앞서 발생되었다 . 출력 y 가 1을 내보내고있는 것으로 보아
setup time 을 만족 .
Clk 의 상승 edge 를 기준으로 입력신호 d 의 1 값이 2.1ns 는 앞서 발생되었다 . 출력 y 가 1을 내보내고있는 것으로 보아
setup time 을 만족 .
모바일컴퓨팅특강 10
Timing Analysis – Hold Time
1.9ns
-1.7ns
입력신호 d 가 클럭의 상승 edge 를 기준으로 Setup time 과
Hold time 을 만족하므로 출력이 입력 d 의 값인 1 을 출력함 .
입력신호 d 가 클럭의 상승 edge 를 기준으로 Setup time 과
Hold time 을 만족하므로 출력이 입력 d 의 값인 1 을 출력함 .
Clk 의 상승 edge 를 기준으로 입력신호 d 의 1
값이 100ns 는 앞서 발생되었다 . 하지만 입력 d값이 Clk 의 상승 edge 를 기준으로 1 로 유지되어야 하는 시간 (hold time) 보다
짧으므로 출력 y 가 입력 d값인 ‘ 1’ 을 보내지 않음 .
Clk 의 상승 edge 를 기준으로 입력신호 d 의 1
값이 100ns 는 앞서 발생되었다 . 하지만 입력 d값이 Clk 의 상승 edge 를 기준으로 1 로 유지되어야 하는 시간 (hold time) 보다
짧으므로 출력 y 가 입력 d값인 ‘ 1’ 을 보내지 않음 .
모바일컴퓨팅특강 11
Timing Analysis - Shift Register
library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity shiftreg is port( d, clk,nclr : in std_logic; qa,qb : out std_logic );end shiftreg;
architecture a of shiftreg issignal tqa,tqb : std_logic;
beginprocess(nclr,clk)begin if( nclr='0') then
tqa <='0'; tqb <='0';
elsif(clk'event and clk='1') thentqa <= d; tqb <= tqa;
end if;end process;qa<=tqa; qb<=tqb;
end a;
Shift Register 를 시뮬레이션 해보고 파형으로부터 Propagation Delay,
Setup time, Hold time 의 개념을 좀더 깊게 살펴보자 .
Shift Register 를 시뮬레이션 해보고 파형으로부터 Propagation Delay,
Setup time, Hold time 의 개념을 좀더 깊게 살펴보자 .
모바일컴퓨팅특강 12
Timing Analysis - Shift Register1. 아래와 같은 입력신호가 주어졌을 때 예상되는 출력 qa 의 파형은 ?
D F/F 의 시뮬레이션 파형과 Propagation Delay, Setup Time, Hold Time
의 개념을 완전히 이해하고 있으면 거의 모든 Timing Diagram 은 그릴 수 있다 .
D F/F 의 시뮬레이션 파형과 Propagation Delay, Setup Time, Hold Time
의 개념을 완전히 이해하고 있으면 거의 모든 Timing Diagram 은 그릴 수 있다 .
F/F 의 출력 Waveform 은
비동기 신호인 nclr 이 0 인 경우만을 제외하면
항상 Clk 의 Rising Edge 를 기준으로
입력 D 를 고려하면 된다 .
F/F 의 출력 Waveform 은
비동기 신호인 nclr 이 0 인 경우만을 제외하면
항상 Clk 의 Rising Edge 를 기준으로
입력 D 를 고려하면 된다 .
모바일컴퓨팅특강 13
Timing Analysis - Shift Register2. Clk 의 Rising Edge 300ns, 500ns, 700ns 지점에서 보면 입력신호 D 가
모두 Setup Time 과 Hold Time 을 만족하므로 당연히 아래와 같이 출력 qa의 파형이 나온다 .
3. 두 번째 F/F 은 입력신호로 qa 를 이용하는데 , 예상되는 qb 의 출력파형은 ?
모바일컴퓨팅특강 14
Timing Analysis - Shift Register
확대 확대 확대
4ns4ns
500ns, 700ns, 900ns 에서모두 Setup time 과 Hold time 을 만족
500ns, 700ns, 900ns 에서모두 Setup time 과 Hold time 을 만족
모바일컴퓨팅특강 15
Timing Analysis - Counter : 74161
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity cnt161_4bits is port( d3,d2,d1,d0 : in std_logic; nld,ent,enp : in std_logic; clk,nclr : in std_logic; q3,q2,q1,q0 : out std_logic; rco : out std_logic);end cnt161_4bits;architecture a of cnt161_4bits is
signal q : std_logic_vector( 3 downto 0);begin
process(nclr,clk)variable d : std_logic_vector(3 downto 0);begin
d := d3&d2&d1&d0;if( nclr='0') then
q <="0000";elsif(clk'event and clk='1') then
if(nld='0') thenq <= d;
elsif(ent='1' and enp='1') thenq <= q+'1';
end if;end if;
end process;q3<=q(3); q2<=q(2); q1<=q(1); q0<=q(0); rco <= ent and q(3) and q(2) and q(1) and q(0);
end a;
Counter 를 시뮬레이션 해보고 파형으로부터 Propagation Delay, Setup time, Hold time 의
개념을 좀더 깊게 살펴보자 .
Counter 를 시뮬레이션 해보고 파형으로부터 Propagation Delay, Setup time, Hold time 의
개념을 좀더 깊게 살펴보자 .
모바일컴퓨팅특강 16
Timing Analysis - Counter : 74161
1. 아래와 같은 입력신호가 주어졌을 때 예상되는 카운터의 출력파형은 ? D F/F 의 시뮬레이션 파형과
Propagation Delay, Setup time, Hold time
의 개념을 완전히 이해하고 있으면 거의 모든 Timing Diagram 은 그릴 수 있다 .
D F/F 의 시뮬레이션 파형과 Propagation Delay, Setup time, Hold time
의 개념을 완전히 이해하고 있으면 거의 모든 Timing Diagram 은 그릴 수 있다 .
nclr 의 우선순위가 가장 높음 : nclr=0 이면 출력 q(3:0)=0000 이 됨 .
nclr=1 일때 모든 동작은 clk 의 rising edge 에 동기되어 처리됨 .
Nld=0 이면 외부의 입력 d(3:0) 이 출력 q(3:0) 으로 출력됨 .
nld=1 이면 ent,enp 가 모두 1 일 때만 출력 q(3:0) 의 값이 하나씩 증가한다 .
Rco 는 q(3:0)=15 가 되면 1 이 된다 .
nclr 의 우선순위가 가장 높음 : nclr=0 이면 출력 q(3:0)=0000 이 됨 .
nclr=1 일때 모든 동작은 clk 의 rising edge 에 동기되어 처리됨 .
Nld=0 이면 외부의 입력 d(3:0) 이 출력 q(3:0) 으로 출력됨 .
nld=1 이면 ent,enp 가 모두 1 일 때만 출력 q(3:0) 의 값이 하나씩 증가한다 .
Rco 는 q(3:0)=15 가 되면 1 이 된다 .
모바일컴퓨팅특강 17
Timing Analysis - Counter : 74161
카운터출력 q(3:0) 은 15 다음 0 으로 변화됨 . 또한 rco 는 a
15 일 때 1 이 됨 .
카운터출력 q(3:0) 은 15 다음 0 으로 변화됨 . 또한 rco 는 a
15 일 때 1 이 됨 .
1.5us, 1.9us 의 cllk rising edge에서 각각 enp=0, ent=0 이므로
카운터 증가안함
1.5us, 1.9us 의 cllk rising edge에서 각각 enp=0, ent=0 이므로
카운터 증가안함
2.5us 의 cllk rising edge 에서 nld=0 이므로 외부의 입력
d(3:0)=12 값이 출력 q(3:0)으로 출력됨 .
2.5us 의 cllk rising edge 에서 nld=0 이므로 외부의 입력
d(3:0)=12 값이 출력 q(3:0)으로 출력됨 .
모바일컴퓨팅특강 18
Timing Analysis - Counter : 74161
4ns
4ns
F/F 과 마찬가지로 Clk 의 상승 edge 를 기준으로
출력 q[3:0] 의 값의 변화가 약 4ns 의 전파지연 후에
발생함
F/F 과 마찬가지로 Clk 의 상승 edge 를 기준으로
출력 q[3:0] 의 값의 변화가 약 4ns 의 전파지연 후에
발생함
모바일컴퓨팅특강 19
Timing Analysis – State Machine
S0
S1
0/00
1/00
0/01 1/10
WindowAct / RiseShot, FallShot
입력 / 출력 1, 출력 2
1. 아래와 같은 상태도를 갖는 mealy machine 에 대해 입력이 아래와 같이 주어졌을 때 예상되는 출력 y 와 state 의 출력파형은 ?
입력신호 : WindowAct입력신호 :
WindowAct
출력신호
출력신호 상태
출력상태출력
모바일컴퓨팅특강 20
Timing Analysis – State Machine
상태가 s0이면서
입력신호가 0->1 로 변하는
순간 출력 RisieShot 는 1 로
변함 .
상태가 s0이면서
입력신호가 0->1 로 변하는
순간 출력 RisieShot 는 1 로
변함 .
상태가 s1이면서
입력신호가 1->0 으로 변하는
순간 출력 FallShot 는 1
로 변함 .
상태가 s1이면서
입력신호가 1->0 으로 변하는
순간 출력 FallShot 는 1
로 변함 .
S1->s0 의 변환시기는 입력신호 WindowAct 가 1에서 0 으로 변하고 clk 의
첫번째 rising edge 임 .
S1->s0 의 변환시기는 입력신호 WindowAct 가 1에서 0 으로 변하고 clk 의
첫번째 rising edge 임 .
상태는 초기에 s0 로 있다가 입력신호 WindowAct 가 0 에서 1 로 변하고 clk 의 첫번째 rising edge에서 s0->s1 으로 변하게
됨 .
상태는 초기에 s0 로 있다가 입력신호 WindowAct 가 0 에서 1 로 변하고 clk 의 첫번째 rising edge에서 s0->s1 으로 변하게
됨 .
파형에서 보면
S0=0, s1=1 임 .
파형에서 보면
S0=0, s1=1 임 .
모바일컴퓨팅특강 21
Timing Analysis – State Machine
4ns
500ns 의 clk rising edge 를 기준으로 보면
상태출력 state 는 502ns 에서 변화됨을 알
수 있음 .
500ns 의 clk rising edge 를 기준으로 보면
상태출력 state 는 502ns 에서 변화됨을 알
수 있음 .
500ns 의 clk rising edge 를 기준으로 보면 출력 RiseShot 는 502ns 에서 변화되는 State 보다 더
뒤에 변화 됨을 알 수 있음 .
500ns 의 clk rising edge 를 기준으로 보면 출력 RiseShot 는 502ns 에서 변화되는 State 보다 더
뒤에 변화 됨을 알 수 있음 .
모바일컴퓨팅특강 22
Timing Analysis – State Machine
S0000
S1010
0
01
1
S2101
1
1. 아래와 같은 상태도를 가지는 moore machine 에 대한 입력이 아래와 같이 주어졌을 때 예상되는 출력 y 와 state 의 출력파형은 ?
입력신호 : WindowAct입력신호 :
WindowAct
출력신호 : y – 3bits 신호
출력신호 : y – 3bits 신호
상태출력상태출력
모바일컴퓨팅특강 23
Timing Analysis – State Machine
Clk 의 rising edge 에서 입력신호 WindowAct 가 1이며 상태가 s0->s1->s2->s0… 로 반복해서 변화되므로 state 변화를 예상할 수 있다 .
Clk 의 rising edge 에서 입력신호 WindowAct 가 1이며 상태가 s0->s1->s2->s0… 로 반복해서 변화되므로 state 변화를 예상할 수 있다 .
출력 y 도 상태도와 같은
순서로 출력됨을 알
수 있다 .
출력 y 도 상태도와 같은
순서로 출력됨을 알
수 있다 .
위의 파형에서 보면 실제 state 의 값은 S0=00, S1=10,
S2=01 로 나타나고있다 .
위의 파형에서 보면 실제 state 의 값은 S0=00, S1=10,
S2=01 로 나타나고있다 .
입력신호 WindowAct=0
이면 상태의 변화가 없음 .
입력신호 WindowAct=0
이면 상태의 변화가 없음 .
모바일컴퓨팅특강 24
Timing Design - 강의순서
1. 주어진 타이밍도로부터 회로를 설계하는 방법을 다양한 형태의 접근 을 통해 습득한다 .
2. 각종 디바이스의 데이터 북상에 나타나는 타이밍 도의 이해를 위한 더욱 심화된 지식을 배양한다 .
1. 주어진 타이밍도로부터 회로를 설계하는 방법을 다양한 형태의 접근 을 통해 습득한다 .
2. 각종 디바이스의 데이터 북상에 나타나는 타이밍 도의 이해를 위한 더욱 심화된 지식을 배양한다 .
State Machine 응용 Shift Register 응용 Counter 응용
모바일컴퓨팅특강 25
Timing Design –State Machine
Application1. 아래와 같은 Timing 입출력 파형을 갖는 회로를 설계해보자 ?
해석 : WindowAct 신호가 0 에서 1 로 변하는 순간에 RiseShot 을 1 로
만들고 ,
WindowAct 신호가 0 에서 1 로 변하는 순간에 FallShot 을 1 로
만들어야 함 .
해석 : WindowAct 신호가 0 에서 1 로 변하는 순간에 RiseShot 을 1 로
만들고 ,
WindowAct 신호가 0 에서 1 로 변하는 순간에 FallShot 을 1 로
만들어야 함 .
모바일컴퓨팅특강 26
Timing Design – State Machine
Application
S0
S1
0/00
1/00
0/01 1/10
2. 아래와 같은 상태도가 그려지는가 ?
VHDL 파일은 다음 쪽을 참조 .
WindowAct / RiseShot, FallShot
입력 / 출력 1, 출력2
모바일컴퓨팅특강 27
Timing Design – State Machine
ApplicationLibrary 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;
BEGIN
PROCESS (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;
S0
S1
0/00
1/00
0/01 1/10
상태도에서 입력에 따른
상태의 변화만을 기술
상태도에서 입력에 따른
상태의 변화만을 기술
모바일컴퓨팅특강 28
Timing Design – State Machine
ApplicationPROCESS(reset, state, WindowAct)
BEGIN
if (reset=‘0’) then
RiseShot<=‘0’;
FallShot <='0';
else
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 if;
END PROCESS;
END a;
S0
S1
0/00
1/00
0/01 1/10
상태도에서 입력에 따른 출력의
변화만을 기술
상태도에서 입력에 따른 출력의
변화만을 기술
모바일컴퓨팅특강 29
Timing Design – State Machine
Application3. 상태도를 이용하지 않는 다른 방법은 ?
Timing 만을 고려한 설계 .
Q 는 WindowAct 를 D F/F
으로 통과시킨 출력
Q 는 WindowAct 를 D F/F
으로 통과시킨 출력
1 3
1,3 에서 RiseShot= WindowAct and
not Q
1,3 에서 RiseShot= WindowAct and
not Q
24
2,4 에서 FallShot= not WindowAct
and Q
2,4 에서 FallShot= not WindowAct
and Q
모바일컴퓨팅특강 30
Timing Design – State Machine
Application4. Timing 만을 고려한 설계방식은 아래그림과 같음 .
VHDL 파일은 다음 쪽에 있음 .
Q 는 WindowAct를 D F/F 으로 통과시킨 출력
Q 는 WindowAct를 D F/F 으로 통과시킨 출력
not Q
WindowAct and not Q
WindowAct and not Q
Not WindowAct and Q
Not WindowAct and Q
not WindowAct
모바일컴퓨팅특강 31
Timing Design – State Machine
Applicationlibrary 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;
같은 회로같은 회로
같은 회로같은 회로
모바일컴퓨팅특강 32
Timing Design – Shift Register
Application 아래와 같은 Timing 입출력 파형을 갖는 회로를 설계해보자 ?
입력신호 : reset, clk, WindowAct
출력신호 : y0, y1, y2, y3, y4, y5, y6
모바일컴퓨팅특강 33
Timing Design – Shift Register
Application1. 먼저 아래의 회로를 만들어보자 .
입력신호 : reset, clk, WindowAct
출력신호 : y0
어떤 방식으로 설계해야 하는가 ?
1 차적으로 생각할 수 있는 방법은 Shift Register 를 이용하는 방법
모바일컴퓨팅특강 34
Timing Design – Shift Register
Application
그림과 같은 Shift Register
를 사용하게 되면 Q0, Q1, Q2 의
타이밍을 예상할 수 있다 .
그림과 같은 Shift Register
를 사용하게 되면 Q0, Q1, Q2 의
타이밍을 예상할 수 있다 .
출력신호 y0 는 Q1가 1 이되 는 부분과 Q2 가 0 이 되는 700-900ns
부분에서 1 이 된다 .
Y0=Q1 and not Q2
출력신호 y0 는 Q1가 1 이되 는 부분과 Q2 가 0 이 되는 700-900ns
부분에서 1 이 된다 .
Y0=Q1 and not Q2
Y0 = Q1 and not Q2
모바일컴퓨팅특강 35
Timing Design – Shift Register
Application2. 이번에는 y1 을 만들어보자 .
모바일컴퓨팅특강 36
Timing Design – Shift Register
Application
Y0 를 clk 의 falling edge 를 이용하여
시프트하면 반클럭 시프트된
Y1 을 만들 수 있다 .
Y0 를 clk 의 falling edge 를 이용하여
시프트하면 반클럭 시프트된
Y1 을 만들 수 있다 .
모바일컴퓨팅특강 37
Timing Design – Shift Register
Application3. 이번에는 y2 을 만들어보자 .
모바일컴퓨팅특강 38
Timing Design – Shift Register
Application
Y2 는 Y0 와 Y1을 OR 한 것임을
알 수 있다 .
Y2 = Y0 or Y1
Y2 는 Y0 와 Y1을 OR 한 것임을
알 수 있다 .
Y2 = Y0 or Y1Y2 = Y0 or Y1
모바일컴퓨팅특강 39
Timing Design – Shift Register
Application4. 이번에는 y3 을 만들어보자 .
모바일컴퓨팅특강 40
Timing Design – Shift Register
Application
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
회로는 다음 쪽
참조
회로는 다음 쪽
참조
모바일컴퓨팅특강 41
Timing Design – Shift Register
Application
Y3 는 11 개의 shift register 중에서 Q10과 Q9 를 이용한 신호임 .
Y3 = Q9 and not Q10
Y3 는 11 개의 shift register 중에서 Q10과 Q9 를 이용한 신호임 .
Y3 = Q9 and not Q10
모바일컴퓨팅특강 42
Timing Design – Shift Register
Application5. 이번에는 y4 을 만들어보자 .
모바일컴퓨팅특강 43
Timing Design – Shift Register
Application
Y4 는 Y1 와 Y3을 OR 한 것임을
알 수 있다 .
Y4 = Y1 or Y3
Y4 는 Y1 와 Y3을 OR 한 것임을
알 수 있다 .
Y4 = Y1 or Y3
모바일컴퓨팅특강 44
Timing Design – Shift Register
Application6. 이번에는 y5 을 만들어보자 .
모바일컴퓨팅특강 45
Timing Design – Shift Register
Application
Y5 는 Q2 가 1이며 Q10 이 0인 구간에 1 을
출력 .
Y5 는 Q2 가 1이며 Q10 이 0인 구간에 1 을
출력 .
모바일컴퓨팅특강 46
Timing Design – Shift Register
Application7. 이번에는 y6 을 만들어보자 .
모바일컴퓨팅특강 47
Timing Design – Shift Register
Application
Y6p 는 Q1 이 1이며 Q9가 0 인
구간에 1을 출력 .
Y6p 는 Q1 이 1이며 Q9가 0 인
구간에 1을 출력 .
Y6 는 Y6p 를 Clk의 Falling Edge를 이용하여 반
클럭 밀어준 신호임 .
Y6 는 Y6p 를 Clk의 Falling Edge를 이용하여 반
클럭 밀어준 신호임 .
모바일컴퓨팅특강 48
Timing Design – Shift Register Application
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);
동일회로
동일회로
동일회로
동일회로
모바일컴퓨팅특강 49
Timing Design – Shift Register
Applicationprocess(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;
동일회로
동일회로
동일회로
동일회로
동일회로
동일회로
모바일컴퓨팅특강 50
Timing Design – Counter Application
아래와 같은 Timing 입출력 파형을 갖는 회로를 Shift Register 가 아닌 다른 방식 (Counter 응용 ) 으로 설계해보자 .
입력신호 : reset, clk, WindowAct
출력신호 : y0, y1, y2, y3, y4, y5, y6
모바일컴퓨팅특강 51
Timing Design – Counter Application
1. 입력신호 들로부터 cnt[3..0] 을 만들 수 있는가 ?
모바일컴퓨팅특강 52
Timing Design – Counter Application
단 이 카운터는 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 회로
Cnt 회로
Cnt[3..0] 을 사용
Cnt[3..0] 을 사용
모바일컴퓨팅특강 53
Timing Design – Counter Application
2. 입력신호 들과 cnt[3..0] 로 부터 y0, y3 을 만들 수 있는가 ?
모바일컴퓨팅특강 54
Timing Design – Counter Application
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;
모바일컴퓨팅특강 55
Timing Design – Counter Application
3. y1,y2,y4 의 발생은 ?
모바일컴퓨팅특강 56
Timing Design – Counter Application
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 한 것임을
알 수 있다 .
Y4 = Y1 or Y3
Y4 는 Y1 와 Y3을 OR 한 것임을
알 수 있다 .
Y4 = Y1 or Y3
모바일컴퓨팅특강 57
Timing Design – Counter Application
4. y5, y6 의 발생은 ?
모바일컴퓨팅특강 58
Timing Design – Counter Application
process(nclr,clk)
begin
if( nclr='0') then
y(5)<='0';
elsif(clk'event and clk='1') then
if(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') then
y(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;