25.06
지난 글에서 AND, OR, NOT 같은 논리 게이트들을 조합하여 덧셈을 수행하는 계산기를 만들 수 있음을 배웠습니다. 하지만 이 계산기에는 한 가지 큰 한계가 있었습니다. 바로 계산 결과를 기억하지 못한다는 점입니다.
가산기처럼 현재 입력값에만 의존해서 출력이 즉시 결정되는 회로를 조합 논리 회로(Combinational Logic Circuit)라고 부릅니다. 입력이 바뀌면 출력도 바로 바뀌고, 이전에 어떤 입력이 들어왔었는지는 기억하지 못합니다.
마치 벽의 전등 스위치를 누르는 동안만 불이 켜지고 손을 떼면 즉시 불이 꺼지는 것과 같습니다. 일반적인 전등 스위치는 한 번 누르면 불이 켜지고, 다시 누르면 불이 꺼지는 토글 방식으로 작동하는데, 조합 논리 회로로는 이런 기능이 불가능합니다. 전등의 이전 상태가 무엇이었는지를 기억해야 새로운 상태를 계산할 수 있기 때문입니다.
오늘은 컴퓨터의 기억상실증을 고쳐줄 회로, 바로 순차 논리 회로를 알아봅시다.
반면 기억 능력을 가진 회로를 순차 논리 회로(Sequential Logic Circuit)라고 합니다. 순차 논리 회로는 현재 입력뿐만 아니라 이전 상태(기억된 값)에도 의존하여 출력을 결정합니다.
그렇다면 순차 논리 회로는 어떻게 정보를 기억하는 걸까요? 피드백(Feedback), 즉 회로의 출력이 다시 입력으로 돌아가는 구조가 핵심입니다. 이 피드백 루프를 활용하여 가장 단순한 형태의 기억 장치인 SR 래치(SR Latch)를 만들 수 있습니다.
NOR 게이트는 OR의 결과를 뒤집은 것으로, 두 입력이 모두 0일 때만 1을 출력합니다. SR 래치는 이 NOR 게이트 단 두 개만으로도 만들 수 있습니다.
S와 R을 클릭해 값을 토글할 수 있습니다. 다음 순서대로 조작해봅시다:
SR 래치는 두 가지 입력과 두 가지 출력을 가집니다:
| S | R | Q | Q̅ | 동작 |
|---|---|---|---|---|
| 0 | 0 | 이전 상태 유지 | 이전 상태 유지 | 유지 (Hold) |
| 0 | 1 | 0 | 1 | 리셋 (Reset) |
| 1 | 0 | 1 | 0 | 설정 (Set) |
| 1 | 1 | 불안정 | 불안정 | 금지 상태 |
각 입력과 출력의 역할을 살펴보면:
S와 R 입력이 모두 0으로 돌아갔을 때 래치는 이전에 기억했던 값을 계속 유지한다는 점이 가장 큰 특징입니다.
SR 래치는 기본적인 ‘기억’ 기능을 제공하지만, 실제 컴퓨터에서 사용하기에는 몇 가지 문제가 있습니다.
가장 큰 문제는 S와 R이 동시에 1이 될 때 발생하는 불안정한 상태입니다. S와 R이 모두 1이면 두 NOR 게이트의 출력은 강제로 0이 됩니다. 즉, Q=0, Q̅=0이 되는데, 이는 SR 래치의 기본 정의인 “Q와 Q̅는 항상 반대 값”이라는 조건을 위배합니다.
더 큰 문제는 이 상태에서 다시 S=0, R=0으로 바꿀 때 발생합니다. 두 NOR 게이트가 동시에 입력 0을 받게 되면서 서로의 출력을 기다리는 경쟁 상태에 빠집니다. 어느 게이트가 먼저 반응하느냐에 따라 Q=1이 될 수도, Q=0이 될 수도 있습니다. 즉 결과를 예측할 수 없습니다.
이러한 SR 래치의 문제를 해결하기 위해 등장한 것이 바로 D 래치(D Latch)입니다. D 래치는 AND를 활용해 SR 래치의 입력 회로를 변형하여 S와 R이 동시에 활성화되는 불안정한 상태를 원천적으로 방지합니다.
D와 E를 클릭해 값을 토글할 수 있습니다. 다음 순서대로 조작해봅시다:
D 래치는 하나의 ‘데이터(Data, D)’ 입력과 ‘활성화(Enable, E)’ 입력만을 가집니다.
활성화(E) 신호가 켜져 있는 동안에만 데이터(D) 입력의 값이 Q에 반영됩니다. 활성화 신호가 꺼지면 D 입력이 아무리 변해도 래치는 이전 값을 유지합니다.
Q를 잠그는 자물쇠가 E라고 생각해도 좋습니다.
논리 게이트의 피드백 구조를 활용해 정보를 기억하는 래치를 만들었습니다. 하지만 D 래치에는 한 가지 한계가 남아있습니다. 활성화 신호가 켜져 있는 동안에는 입력 변화를 그대로 따라가기 때문에, 여러 래치가 연결된 시스템에서 데이터가 의도치 않게 전파될 수 있습니다.
다음 글에서는 이 문제를 더 자세히 살펴보고 이를 해결하는 클럭과 플립플롭을 다룹니다.