CMOS VLSI

Latch vs Flip-Flop

나오_주인장 2026. 2. 3. 19:01

이번 포스팅에서는 학부 때 배웠던 내용을 정리하기 위해서 latch와 flip-flop을 비교하면서 작성해보겠습니다.

 

대학교 때 '디지털 논리 회로'라는 수업을 들으면서, 이 내용을 처음 접하고 파형을 그려가면서 동작원리는 이해했던게 기억이 나는데 막상 대학원 때 스텐다드 셀 라이브러리를 열어보면, RS flip flop, JK flip flop, T flip flop은 한번도 못보고 대부분이 D flip flop과 RS latch였던 것으로 기억합니다.  

Source: www.semiconwiki.com

 

 

Latch와 Flip Flop(FF)은 모두 순차회로 한 비트의 정보를 저장하는 기억 소자입니다. 

Latch와 FF의 차이점은 트리거(Trigger) 방식에 따라 달라집니다.

  • Latch - 레벨 트리거(Level trigger) 방식으로 동작합니다
  • Flip Flop - 에지 트리거(edge trigget) 방식으로 동작합니다.

 

즉, Level trigger 방식은 오른쪽 그림과 같이 Clock/Enable이 활성 레벨인 동안 latch는 ‘열린 상태’가 되어 입력(및 내부 피드백)에 의해 출력 상태가 변할 수 있고, 비활성 레벨이 되면 ‘닫힌 상태’가 되어 마지막 상태를 유지합니다. Edge-trigger 방식은 clock의 rising/falling edge “순간”에만 입력을 샘플링해 Q를 갱신하고, edge 사이에는 입력이 변해도 Q를 유지하는 방식입니다.

* Rising edge : Clock의 pulse 값이 Low(0)에서 High(1)로 바뀌는 순간

* Falling edge:: Clock의 pulse 값이 High(1)에서 Low(0)로 바뀌는 순간

 

Latch Circuit

S-R Latch 

  • NAND gate latch 또는 NOR gate latch가 존재
  • SR Latch 회로에는 S(Set)와 R(Reset)로 표시된 입력 2개와 Q, Q(bar)로 표시된 출력 2개가 존재하며 Q,Q(bar)는 서로 보수의 값을 가집니다.

(1) NOR Latch

  • S=0, R=0일 때, 2-input nor의 경우 1개의 입력이 0이면 나머지 입력에 반전되는 값을 출력합니다.
    • 위의 nor gate의 경우 Q(bar)가 나머지 입력으로 들어가니까 Q를 출력
    • 아래의 nor gate의 경우 Q가 나머지 입력으로 들어가니까 Q(bar)를 출력 
    • 즉, Q의 출력이 불변되는 것을 확인
  • S=0, R=1일 때, 2-input nor의 경우 1개라도 입력에 1이 들어가면, 출력이 0이 나옵니다.
    • 위의 nor gate의 경우 Q가 무조건 0을 출력
    • 아래의 nor gate의 경우 1개의 입력은 0이고, 나머지 입력이 0이기 때문에 0을 출력
    • 즉, Q의 출력이 0인 것을 확인 
  • S=1, R=0일 때, 2-input nor의 경우 1개라도 입력에 1이 들어가면, 출력이 0이 나옵니다.
    • 아래의 nor gate의 경우 Q(bar)가 무조건 1을 출력
    • 위의 nor gate의 경우, 1개의 입력이 0이고, 나머지 입력이 1이기 때문에 0을 출력
    • 즉, Q의 출력은 1인 것을 확인
  • S=1, R=1일 때, 2-input nor의 경우 1개라고 입력에 1이 들어가면, 출력이 0이 나옵니다.
    • 위의 nor gate의 경우 Q가 무조건 1을 출력
    • 아래의 nor gate의 경우 Q(bar)가 무조건 1을 출력
    • Q와 Q(bar)의 관계는 보수여야 하는데, Q와 Q(bar)가 동일한 값이 나옴(부정)

 

 

