이번 문서의 목표: 이 문서를 다 읽으면 크기 비교기·인코더·디코더·멀티플렉서·디멀티플렉서 각각의 진리표와 최소식을 도출하고, 실제 선택 신호·입력값을 대입해 출력을 계산하며, 이진-그레이 코드 변환 회로의 구조를 설명할 수 있다.
이번 편에서 다루는 회로들의 공통점
14편에서 배운 대로, 이번 편에서 다루는 크기 비교기·인코더·디코더·멀티플렉서·디멀티플렉서는 모두 현재 입력값만으로 출력이 정해지는 조합논리회로다. 각 회로는 겉보기에 서로 다른 일을 하는 것 같지만, 사실 컴퓨터 내부에서 “어떤 값을 고르거나(선택), 어떤 신호를 다른 형태로 바꾸는(변환)” 매우 자주 쓰이는 기본 부품들이다. 예를 들어 CPU가 여러 레지스터 중 하나를 골라 버스에 실어 보낼 때는 멀티플렉서가, 여러 인터럽트 요청 중 우선순위가 가장 높은 것을 고를 때는 인코더가, 메모리 주소 한 개를 특정 메모리 칩 하나로 연결할 때는 디코더가 사용된다.
쉽게 말하면: 이번 편의 회로들은 “여러 개 중 하나를 고르거나(멀티플렉서·인코더), 하나를 여러 개 중 하나로 펼치거나(디멀티플렉서·디코더), 두 값의 크기를 비교하는(비교기)” 실용적인 조합회로 모음이다.
크기 비교기: 두 수의 대소 관계 판정
크기 비교기(magnitude comparator)는 두 2진수를 입력받아 “어느 쪽이 더 큰지, 혹은 같은지”를 판정하는 회로다.
1비트 비교기
가장 단순한 형태는 1비트씩 비교하는 경우다. 입력 , 각각 1비트에 대해, 세 가지 출력 , , 를 만든다.
| A | B | A=B | ||
|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 | 0 |
| 1 | 1 | 0 | 1 | 0 |
각 출력의 최소식을 도출한다.
- 가 1인 행은 과 이다. 이는 09편에서 배운 XNOR(두 입력이 같을 때만 1)의 정의와 정확히 같다. 를 판정하는 식은 다.
- 가 1인 행은 뿐이다. 가 1이고 가 0이어야 하므로 식은 다.
- 가 1인 행은 뿐이다. 식은 다.
다중 비트 비교기: 자릿수가 큰 쪽부터 비교
여러 비트로 이루어진 두 수를 비교할 때는, 10진수를 손으로 비교할 때와 같은 방식을 그대로 회로로 옮긴다. 가장 높은 자리(최상위 비트)부터 비교해서 이미 대소가 갈리면 그 결과가 최종 답이 되고, 두 비트가 같으면 그 다음 자리로 내려가 비교를 이어간다.
2비트 수 , 를 비교하는 경우를 예로 든다. 가 되는 조건은 다음 둘 중 하나다.
- 최상위 비트에서 이미 인 경우:
- 최상위 비트가 같고(), 그 다음 비트에서 인 경우: (여기서 는 XNOR, 즉 “두 비트가 같음”을 뜻하는 기호다)
실제 숫자로 검산: , 을 비교한다. 이므로 최상위 비트에서 이미 이 되어 조건 1이 성립하고, 가 1로 판정된다. 실제로 이므로 정확하다.
다른 예로 , 을 비교한다. 최상위 비트는 으로 같으므로 조건 1은 0이다. (둘 다 0으로 같음)이고, 최하위 비트에서 이므로 이다. 따라서 조건 2가 이 되어 로 판정된다. 실제로 이므로 정확하다.
자주 틀리는 점: 각 자리를 독립적으로 비교해서 단순히 더하거나 곱하는 실수가 흔하다. 반드시 상위 자리가 같을 때만 하위 자리 비교 결과를 반영해야 한다(“상위 자리가 같음”을 보장하는 XNOR 항을 곱해야 한다). 이 조건을 빠뜨리면, 예를 들어 상위 자리에서 이미 로 판정 났는데도 하위 자리 비교 때문에 잘못된 결과가 나올 수 있다.
인코더: 여러 입력 중 켜진 것의 번호를 출력
인코더(encoder)는 여러 개의 입력선 중 정확히 하나만 1(활성화)일 때, 그 입력의 “번호”를 2진수로 압축해 출력하는 회로다. 예를 들어 8개의 입력 중 5번 입력선만 1이면, 인코더는 이를 3비트 2진수 로 바꾸어 출력한다.
4-to-2 인코더
4개의 입력() 중 하나만 1일 때, 그 번호를 2비트()로 출력하는 인코더의 진리표는 다음과 같다.
| 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 |
이 표에서 출력식을 뽑으면 (2번 또는 3번 입력이 켜지면 상위 비트가 1), (1번 또는 3번 입력이 켜지면 하위 비트가 1)가 된다.
우선순위 인코더: 여러 입력이 동시에 켜지는 현실 문제
기본 인코더의 치명적인 약점은 입력이 정확히 하나만 켜져 있다는 가정이다. 실제로는 여러 인터럽트 요청이 동시에 들어오는 것처럼, 두 개 이상의 입력이 동시에 1이 되는 상황이 흔하다. 이를 해결하는 것이 우선순위 인코더(priority encoder)로, 번호가 더 높은(또는 미리 정해둔 우선순위가 더 높은) 입력을 우선해서 인코딩한다.
| 비고 | ||||||
|---|---|---|---|---|---|---|
| 1 | X | X | X | 1 | 1 | 이 최우선 |
| 0 | 1 | X | X | 1 | 0 | 이 0일 때만 확인 |
| 0 | 0 | 1 | X | 0 | 1 | 가 0일 때만 확인 |
| 0 | 0 | 0 | 1 | 0 | 0 | 나머지가 모두 0일 때만 확인 |
표에서 X는 12편에서 배운 don’t care와 비슷하지만 여기서는 조금 다른 의미로 쓰인다. “이 자리의 값과 무관하게, 왼쪽에 있는 더 높은 우선순위 입력이 이미 1이므로 이 입력의 값은 결과에 영향을 주지 않는다”는 뜻이다. 예를 들어 이면 이 무엇이든 항상 이 출력된다.
쉽게 말하면: 우선순위 인코더는 “여러 사람이 동시에 손을 들어도, 가장 앞자리(가장 번호가 높은) 사람의 요청만 먼저 처리한다”는 규칙을 회로로 만든 것이다.
디코더: 2진수 번호를 받아 해당 출력선 하나만 켜기
디코더(decoder)는 인코더와 정반대의 일을 한다. 비트 2진수 입력을 받아, 개의 출력선 중 그 번호에 해당하는 출력선 하나만 1로 켜고 나머지는 모두 0으로 만든다.
2-to-4 디코더
2비트 입력 을 받아 4개의 출력 중 하나만 켜는 디코더의 진리표는 다음과 같다(활성화를 위한 인에이블 입력 가 1일 때만 동작한다고 가정한다).
| E | ||||||
|---|---|---|---|---|---|---|
| 0 | X | X | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
각 출력식은 입력 조합을 그대로 AND로 묶은 최소항 형태다. , , , . 디코더의 각 출력은 그 자체로 하나의 최소항(minterm)에 대응한다는 점이 중요한 특징이다. 이 성질 때문에 디코더는 “임의의 진리표를 표준 SOP 형태로 그대로 구현하는 부품”으로도 활용된다(원하는 출력이 1이 되어야 하는 최소항에 해당하는 디코더 출력선들을 OR 게이트로 묶으면 어떤 불 함수도 만들 수 있다).
자주 틀리는 점: 인코더와 디코더의 입출력 방향을 반대로 기억하는 실수가 매우 흔하다. 인코더는 “여러 입력 → 압축된 번호 출력”이고, 디코더는 “압축된 번호 입력 → 여러 출력 중 하나 켜짐”이다. 이름 자체가 “부호화(인코드)“와 “부호 풀기(디코드)“라는 반대 방향을 가리킨다는 점을 생각하면 헷갈리지 않는다.
멀티플렉서(MUX): 여러 입력 중 선택 신호로 하나를 고름
멀티플렉서(multiplexer, 다중화기, 흔히 MUX라고 줄여 부른다)는 여러 개의 데이터 입력 중, 별도의 선택 신호(select line)가 지정하는 하나만 골라 출력으로 내보내는 회로다.
4-to-1 MUX
데이터 입력 4개()와 2비트 선택 신호()를 가진 4-to-1 MUX의 동작은 다음과 같다.
| 출력 | ||
|---|---|---|
| 0 | 0 | |
| 0 | 1 | |
| 1 | 0 | |
| 1 | 1 |
출력식은 각 데이터 입력에 그 입력이 선택되는 조건(최소항)을 곱해서 모두 더한 형태다.
실제 값 대입: 이고 선택 신호 이라면, 표에 따라 가 선택되어야 하므로 출력은 0이어야 한다. 식에 대입하면 이고 나머지 항은 모두 조건이 맞지 않아 0이 되므로, 이 나와 정확히 일치한다.
쉽게 말하면: MUX는 “여러 채널 중 리모컨(선택 신호)이 가리키는 채널 하나만 화면(출력)에 내보내는 텔레비전”과 같다.
디멀티플렉서(DEMUX): 하나의 입력을 여러 출력 중 하나로 분배
디멀티플렉서(demultiplexer, DEMUX)는 MUX와 정반대로, 하나의 데이터 입력을 선택 신호가 지정하는 출력선 하나로만 내보내고 나머지 출력선은 0으로 만드는 회로다. 1-to-4 DEMUX는 데이터 입력 하나와 선택 신호 을 받아, 이 가리키는 출력 중 하나에만 값을 그대로 전달한다.
이 식의 형태는 앞서 본 2-to-4 디코더의 출력식과 거의 같다. 실제로 DEMUX는 인에이블 입력 자리에 데이터 를 넣은 디코더와 동일한 구조다. 이 점 때문에 “디코더 겸용 DEMUX”라는 부품이 실제로 존재하며, 인에이블 핀에 상수 1을 넣으면 순수 디코더로, 데이터 신호를 넣으면 DEMUX로 동작한다.
코드 변환 회로: 이진-그레이 코드 변환
07편에서 배운 그레이 코드(인접한 두 값이 정확히 1비트만 달라지는 코드)로 일반 이진수를 바꾸는 변환 회로도 대표적인 조합논리회로다. 비트 이진수 을 그레이 코드 로 바꾸는 규칙은 다음과 같다.
즉 최상위 비트는 그대로 두고, 그 아래 각 자리는 자신과 바로 위 자리를 XOR한 값이 된다. 이 규칙은 “인접한 이진수 두 값은 항상 어떤 자리에서 자리올림이 발생해 여러 비트가 한꺼번에 바뀔 수 있지만, XOR로 만든 그레이 코드는 그 변화를 정확히 한 비트 차이로 압축한다”는 원리에 기반한다.
실제 숫자로 검산: 이진수 을 그레이 코드로 바꿔 본다. .
따라서 그레이 코드는 이다. 회로로는 XOR 게이트 3개(최상위 비트를 제외한 나머지 각 자리마다 하나씩)만 있으면 몇 비트든 변환할 수 있다.
자주 틀리는 점: 그레이 코드 변환에서 모든 자리를 이웃한 이진수 비트끼리 XOR한다고 생각하면서 최상위 비트까지 XOR하려는 실수가 있다. 최상위 비트는 XOR 없이 그대로 옮긴다는 점을 놓치면 안 된다(최상위 비트보다 한 자리 위는 존재하지 않으므로 XOR할 대상이 없다).
이번 편 회로 요약 비교
| 회로 | 입력 | 출력 | 핵심 동작 |
|---|---|---|---|
| 크기 비교기 | 두 수 A, B | A>B, A=B, A<B | 대소 관계 판정, 상위 자리부터 비교 |
| 인코더 | 개 입력선(하나만 활성) | n비트 번호 | 활성 입력의 번호를 압축 |
| 우선순위 인코더 | 개 입력선(여러 개 활성 가능) | n비트 번호 | 가장 우선순위 높은 입력만 인코딩 |
| 디코더 | n비트 번호(+ 인에이블) | 개 출력선(하나만 활성) | 번호에 해당하는 출력선 하나만 켬 |
| 멀티플렉서(MUX) | 개 데이터 + n비트 선택 | 1개 출력 | 선택 신호가 가리키는 입력을 그대로 출력 |
| 디멀티플렉서(DEMUX) | 1개 데이터 + n비트 선택 | 개 출력 | 선택 신호가 가리키는 출력에만 데이터 전달 |
자주 틀리는 점 (종합)
- 다중 비트 비교기에서 상위 자리 동률 조건(XNOR)을 곱하지 않는 실수: 하위 자리 비교는 반드시 상위 자리가 같을 때만 유효하다.
- 인코더에 입력이 여러 개 동시에 켜질 수 있다는 점을 간과하는 실수: 기본 인코더는 입력이 하나만 켜진다는 전제가 있으므로, 실전에서는 우선순위 인코더를 써야 한다.
- 인코더와 디코더의 입출력 방향을 뒤바꿔 기억하는 실수: 인코더는 여러 입력을 압축하고, 디코더는 압축된 값을 여러 출력으로 펼친다.
- MUX 선택 신호의 비트 순서를 반대로 대입하는 실수: 과 은 서로 다른 입력을 선택하므로, 어느 비트가 더 높은 자리인지 반드시 표기와 맞춰 확인해야 한다.
- 그레이 코드 변환에서 최상위 비트까지 XOR하려는 실수: 최상위 비트는 원래 이진수 값을 그대로 옮긴다.
핵심 정리
- 크기 비교기는 상위 자리부터 비교하며, 하위 자리 비교는 상위 자리가 같을 때만(XNOR 조건) 반영한다.
- 인코더는 여러 입력을 번호로 압축하고(입력 하나만 활성 가정), 우선순위 인코더는 여러 입력이 동시에 켜져도 우선순위가 높은 것만 인코딩한다.
- 디코더는 번호를 받아 해당 출력선 하나만 켜며, 각 출력은 하나의 최소항에 대응한다.
- 멀티플렉서는 선택 신호로 여러 입력 중 하나를 고르고, 디멀티플렉서는 하나의 입력을 선택 신호가 지정하는 출력으로 분배한다(DEMUX는 인에이블 자리에 데이터를 넣은 디코더와 구조가 같다).
- 이진-그레이 코드 변환은 최상위 비트를 그대로 두고, 나머지 자리는 자신과 바로 위 자리를 XOR해서 만든다.
마무리 복습
참고 자료
- 국가평생교육진흥원 독학학위제 — 독학사 논리회로 과목 평가영역·출제범위 공식 안내.
- IEEE Standards Association — 디지털 논리 설계 관련 표준화 자료를 확인할 수 있는 공신력 있는 기관 자료.