bitGateLab Digital · 배우기
한국어
시뮬레이터 열기

배우기 › 주제 9

래치와 플립플롭: SR, D, JK, T 단계별 이해

읽는 시간 7분 · bitGateLab 팀

지금까지는 회로의 출력이 그 순간의 입력에만 의존했습니다. 수를 세거나, 데이터를 저장하거나, 어떤 과정이 몇 번째 단계에 있는지 기억하려면 메모리가 필요하며, 가장 작은 메모리 셀이 래치입니다. 여기서는 게이트 두 개로 래치를 만들고, 이를 에지 트리거 플립플롭으로 바꾸고, 카운터와 상태 기계를 설계할 때 필요한 표들을 사용해 봅니다.

SR 래치

출력을 서로의 입력으로 교차 연결한 NOR 게이트 두 개가 SR 래치를 이룹니다. 이 피드백이 메모리를 만들어 냅니다. 출력이 한번 어떤 값을 가지면 스스로 그 값을 유지합니다.

≥1 ≥1 R S Q Q̄
NOR 게이트로 만든 SR 래치: Q = NOR(R, Q), Q = NOR(S, Q). 점이 없는 교차는 연결이 아닙니다.
SR다음 Q동작
00Q유지
010리셋
101셋
11—금지

S = R = 1이면 두 NOR가 모두 0을 내므로 Q와 Q는 더 이상 서로 보수가 아닙니다. 더 나쁜 것은, 그 뒤에 두 입력이 동시에 0으로 내려가면 최종 상태가 어느 게이트가 더 빠른지에 따라 결정된다는 점입니다. 그래서 이 조합은 금지됩니다. S·R = 0이라는 조건에서 성립하는 특성 방정식은 Q+ = S + R·Q입니다.

NAND 게이트로 만들면 입력이 Low 활성(액티브 로우)인 SR 래치가 됩니다. 11은 유지, 01은 Q = 1로 만들고, 10은 Q = 0으로 만들며, 00이 금지 조합입니다(두 출력 모두 1).

D 래치: 인에이블된 동안은 투명하다

금지 조합을 없애기 위해 인에이블 입력 EN을 추가하고 S = D·EN, R = D·EN을 만듭니다. S와 R이 동시에 1이 될 수 없으므로 문제가 사라집니다. 동작은 간단합니다.

이 투명성이 래치의 약점입니다. 래치의 출력을 논리 회로를 거쳐 자기 자신의 입력에 연결하면, EN = 1인 동안 신호가 여러 바퀴 돌 수 있어 결과를 예측할 수 없습니다. 동기 순차 회로에는 한순간에만 데이터를 포착하는 소자가 필요합니다.

에지 트리거 플립플롭

상승 에지 트리거 D 플립플롭은 클럭이 0에서 1로 바뀌는 순간에만 D를 Q로 복사합니다. 그 밖의 시간에는 D를 무시합니다. 인에이블이 서로 반대인 D 래치 두 개(마스터와 슬레이브)를 직렬로 연결해 만듭니다. 클럭이 0인 동안에는 마스터가 D를 따라가고 슬레이브는 닫혀 있습니다. 클럭이 올라가면 마스터가 닫히고 슬레이브가 포착된 값을 출력으로 내보냅니다. 식은 가장 간단합니다: Q+ = D.

기본 플립플롭으로부터 설계에 많이 쓰이는 두 가지 유형이 더 정의됩니다.

JKQ+동작
00Q유지
010리셋
101셋
11Q토글

예제: JK 플립플롭이 Q = 0에서 시작해 (J, K) = (1,0), (0,0), (1,1), (0,1), (1,1)인 에지를 다섯 번 받습니다. 각 에지에서 Q+ = J·Q + K·Q를 적용합니다.

  1. (1,0), Q = 0: 1·1 + 1·0 = 1.
  2. (0,0), Q = 1: 0·0 + 1·1 = 1 (유지).
  3. (1,1), Q = 1: 1·0 + 0·1 = 0 (토글).
  4. (0,1), Q = 0: 0·1 + 0·0 = 0.
  5. (1,1), Q = 0: 1·1 + 0·0 = 1 (토글).

각 에지 뒤의 Q 값을 차례로 적으면 1, 1, 0, 0, 1입니다.

여기표

특성표는 "입력이 주어졌을 때 Q는 어디로 가는가?"에 답합니다. 설계할 때는 반대 질문이 필요합니다. "Q가 이 값에서 저 값으로 바뀌게 하려면 입력을 어떻게 주어야 하는가?" 이것이 여기표이며, 카운터와 상태 기계를 설계할 때마다 쓰게 됩니다.

