← 블로그로 돌아가기순차 논리

순차 논리 마스터하기: D 래치의 원리와 시뮬레이션

D 래치는 게이트형 SR 코어를 단일 입력 저장소로 바꿉니다. 방정식을 유도하고 투명성을 이해하며, 기호가 숨기는 타이밍 한계를 알아보세요.

DennyDenny
약 7분 소요
Chalkboard feature illustration for “순차 논리 마스터하기: D 래치의 원리와 시뮬레이션”

요약: D 래치는 한 비트를 저장하며 Qnext=(ED)+(E‾Q)Q_{next}=(E D)+(\overline{E}Q)를 따릅니다. Enable이 HIGH이면 전파 지연 후 Q는 D를 따르고, Enable이 LOW이면 Q는 값을 유지합니다. D와 D‾\overline D를 게이팅하면 일반 데이터 입력이 Set과 Reset을 동시에 인가하지 못하게 되지만, 물리적 래치에는 여전히 셋업/홀드 요구 사항이 있으며 닫히는 에지 근처에서 메타안정 상태가 될 수 있습니다.

순차 논리는 종종 SR 래치에서 시작합니다. 두 개의 독립 제어 입력은 유효하지 않은 인가 조합을 허용합니다. 게이트형 D 래치는 하나의 데이터 입력과 그 보수에서 이 제어들을 유도하여 정상 동작 중 그 조합을 제거하고, 새 데이터가 들어갈 수 있는 명시적인 시간을 추가합니다.

D_LATCH 구성 요소 다이어그램

D_LATCH 해부: 무엇이며 왜 중요한가

본질적으로 D_LATCH는 SR 구조에서 파생된 레벨 감지형 메모리 소자입니다. 부울 대수 모델에서 입력 게이팅은 Set과 Reset이 상호 배타적으로 유지되게 합니다. 현재 입력에 의존하는 조합 논리와 에지 트리거 저장소 사이에 위치하며, 래치는 이전 값을 유지할 수 있습니다.

이 구성 요소는 두 개의 주요 입력과 두 개의 출력을 갖습니다.

  • D (Data): 래치가 저장해야 할 값(0 또는 1)을 결정하는 단일 입력입니다.
  • E (Enable): 흔히 ‘E’ 또는 ‘G’(Gate)로 표기되는 이 입력은 제어 스위치 역할을 합니다. 래치가 D 입력에 주의를 기울일 시점을 결정합니다.
  • Q: 저장된 데이터를 반영하는 주 출력입니다.
  • Q‾\overline{Q}: 저장 데이터의 보수(반전) 출력입니다.

동작은 Enable 신호 상태에 따라 뚜렷한 두 모드로 정의됩니다. E=1E = 1이면 래치는 투명 모드에 있습니다. 출력 Q는 D 입력의 상태를 그대로 따릅니다. D가 바뀌면 Q도 거의 즉시 바뀝니다. E=0E = 0이면 래치는 래치 모드로 들어갑니다. Q 출력은 D 입력을 완전히 무시하고 E가 1에서 0으로 전환되기 직전에 가졌던 마지막 값을 유지합니다.

D_LATCH 동작 살펴보기

기술 사양과 진리표

D_LATCH를 완전히 이해하려면 기호 너머를 보고 상태 전이를 지배하는 논리를 이해해야 합니다. 진리표는 현재 입력을 바탕으로 Q의 다음 상태(QnextQ_{next})를 명확히 정의합니다. E가 0일 때 D 입력은 중요하지 않으며, 이는 “상관없음”을 뜻하는 ‘X’로 표기합니다.

E (인에이블)D (데이터)QnextQ_{next}동작
0XQQ유지(래치됨)
100리셋(투명)
111세트(투명)

특성 방정식

D_LATCH 특성 방정식으로 이 동작을 수학적으로 표현할 수 있습니다. 이 방정식은 회로 동작의 형식적 정의이며 더 큰 순차 설계에서 부울 대수 단순화에 필수적입니다.

