58
1 타타타 타타 타 타타 타타타 타타 타 타타 Lecture #8 Lecture #8

타이밍 분석 및 설계

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

Page 1: 타이밍 분석 및 설계

1

타이밍 분석 및 설계타이밍 분석 및 설계

Lecture #8Lecture #8

Page 2: 타이밍 분석 및 설계

모바일컴퓨팅특강 2

학습목표

타이밍 분석 (Timing Analysis) 에서는 기본적인 타이밍 특성인 Propagation Delay, Setup Time, Hold Time 의 개념을 이해

D 플립 플롭 , Shift Register, Counter 그리고 State Machine 의 타이밍 그림을 통해 기본적인 타이밍 특성을 깊이 이해

타이밍 설계 (Timing Design) 에서는 특정한 타이밍 그림이 주어졌을 때 , 주어진 타이밍 그림으로부터 논리회로를 설계하는 방법을 State Machine, Shift Register, Counter 등을 응용하여 설계하는 방식을 습득

다양한 디바이스의 데이터북상에 표현되어있는 타이밍 그림으로부터 디바이스를 제어하기 위한 심화된 지식을 배양

Page 3: 타이밍 분석 및 설계

모바일컴퓨팅특강 3

강의순서

타이밍 분석 (Timing Analysis) 타이밍 설계 (Timing Design)

Page 4: 타이밍 분석 및 설계

모바일컴퓨팅특강 4

Timing Analysis - 강의순서

D Flipflop 의 Timing Analysis Propagation Delay Setup Time Hold Time

Shift Register 의 Timing Analysis Counter 의 Timing Analysis State Machine 의 Timing Analysis

Page 5: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 의

개념을 살펴보자 .

Page 6: 타이밍 분석 및 설계

모바일컴퓨팅특강 6

Timing Analysis - D-F/F

시뮬레이션 결과

시뮬레이션 결과

시뮬레이션 전

시뮬레이션 전

Page 7: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 의

전파지연이 발생함

Page 8: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 을

내보내고있음 .

Page 9: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 을 만족 .

Page 10: 타이밍 분석 및 설계

모바일컴퓨팅특강 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’ 을 보내지 않음 .

Page 11: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 의 개념을 좀더 깊게 살펴보자 .

Page 12: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 를 고려하면 된다 .

Page 13: 타이밍 분석 및 설계

모바일컴퓨팅특강 13

Timing Analysis - Shift Register2. Clk 의 Rising Edge 300ns, 500ns, 700ns 지점에서 보면 입력신호 D 가

모두 Setup Time 과 Hold Time 을 만족하므로 당연히 아래와 같이 출력 qa의 파형이 나온다 .

3. 두 번째 F/F 은 입력신호로 qa 를 이용하는데 , 예상되는 qb 의 출력파형은 ?

Page 14: 타이밍 분석 및 설계

모바일컴퓨팅특강 14

Timing Analysis - Shift Register

확대 확대 확대

4ns4ns

500ns, 700ns, 900ns 에서모두 Setup time 과 Hold time 을 만족

500ns, 700ns, 900ns 에서모두 Setup time 과 Hold time 을 만족

Page 15: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 의

개념을 좀더 깊게 살펴보자 .

Page 16: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 이 된다 .

Page 17: 타이밍 분석 및 설계

모바일컴퓨팅특강 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)으로 출력됨 .

Page 18: 타이밍 분석 및 설계

모바일컴퓨팅특강 18

Timing Analysis - Counter : 74161

4ns

4ns

F/F 과 마찬가지로 Clk 의 상승 edge 를 기준으로

출력 q[3:0] 의 값의 변화가 약 4ns 의 전파지연 후에

발생함

F/F 과 마찬가지로 Clk 의 상승 edge 를 기준으로

출력 q[3:0] 의 값의 변화가 약 4ns 의 전파지연 후에

발생함

Page 19: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

출력신호

출력신호 상태

출력상태출력

Page 20: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 임 .

Page 21: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 보다 더

뒤에 변화 됨을 알 수 있음 .

Page 22: 타이밍 분석 및 설계

모바일컴퓨팅특강 22

Timing Analysis – State Machine

S0000

S1010

0

01

1

S2101

1

1. 아래와 같은 상태도를 가지는 moore machine 에 대한 입력이 아래와 같이 주어졌을 때 예상되는 출력 y 와 state 의 출력파형은 ?

입력신호 : WindowAct입력신호 :

WindowAct

출력신호 : y – 3bits 신호

출력신호 : y – 3bits 신호

상태출력상태출력

Page 23: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

이면 상태의 변화가 없음 .

Page 24: 타이밍 분석 및 설계

모바일컴퓨팅특강 24

Timing Design - 강의순서

1. 주어진 타이밍도로부터 회로를 설계하는 방법을 다양한 형태의 접근 을 통해 습득한다 .

2. 각종 디바이스의 데이터 북상에 나타나는 타이밍 도의 이해를 위한 더욱 심화된 지식을 배양한다 .

1. 주어진 타이밍도로부터 회로를 설계하는 방법을 다양한 형태의 접근 을 통해 습득한다 .

2. 각종 디바이스의 데이터 북상에 나타나는 타이밍 도의 이해를 위한 더욱 심화된 지식을 배양한다 .

State Machine 응용 Shift Register 응용 Counter 응용

Page 25: 타이밍 분석 및 설계

모바일컴퓨팅특강 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 로

만들어야 함 .

Page 26: 타이밍 분석 및 설계

모바일컴퓨팅특강 26

Timing Design – State Machine

Application

S0

S1

0/00

1/00

0/01 1/10

