배우기 › 주제 1
논리 게이트: NOT, AND, OR, NAND, NOR, XOR, XNOR
읽는 시간 7분 · bitGateLab 팀
신호등에서 프로세서에 이르기까지 모든 디지털 전자 회로는 0과 1로 판단을 내리는 몇 가지 블록, 곧 논리 게이트로 만들어집니다. 여기서는 일곱 가지 기본 게이트가 어떻게 그려지고, 부울 대수로 어떻게 표현되며, 진리표가 어떻게 되는지 알아봅니다. 마지막에는 NAND나 NOR 한 종류의 게이트만으로 나머지 게이트를 모두 만들 수 있는 이유도 살펴봅니다.
논리 레벨: 0과 1의 의미
디지털 회로에서 각 신호는 두 가지 상태 중 하나만 가질 수 있습니다. 낮은 전압(0 V 근처)을 논리 0 또는 거짓이라 하고, 높은 전압(전원 전압 근처, 예를 들어 5 V나 3.3 V)을 논리 1 또는 참이라고 합니다. 게이트는 하나 이상의 입력을 받아 출력 하나를 내보내는데, 이 출력은 오직 입력의 현재 값에만 의존합니다. 아무것도 기억하지 않는다는 뜻입니다. 그래서 게이트로 이루어진 회로를 조합 논리라고 합니다.
게이트를 가장 완전하게 설명하는 방법은 진리표입니다. 가능한 모든 입력 조합과 각 조합에 해당하는 출력을 나열한 표입니다. 입력이 n개이면 조합은 2n개이므로, 입력이 두 개인 게이트의 진리표는 4행이고 입력이 세 개인 게이트의 진리표는 8행입니다.
세 가지 기본 게이트
NOT(인버터)
입력이 하나뿐이며 그 반대 값을 내보냅니다. 0이 들어오면 1이 나오고 1이 들어오면 0이 나옵니다. Y = A로 씁니다(A'나 ¬A로 쓰기도 합니다). 기호는 끝에 버블(작은 원)이 달린 삼각형이며, 이 버블은 "여기서 반전된다"는 것을 나타내는 공통 표시입니다.
| A | Y = A |
|---|---|
| 0 | 1 |
| 1 | 0 |
AND(논리곱)
출력은 모든 입력이 1일 때만 1이 됩니다. 곱셈처럼 Y = A·B 또는 간단히 Y = AB로 씁니다. 직렬로 연결한 스위치 두 개를 떠올려 보세요. 둘 다 닫혀 있어야만 전구가 켜집니다.
OR(논리합)
출력은 입력 중 하나 이상이 1이면 1이 됩니다. 덧셈처럼 Y = A + B로 씁니다. 병렬로 연결한 스위치 두 개와 같습니다. 주의하세요. 부울 대수에서는 1 + 1 = 1이지 2가 아닙니다.
파생 게이트: NAND, NOR, XOR, XNOR
NAND는 AND 뒤에 인버터를 붙인 것입니다: Y = AB. 모든 입력이 1일 때만 출력이 0입니다. NOR는 OR를 반전한 것입니다: Y = A + B. 모든 입력이 0일 때만 1이 됩니다. 기호에서는 둘 다 출력에 버블이 붙습니다.
XOR(배타적 OR)는 입력이 서로 다를 때 1이 됩니다: Y = A ⊕ B = AB + AB. 입력이 셋 이상이면 XOR는 1의 개수가 홀수일 때 1이 되므로 패리티 비트를 계산하는 데 쓰입니다. XNOR는 그 보수로 Y = A ⊕ B = AB + A B이며, 입력이 서로 같을 때 1이 됩니다. 한 비트짜리 일치 비교기인 셈입니다.
다음은 입력이 두 개인 여섯 가지 게이트의 진리표를 하나로 모은 것입니다.
| A | B | AND | OR | NAND | NOR | XOR | XNOR |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
예제: 작은 회로 계산하기. Y = (A + B) · C를 A = 0, B = 1, C = 1일 때 계산해 보세요.
- OR: A + B = 0 + 1 = 1.
- 반전: 1 = 0.
- C와 AND: 0 · 1 = 0.
결과: Y = 0. A = 0, B = 0, C = 1이면 OR는 0, 인버터는 1, AND는 1을 내므로 Y = 1입니다.
NAND와 NOR: 범용 게이트
어떤 게이트 한 종류만 여러 개 써서 NOT, AND, OR를 만들 수 있고, 따라서 어떤 논리 함수든 만들 수 있다면 그 게이트는 범용 게이트입니다. NAND와 NOR가 이 성질을 가집니다. 여기에는 실용적인 의미가 있습니다. 제조사는 한 종류의 셀만 생산해 설계 전체를 구성할 수 있고, 여러분은 74HC 계열의 칩 하나만으로 회로 전체를 해결할 수 있습니다(예를 들어 74HC00에는 입력이 두 개인 NAND가 네 개 들어 있습니다).
NAND만으로 만들기
- NOT: NAND의 두 입력을 하나로 묶습니다. 두 입력에 모두 A가 들어가면 A·A = A입니다.
- AND: NAND 뒤에 인버터로 쓰는 NAND를 하나 더 붙입니다: AB = AB.
- OR: 각 입력을 NAND로 반전한 다음 세 번째 NAND로 합칩니다: A·B = A + B(드 모르간의 정리).
NOR만으로 만들기
- NOT: NOR의 입력을 하나로 묶습니다: A + A = A.
- OR: NOR 뒤에 인버터로 쓰는 NOR를 붙입니다.
- AND: 각 입력을 NOR로 반전한 다음 또 하나의 NOR로 합칩니다: A + B = AB.
예제: NAND 네 개로 만드는 XOR. N1 = AB, N2 = A·N1, N3 = B·N1, Y = N2·N3라고 합시다. 네 가지 경우를 확인해 보세요.
| A | B | N1 | N2 | N3 | Y |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 |
Y 열이 XOR의 열과 일치합니다. 게이트는 네 개, 칩은 하나면 됩니다.
흔한 실수
- OR에서 1 + 1 = 2라고 생각하는 것. 부울 논리에서는 합이 포화됩니다: 1 + 1 = 1.
- AB(NAND, 전체를 덮는 막대 하나)와 A B(따로 떨어진 막대 두 개, NOR와 같음)를 혼동하는 것. 막대의 길이에 따라 결과가 달라집니다.
- 입력이 세 개인 XOR가 "입력 하나만 1일 때" 1이 된다고 믿는 것. 실제로는 1의 개수가 홀수일 때 1이 되며, 여기에는 1, 1, 1인 경우도 포함됩니다.
- 실제 CMOS 칩에서 입력을 연결하지 않고 두는 것. 플로팅 입력은 0으로도 1로도 제멋대로 읽힐 수 있으니 접지나 전원에 연결하세요.
시뮬레이터에서 해 보기
이 표들을 외우는 가장 좋은 방법은 직접 만들어 보는 것입니다. 회로 편집기에서 게이트를 놓고 입력을 바꿔 가며 출력을 바로 확인할 수 있습니다. 그런 다음 도구가 계산해 주는 진리표와 비교해 보세요.
- 입력 두 개, NAND 게이트 하나, 출력 하나를 놓고 서로 연결합니다.
- 입력을 네 가지 조합으로 바꿔 가며 각 경우의 출력을 적습니다.
- 회로의 진리표를 생성해 이 글의 진리표와 비교합니다.
- 예제의 NAND 네 개짜리 XOR를 만들고, 그 진리표가 XOR 게이트 하나의 진리표와 일치하는지 확인합니다.
- 가상 브레드보드로 옮겨 보고 싶다면 74HC 계열의 NAND 칩을 놓고 전원을 연결한 뒤 출력 LED를 관찰합니다.
연습문제
- Y = A + B의 진리표를 작성하세요.
정답
AB = 00, 01, 10, 11일 때 출력은 1, 0, 1, 1입니다. A = 0이고 B = 1일 때만 0이 됩니다.
- 입력이 4개인 AND의 진리표는 몇 행이며, 그중 출력이 1인 행은 몇 개입니까?
정답
24 = 16행이며, 출력이 1인 행은 하나(1111)뿐입니다.
- A = 1, B = 1, C = 1일 때 입력이 세 개인 XOR의 출력을 구하세요.
정답
1 ⊕ 1 = 0이고 0 ⊕ 1 = 1입니다. 1이 세 개(홀수 개)이므로 출력은 1입니다.
- 이 방법으로 입력이 두 개인 AND를 만들려면 NOR 게이트가 최소 몇 개 필요합니까?
정답
세 개입니다. 인버터로 쓰는 NOR 두 개(A용 하나, B용 하나)와, A와 B를 입력받는 세 번째 NOR가 필요하며, 그 출력은 A + B = AB입니다.
이 게이트들로 이루어진 식을 변형하고 간소화하는 방법은 부울 대수에서 이어집니다.