48
보안 회로 설계 순차 회로 Dong Kyue Kim Hanyang University [email protected]

보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

보안 회로 설계

순차 회로

Dong Kyue Kim

Hanyang University

[email protected]

Page 2: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

조합과 순차

• 조합 회로(combinational circuit)

– Memory가 없다.

– 입력한 값에 따른 출력

• 출력 = f (입력)

• 순차 회로(sequential circuit)

– Memory가 있다.

– Memory에는 회로의 현 상태가 저장

– 출력은 입력과 현 상태에 의해 결정

• (출력, 다음 상태) = f (입력, 상태)

2

Page 3: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

순차 회로

• Sequential circuit

– Sequential circuit의 output은 현재의 input 값과 이전의 input 값에 의해서 결정된다.

– Latches와 Flip-flops가 sequential circuit 중 메모리 디바이스로 많이사용된다.

3

Gates

State

InputOutput

Page 4: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

다양한 Latch와 Flip-Flops

• Latches and Flip-Flops

– Set-Reset Latch

– Gated D Latch

– Edge-Triggered D Flip-Flop

– S-R Flip-Flop

– J-K Flip-Flop

– T Flip-Flop

– Flip-Flops with Additional Inputs

4

Page 5: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Latch와 Flip-Flops

5

Latch

Flip-Flop

E

Page 6: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

• Unstable State

– 아래와 같은 회로에서 임의의 시간에 inverter 입력이 0이면 inverter 출력은 (b)와 같은 진동(Oscillation)하게 된다.

– 이 회로가 진동하는 rate은 inverter의 전파 지연에 의해 결정된다.

– (b)와 같은 상황을 출력이 0 또는 1로 정의되지 않았기 때문에 Unstable State (output undefined) 라 한다.

Latch 기초원리

6

Page 7: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Latch 기초원리

• Stable State

– 아래 (a) 회로는 두 번째 inverter의 출력은 0 으로 유지 되고, (b)회로의경우 두 번째 inverter의 출력은 1로 유지된다. -> Stable State (output defined when input is given)

7

Page 8: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

• SR Latch

– S=0 and R=0인 경우.

• P=1 and Q=0인 stable state이다.

– 위의 상태에서 S 값을 0에서 1로 바꾼다.

• P=1->0 and Q=0->1로 바뀐다.

• P=0 and Q=1인 stable state이 된다.

Set-Reset Latch (SR Latch)

8

Page 9: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Set-Reset Latch (SR Latch)

• SR Latch

– 앞의 상태에서 S=1->0로 바꾼다.

• P=0 and Q=1인 상태가 유지된다.

– 위의 상태에서 R=0->1로 바꾼다.

• P=0->1 and Q=1->0으로 바뀐다.

9

Page 10: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Set-Reset Latch (SR Latch)

• SR Latch

– 앞의 상태에서 R=1->0로 바꾼다.

• P=1 and Q=0인 상태가 유지된다.

• 회로분석을 시작한 처음 상태로 돌아온다.

– 이 회로는 출력이 현재의 입력 뿐만 아니라 과거 일련의 입력에도 의존하므로, 메모리 특성이 있다고 할 수 있다.

10

Page 11: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Set-Reset Latch (SR Latch)

• SR Latch

– S=1 and R=1인 경우는 고려하지 않는다.

• 두 개 입력이 (S=R=1) 상태에 있으면 P=Q=0 이 된다.

• 이러한 경우 두 개의 출력은 서로 보수관계가 되어야 하는 Latch 기본 동작에위배된다.

• 또한 S=R=1에서 S=R=0으로 동시에 변하게 되면 출력이 1,0,1… 반복되는불안한 상태가 된다.

11

Page 12: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Set-Reset Latch (SR Latch)

• SR Latch (정리)

– S=1, R=1인 경우 : 고려하지 않는다.

– S=0, R=0인 경우: 이전 출력 값을 출력한다.(Q = 이전 출력)

– S=1, R=0인 경우: Q = 1 <- Set

– S=0, R=1인 경우: Q = 0 <- Reset

12

R S Q

0 0 Q

0 1 1

1 0 0

1 1

회로도와 symbol의Q의 위치가 다른 것에 주의해야한다.

Page 13: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

• Timing Diagram for S-R Latch

– 입력이 변화되면 짧은 시간(ε) 후에 출력 값이 변화한다.

(ε은 Latch의 딜레이를 나타낸다.)