2. 아래와 같은 상태도가 그려지는가 ?

VHDL 파일은 다음 쪽을 참조 .

WindowAct / RiseShot, FallShot

입력 / 출력 1, 출력2

Page 27: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

상태도에서 입력에 따른

상태의 변화만을 기술

상태도에서 입력에 따른

상태의 변화만을 기술

Page 28: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

상태도에서 입력에 따른 출력의

변화만을 기술

상태도에서 입력에 따른 출력의

변화만을 기술

Page 29: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

Page 30: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

Page 31: 타이밍 분석 및 설계

모바일컴퓨팅특강 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;

같은 회로같은 회로

같은 회로같은 회로

Page 32: 타이밍 분석 및 설계

모바일컴퓨팅특강 32

Timing Design – Shift Register

Application 아래와 같은 Timing 입출력 파형을 갖는 회로를 설계해보자 ?

입력신호 : reset, clk, WindowAct

출력신호 : y0, y1, y2, y3, y4, y5, y6

Page 33: 타이밍 분석 및 설계

모바일컴퓨팅특강 33

Timing Design – Shift Register

Application1. 먼저 아래의 회로를 만들어보자 .

입력신호 : reset, clk, WindowAct

출력신호 : y0

어떤 방식으로 설계해야 하는가 ?

1 차적으로 생각할 수 있는 방법은 Shift Register 를 이용하는 방법

Page 34: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

Page 35: 타이밍 분석 및 설계

모바일컴퓨팅특강 35

Timing Design – Shift Register

Application2. 이번에는 y1 을 만들어보자 .

Page 36: 타이밍 분석 및 설계

모바일컴퓨팅특강 36

Timing Design – Shift Register

Application

Y0 를 clk 의 falling edge 를 이용하여

시프트하면 반클럭 시프트된

Y1 을 만들 수 있다 .

Y0 를 clk 의 falling edge 를 이용하여

시프트하면 반클럭 시프트된

Y1 을 만들 수 있다 .

Page 37: 타이밍 분석 및 설계

모바일컴퓨팅특강 37

Timing Design – Shift Register

Application3. 이번에는 y2 을 만들어보자 .

Page 38: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

Page 39: 타이밍 분석 및 설계

모바일컴퓨팅특강 39

Timing Design – Shift Register

Application4. 이번에는 y3 을 만들어보자 .

Page 40: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

회로는 다음 쪽

참조

회로는 다음 쪽

참조

Page 41: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

Page 42: 타이밍 분석 및 설계

모바일컴퓨팅특강 42

Timing Design – Shift Register

Application5. 이번에는 y4 을 만들어보자 .

Page 43: 타이밍 분석 및 설계

모바일컴퓨팅특강 43

Timing Design – Shift Register

Application

Y4 는 Y1 와 Y3을 OR 한 것임을

알 수 있다 .

Y4 = Y1 or Y3

Y4 는 Y1 와 Y3을 OR 한 것임을

알 수 있다 .

Y4 = Y1 or Y3

Page 44: 타이밍 분석 및 설계

모바일컴퓨팅특강 44

Timing Design – Shift Register

Application6. 이번에는 y5 을 만들어보자 .

Page 45: 타이밍 분석 및 설계

모바일컴퓨팅특강 45

Timing Design – Shift Register

Application

Y5 는 Q2 가 1이며 Q10 이 0인 구간에 1 을

출력 .

Y5 는 Q2 가 1이며 Q10 이 0인 구간에 1 을

출력 .

Page 46: 타이밍 분석 및 설계

모바일컴퓨팅특강 46

Timing Design – Shift Register

Application7. 이번에는 y6 을 만들어보자 .

Page 47: 타이밍 분석 및 설계

모바일컴퓨팅특강 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를 이용하여 반

클럭 밀어준 신호임 .

Page 48: 타이밍 분석 및 설계

모바일컴퓨팅특강 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);

동일회로

동일회로

동일회로

동일회로

Page 49: 타이밍 분석 및 설계

모바일컴퓨팅특강 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;

동일회로

동일회로

동일회로

동일회로

동일회로

동일회로

Page 50: 타이밍 분석 및 설계

모바일컴퓨팅특강 50

Timing Design – Counter Application

아래와 같은 Timing 입출력 파형을 갖는 회로를 Shift Register 가 아닌 다른 방식 (Counter 응용 ) 으로 설계해보자 .

입력신호 : reset, clk, WindowAct

출력신호 : y0, y1, y2, y3, y4, y5, y6

Page 51: 타이밍 분석 및 설계

모바일컴퓨팅특강 51

Timing Design – Counter Application

1. 입력신호 들로부터 cnt[3..0] 을 만들 수 있는가 ?

Page 52: 타이밍 분석 및 설계

모바일컴퓨팅특강 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] 을 사용

Page 53: 타이밍 분석 및 설계

모바일컴퓨팅특강 53

Timing Design – Counter Application

2. 입력신호 들과 cnt[3..0] 로 부터 y0, y3 을 만들 수 있는가 ?

Page 54: 타이밍 분석 및 설계

모바일컴퓨팅특강 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;

Page 55: 타이밍 분석 및 설계

모바일컴퓨팅특강 55

Timing Design – Counter Application

3. y1,y2,y4 의 발생은 ?

Page 56: 타이밍 분석 및 설계

모바일컴퓨팅특강 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

Page 57: 타이밍 분석 및 설계

모바일컴퓨팅특강 57

Timing Design – Counter Application

4. y5, y6 의 발생은 ?

Page 58: 타이밍 분석 및 설계

모바일컴퓨팅특강 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;