Qnext=(E⋅D)+(E‾⋅Q)Q_{next} = (E \cdot D) + (\overline{E} \cdot Q)

이를 제일원리에서 유도해 봅시다. D_LATCH 내부는 다음과 같은 게이트형 SR 래치입니다.

  • S=E⋅DS = E \cdot D
  • R=E⋅D‾R = E \cdot \overline{D}

SR 래치의 특성 방정식은 Qnext=S+R‾⋅QQ_{next} = S + \overline{R} \cdot Q입니다. 대입하면 다음과 같습니다.

Qnext=(E⋅D)+(E⋅D‾)‾⋅QQ_{next} = (E \cdot D) + \overline{(E \cdot \overline{D})} \cdot Q

드모르간 법칙 (E⋅D‾)‾=E‾+D\overline{(E \cdot \overline{D})} = \overline{E} + D를 적용하면 다음과 같습니다.

Qnext=(E⋅D)+(E‾+D)⋅Q=(E⋅D)+(E‾⋅Q)+(D⋅Q)Q_{next} = (E \cdot D) + (\overline{E} + D) \cdot Q = (E \cdot D) + (\overline{E} \cdot Q) + (D \cdot Q)

(E⋅D)(E \cdot D)는 D와 Q가 모두 관련되는 경우를 이미 포괄하므로, (D⋅Q)(D \cdot Q) 항은 부울 대수 단순화(합의 정리)에 의해 흡수됩니다. 그 결과 깔끔한 식이 남습니다.

Qnext=(E⋅D)+(E‾⋅Q)Q_{next} = (E \cdot D) + (\overline{E} \cdot Q)

이를 논리 구성 요소로 나누어 보면 다음과 같습니다.

  • E⋅DE \cdot D 항은 투명성을 나타냅니다. Enable이 높으면 출력은 D의 값이 됩니다.
  • E‾⋅Q\overline{E} \cdot Q 항은 메모리를 나타냅니다. Enable이 낮으면 출력은 현재 상태 Q를 유지합니다.
  • 이 방정식은 위장한 멀티플렉서입니다. Enable 신호가 새 데이터와 저장된 값 중 하나를 선택합니다.

내부 논리: SR에서 D로

D_LATCH는 기발한 변형을 가한 “게이트형 SR_LATCH”라고 생각할 수 있습니다. 내부 게이트 구조를 보면 D 입력은 “Set” 쪽으로 직접 공급하고, 반전된 D 입력(NOT 게이트 경유)은 “Reset” 쪽으로 공급합니다. 이 구조는 회로가 인에이블될 때 S와 R이 항상 반대가 되도록 보장합니다.

  • S=E⋅DS = E \cdot D
  • R=E⋅D‾R = E \cdot \overline{D}

E=1E=1일 때 D=1D=1은 Set을 만들고 D=0D=0은 Reset을 만듭니다. 따라서 일반 데이터 경로는 두 명령을 동시에 내릴 수 없습니다. E=0E=0이면 두 제어 입력은 모두 비활성화되고 코어는 값을 유지합니다. 실제 게이트는 동시에 전환되지 않습니다. 닫히는 시점 근처의 D 및 Enable 전이는 타이밍을 위반할 수 있으므로, D 래치는 SR 진리표 오류는 피하지만 메타안정성을 제거하지는 못합니다.

SR_LATCH 구성 요소 다이어그램

흔한 함정: 투명성의 위험

D_LATCH의 가장 큰 장점인 투명성은 복잡한 고속 시스템에서는 가장 중요한 약점이기도 합니다. 이것은 학생들이 단순 회로에서 CPU 설계로 넘어갈 때 자주 마주치는 핵심적인 함정입니다.

Enable 신호가 높은 전체 기간 동안 출력 Q가 입력 D를 따르므로, D 선의 모든 잡음, 글리치, 의도하지 않은 신호 변화가 출력으로 직접 전달됩니다. 이를 레벨 감지형 동작이라고 합니다.