➔ latch의 속도 결정

Set-Reset Latch(SR Latch)

13

Page 14: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Gated D Latch

• Gated D Latch

– SR-Latch에 게이트로 구성되어있다.

– Data input(D)와 gate input(G) 두 개의 input이 있다.

– G=0일 때 S=R=0이므로 Q값은 바뀌지 않는다.

14

Page 15: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Edge-Triggered D Flip-Flop

• Edge-Triggered D Flip-Flop

– Level-triggered D Latch 2개로 구성

– D Flip-Flop은 D(data)과 Ck(clock)으로 구성

– D 입력의 변화에 따라서가 아니라 clock에 반응하여 변화

15

Page 16: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Edge-Triggered D Flip-Flop

• D Flip-Flop

– 출력이 clock 입력의 0 -> 1 전환 시에 변화한다면 rising-edge trigger

– 출력이 clock 입력의 1 -> 0 전환 시에 변화한다면 falling-edge trigger

– Clock 입력에 bubble이 있는 flip-flop은 falling Edge-Triggered

– Bubble이 없는 flip-flop은 rising Edge-Triggered flip-flop

16

Page 17: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

• D Flip-Flop

– Active edge 후의 D flip-flop의 상태 (Q+)는 active edge에서의 입력(D)와 같다.

– Timing for D Flip-Flop (Falling-Edge Trigger)

Edge-Triggered D Flip-Flop

17

D Q Q+

0 0 0

0 1 0

1 0 1

1 1 1

DQ =+

Page 18: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Flip-Flops with Additional Inputs

• Flip-Flops with Additional Inputs

– FF은 clock과는 독립적으로 FF을 어떤 초기 상태(initial state)로 만들기위해 부가적인 입력을 가질 수 있다.

– 여기서 어떤 초기 상태란 0의 상태 또는 1의 상태를 나타낸다.

– 초기상태를 0으로 만드는 입력신호: Clear (Clr)

– 초기상태를 1으로 만드는 입력신호: Preset (Pre)

18

Ck D PreN ClrN Q+

x x 0 0 (not allowed)

x x 0 1 1

x x 1 0 0

↑ 0 1 1 0

↑ 1 1 1 1

0,1,↓ x 1 1 Q(no change)

Page 19: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Flip-Flops with Additional Inputs

• D Flip-Flop with clock Enable

– FF의 clock이나 입력 값에 에 관계없이 이전 데이터 값을 유지하고 싶은경우

– Clock 자체의 동작을 gating 하는 방식 (그림 a): clock 지연되어 다른FF와의 동기성을 상실

– Clock Enable (CE) 을 사용하는 방식: CE=1 일 때 Q+=D, CE=0 일 때Q+=Q

– The characteristic equation :

– The MUX output (그림 c):

19

CEDECQQ +=+

CEDECQDQ in +==+

Page 20: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Flip-flop 사용법

• Rising edge

• Falling edge

always@(posedge Clock)begin

…end

always@(negedge Clock)begin

…end

2020

Page 21: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Synchronous vs Asynchronous Reset (Code)

• 정의

– Synchronous Reset : clock의 edge 에서reset의 상태에 따라 reset발생

– Asynchronous Reset : clock의 edge 에서 reset 발생reset의 edge 에서도 reset 발생

• edge condition과 if 조건문의 극성이 일치해야 함

– always@(posedge clk or negedge AsynReset) → if(!AsynReset)

– always@(posedge clk or posedge AsynReset) → if(AsynReset)

always @(posedge Clock)if(!SynReset)

Data_Out <= 0;else

Data_Out <= Data_In;end

always @(posedge Clock or negedge AsynReset)if(!AsynReset)

Data_Out <= 0;else

Data_Out <= Data_In;end

2121

Page 22: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Synchronous vs Asynchronous Reset (Circuit)

• Synchronous Reset

• Asynchronous Reset

D Q

_ CK Q

Clock

Data_In

Data_Out

Reset

2222

D Q

_ CK Q

Clock

Data_InData_Out

Reset

Page 23: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Enable & Reset (Code)

• 정의

– Enable : Clock의 edge에서Enable = 1 : Data ← Data_inEnable = 0 : Data 유지 (출력 → 입력 피드백 발생)

– Synchronous Reset : clock의 edge 에서reset의 상태에 따라 reset발생

23

always @(posedge Clock)if(Enable)

