Skip to Content
독학사독학사 2단계논리회로18. 래치·플립플롭(SR·D·JK·T)과 여기표

이번 문서의 목표: 이 파일을 다 읽으면 SR·D·JK·T 플립플롭 각각의 특성표·특성식을 유도하고, 원하는 상태 전이를 위해 어떤 입력을 넣어야 하는지 알려주는 여기표를 스스로 작성할 수 있다.

왜 “기억하는 회로”가 따로 필요한가

09편부터 17편까지 다룬 회로는 모두 조합논리회로(combinational circuit)였다. 조합논리회로는 현재 입력값만 보고 즉시 출력이 정해지며, 과거에 무슨 입력이 들어왔는지는 전혀 기억하지 않는다. 하지만 실제 디지털 시스템은 “이전 상태”를 기억해야 하는 경우가 훨씬 많다. 예를 들어 자판기는 지금까지 넣은 동전의 합계를 기억해야 하고, 카운터는 지금까지 몇 번 클록이 뛰었는지 기억해야 한다. 이렇게 과거 입력의 결과(상태)를 저장했다가, 현재 입력과 함께 고려해 출력을 정하는 회로순차논리회로(sequential logic circuit)라고 부르며, 20~22편에서 본격적으로 설계한다.

쉽게 말하면: 조합논리회로는 “지금 입력이 뭐냐”만 보고, 순차논리회로는 “지금까지 무슨 일이 있었냐”까지 함께 본다.

순차논리회로를 만들려면 1비트를 저장하는 최소 단위가 필요한데, 그것이 바로 이 편의 주제인 래치(latch)와 플립플롭(flip-flop, FF)이다.

래치: 되먹임으로 값을 붙잡아 두는 가장 단순한 기억 소자

쉽게 말하면: 래치는 게이트의 출력을 다시 자신의 입력으로 되돌려(되먹임) 값을 계속 유지시키는, 클록 없이도 동작하는 가장 단순한 기억 소자다.

09편에서 배운 NOR 게이트 두 개를 서로 마주 보게 연결하면(한쪽의 출력을 다른 쪽의 입력으로, 그 반대로도 연결) 흥미로운 현상이 생긴다. 외부 입력이 없어도 출력이 0 또는 1 중 하나의 값을 계속 유지하는 것이다. 이렇게 자기 출력을 자기 입력으로 되돌리는 구조되먹임(feedback)이라 하고, 이 되먹임 덕분에 값을 “기억”할 수 있게 된다. 이런 원리로 만든 가장 기본적인 회로가 SR 래치(Set-Reset latch)다.

래치는 입력이 활성화되어 있는 동안 계속 출력이 입력을 따라간다는 특징이 있다. 즉 인에이블(enable) 신호가 1인 동안에는 언제든 내부 값이 바뀔 수 있다. 이 특징이 나중에 살펴볼 레이스 컨디션(race condition, 19편)의 원인이 된다.

플립플롭: 클록의 한 순간에만 값을 받아들인다

쉽게 말하면: 플립플롭은 클록이 0에서 1로(또는 1에서 0으로) 튀어 오르는 딱 그 순간에만 입력을 받아들이고, 그 외의 모든 시간에는 이전 값을 그대로 유지한다.

플립플롭(flip-flop, FF)은 래치의 “인에이블 구간 내내 값이 바뀔 수 있다”는 문제를 해결하기 위해, 클록(clock, 시스템 전체의 박자를 맞추는 주기 신호) 신호가 특정 순간(에지, edge)에 도달했을 때만 입력을 받아들이도록 만든 회로다.

  • 상승 에지(rising edge): 클록이 0에서 1로 바뀌는 순간.
  • 하강 에지(falling edge): 클록이 1에서 0으로 바뀌는 순간.
  • 에지 트리거(edge-triggered): 이런 특정 순간에만 값을 캡처하는 방식.

이 편과 뒤이은 편들에서는 특별한 언급이 없는 한 상승 에지에서 동작하는 플립플롭을 기준으로 설명한다. 현재 저장된 값을 현재 상태(present state) Q(t)Q(t)로, 클록이 한 번 더 지난 뒤의 값을 다음 상태(next state) Q(t+1)Q(t+1)로 표기하는 관례를 이 편 전체에서 사용한다.

시험 함정: “래치와 플립플롭은 같은 말이다”는 틀린 진술이다. 래치는 레벨(인에이블이 활성인 구간 전체)에 반응하고, 플립플롭은 에지(클록이 튀는 순간)에만 반응한다는 점이 핵심 차이이며, 독학사 시험에서 둘을 구분하는 문제가 자주 출제된다.

