Skip to Content
독학사독학사 2단계논리회로19. 플립플롭 변환·타이밍·레이스 조건

이번 문서의 목표: 이 파일을 다 읽으면 여기표를 이용해 한 플립플롭을 다른 종류의 플립플롭으로 변환하는 논리식을 유도하고, 셋업·홀드 타임 위반과 레이스·해저드가 왜 생기는지 설명할 수 있다.

왜 플립플롭을 서로 변환해야 할까

18편에서 SR·D·JK·T 네 종류의 플립플롭을 배웠다. 그런데 회로 설계 도중 “가지고 있는 부품은 JK 플립플롭인데, 설계는 T 플립플롭 기준으로 이미 끝났다”거나 “재고에 D 플립플롭만 있는데 SR 방식으로 배운 회로를 구현해야 한다”는 상황이 자주 생긴다. 이때 한 플립플롭의 입력 단에 약간의 조합논리회로를 추가해서, 마치 다른 종류의 플립플롭처럼 동작하게 만드는 것이 플립플롭 변환(flip-flop conversion)이다. 독학사 시험에서도 “JK를 D로 변환하려면 어떤 조합논리를 추가해야 하는가”와 같은 문제가 반복 출제된다.

쉽게 말하면: 플립플롭 변환은 A라는 부품 앞에 작은 변환 회로를 붙여서, B라는 부품처럼 동작하게 만드는 것이다.

플립플롭 변환의 공통 절차

어떤 조합을 변환하든 절차는 항상 같다. 목표로 하는 플립플롭의 여기표를, 실제로 가지고 있는 플립플롭의 특성표(또는 특성식)와 연결하는 것이 핵심이다.

  1. 목표 플립플롭의 여기표를 적는다. 최종적으로 원하는 동작(예: D처럼 동작)의 여기표를 가져온다. 이 표의 입력 열(D)이 “목표 입력”이다.
  2. 가진 플립플롭의 여기표를 옆에 나란히 적는다. 실제로 가지고 있는 플립플롭(예: JK)의 여기표를 같은 Q(t),Q(t+1)Q(t), Q(t+1) 조합 기준으로 나란히 붙인다. 이 표의 입력 열(J, K)이 “실제로 넣어야 할 값”이다.
  3. 목표 입력을 변수로, 실제 입력을 함수로 하는 진리표를 만든다. 즉 “목표 입력(D)이 주어졌을 때 실제 입력(J, K)이 무엇이어야 하는가”를 표로 정리한다. 이때 현재 상태 Q(t)Q(t)도 함께 변수로 들어간다.
  4. 각 실제 입력(J, K 등)에 대해 카르노맵으로 간소화(11편 참고)해 논리식을 구한다.
  5. 그 논리식대로 조합논리회로를 그려 실제 플립플롭의 입력단 앞에 붙인다.

JK 플립플롭을 D 플립플롭으로 변환하기

쉽게 말하면: JK 플립플롭 앞에 “D를 J로, D의 보수를 K로” 연결하는 작은 회로만 붙이면 D 플립플롭처럼 동작한다.

1단계 — 목표(D) 플립플롭의 여기표

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

2단계 — 가진(JK) 플립플롭의 여기표

Q(t)Q(t)Q(t+1)Q(t+1)JK
000X
011X
10X1
11X0

3~4단계 — 두 표를 합쳐 J, K를 D와 Q(t)Q(t)의 함수로 정리

Q(t)Q(t)DJK
000X
011X
10X1
11X0

이 표에서 J열을 보면, D=0일 때 항상 J=0, D=1일 때 항상 J=1이다. Q(t)Q(t) 값과는 무관하게 J = D로 정리된다. K열도 마찬가지로 K = D’(D의 보수)로 정리된다(D=0일 때 K=1 또는 X, D=1일 때 K=0 또는 X이므로, don’t care를 D’과 일치하도록 채우면 된다).

J=D,K=DJ = D, \quad K = D'
  • DD: 외부에서 넣고 싶은 목표 입력
  • J,KJ, K: 실제 JK 플립플롭에 넣어야 하는 값