Data_Out <= Data_In;end

always @(posedge Clock)if(!SynReset)

Data_Out <= 0;else

Data_Out <= Data_In;end

Page 24: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Enable vs Reset (Circuit)

• Enable

• Reset

D Q

_ CK Q

Clock

Enable

Data_In

Data_Out

D Q

_ CK Q

Clock

Data_In

Data_Out

Reset

feedback 발생

2424

Page 25: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

실습 1

Page 26: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

시계 만들기 - 1

• 실습 1. 시계 만들기

– watch.v 파일 생성

– watch 모듈 생성

– watch 입출력 상세

• 1-bit input clock

• 1-bit input reset

• 5-bit output hour

• 6-bit output minute

• 6-bit output second

– 1 clock = 1 second를 가정하고 hour, minute, second 생성

– reset = 1 입력 시 모두 초기화

26

Page 27: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

시계 만들기 – 코드1

27

Page 28: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

시계 만들기 – 코드2

28

Page 29: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

실습 2

Page 30: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

시계 검증하기

• 실습 2. 시계 검증 tb 만들기

– tb_watch.v 파일 생성

– tb_watch 모듈 생성

– reset = 1 입력 시 $display 이용하여 아래와 같은 출력 생성========= reset ==========

– minute이 변경될 때마다 $monitor 이용하여 아래와 같은 출력 생성

시간 : 분

ex ) 03 : 30

30

Page 31: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Testbench 기본 문법 [시스템 태스크]

• Simulation에서 결과를 display하는 system task

– Transcript에 출력됨

• $time

– 시뮬레이션의 현재 시간을 나타낸다.

• $display

– C언어의 printf와 용법이 비슷하다.

– 시뮬레이션 실행 시 실행창에 내용 1회 출력한다.

– 변수 값, 문자열, 수식 등을 출력하는 용도로 사용한다.

– ex) $display(“ i = %d”,i );

• $monitor

– 연결한 레지스터나 와이어의 값이 변할 때마다 그 값을 계속해서 출력한다.

– ex) $monitor($time, “ %d%dmin %d%dsec”, highM, lowM, highS, lowS);

31

Page 32: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

14

System Task – Example display / monitor

• Test Stimulus

값이 변할 때마다 계속출력

START 문구를 한번 출력

START 출력

값이 변할 때마다계속 출력한다.

Page 33: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

시계 검증하기 – 코드 예시

33

Page 34: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Blocking Assignment

• Blocking Assignment :‘=’ 사용

– 하나의 대입이 끝난 후 다음 대입 (기술순서에 영향 O)

– assignment가 바로 발생

3434

wire [3:0] A, B, C, D;always @(posedge CLK)begin

C = B;B = A;A = D;

end

wire [3:0] A, B, C, D;always @(posedge CLK)begin

A = D;C = B;B = A;

end

처리 전의 초기값 처리 전의 초기값

A=5; B=3; C=10; D=2; A=5; B=3; C=10; D=2;

처리 결과 처리 전의 초기값

A=2; B=5; C=3; D=2; A=2; B=2; C=3; D=2;

Page 35: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Non-Blocking Assignment

• Non-blocking Assignment :‘<=’ 사용

– 대입식의 오른쪽 처리 후 왼쪽에 대입 (기술순서에 영향 X)

– clock cycle의 끝 단에서 assignment

3535

wire [3:0] A, B, C, D;always @(posedge CLK)begin

C <= B;B <= A;A <= D;

end

wire [3:0] A, B, C, D;always @(posedge CLK)begin

A <= D;C <= B;B <= A;

end

처리 전의 초기값 처리 전의 초기값

A=5; B=3; C=10; D=2; A=5; B=3; C=10; D=2;

처리 결과 처리 전의 초기값

A=2; B=5; C=3; D=2; A=2; B=5; C=3; D=2;

Page 36: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Blocking/Non-Blocking Assignment (Code)

• 실제 사용시 차이점

– combination circuit에서는 차이점이 없음

– sequential circuit에서 두 개 이상의 assignment가 일어날 때 차이점 발생

3636

always @(posedge Clock)begin

Intermediate_Variable = In_A & In_B;Data_Out <= Intermediate_Variable;

end

always @(posedge Clock)begin

Intermediate_Variable <= In_A & In_B;Data_Out <= Intermediate_Variable;

end

blocking assignment→ Intermediate_Variable 바로 갱신→ 갱신된 값이 Data_Out에 저장

