Skip to Content
독학사독학사 2단계컴퓨터구조10. 순서논리회로와 타이밍 이해

이번 문서의 목표: 이 파일을 다 읽으면 SR·D·JK·T 플립플롭의 특성표를 각각 설명하고, 이를 이용한 레지스터·카운터의 동작을 클록 타이밍에 따라 추적할 수 있다.

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

09편에서 다룬 조합논리회로는 현재 입력에만 의존해 출력이 즉시 정해진다. 그런데 CPU는 이전 계산 결과를 저장해 뒀다가 나중에 다시 쓰거나(레지스터, register), 몇 번째 클록인지 세거나(카운터, counter), “지금까지 무슨 일이 있었는지”에 따라 다음 동작을 결정해야 한다(상태 기계, state machine). 이런 “기억”이 필요한 회로가 순서논리회로(sequential logic circuit)다.

쉽게 말하면: 순서논리회로는 현재 입력뿐 아니라 이전에 저장해 둔 상태까지 함께 고려해서 출력을 정하는 회로다.

래치와 플립플롭: 1비트를 기억하는 가장 작은 단위

쉽게 말하면: 플립플롭은 클록 신호가 딱 맞는 순간에만 값을 받아들여 저장하는, 1비트 기억장치의 최소 단위다.

래치(latch)는 입력 신호(enable)가 활성 상태인 동안 계속 값을 반영하는 회로이고, 플립플롭(flip-flop, FF)은 클록의 특정 순간(주로 상승 에지, rising edge — 클록이 0에서 1로 바뀌는 찰나)에만 입력을 받아들이고 그 외에는 이전 값을 그대로 유지하는 회로다. 독학사 컴퓨터구조에서는 CPU 레지스터·카운터의 기본 단위로 플립플롭을 주로 다루므로, 이번 편도 플립플롭 중심으로 설명한다.

에지 트리거(edge-triggered) 방식이 중요한 이유는, 클록이 1인 동안 계속 값이 바뀌는 래치와 달리, 플립플롭은 클록이 딱 한 번 튀어 오르는 순간에만 값을 캡처하므로 여러 플립플롭을 사슬처럼 연결해도 신호가 한 클록에 여러 단계를 건너뛰지 않고 정확히 한 단계씩만 전달되기 때문이다.

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

쉽게 말하면: S(Set) 입력을 주면 1을 저장하고, R(Reset) 입력을 주면 0을 저장하며, 둘 다 0이면 이전 값을 그대로 유지한다.

SR 플립플롭(Set-Reset flip-flop)은 입력 SS(Set, 세트)와 RR(Reset, 리셋) 두 개를 받는다. QQ는 현재 저장된 값(현재 상태), Q(t+1)Q(t+1)은 클록이 한 번 더 지난 뒤의 값(다음 상태)을 나타낸다.

SR 플립플롭 특성표

SRQ(t+1)Q(t+1)설명
00Q(t)Q(t)상태 유지(변화 없음)
010리셋(0으로 저장)
101세트(1로 저장)
11부정(정의되지 않음)금지 입력

시험 함정: S=1,R=1S=1, R=1을 동시에 넣는 것은 금지된 입력 조합이다. 두 출력(QQ와 그 보수 QQ')이 동시에 세트와 리셋을 요구받아 논리적으로 모순되기 때문에 실제 회로에서 예측 불가능한 상태(발진 등)가 나올 수 있다. “SR 플립플롭은 모든 입력 조합에 대해 안정적으로 동작한다”는 진술이 나오면 틀린 설명이다.

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

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

D 플립플롭(Data 또는 Delay flip-flop)은 SR 플립플롭의 금지 입력 문제를 해결하기 위해, 입력을 하나(DD)로 줄이고 S=DS = D, R=DR = D'(D의 보수)로 항상 자동으로 맞춰지도록 만든 회로다. 그 결과 다음 상태는 항상 현재 입력값을 그대로 따라간다.

D 플립플롭 특성표

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

D 플립플롭은 회로가 단순하고 예측이 쉬워서, 레지스터(register, 여러 비트를 나란히 저장하는 장치)를 만드는 데 가장 널리 쓰인다. nn비트 레지스터는 D 플립플롭 nn개를 나란히 놓고 같은 클록을 공유하도록 만든 것이다.

JK 플립플롭: SR의 금지 입력 문제를 해결한다

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

JK 플립플롭은 입력 JJ(SR의 SS에 대응), KK(SR의 RR에 대응) 두 개를 받는다. SR과 다른 점은 J=1,K=1J=1, K=1일 때 금지되는 대신 토글(toggle, 반전) 동작을 하도록 정의했다는 것이다.

JK 플립플롭 특성표

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

JK 플립플롭의 특성 방정식(characteristic equation)은 다음과 같다.

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)'가 되어, 특성표의 “토글” 행과 정확히 일치한다.