SR 플립플롭: 가장 기본적인 세트-리셋

쉽게 말하면: S(Set, 세트)를 주면 1을 저장하고, R(Reset, 리셋)을 주면 0을 저장하며, 둘 다 0이면 이전 값을 그대로 유지한다. 단, 둘 다 1을 주는 것은 금지된다.

SR 플립플롭은 입력 SS(Set)와 RR(Reset) 두 개를 받는다.

SR 플립플롭 특성표

SRQ(t+1)Q(t+1)설명
00Q(t)Q(t)상태 유지
010리셋
101세트
11부정(정의되지 않음)금지 입력

작은 예시: 현재 Q(t)=0Q(t) = 0인 SR 플립플롭에 S=1,R=0S=1, R=0을 넣으면, 특성표의 세 번째 행에 따라 Q(t+1)=1Q(t+1) = 1이 된다. 다음 클록에서 S=0,R=0S=0, R=0을 넣으면 네 번째 행이 아니라 첫 번째 행(S=0,R=0S=0,R=0)에 해당하므로 Q(t+1)=Q(t)=1Q(t+1) = Q(t) = 1, 즉 값이 그대로 유지된다.

SR 플립플롭의 특성식(characteristic equation)

특성표를 카르노맵으로 간소화(11편 참고)하면 다음 특성식을 얻는다. S=1,R=1S=1,R=1 조합은 금지 입력이므로 don’t care(12편 참고)로 처리해 간소화에 활용한다.

Q(t+1)=S+RQ(t)Q(t+1) = S + R' \cdot Q(t)
  • S,RS, R: 입력값
  • Q(t)Q(t): 현재 상태, RR': RR의 보수
  • 조건: SR=0S \cdot R = 0 (S와 R을 동시에 1로 만들지 않는다는 제약)

이 식에 S=0,R=0S=0, R=0을 대입하면 Q(t+1)=0+1Q(t)=Q(t)Q(t+1) = 0 + 1 \cdot Q(t) = Q(t)가 되어 “상태 유지” 행과 일치하고, S=1,R=0S=1, R=0을 대입하면 Q(t+1)=1+1Q(t)=1Q(t+1) = 1 + 1 \cdot Q(t) = 1이 되어 “세트” 행과 일치한다.

SR 플립플롭 여기표

여기표(excitation table)는 특성표와 정반대 방향의 표다. 특성표가 “입력을 알 때 다음 상태가 무엇인가”를 알려준다면, 여기표는 “현재 상태에서 원하는 다음 상태로 가려면 입력을 무엇으로 넣어야 하는가”를 알려준다. 20~22편의 순차회로 설계에서는 “이 상태에서 저 상태로 가려면 플립플롭에 무슨 값을 넣어야 하나”를 매번 거꾸로 찾아야 하므로, 여기표는 설계 단계에서 특성표보다 오히려 더 자주 쓰인다.

쉽게 말하면: 특성표는 “입력 → 다음 상태”를 보여주고, 여기표는 “현재 상태 → 원하는 다음 상태”를 위해 “어떤 입력을 넣어야 하는지” 거꾸로 알려준다.

SR 플립플롭의 여기표를 만드는 절차는 다음과 같다. Q(t)Q(t)Q(t+1)Q(t+1)의 모든 조합(00, 01, 10, 11)에 대해, 특성표를 거꾸로 뒤져서 그 전이를 만드는 S,RS, R 값을 찾는다.

Q(t)Q(t)Q(t+1)Q(t+1)SR이유
000XS=0,R=0(유지)이거나 S=0,R=1(리셋)이면 0→0이 되므로 R은 0이든 1이든 상관없다(X=don’t care)
01100에서 1로 가려면 반드시 세트(S=1,R=0)해야 한다
10011에서 0으로 가려면 반드시 리셋(S=0,R=1)해야 한다
11X0S=1,R=0(세트)이거나 S=0,R=0(유지)이면 1→1이 되므로 S는 0이든 1이든 상관없다(X=don’t care)

시험 함정: 여기표에서 X(don’t care)가 나오는 이유를 “아무 값이나 넣어도 정답”이라고 오해하면 안 된다. 정확히는 “그 칸에 0을 넣어도, 1을 넣어도 원하는 전이가 똑같이 일어나므로, 간소화에 활용할 수 있는 자유도”라는 뜻이다. 실제 회로에서 X는 회로 설계자가 간소화에 유리한 쪽으로 골라서 확정한다.