non-blocking assignment→ cycle의 끝에서 할당→ Data_Out에 갱신 전

Intermediate_Variable 값이 저장

Page 37: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Blocking/Non-Blocking Assignment (Circuit)

• 실제 사용시 차이점

– blocking assignment

– non-blocking assignment

Data_outIn_A

Clock

In_B

Data_outIn_A

Clock

In_B

Intermediate_Variable

3737

Page 38: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Blocking/Non-Blocking Assignment

• Flip-Flop의 입/출력을 분리하여 사용

38

always @(posedge clock)begin

if(sec == 6'd59) sec <= 0;else sec <= sec + 6'd1;

if(sec == 6'd59 && min == 6'd59)min <= 0;

else if(sec == 6'd59)min <= min + 6'd1;

elsemin <= min;

end

always @(posedge clock)begin

c_sec <= n_secc_min <= n_min

end

always @ *if(c_sec == 6'd59) n_sec = 0;else n_sec = c_sec + 6'd1;

if(c_sec == 6'd59 && c_min == 6'd59)n_min <= 0;

else if(c_sec == 6'd59)n_min <= c_min + 6'd1;

elsen_min <= c_min;

end

sec

Clock

sec

해결방법

c_sec

Clock

n_sec

Page 39: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

실습 3

Page 40: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

시계 만들기

• 실습 3. 시계 만들기

– 실습 1.에서 만든 watch 모듈을 수정할 것.

– 앞의 예시에 따라 Flip-Flop의 입/출력을 분리하여 사용

– 레지스터 입/출력

• n_hour, c_hour

• n_minute, c_minute

• n_second, c_second

40

Page 41: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Latch vs. Flip-flop

• Latch

– enable = 1인 동안(또는 0인 동안) 현재 상태 유지

– level sensitive

• Flip-flop

– clock이 변화하는 순간(0 → 1 또는 1 → 0)에만 입력 신호를 받아들임

– 2개의 latch로 구성

– edge sensitive

D Q

_ G Q

D Q

_ CK Q

D G Q Q

X01

011

Q01

Q10

D CK Q Q

01XX

↑↑01

01QQ

10QQ

_

_

__

_

D Latch D Flip-flip

4141

Page 42: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Latch

• Latch의 역할

– 현재 값을 유지해 주어야 할 때 발생한다.

• Example

– Clock 1 : 입력 D가 출력 Q로 전달

– Clock 0 : 입력이 출력에 영향 X, 출력 유지

42

Page 43: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Inferred Latch

• 정의

– If/case에서 모든 branch에 대해 정의되어 있지 않을 때 발생하는 Latch

• Asynchronous latch

• 막아야 하는 이유

– 모든 flip-flop이 같은 clock에서 컨트롤 되는 synchronous 선호

• Difficulty with accurate timing analysis

• Unpredictable behavior

4343

Latch

Data_outIn_A

Enable→ clock이 없음

Page 44: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Solution of Inferred Latch : if

• If 문

– 모든 branch에 대해 정의

– 초기값 설정

always @(Enable or In_A)begin

if(Enable)begin

Data_Out = In_A;end

end

if(Enable)begin

Data_Out = In_A;end

elsebegin

Data_Out = In_B;end

end

Data_Out = In_B;if(Enable)

beginData_Out = In_A;

endend

해결방법

4444

Page 45: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

Solution of Inferred Latch : Case

• Case 문

– default 사용

– 초기값 설정

4545

always @(Data_In)begin

case(Data_In)0 : Data_Out = In_A;1 : Data_Out = In_B;default : Data_Out = In_A;

endcaseend

always @(Data_In)beginData_out = In_A;

case(Data_In)0 : Data_Out = In_A;1 : Data_Out = In_B;

endcaseend

always @(Data_In)begin case(Data_In)

0 : Data_Out = In_A;1 : Data_Out = In_B;

endcaseend 해결방법

Page 46: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

실습 4

Page 47: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

시계 만들기

• 실습 4. 시계 만들기

– 실습 3.에서 만든 watch 모듈을 수정할 것.

– 앞의 예시에 따라 Inferred Latch 방지를 위한 초기값 사용

47

Page 48: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-04-10 · Flip-Flops with Additional Inputs • Flip-Flops with Additional Inputs –FF은clock과는독립적으로FF을어떤초기상태(initial

시계 만들기 – 최종 코드

48