T 플립플롭: 토글만 하는 가장 단순한 카운터 부품

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

T 플립플롭(Toggle flip-flop)은 JK 플립플롭에서 J=K=TJ=K=T로 두 입력을 하나로 묶어 만든다. 즉 T=1T=1이면 JK의 토글 동작(J=K=1J=K=1)과 같고, T=0T=0이면 JK의 유지 동작(J=K=0J=K=0)과 같다.

T 플립플롭 특성표

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

특성 방정식은 다음과 같다.

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

네 플립플롭 비교표

구분SRDJKT
입력 수2개(S, R)1개(D)2개(J, K)1개(T)
금지 입력있음(S=R=1S=R=1)없음없음(토글로 대체)없음
상태 유지 조건S=0, R=0해당 없음(입력을 그대로 따라감)J=0, K=0T=0
토글(반전) 가능 여부불가능불가능(입력 반전 시에만 출력도 반전)가능(J=K=1)가능(T=1)
대표 용도기본 개념 학습레지스터범용 순서회로 설계카운터

레지스터: 여러 비트를 함께 저장하고 이동시킨다

쉽게 말하면: 레지스터는 D 플립플롭 여러 개를 나란히 두어 여러 비트의 값을 한 번에 저장하거나, 클록마다 한 자리씩 밀어내는 장치다.

레지스터(register)는 CPU 내부에서 데이터를 임시로 저장하는 고속 기억장치다. 가장 단순한 형태는 D 플립플롭 nn개를 나란히 배치해 nn비트를 동시에 저장하는 병렬 저장 레지스터(parallel register)다.

시프트 레지스터(shift register)는 플립플롭들을 사슬처럼 연결해서, 클록이 뛸 때마다 데이터가 한 칸씩 옆으로 밀려 이동하도록 만든 레지스터다. 왼쪽 시프트는 값을 2배 하는 효과(비트를 왼쪽으로 옮기는 것은 자리값이 커지는 것과 같다), 오른쪽 시프트는 값을 반으로 나누는 효과와 대응한다는 점도 함께 알아두면 좋다.

카운터: 클록을 세는 순서논리회로

쉽게 말하면: 카운터는 클록이 뛸 때마다 정해진 순서대로 값이 바뀌는 회로로, T 플립플롭의 토글 성질을 그대로 활용한다.

카운터(counter)는 클록 펄스가 들어올 때마다 정해진 순서로 상태(값)가 바뀌는 순서논리회로다. T 플립플롭의 “입력이 1이면 매번 반전”하는 성질이 카운터를 만드는 데 정확히 들어맞는다.

2비트 비동기 카운터(리플 카운터)의 동작 추적

T 플립플롭 2개를 연결해 만든 2비트 카운터를 생각해보자. Q1Q_1(하위 비트)의 출력이 Q0Q_0… 표기를 명확히 하기 위해, 가장 하위 비트를 Q0Q_0, 그 다음 자리를 Q1Q_1이라 하자. Q0Q_0은 매 클록마다 토글되고(즉 T=1T=1로 항상 고정), Q1Q_1Q0Q_0이 1에서 0으로 떨어지는 순간마다 토글된다(비동기, asynchronous 방식 — 앞 플립플롭의 출력이 뒤 플립플롭의 클록 역할을 한다).

클록 펄스 순서Q1Q_1Q0Q_0십진값
초기값000
1번째 클록 후011
2번째 클록 후102
3번째 클록 후113
4번째 클록 후000(다시 순환)

결과 해석: 이 2비트 카운터는 012300 \to 1 \to 2 \to 3 \to 0 순서로 순환하는 모드 4 카운터(mod-4 counter, 0부터 3까지 4가지 상태를 순환)다. nn비트 카운터는 일반적으로 00부터 2n12^n - 1까지 세고 다시 0으로 돌아가는 모드 2n2^n 카운터가 된다.