(2) NAND Latch

  • S(bar)=0, R(bar)=0일 때, 2-input nand의 경우 1개라도 입력에 0이 들어가면 출력이 1이 니옵니다 . 
    • 위의 nand gate의 경우 Q에 1을 출력
    • 아래의 nand gate의 경우 Q(bar)에 1을 출력 
    • Q와 Q(bar)의 관계는 보수여야 하는데, Q와 Q(bar)가 동일한 값이 나옴(부정)
  • S(bar)=0, R(bar)=1일 때, 2-input nand의 경우 1개라도 입력에 0이 들어가면 출력이 1이 니옵니다.
    • 위의 nand gate의 경우 Q가 무조건 1을 출력
    • 아래의 nand gate의 경우 2개의 입력이 모두 1이기 때문에 Q(bar)에 0 출력
    • 즉, Q의 출력이 1인 것을 확인 
  • S(bar)=1, R(bar)=0일 때, 2-input nand의 경우 1개라도 입력에 0이 들어가면, 출력이 1이 나옵니다.
    • 아래의 nand gate의 경우 Q(bar)가 무조건 1을 출력
    • 위의 nand gate의 경우, 1개의 입력이 1이고, 나머지 입력이 1이기 때문에 0을 출력
    • 즉, Q의 출력은 0인 것을 확인
  • S(bar)=1, R(bar)=1일 때, 2-input nand의 경우 1개의 입력이 1일 때, 출력은 나머지 입력의 반전된 값을 출력합니다.
    • 위의 nand gate의 경우 1개의 입력은 1이 들어가고, 나머지 입력에 Q(bar)가 들어가면 Q를 출력
    • 아래의 nand gate의 경우 1개의 입력은 1이 들어가고, 나머지 입력에 Q가 들어가면 Q(bar)을 출력
    • 즉, Q의 출력이 불변되는 것을 확인

 

 

 

Clock type D Latch 

(1) Clock type SR latch( NOR를 이용한 )

  • CP가 1일 때만 동작
  • SR latch의 동작은 위의 nor latch와 동일

 

 

(2) Clock type D latch

  • CP가 1일 때만 동작
  • SR Latch에서 원하지 않는 상태(S,R =1)를 제거하는 방법을 고안하던 중 Clock type D latch가 구현됨
  • D Latch는 입력된 데이터가 그대로 저장되는 특성이 있음
  • CP =1, D=0 일 때, 위에 nand = 0, 아래 nand = 1이 들어간 것과 동일 (1 출력)
  • CP =1, D=1 일 때, 위에 nand = 1, 아래 nand = 0이 들어간 것과 동일 (0 출력)

 

(3) Clock type JK Latch

  1. 특징
    • SR Latch에서 S=1, R=1일 때 불안정한 문제를 해결하는 또 다른 방법은 JK Latch 입니다.
    • 가장 큰 특징은 J=1, K=1일 때 JK Latch의 출력이 이전 출력의 보수 상태로 변화한다는 것이 특징
    • 여기서 J=Set, K= Reset으로 생각할 수 있음
  2. JK Latch Problem (Race problem)
    • Level Trigger에서 clock이 High 또는 Low로 유지되는 시간 동안 원하지 않는 입력의 변화가 발생할 수 있는데 이 때문에 저장 값을 결정하지 못하는 현상이 JK FF에서 발생함

 

Flip Flop Circuit

S-R Flip Flop

SR Flip Flop은 가장 기본적인 플립플롭입니다. 위에서 만든 SR Latch가 조금 변형된 구조입니다. Clock이 연결되었다는 점만 제외하면 똑같이 동작합니다.

Source: https://homubee.tistory.com/47

 

이처럼 AND gate로 clock과 S, R 입력을 연결해주면 됩니다. 클럭 신호가 1이 될 때 S, R값이 전달되는 것을 확인할 수 있습니다.

왼쪽의 심볼을 비교해 보면 -▷와 같이 화살표 모양 부분이 있다는 것이 Latch와는 다른데요, 바로 이 부분이 클럭 신호가 들어오는 부분입니다.

 

위의 그림은 SR Flip Flop의 동작 파형과 truth table을 나타냅니다. 

S와 R에 값을 하나씩 넣으면서 이해하면 동작을 직관적으로 이해할 수 있지만 쉬운 설명을 위해서 아래와 같이 요약하겠습니다.

  • Clock의 값이 0에서 1로(rising edge) 변할 때만 동작
  • R은 Reset을 의미합니다. 이 값이 1이 되었을 때 Q(t+1)은 0을 출력
  • S는 Set을 의미합니다. 이 값이 1이 되었을 때는 Q(t+1)은 1의 값을 출력
  • R과 S에 둘 다 0이 들어가면 Q(t)와 Q(t+1)은 같은 값을 유지
  • R과 S에 둘 다 1이 들어가면 Q(t+1)의 값이 미정의됨(SR Latch와 동일) 

 

D Flip Flop 