Enable 신호를 창문이라고 상상해 보세요. E=1E=1이면 창문이 활짝 열립니다. 새가 날아가거나 나뭇잎이 떨어지는 것(“글리치”)까지 포함해 바깥에서 일어나는 모든 일(D 입력)을 실시간으로 봅니다. E=0E=0이면 창문은 즉시 불투명해지고, 마지막으로 본 장면의 스냅샷을 보여 줍니다.

실무에서 투명성이 위험한 이유: 한 D_LATCH의 출력이 조합 논리를 통과해 같은 래치 또는 다른 래치의 입력으로 되돌아가는 시스템을 생각해 봅시다. Enable이 높은 동안 출력의 모든 변화는 즉시 논리를 통과해 입력에 나타나고, 입력은 다시 출력을 바꿉니다. 이것은 조합 논리를 통한 피드백 경로를 만들며 다음을 유발할 수 있습니다.

  1. 단일 인에이블 창 안에서의 의도하지 않은 여러 상태 변화.
  2. 데이터 선의 과도 스파이크가 Q로 통과하여 하위 회로를 손상시키는 글리치 전파.
  3. 최종 래치 값이 Enable이 정확히 언제 떨어지는지에 달려 검증의 악몽이 되는 타이밍 예측 불가능성.

많은 동기식 설계는 외부에서 보이는 캡처가 클록 에지와 연관된 D 플립플롭을 사용합니다. 다른 고성능 설계는 시간 빌리기를 위해 의도적으로 2상 래치를 사용합니다. 어느 선택도 타이밍 분석을 없애지 않습니다. 각각은 서로 다른 셋업, 홀드, 투명성 및 클로킹 제약 집합을 정의합니다.

오실로스코프 검증: 신호 보기

D_LATCH의 타이밍을 진정으로 이해하려면 파형을 봐야 합니다. digisim.io에서 OSCILLOSCOPE는 이러한 타이밍 관계를 디버깅하는 최고의 도구입니다.

OSCILLOSCOPE를 E, D, Q 핀에 연결하면 몇 가지 중요한 동작을 확인할 수 있습니다.

  1. 전파 지연(tpdt_{pd}): 물리적 또는 지연 인지형 모델은 투명 상태에서 D가 바뀐 후 Q가 응답하기까지의 시간을 보여 줍니다. 이상적인 논리 시뮬레이터는 이 지연을 모델링하지 않을 수 있습니다.
  2. 래칭 순간: E가 1에서 0으로 떨어지는 정확한 순간에 Q 선을 보세요. 그 정확한 마이크로초에 D가 가진 값이 무엇이든 Q는 그것을 유지하며, 이후 D가 어떻게 변하든 상관없습니다.
  3. 글리치 포착: E가 높은 동안 D를 빠르게 토글하면 그 펄스가 Q에 그대로 반영되는 것을 볼 수 있습니다. E가 낮을 때 D를 토글하면 OSCILLOSCOPE의 Q 선은 평평하고 안정적인 수평선으로 유지됩니다.

오실로스코프 데모 열기

실제 응용: 브레드보드 너머

D_LATCH는 단지 학술적 연습이 아닙니다. 매일 사용하는 장치의 아키텍처에서 발견되는 핵심 구성 요소입니다.

1. CPU 파이프라인 레지스터

파이프라인은 서로 다른 명령어가 각기 다른 단계에 동시에 놓일 수 있도록 단계 사이에 상태를 둡니다. 클로킹 방식에 따라 그 경계는 에지 트리거 플립플롭이나 교대 래치 위상을 사용할 수 있습니다. 래치 기반 파이프라인은 경계를 넘어 시간을 빌릴 수 있지만, 투명성, 비중첩, 홀드 타이밍을 신중하게 제어해야 합니다.

2. 주소 디멀티플렉싱(Intel 8086 예)

