이성열 Seongyeol Yi

논리 회로 교통정리

25.05

지난 글에서 NAND 게이트 하나만으로 모든 논리 회로를 만들 수 있다는 것을 배웠습니다. AND, OR, NOT이 모두 NAND의 조합이었습니다.

지금까지 만든 회로는 입력이 들어오면 항상 같은 방식으로 처리합니다. 하지만 실제 컴퓨터는 상황에 따라 다르게 동작해야 합니다. 덧셈을 할 때는 덧셈 회로에 데이터를 보내고, 뺄셈을 할 때는 뺄셈 회로에 보내야 합니다. 네 개의 저장소 중 하나를 골라 읽어야 할 때도 있습니다. 이런 선택이 가능하려면 어떤 회로가 필요할까요?

멀티플렉서

리모컨의 채널 버튼을 생각해봅시다. 여러 방송 중 하나를 골라 TV 화면에 보여줍니다. 멀티플렉서(MUX)가 바로 이 리모컨입니다. 여러 입력 중 하나를 골라 출력하는 회로입니다.

가장 간단한 MUX는 입력 두 개 중 하나를 고르는 2-to-1 MUX입니다. 선택 신호 S가 0이면 A를, 1이면 B를 출력합니다.

Out
0000
0010
0101
0111
1000
1011
1100
1111
  1. S가 0인 행만 살펴봅시다. Out이 항상 A와 같습니다.
  2. S가 1인 행만 살펴봅시다. Out이 항상 B와 같습니다.

즉 S가 0이면 A를, 1이면 B를 그대로 출력합니다. 논리식으로 쓰면 (NOT S AND A) OR (S AND B). 이전 글에서 배운 게이트들로 만들 수 있습니다.

  1. S를 0으로 두고 A를 바꿔봅시다. A의 값이 그대로 Out에 나옵니다. 반면 B를 바꿔도 Out은 바뀌지 않습니다.
  2. S를 1로 바꿔봅시다. 이번에는 B의 값이 Out에 나옵니다.
  3. S가 어떤 입력을 고를지 정하는 선택 신호 역할을 하는 것입니다.

입력이 네 개라면? 선택 신호를 2비트(S1, S0)로 늘리면 됩니다. 4-to-1 MUX00이면 첫 번째, 01이면 두 번째, 10이면 세 번째, 11이면 네 번째 입력을 고릅니다. 2-to-1 MUX 세 개를 조합하면 만들 수 있습니다. S1으로 두 개의 MUX가 각각 후보 둘씩을 고르고, S0으로 세 번째 MUX가 그 결과 중 하나를 최종 선택하는 구조입니다.

네 개의 데이터 소스 중 하나를 골라 읽어야 할 때 바로 이 4-to-1 MUX가 사용됩니다. 2비트 선택 신호가 데이터 소스의 번호에 해당하는 것입니다.

디코더

이번에는 반대 방향입니다. 하나의 입력을 받아 여러 출력 중 정확히 하나만 활성화하는 회로가 디코더입니다.

엘리베이터 버튼을 생각해봅시다. 3층 버튼을 누르면 3층 표시등만 켜집니다. 입력은 하나(버튼)지만, 그에 대응하는 출력 하나만 활성화되는 것입니다.

가장 간단한 2-to-4 디코더는 2비트 입력을 받아 네 개의 출력 중 하나만 1로 만듭니다.

O0O1O2O3
001000
010100
100010
110001
  1. 각 행에서 출력(O0~O3) 중 정확히 하나만 1인 것을 확인해봅시다.
  2. 입력 AB가 00이면 O0, 01이면 O1, 10이면 O2, 11이면 O3가 켜집니다. 각 출력은 AND와 NOT의 조합으로 만들 수 있습니다. 예를 들어 O0 = (NOT A) AND (NOT B), O3 = A AND B입니다.
  1. A와 B를 모두 0으로 두면 O0만 1이 됩니다. 나머지는 모두 0입니다.
  2. B를 1로 바꿔봅시다. O0이 꺼지고 O1이 켜집니다.
  3. A도 바꿔가며 네 가지 조합을 모두 시도해봅시다. 항상 출력 하나만 활성화됩니다.

디코더는 이후 글에서 컴퓨터 내부의 핵심 부품으로 다시 등장합니다.

응용: 여러 저장소에서 골라 읽고 쓰기

MUX와 디코더를 합치면 어떤 일이 가능할까요?

네 개의 저장소에 각각 다른 값이 들어 있다고 해봅시다. 이 중 하나를 골라 읽거나, 하나를 골라 새 값을 쓰고 싶습니다.

  1. D0~D3는 네 개의 저장소 값입니다. S0, S1이 주소로 MUX와 디코더에 동시에 들어갑니다.
  2. S0, S1을 바꿔봅시다. MUX는 해당 번호의 값을 Read로 출력하고, 디코더는 해당 번호의 W 출력만 활성화합니다.

마무리

여러 입력 중 하나를 골라 출력하는 MUX, 하나의 입력으로 여러 출력 중 하나를 활성화하는 디코더. 이 두 회로는 방향이 반대지만, 둘 다 선택이라는 같은 문제를 풀고 있습니다.

다음 글에서는 게이트를 조합하여 실제로 덧셈을 수행하는 회로를 만들어봅시다.