D 플립플롭: 입력을 그대로 저장한다

쉽게 말하면: D 플립플롭은 클록이 튈 때 입력 D를 그대로 복사해 저장하는, 가장 예측하기 쉬운 플립플롭이다.

D 플립플롭(Data 또는 Delay flip-flop)은 SR의 금지 입력 문제를 없애기 위해 입력을 DD 하나로 줄이고, 내부적으로 S=DS=D, R=DR=D'가 항상 자동으로 성립하도록 만든 회로다.

D 플립플롭 특성표

DQ(t+1)Q(t+1)
00
11

D 플립플롭의 특성식

Q(t+1)=DQ(t+1) = D

특성식이 입력 그 자체이므로, 다음 상태를 예측하는 데 별도의 계산이 필요 없다는 것이 D 플립플롭의 가장 큰 장점이다.

D 플립플롭 여기표

D 플립플롭의 여기표는 “다음 상태가 곧 D값”이라는 특성식을 그대로 뒤집으면 얻어진다.

Q(t)Q(t)Q(t+1)Q(t+1)D
000
011
100
111

D 플립플롭의 여기표에는 don’t care가 전혀 없다. DD값이 곧 Q(t+1)Q(t+1)값과 같으므로, 현재 상태 Q(t)Q(t)가 무엇이든 상관없이 원하는 다음 상태를 그대로 D에 넣으면 된다는 점이 특징이다.

JK 플립플롭: SR의 금지 입력을 토글로 재활용한다

쉽게 말하면: JK 플립플롭은 SR과 거의 같지만, 두 입력이 모두 1일 때 금지시키는 대신 “현재 상태를 반전시켜라”는 의미로 재활용한 개선판이다.

JK 플립플롭은 입력 JJ(SS에 대응), KK(RR에 대응)를 받는다. J=K=1J=K=1일 때 토글(toggle, 반전) 동작을 하도록 정의해, SR 플립플롭의 금지 입력 문제를 없앴다.

JK 플립플롭 특성표

JKQ(t+1)Q(t+1)설명
00Q(t)Q(t)상태 유지
010리셋
101세트
11Q(t)Q(t)'토글(현재 상태 반전)

JK 플립플롭의 특성식

Q(t+1)=JQ(t)+KQ(t)Q(t+1) = J \cdot Q(t)' + K' \cdot Q(t)
  • J,KJ, K: 입력값
  • Q(t)Q(t): 현재 상태, Q(t)Q(t)': 현재 상태의 보수
  • \cdot: AND, 전체 식은 두 AND 항을 OR로 합친 것

이 식에 J=1,K=1J=1, K=1을 대입하면 Q(t+1)=1Q(t)+0Q(t)=Q(t)Q(t+1) = 1 \cdot Q(t)' + 0 \cdot Q(t) = Q(t)'가 되어, 특성표의 토글 행과 정확히 일치한다.

JK 플립플롭 여기표

Q(t)Q(t)Q(t+1)Q(t+1)JK이유
000XJ=0,K=0(유지)이거나 J=0,K=1(리셋)이면 0→0이 되므로 K는 상관없다
011XJ=1,K=0(세트)이거나 J=1,K=1(토글)이면 0→1이 되므로 K는 상관없다
10X1J=0,K=1(리셋)이거나 J=1,K=1(토글)이면 1→0이 되므로 J는 상관없다
11X0J=1,K=0(세트)이거나 J=0,K=0(유지)이면 1→1이 되므로 J는 상관없다

JK 플립플롭 여기표는 네 칸 모두 don’t care가 하나씩 있다는 점이 특징이며, 이 자유도 덕분에 20~21편의 순차회로 설계에서 JK를 쓰면 종종 더 간단한 회로가 나온다.

T 플립플롭: 토글만 하는 카운터 전용 소자

쉽게 말하면: T 플립플롭은 입력이 1이면 매 클록마다 이전 상태를 뒤집고, 0이면 그대로 유지하는, 카운터 제작에 최적화된 플립플롭이다.

T 플립플롭(Toggle flip-flop)은 JK 플립플롭에서 J=K=TJ=K=T로 두 입력을 하나로 묶어 만든다.

T 플립플롭 특성표

TQ(t+1)Q(t+1)설명
0Q(t)Q(t)상태 유지
1Q(t)Q(t)'토글(반전)