집적 회로의 물리적 핀을 절약하기 위해 Intel 8085와 8086 같은 초기 마이크로프로세서는 다중화된 주소/데이터 버스를 사용했습니다. 머신 사이클의 일부 동안 핀은 메모리 주소를 전달하고, 다른 일부 동안에는 데이터를 전달했습니다.

엔지니어들은 이 신호를 “디멀티플렉싱”하기 위해 외부 D_LATCH(유명한 74LS373 8비트 투명 래치 등)를 사용했습니다. 프로세서는 버스에 주소를 올리고 **ALE(Address Latch Enable)**라는 신호를 펄스합니다. D_LATCH는 주소를 잡아 메모리 칩에 유지하고, 그 뒤 프로세서 핀은 데이터를 보내거나 받을 수 있게 됩니다. D_LATCH가 없었다면 CPU에 두 배의 핀이 필요했을 것이고, CPU는 더 커지고 훨씬 비싸졌을 것입니다.

오실로스코프가 연결된 D 래치 템플릿

digisim.io에서 D_LATCH 만들기

이론은 필수지만, 직관은 직접 배선해 볼 때 생깁니다. 아래의 구성에는 AND 게이트 두 개, NOR 게이트 두 개, NOT 게이트 하나를 사용합니다.

단계별 구성

  1. 게이트 배치: 캔버스에 AND 게이트 두 개, NOR 게이트 두 개, NOT 게이트 하나를 끌어다 놓습니다.
  2. 입력 설정: INPUT_SWITCH 구성 요소 두 개를 추가합니다. 하나에는 “Data”, 다른 하나에는 “Enable”이라고 레이블을 붙입니다.
  3. 입력 논리:
  • “Data”를 위쪽 AND 게이트에 연결합니다.
  • “Data”를 NOT 게이트에 연결한 다음, NOT 출력을 아래쪽 AND 게이트에 연결합니다.
  • “Enable”을 두 AND 게이트의 두 번째 입력에 연결합니다.
  1. 메모리 코어:
  • 위쪽 AND 게이트의 출력을 NOR 게이트 하나의 입력에 연결합니다.
  • 아래쪽 AND 게이트의 출력을 두 번째 NOR 게이트의 입력에 연결합니다.
  • 교차 결합: 이것이 핵심입니다. 위쪽 NOR 게이트의 출력을 아래쪽 NOR 게이트의 입력에 연결합니다. 아래쪽 NOR 게이트의 출력을 다시 위쪽 NOR 게이트의 입력에 연결합니다.
  1. 출력: OUTPUT_LIGHT를 아래쪽 NOR 게이트의 출력에 연결합니다. 이것이 Q입니다.

SimCast 경험

digisim.io의 SimCast 기능은 신호 전파를 슬로 모션으로 재생합니다. “Enable” 신호가 문지기 역할을 하는 모습을 관찰하세요. Data의 HIGH는 입력 AND 게이트에 도달하지만 Enable도 HIGH가 될 때까지 그곳에서 멈춥니다.

커리큘럼의 관련 주제

digisim.io에서 디지털 논리를 계속 탐구하면서 다음 관련 주제를 살펴보면 이해가 깊어질 것입니다.

D_LATCH는 digisim.io의 체계적인 학습 경로에서 핵심적인 전환점입니다. “지금 무슨 일이 일어나는가”에서 “이전에 무슨 일이 일어났는가”로 넘어가는 지점입니다.

마무리: 메모리를 향한 첫걸음

D 래치는 이안정 피드백을 제어된 레벨 감지형 저장소로 바꿉니다. 일반 D 입력이 Set과 Reset을 동시에 요청하지 못하게 막는 한편, 투명성과 닫히는 에지의 타이밍은 여전히 핵심 설계 고려 사항입니다.

D 플립플롭으로 계속 진행해 에지 트리거 저장소가 인터페이스를 어떻게 바꾸는지 살펴보거나, D 래치 구성 요소 참조를 열어 보세요.

아이디어를 실제로 작동하는 회로로 만들어 보세요.