동기 카운터와 비동기 카운터의 차이

카운터를 구성하는 플립플롭들의 클록 입력 방식에 따라 두 가지로 나뉜다.

구분비동기 카운터(asynchronous, 리플 카운터)동기 카운터(synchronous)
클록 연결앞 플립플롭의 출력이 다음 플립플롭의 클록이 됨모든 플립플롭이 같은 클록을 동시에 공유
동작 속도비트 수가 늘수록 지연(전파 지연이 누적)이 커짐모든 비트가 동시에 바뀌어 상대적으로 빠름
회로 복잡도단순상대적으로 복잡(추가 게이트 필요)
대표 이름리플 카운터(ripple counter)동기 카운터

시험 함정: 비동기(리플) 카운터는 회로는 단순하지만, 플립플롭을 거칠 때마다 신호가 전달되는 데 걸리는 시간(전파 지연, propagation delay)이 누적되어 비트 수가 많아질수록 실제로 안정된 값이 나오기까지 시간이 오래 걸린다. “리플 카운터가 동기 카운터보다 항상 빠르다”는 진술은 틀린 설명이다.

클록 타이밍의 기본 요소

쉽게 말하면: 클록 타이밍을 이해하려면 클록 주기 안에서 신호가 언제 안정되어야 하는지(셋업 타임)와 언제까지 유지되어야 하는지(홀드 타임)를 알아야 한다.

플립플롭이 클록의 상승 에지에서 값을 정확히 캡처하려면 두 가지 타이밍 조건을 만족해야 한다.

  • 셋업 타임(setup time): 클록 에지가 오기 전에 입력 신호가 미리 안정되어 있어야 하는 최소 시간.
  • 홀드 타임(hold time): 클록 에지가 지나간 후에도 입력 신호가 바뀌지 않고 유지되어야 하는 최소 시간.

이 조건이 지켜지지 않으면 플립플롭이 불안정한 중간 전압 상태에서 값을 읽어 준안정(metastability, 0도 1도 아닌 불확실한 상태) 문제가 생길 수 있다. 06편에서 다룬 클록 주기 TT가 너무 짧으면(클록 주파수를 무작정 높이면) 이 셋업·홀드 타임을 확보하지 못해 회로가 오동작할 위험이 커진다는 점이, 클록 주파수를 무한정 올릴 수 없는 또 다른 이유이기도 하다.

핵심 정리

  • SR 플립플롭은 S=R=1S=R=1이 금지 입력이고, D 플립플롭은 입력을 그대로 저장하며, JK 플립플롭은 J=K=1J=K=1일 때 토글하도록 SR의 문제를 해결했고, T 플립플롭은 T=1T=1일 때만 토글하는 가장 단순한 카운터용 소자다.
  • 레지스터는 D 플립플롭을 나란히 배치한 병렬 저장 장치이며, 시프트 레지스터는 클록마다 값을 한 칸씩 이동시킨다.
  • 카운터는 T 플립플롭의 토글 성질을 이용해 클록마다 정해진 순서로 상태가 바뀌며, nn비트 카운터는 모드 2n2^n으로 순환한다.
  • 비동기(리플) 카운터는 회로가 단순하지만 전파 지연이 누적되고, 동기 카운터는 모든 플립플롭이 같은 클록을 공유해 더 빠르게 안정된다.
  • 셋업 타임과 홀드 타임을 만족하지 못하면 준안정 상태가 발생할 수 있어, 클록 주파수를 무한정 높일 수 없다.

마무리 복습

문제 14지선다
SR 플립플롭에서 S=1, R=1을 동시에 입력했을 때 발생하는 현상으로 옳은 것은?
문제 24지선다
JK 플립플롭이 SR 플립플롭에 비해 갖는 개선점으로 옳은 것은?
문제 34지선다
T 플립플롭의 특성 방정식으로 옳은 것은?
문제 44지선다
D 플립플롭이 SR 플립플롭보다 레지스터 제작에 널리 쓰이는 이유로 가장 적절한 것은?
문제 54지선다
2비트 T 플립플롭 카운터가 0에서 시작해 매 클록마다 1씩 증가하며 순환할 때, 4번째 클록 펄스 후의 상태로 옳은 것은?
문제 64지선다
비동기(리플) 카운터와 동기 카운터를 비교한 설명으로 옳지 않은 것은?

참고 자료

Last updated on