T 플립플롭의 특성식

Q(t+1)=TQ(t)Q(t+1) = T \oplus Q(t)
  • TT: 입력값(0 또는 1)
  • Q(t)Q(t): 현재 상태
  • \oplus: XOR(배타적 논리합)

T 플립플롭 여기표

Q(t)Q(t)Q(t+1)Q(t+1)T이유
000유지해야 하므로 T=0
011반전해야 하므로 T=1
101반전해야 하므로 T=1
110유지해야 하므로 T=0

T 플립플롭의 여기표에는 don’t care가 전혀 없고, Q(t)Q(t)Q(t+1)Q(t+1)이 다르면 T=1, 같으면 T=0이라는 규칙이 항상 정확히 성립한다(이는 사실 T=Q(t)Q(t+1)T = Q(t) \oplus Q(t+1)이라는 관계와 같다). 이 성질이 카운터 설계(21편)를 특히 쉽게 만든다.

네 플립플롭의 특성표·여기표 한눈에 비교

구분SRDJKT
입력 수2개(S, R)1개(D)2개(J, K)1개(T)
금지 입력있음(S=R=1)없음없음(토글로 대체)없음
특성식Q(t+1)=S+RQ(t)Q(t+1)=S+R' \cdot Q(t)Q(t+1)=DQ(t+1)=DQ(t+1)=JQ(t)+KQ(t)Q(t+1)=JQ(t)'+K'Q(t)Q(t+1)=TQ(t)Q(t+1)=T \oplus Q(t)
여기표 don’t care 개수(4칸 중)2칸0칸4칸0칸
대표 용도기본 개념 학습레지스터범용 순차회로 설계카운터

시험 함정: “D, T 플립플롭은 여기표에 don’t care가 없어 회로가 항상 더 간단하다”는 일반화는 위험하다. JK의 don’t care가 많다는 것은 오히려 간소화 시 더 큰 자유도를 준다는 뜻이라, 목표 함수에 따라서는 JK 기반 설계가 D나 T 기반 설계보다 게이트 수가 더 적게 나올 수도 있다. “무조건 어떤 플립플롭이 낫다”고 단정하는 보기는 의심해야 한다.

핵심 정리

  • 래치는 인에이블이 활성인 동안 계속 값이 바뀔 수 있는 레벨 반응 소자이고, 플립플롭은 클록의 에지(상승 또는 하강) 순간에만 값을 캡처하는 소자다.
  • SR 플립플롭은 S=R=1S=R=1이 금지 입력이며 특성식은 Q(t+1)=S+RQ(t)Q(t+1)=S+R' \cdot Q(t), D 플립플롭은 Q(t+1)=DQ(t+1)=D로 입력을 그대로 저장, JK는 Q(t+1)=JQ(t)+KQ(t)Q(t+1)=JQ(t)'+K'Q(t)로 SR의 금지 입력을 토글로 재활용, T는 Q(t+1)=TQ(t)Q(t+1)=T \oplus Q(t)로 토글 전용이다.
  • 특성표는 “입력 → 다음 상태”를 보여주고, 여기표는 “현재 상태 → 원하는 다음 상태에 필요한 입력”을 거꾸로 알려주는 표로, 순차회로 설계에서 필수로 쓰인다.
  • SR 여기표는 4칸 중 2칸, JK 여기표는 4칸 모두 don’t care가 있으며, D와 T 여기표는 don’t care가 전혀 없다.
  • 여기표의 don’t care는 “아무 값이나 정답”이 아니라 “0을 넣어도 1을 넣어도 원하는 전이가 성립하는 자유도”이며, 회로 간소화에 활용된다.

마무리 복습

문제 14지선다
래치와 플립플롭의 근본적인 차이로 옳은 것은?
문제 24지선다
SR 플립플롭의 특성식으로 옳은 것은?
문제 34지선다
D 플립플롭의 여기표에 대한 설명으로 옳은 것은?
문제 44지선다
JK 플립플롭의 여기표에서 현재 상태 Q(t)=1에서 다음 상태 Q(t+1)=1로 가기 위한 J, K 값으로 옳은 것은?
문제 54지선다
T 플립플롭에서 Q(t)=1, Q(t+1)=0일 때 필요한 T 값과 그 이유로 옳은 것은?
문제 64지선다
특성표와 여기표의 관계에 대한 설명으로 옳지 않은 것은?

참고 자료

Last updated on