결과 해석: JK 플립플롭의 J 입력단에 D를 그대로, K 입력단에 D를 NOT 게이트에 통과시킨 값을 연결하면, 이 JK 플립플롭은 외부에서 볼 때 정확히 D 플립플롭처럼 동작한다.

JK 플립플롭을 T 플립플롭으로 변환하기

쉽게 말하면: JK 플립플롭의 J와 K 입력을 서로 묶어서 T로 만들면, 그 자체가 곧 T 플립플롭의 정의와 같다.

18편에서 이미 “T 플립플롭은 JK 플립플롭에서 J=K=TJ=K=T로 묶어 만든다”고 설명했다. 이를 변환 절차로 다시 확인해보자.

목표(T) 플립플롭의 여기표

Q(t)Q(t)Q(t+1)Q(t+1)T
000
011
101
110

가진(JK) 플립플롭의 여기표와 대조

Q(t)Q(t)TJK
000X
011X
11X1
10X0

J열을 보면 T=0일 때 항상 J=0, T=1일 때 항상 J=1이므로 J = T다. K열도 T=0일 때 K=0 또는 X, T=1일 때 K=1 또는 X이므로 don’t care를 채우면 K = T가 된다.

J=T,K=TJ = T, \quad K = T

즉 J와 K를 하나로 묶어 같은 신호 T를 넣으면 그대로 T 플립플롭이 된다. 이는 18편에서 배운 정의(J=K=TJ=K=T)와 정확히 일치하며, “정의를 아는 것”과 “변환 절차로 유도해서 검증하는 것”이 같은 결과에 도달함을 보여준다.

D 플립플롭을 JK 플립플롭으로 변환하기

쉽게 말하면: D 플립플롭은 입력이 그대로 다음 상태가 되므로, JK의 특성식을 그대로 D 입력단에 넣어주면 JK처럼 동작한다.

이번에는 반대 방향이다. D 플립플롭의 특성식은 Q(t+1)=DQ(t+1) = D이므로, D에 JK의 특성식을 그대로 대입하면 된다.

D=JQ(t)+KQ(t)D = J \cdot Q(t)' + K' \cdot Q(t)
  • J,KJ, K: 외부에서 넣고 싶은 목표 입력
  • Q(t)Q(t): 현재 상태
  • 우변은 18편에서 유도한 JK 플립플롭의 특성식과 동일하다

결과 해석: D 플립플롭 앞에 J,K,Q(t)J, K, Q(t)(현재 출력을 되먹임)를 입력으로 받는 조합논리회로(AND-OR 게이트 두 단)를 만들어 D 입력단에 연결하면, 이 D 플립플롭은 JK 플립플롭처럼 동작한다. 이 예시는 “여기표를 만들 필요 없이, 특성식을 그대로 대입해도 변환식을 얻을 수 있다”는 또 다른 접근법을 보여준다. D 플립플롭처럼 특성식이 Q(t+1)=DQ(t+1)=D인 경우, 목표 플립플롭의 특성식을 D 자리에 그대로 대입하는 것이 여기표를 만드는 것보다 더 빠르다.

변환 요약표

변환 방향결과 논리식유도 방법
JK → DJ=DJ=D, K=DK=D'목표(D) 여기표와 가진(JK) 여기표 대조
JK → TJ=TJ=T, K=TK=T목표(T) 여기표와 가진(JK) 여기표 대조
D → JKD=JQ(t)+KQ(t)D = J \cdot Q(t)' + K' \cdot Q(t)JK의 특성식을 D 자리에 그대로 대입
D → TD=TQ(t)D = T \oplus Q(t)T의 특성식을 D 자리에 그대로 대입
SR → DS=DS=D, R=DR=D'18편에서 다룬 D 플립플롭 자체의 정의와 동일

시험 함정: “D 플립플롭을 다른 종류로 변환할 때는 항상 여기표를 새로 그려야 한다”는 진술은 정확하지 않다. D 플립플롭처럼 특성식이 Q(t+1)=DQ(t+1)=D로 단순한 경우, 목표 플립플롭의 특성식을 D 자리에 그대로 대입하는 것이 더 빠른 지름길이다. 여기표 대조법과 특성식 대입법 둘 다 같은 결과에 도달하는 서로 다른 방법이라는 점을 알아 두어야 한다.

