AND, OR, NOT, 그리고 이 모두를 대신할 수 있는 NAND 게이트만 있으면 어떤 논리 회로든 만들 수 있습니다.
지금까지 만든 회로는 입력이 들어오면 항상 같은 방식으로 처리합니다. 하지만 실제 컴퓨터는 상황에 따라 다르게 동작해야 합니다. 덧셈을 할 때는 덧셈 회로에 데이터를 보내고, 뺄셈을 할 때는 뺄셈 회로에 보내야 합니다. 네 개의 저장소 중 하나를 골라 읽어야 할 때도 있습니다. 이런 선택이 가능하려면 어떤 회로가 필요할까요?
리모컨의 채널 버튼을 생각해봅시다. 여러 방송 중 하나를 골라 TV 화면에 보여줍니다. 멀티플렉서(MUX)가 바로 이 리모컨입니다. 여러 입력 중 하나를 골라 출력하는 회로입니다.
가장 간단한 MUX는 입력 두 개 중 하나를 고르는 2-to-1 MUX입니다. 선택 신호 S가 0이면 A를, 1이면 B를 출력합니다.
| Out | |||
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
즉 S가 0이면 A를, 1이면 B를 그대로 출력합니다. 논리식으로 쓰면
(NOT S AND A) OR (S AND B). AND, OR, NOT으로 만들 수
있습니다.
입력이 네 개라면? 선택 신호를 2비트(S1, S0)로 늘리면 됩니다. 4-to-1 MUX는
00이면 첫 번째, 01이면 두 번째, 10이면 세 번째, 11이면 네 번째 입력을
고릅니다. 2-to-1 MUX 세 개를 조합하면 만들 수 있습니다. S1으로 두 개의 MUX가
각각 후보 둘씩을 고르고, S0으로 세 번째 MUX가 그 결과 중 하나를 최종 선택하는
구조입니다.
네 개의 데이터 소스 중 하나를 골라 읽어야 할 때 바로 이 4-to-1 MUX가 사용됩니다. 2비트 선택 신호가 데이터 소스의 번호에 해당하는 것입니다.
여러 입력 중 하나를 골라 출력하는 MUX는 선택 신호 몇 비트만으로 여러 데이터 소스 가운데 하나를 고릅니다. 반대로 하나의 입력으로 여러 출력 중 하나를 활성화하는 회로는 디코더입니다.