여기서 D는 Data를 의미합니다. 신호 전달이 늦어진다는 점에서(회로를 더 많이 거치므로) Delay의 의미도 있습니다. 

D 플립플롭은 SR 플립플롭에서 R을 사용하지 못하도록 막아놓은 회로입니다. 즉, 다음 클럭까지 D값을 기억하는 회로입니다.

 

구조를 보면 S가 D로 바뀌어 있고, R이 D의 NOT으로 바뀐 것을 확인할 수 있습니다. 값을 넣어보면 쉽게 알 수 있지만, D=0일 때, Q=0, D=1일 때, Q=1이 됩니다.

Source: https://blog.skby.net/%ED%94%8C%EB%A6%BD%ED%94%8C%EB%A1%AD-flip-flop/

 

  • Clock의 값이 0에서 1로(rising edge) 변할 때만 동작
  • D의 입력이 Q(t+1)의 출력으로 그대로 출력

 

J-K Flip Flop 

JK 플립플롭은 SR 플립플롭과 매우 유사합니다. SR에서 정의되지 않았던 11을 NOT 기능(=Toggle)으로 구현해 주었다는 차이점이 있습니다.

3입력 AND 게이트를 사용하여 Q값을 가져온다는 점이 SR과의 차이점입니다.

이에 따라 1,1일 때, 값이 반전되는 기능을 사용할 수 있습니다. 다만 race problem(경쟁 문제) 때문에 현재 위에 있는 회로를 그대로 사용하기에는 조금 어려움이 있습니다.

 

직접 회로 값을 체크해 가며 동작시키다 보면 1,1일 때 값이 고정되지 않고 이리저리 바뀌는 것을 확인할 수 있습니다. 부정 기능이 한 번만 동작하는 것이 아니라 계속 반복되는데, 그 과정에서 입력이 꼬이면서 잘못된 결과가 나오게 되는 것입니다. 

 

JK 플립플롭의 특성표는 다음과 같습니다. 특성표 역시 SR과 거의 똑같고, 1,1일 때 기능이 하나 추가된 것을 확인할 수 있습니다.

 

Source: https://blog.skby.net/%ED%94%8C%EB%A6%BD%ED%94%8C%EB%A1%AD-flip-flop/

 

  • Clock의 값이 0에서 1로(rising edge) 변할 때만 동작
  • J(set)의 값이 1일 때 Q는 1을 출력
  • K(reset)의 값이 1일 때 Q는 0을 출력
  • J(set), K(reset)의 값이 모두 0일 때, Q(t+1)은 Q(t)와 같은 값을 출력
  • J(set), K(reset)의 값이 모두 1일 때, Q(t+1)은 Q(t)의 반전된 값을 출력

T Flip Flop 

T는 Toggle을 의미합니다. 토글은 0, 1이 바뀐다는 뜻입니다. (On/Off) 즉, T 플립플롭은 T가 0이면 그대로, 1이면 Q를 반대로 바꾸는 장치입니다. JK 플립플롭에서 2가지 기능을 빼서 만들 수 있습니다.

 

 

회로 구성 역시 JK 플립플롭의 변형입니다. T가 그대로 JK 양쪽의 입력이 됩니다. 이에 따라 0일 때는 그대로, 1일 때는 토글 기능을 수행합니다. T 플립플롭도 토글 기능을 가지고 있다 보니 race problem이 발생해 위의 회로 그대로 사용할 수는 없고, 조금 더 개선이 필요합니다. (물론 race problem이 토글만의 문제는 아니고, 자세한 설명은 나중에 기회가 된다면 포스팅으로 다루도록 하겠습니다.)

 

T 플립플롭의 특성표는 다음과 같습니다. JK 특성표에서 첫 번째와 마지막만 남은 형태입니다.

Source: https://blog.skby.net/%ED%94%8C%EB%A6%BD%ED%94%8C%EB%A1%AD-flip-flop/

  • Clock의 값이 0에서 1로(rising edge) 변할 때만 동작
  • T(toggle)의 값이 1일 때 Q(t+1)는 Q(t)의 반전된 값을 출력

'CMOS VLSI' 카테고리의 다른 글

CMOS VLSI 설계 원리(1-1)  (0) 2026.02.11
Timing violation  (0) 2026.02.08
메모리 반도체 (1)  (0) 2026.02.03
Mosfet(Planar, Finfet, GAA, MBCFET)  (0) 2026.02.03
ASIC vs FPGA  (0) 2026.01.31