타이밍 다이어그램: 시간에 따른 신호 변화 그림

쉽게 말하면: 타이밍 다이어그램은 클록과 여러 입출력 신호가 시간에 따라 언제 0이고 언제 1인지를 나란히 그려서, 신호들 사이의 관계를 한눈에 보여주는 그림이다.

타이밍 다이어그램(timing diagram)은 가로축을 시간으로 두고, 클록·입력·출력 각각을 사각파(0과 1이 계단식으로 바뀌는 파형)로 나란히 그린 그림이다. 순차회로 문제에서는 “클록 파형과 D 입력 파형이 이렇게 주어졌을 때, Q 출력 파형을 그리시오”와 같은 형태로 자주 출제된다.

작은 예시: 상승 에지 트리거 D 플립플롭에서, 클록이 1번째로 상승 에지를 지나는 순간의 D값이 1이었다면 그 직후 Q는 1로 바뀌고, 클록이 1인 동안 D가 바뀌어도(예를 들어 D가 1에서 0으로 바뀌어도) Q는 다음 상승 에지가 올 때까지 그대로 유지된다. 이 “에지가 지날 때만 반응하고 그 사이에는 무시한다”는 원칙을 정확히 지켜 파형을 그리는 것이 타이밍 다이어그램 문제 풀이의 핵심이다.

셋업 타임과 홀드 타임: 클록 에지 주변의 안전 구간

쉽게 말하면: 셋업 타임은 클록이 튀기 전에 입력이 미리 안정돼 있어야 하는 시간, 홀드 타임은 클록이 튄 후에도 입력이 바뀌지 않고 버텨야 하는 시간이다.

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

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

이 두 조건 중 하나라도 어기면, 플립플롭 내부의 되먹임 회로가 0도 1도 아닌 애매한 전압에 걸려 출력이 한동안 불안정해지는 준안정(metastability) 상태가 생길 수 있다. 준안정 상태는 짧은 시간 안에 0이나 1 중 하나로 정착하긴 하지만, 그 시점을 예측할 수 없어 회로 오동작의 원인이 된다.

Tclk,min=tpd+tsuT_{\text{clk,min}} = t_{pd} + t_{su}
  • Tclk,minT_{\text{clk,min}}: 안정적으로 동작하기 위한 최소 클록 주기
  • tpdt_{pd}: 전파 지연(propagation delay, 한 플립플롭의 출력이 다음 조합논리를 거쳐 다음 플립플롭 입력에 도달하기까지 걸리는 시간)
  • tsut_{su}: 셋업 타임

이 식은 “클록 주기를 무한정 줄여 속도를 무한정 높일 수 없다”는 사실을 보여준다. 전파 지연과 셋업 타임을 합친 시간보다 클록 주기가 짧아지면, 다음 에지가 올 때까지 신호가 안정될 시간이 부족해 오동작이 생긴다.

시험 함정: “클록 주파수를 높이면 항상 회로 성능이 좋아진다”는 진술은 틀렸다. 클록 주기가 전파 지연과 셋업 타임의 합보다 짧아지면 오히려 회로가 오동작한다. 클록 주파수에는 회로 구조(전파 지연·셋업 타임)에 의해 정해지는 상한이 있다.

레이스 컨디션과 해저드

쉽게 말하면: 레이스 컨디션은 여러 신호가 거의 동시에 바뀔 때 어느 쪽이 먼저 도착하느냐에 따라 결과가 달라지는 상황이고, 해저드는 조합논리회로에서 신호 지연 차이 때문에 순간적으로 잘못된 값이 튀어나오는 현상이다.

