거북이처럼 천천히

Verilog RTL 설계 (6월 24일 - 4, 순차 논리 회로, Latch) 본문

Verilog/Verilog RTL 설계

Verilog RTL 설계 (6월 24일 - 4, 순차 논리 회로, Latch)

유로 청년 2024. 6. 26. 16:50

1. Sequential Logic Circuit 이란 무엇인가?

  • Combinational Logic Cirucit은 현재 입력값에 의해서 회로의 출력 값이 결정되는 논리회로이다.
  • Sequential Logic Circuit은 현재 입력값 뿐만 아니라 전 단의 과거 상태 값에 의해서 출력이 결정되는 논리 회로이다.

 

 

 

 

2. Sequential Logic Circuit에서 과거 상태를 기억하기 위해 메모리가 필요하다.

  • Sequential Logic Circuit은 현재 입력과 전 단의 과거 상태에 의해 회로의 출력값이 결정되기 때문에 과거 상태를 기억할 수 있는 기억소자 (메모리)가 필요하다.
  • 논리 회로에서 대표적인 기억 소자에는 Flip Flop, Latch가 있다.
  • Flip Flop과 Latch는 1bit 기억 소자인 점에서는 같지만, Flip Flop은 Edge sensitive이고, Latch는 Level sensitive이다.
  • Flip Flop과 Latch는 게이트로 표현이 가능하지만, Combination Logic Circuit과 달리 Feedback을 갖는다.

 

 

 

3. NOR 게이트로 구성한 S-R Latch

  • NOR Gate와 NAND Gate를 통해 SR Latch를 구현하면 다음과 같다. 

(왼) NOR Gate의 Latch, (오른) NAND Gate의 Latch

 

  • 이중에서 NOR Gate로 구성한 SR Latch를 기준으로 보겠으며, SR Latch의 진리표는 다음과 같다.

SR Latch의 진리표

 

  • 위 진리표와 아래 S 값과 R 값에 따라 경우의 수를 나누어 출력 값을 보았을 때, 다음과 같은 결과를 얻을 수 있다.
    - S 값은 Set을 의미하며, S 값이 1이면 출력값 Q(t+1) 값을 1로 만들어 준다.
    - R 값은 Reset을 의미하며, R 값이 1이면 출력값 Q(t+1) 값을 0으로 만들어 준다.
    - S = 0, R = 0 : 이전 출력 값을 그대로 출력
    - S = 1, R = 0 : Q(t+1)은 1 출력
    - S = 0, R = 1 : Q(t+1)은 0 출력
    - S = 1, R = 1 : Unknown이 발생  

S값과 R값의 변화에 따른 Q(t+1)의 변화

 

 

 

 

 

 

4. S - R Latch의 한계 (발진할 가능성이 有)

  • S - R Latch의 입력값인 S = 1, R = 1인 경우에 의도와 다른 출력값이 발생했음을 확인할 수 있다.
    - Q(t+1)와 bar{Q(t+1)}의 출력 값은 반대여야 하지만, 동일한 출력값을 갖는다.
  • 입력값 S = 1, R = 1 이 갖는 의미는 "출력값 Q(t+1)을 0으로 리셋하는 동시에 1로 설정해라" 이기 때문에 출력값은 어떤 입력 값을 따라야 할 지 몰라 이 경우 출력값이 어떻게 출력 될지 모른다.
  • Q) Q(t+1)와 bar{Q(t+1)}의 출력 값은 반대여야하기 때문에 S = 1, R = 1인 경우가 문제 인 것이냐?
    A) 아래 그림을 보면서 이해하면 이해하기 쉽다.

입력 값이 S = 1, R = 1 인 경우
S = 1, R = 1 이였다가 S = 0, R = 0 입력하면 출력 값이 0-> 1 -> 0 -> ... 으로 발진한다.

 

  • 위 게이트 회로를 통해 알 수 있듯이 S = 1, R = 1 값을 넣었다가 S = 0, R = 0 을 입력 값으로 넣게 되면 출력 값 Q(t+1)와 bar{Q(t+1})이 0 → 1 → 0 → 1 으로 불안정한 상태를 확인할 수 있다.
  • 이 때, 출력값이 0과 1사이를 왔다갔다 하며, 진동을 일으키는 현상을 "발진한다"라고 표현한다.
  • 즉, SR Latch의 한계점이자, 문제점은 입력값에 따라 발진할 수 있는 가능성이 있다는 것이다.
  • 이 때, 출력 값이 명확하게 0, 1도 아닌 상태아닌 떠 있는 상태를 "임피던스 상태" 라고 한다.

 

 

 

 

 

5. 그럼, SR Latch의 문제점인 발진 문제를 해결하기 위해서는 어떻게 해야 하는가?

  • 문제점) 입력값이 S = 1, R = 1 였다가 S = 0, R = 0으로 변화하게 되면 출력 값 Q(t+1)과 bar{Q(t+1)}이 임피던스 상태가 된다.  →  발진 문제
  • 다양한 게이트 회로를 살펴봄으로서 해당 회로를 통해 문제점을 해결 할 수 있는지 여부와 해결할 수 있다면 어떻게 해결했는지에 대해서 살펴보자.

 

 

 

6. 클록형 S - R Latch

  • 클록형 S - R Latch는 다음과 같은 논리 회로도와 블록도를 갖는다.

클록형 S - R Latch

    • 클록형 S - R Latch는 앞단에 AND 게이트와 CLK을 이용하여 CLK이 High 상태일 때, 동작하도록 설계했다.
    • 클록형 S - R Latch의 동작 상태와 진리표는 다음과 같다.

(왼) 클록형 S - R Latch의 동작, (오른) 클록형 S-R Latch의 특성표

  • 클록형 S-R Latch는 CLK이 High 상태일 때, S값과 R값을 받아드리도록 설계했지만, 근본적인 S-R Latch의 문제점인 "발진 할 가능성은 충분히 남아 있는 상태이다."는 해결하지 못했기 때문에 해결책으로 부족하다.

 

 

 

8. D Latch

  • D Latch는 다음과 같은 논리 게이트 회로와 블록도를 갖는다.

D Latch

    • D Latch는 S-R Latch, 클록형 S-R Latch와 다르게 하나의 입력 값만 받는다.
    • 하지만, S-R Latch의 문제였던 "S = 1, R = 1값을 입력 했다가 S = 0, R = 0값을 입력하면 출력값이 발진한다."는 문제점을 "S = 1, R = 1 값을 입력을 줄 수 없게 만듬"으로서 해결했다.
    • Q) S = 0, R = 0 입력값을 줄 수 없지 않는가? 
      A) S = 0, R = 0 입력값을 주고 싶을 경우 CP(CLK) 값을 0을 줌으로서 AND 게이트를 통해 S = 0, R = 0 입력값을 주는 상황과 동일한 상황을 만들 수 있다.

(왼) D Latch의 특성표, (오른) D Latch의 진리표
D Latch의 Timing diagram

 

  • 결론) S-R Latch의 문제점이였던 "S = 1, R = 1 입력값으로 주었다가 S = 0, R = 0 입력값으로 주면 논리 회로의 출력값이 발진한다." 문제점을 D Latch에서는 입력 값을 하나만 받고, 해당 입력값을 Invertor를 통해 반전이 안된 값과 반전이 된 값으로 만들어 사용함으로서 "S = 1, R = 1 입력값이 들어오는 상황을 막는다." 를 통해 해결했다.