Q → Q+DTJ KS R
0 → 0000 X0 X
0 → 1111 X1 0
1 → 001X 10 1
1 → 110X 0X 0

JK의 X가 바로 이 플립플롭에서 식이 더 짧게 나오는 이유입니다. 0에서 1로 가려면 K가 0이든(셋) 1이든(토글) 상관없으며, 이 자유도를 카르노 맵에서 활용합니다.

셋업 시간, 홀드 시간, 최대 주파수

실제 플립플롭은 D가 에지 전에 일정 시간, 곧 셋업 시간(tsu) 동안 안정되어 있어야 하고, 에지 뒤에도 일정 시간, 곧 홀드 시간(th) 동안 안정되어 있어야 합니다. D가 이 구간 안에서 바뀌면 출력이 한동안 중간 레벨에 머물다가 값이 정해질 수 있는데, 이것이 준안정 상태입니다. 또한 출력은 에지 뒤 지연 시간 tCQ가 지나야 바뀝니다.

동기 회로에서 신호는 한 플립플롭에서 나와 조합 논리를 거쳐 다음 플립플롭에 도달합니다. 클럭의 최소 주기는 다음과 같습니다.

Tmin = tCQ + t논리 + tsu

예제: tCQ = 15 ns, 가장 긴 조합 경로의 지연이 20 ns, tsu = 5 ns입니다.

Tmin = 15 + 20 + 5 = 40 ns이므로 fmax = 1 / 40 ns = 25 MHz입니다.

홀드에는 가장 짧은 경로를 사용합니다. 최소 tCQ가 5 ns이고 두 플립플롭 사이에 논리가 없다면 새 데이터는 에지 5 ns 뒤에 도착합니다. th = 3 ns이면 5 ns ≥ 3 ns이므로 조건을 만족합니다.

셋업은 주파수를 제한하며 클럭을 늦추면 해결됩니다. 홀드는 주파수와 무관합니다. 만족하지 못하면 아주 낮은 속도에서도 회로가 오동작합니다.

흔한 실수

시뮬레이터에서 해 보기

래치와 플립플롭의 차이는 타이밍도에서 바로 드러납니다. 둘 다 만들어 같은 신호를 넣어 보세요.

  1. NOR 게이트 두 개를 놓고 각각의 출력을 상대편의 입력 하나에 연결합니다. 입력 S와 R, 표시등 두 개를 추가합니다.
  2. S와 R을 바꿔 가며 금지 조합을 포함한 표의 네 행을 확인하고, 금지 조합에서 Q와 Q가 동시에 0이 되는 것을 관찰합니다.
  3. D 래치와 D 플립플롭을 놓고, 둘에 같은 데이터 입력과 같은 클럭(또는 인에이블) 신호를 연결합니다.
  4. 타이밍도를 열고 클럭이 1인 동안 D를 여러 번 바꿉니다. 래치는 변화를 따라가고 플립플롭은 상승 에지의 값만 받아들입니다.
  5. J = K = 1인 JK 플립플롭으로 반복하고, 출력의 주파수가 클럭의 절반이 되는 것을 관찰합니다.

연습문제

  1. T 플립플롭이 Q = 1에서 시작해 네 번의 에지에서 T = 1, 1, 0, 1을 받습니다. Q는 어떤 값을 갖습니까?
    정답

    Q+ = T ⊕ Q: 1⊕1 = 0, 1⊕0 = 1, 0⊕1 = 1, 1⊕1 = 0. 순서대로 0, 1, 1, 0입니다.

  2. 플립플롭이 Q = 1에서 Q = 0으로 바뀌려면 J와 K의 값이 어떻게 되어야 합니까?
    정답

    J = X, K = 1. K = 1, J = 0이면 리셋되고, J = K = 1이면 토글합니다. 두 경우 모두 Q는 0이 됩니다.

  3. tCQ = 12 ns, tsu = 4 ns이고 원하는 주파수가 40 MHz일 때, 플립플롭 사이의 논리는 최대 얼마까지 지연될 수 있습니까?
    정답

    T = 1 / 40 MHz = 25 ns. t논리 ≤ 25 − 12 − 4 = 9 ns.

  4. D 플립플롭이 JK처럼 동작하도록 D의 식을 쓰세요.
    정답

    D = J·Q + K·Q이며, 이는 JK의 특성 방정식입니다.

이 부품들을 익혔으니 이제 카운터와 레지스터로, 그다음에는 상태 기계로 넘어갈 수 있습니다.