레이스 컨디션(race condition)은 원래 두 가지 서로 다른 맥락에서 쓰이지만, 논리회로 과목에서는 주로 다음 두 가지를 말한다.

  • 래치에서의 레이스: 인에이블이 활성인 동안 되먹임 경로를 통해 값이 계속 바뀔 수 있는 래치를, 여러 개 사슬처럼 연결했을 때 신호가 한 번의 인에이블 구간 동안 여러 단을 건너뛰며 전파되어 버리는 문제. 이 문제 때문에 09~18편에서 배운 순차회로는 래치 대신 에지 트리거 플립플롭을 표준으로 쓴다.
  • JK 플립플롭에서의 레이스: 클록이 1인 시간(펄스 폭)이 너무 길면, J=K=1J=K=1(토글) 입력에서 한 클록 펄스 동안 출력이 여러 번 토글해 버릴 위험이 있는 현상(펄스 트리거 방식의 JK에서 주로 언급되는 문제이며, 에지 트리거 방식에서는 발생하지 않는다).

해저드(hazard)는 조합논리회로에서, 입력이 바뀔 때 신호가 여러 게이트 경로를 거치며 각기 다른 지연 시간을 갖기 때문에, 이론적으로는 출력이 바뀌지 않아야 할 순간에도 아주 짧은 시간 동안 출력이 잘못된 값으로 튀었다가(글리치, glitch) 다시 정상으로 돌아오는 현상이다.

구분레이스 컨디션해저드
발생 위치주로 래치·순차회로(피드백 경로)주로 조합논리회로
원인인에이블 구간이 길거나 클록 펄스 폭이 넓어서 값이 여러 번 바뀜게이트 경로별 전파 지연 차이
대표 해결책에지 트리거 플립플롭 사용여분의 항을 추가해 커버(consensus term 추가)
결과의도치 않은 여러 번의 상태 변화순간적인 잘못된 출력(글리치)

시험 함정: “레이스 컨디션과 해저드는 같은 현상을 부르는 다른 이름이다”는 틀린 설명이다. 레이스 컨디션은 주로 순차회로(피드백이 있는 래치·플립플롭 구조)에서, 해저드는 주로 조합논리회로의 경로별 지연 차이에서 발생한다는 점이 구분 기준이다.

핵심 정리

  • 플립플롭 변환은 목표 플립플롭의 여기표와 가진 플립플롭의 여기표(또는 특성식)를 대조해, 필요한 조합논리식을 유도하고 그 회로를 입력단 앞에 붙이는 절차다.
  • JK를 D로 변환하면 J=D,K=DJ=D, K=D', JK를 T로 변환하면 J=K=TJ=K=T가 되며, D를 다른 플립플롭으로 변환할 때는 목표 플립플롭의 특성식을 D 자리에 그대로 대입하는 방법도 쓸 수 있다.
  • 셋업 타임은 클록 에지 전에, 홀드 타임은 클록 에지 후에 입력이 안정되어야 하는 최소 시간이며, 이를 어기면 준안정 상태가 발생할 수 있다.
  • 최소 클록 주기는 전파 지연과 셋업 타임의 합보다 커야 하므로, 클록 주파수를 무한정 높일 수는 없다.
  • 레이스 컨디션은 주로 래치·펄스 트리거 구조에서 값이 의도치 않게 여러 번 바뀌는 문제이고, 해저드는 조합논리회로의 경로별 지연 차이로 인해 순간적으로 잘못된 값이 튀는 현상이다.

마무리 복습

문제 14지선다
JK 플립플롭을 D 플립플롭처럼 동작시키기 위한 변환식으로 옳은 것은?
문제 24지선다
JK 플립플롭을 T 플립플롭처럼 동작시키기 위한 변환식으로 옳은 것은?
문제 34지선다
D 플립플롭을 JK 플립플롭처럼 동작시키기 위한 변환식을 유도하는 방법으로 가장 적절한 것은?
문제 44지선다
셋업 타임과 홀드 타임에 대한 설명으로 옳지 않은 것은?
문제 54지선다
회로의 전파 지연이 5나노초, 셋업 타임이 2나노초일 때, 안정적으로 동작하기 위한 최소 클록 주기로 옳은 것은?
문제 64지선다
레이스 컨디션과 해저드를 비교한 설명으로 옳은 것은?

참고 자료

Last updated on