본문으로 건너뛰기
code0.HDL

배선과 조합 회로

게이트 없이 선만으로 비트를 고르고 이어 붙이는 배선, 게이트로 만든 세 회로인 멀티플렉서·디코더·가산기, 그리고 배선과 연산을 구분하는 기준을 다룹니다.

이 장에서 배울 내용

  • 비트 선택·연결(배선)과 게이트가 필요한 연산을 구분할 수 있습니다
  • 주어진 입력에 대해 멀티플렉서·디코더·가산기의 출력을 예측할 수 있습니다
  • 전가산기를 이어 리플 가산기를 만들고 자리올림을 추적할 수 있습니다
이 장에서 배우는 개념
  • 비트 선택과 연결
  • 멀티플렉서(MUX)
  • 디코더
  • 반가산기와 전가산기
  • 배선과 연산의 구분
먼저 알아야 할 개념

1. 비트를 고르고 이어 붙이는 일은 배선입니다

8비트 버스는 이름 하나를 가진 선 여덟 개이고, 그 가운데 일부에 따로 이름을 붙일 수 있습니다. x의 비트 7은 맨 위 선 하나로 된 1비트 신호이고, x의 비트 7부터 4까지는 위쪽 선 네 개로 된 4비트 신호입니다. 이처럼 비트 위치가 고정되어 있으면 논리 연산 없이 같은 연결에 이름을 하나 더 붙입니다. 입력값에 따라 선택할 비트 위치가 달라지는 경우에는 선택 논리가 필요하므로 구분해야 합니다.

이어 붙이기는 반대 방향입니다. 4비트 a의 선 네 개 아래에 4비트 b의 선 네 개를 두면 8비트 버스가 되고, 비트 7부터 4까지가 a, 비트 3부터 0까지가 b입니다. a = 1011, b = 0010이면 이어 붙인 버스는 10110010입니다. x의 비트를 거꾸로 적는 것처럼 순서를 바꾸는 일도 배선입니다. 같은 선을 다른 순서로 연결했을 뿐입니다. 선택과 연결의 표기는 언어마다 다르며 각 언어 과정에서 소개합니다. 개념은 어느 언어에서나 같습니다.

확인 문제

x가 8비트 패턴 10110110입니다. x의 비트 5부터 2까지를 4비트 패턴으로 쓰세요.

2. 멀티플렉서는 입력 가운데 하나를 고릅니다

멀티플렉서(MUX)는 데이터 입력 여러 개, 선택 입력 하나, 출력 하나를 가지며, 선택 입력이 어느 데이터 입력을 출력으로 보낼지 정합니다. 가장 작은 멀티플렉서는 데이터 입력 a, b와 1비트 선택 입력 sel을 가지고, sel = 0이면 y = a, sel = 1이면 y = b입니다. 게이트로 적으면 y = (NOT sel AND a) OR (sel AND b)입니다. sel이 두 AND 항 가운데 하나를 0으로 만들고, 남은 항이 자기 데이터 비트를 그대로 통과시킵니다.

a = 1, b = 0으로 두고 sel을 번갈아 눌러 보세요. y는 sel이 가리키는 입력의 값을 따라갑니다.

개념 실험 · mux2

컴파일한 설계가 아니라 브라우저 안의 회로 모델입니다. 실제 도구 체인은 예제에서 실행됩니다.

입력

출력

y
0
진리표
selaby현재 입력
0000◂ 현재 입력
0010
0101
0111
1000
1011
1100
1111

선택 입력이 k비트이면 데이터 입력을 2^k개까지 구별하고, 버스 두 개 가운데 하나를 고르는 멀티플렉서는 같은 회로를 비트마다 반복하며 sel을 공유합니다. 멀티플렉서는 "sel이면 b, 아니면 a"라는 조건 선택의 하드웨어 형태입니다. 두 입력은 언제나 함께 존재하고, 멀티플렉서는 어느 쪽을 출력에 보일지만 정합니다.

확인 문제

sel = 1, a = 1, b = 0입니다. y는 무엇입니까?

3. 디코더는 수를 위치로 바꿉니다

디코더는 n비트 수를 받아 0부터 2^n − 1까지 번호가 붙은 출력 2^n개를 가집니다. 입력 값과 번호가 같은 출력 하나만 1이고 나머지는 0이며, 1이 하나뿐인 패턴을 one-hot이라고 부릅니다. 아래 디코더는 a1을 상위 비트로 하여 a1 a0을 수로 읽고 y3부터 y0을 구동합니다. 입력 10은 2이므로 y2가 1이 됩니다. 각 출력은 입력 또는 그 반전을 AND한 것입니다. y2 = a1 AND NOT a0입니다.

a1과 a0을 눌러 네 값을 모두 만들고, 하나뿐인 1이 옮겨 가는 것을 확인하세요. 멀티플렉서는 데이터 입력을 선택하지만, 이 디코더는 입력 코드를 one-hot 출력으로 바꿉니다. 별도의 데이터 입력을 여러 출력 중 하나로 보내는 회로는 디멀티플렉서입니다.

개념 실험 · decoder2

컴파일한 설계가 아니라 브라우저 안의 회로 모델입니다. 실제 도구 체인은 예제에서 실행됩니다.

입력

출력

y3
0
y2
0
y1
0
y0
1
진리표
a1a0y3y2y1y0현재 입력
000001◂ 현재 입력
010010
100100
111000

4. 가산기의 sum은 XOR, 자리올림은 다수결입니다

비트 두 개의 덧셈은 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 10입니다. 마지막 결과 2는 비트 두 개가 필요하므로 반가산기에는 출력이 둘 있습니다. sum = a XOR b는 두 입력 가운데 하나만 1일 때 1이고, carry = a AND b는 1 + 1에서만 1입니다.

개념 실험 · half-adder

컴파일한 설계가 아니라 브라우저 안의 회로 모델입니다. 실제 도구 체인은 예제에서 실행됩니다.

입력

출력

sum
0
carry
0
진리표
absumcarry현재 입력
0000◂ 현재 입력
0110
1010
1101

자리올림 입력이 없는 덧셈에서는 가장 낮은 자리에 반가산기를 쓸 수 있습니다. 그보다 높은 자리는 아래 자리의 자리올림도 더해야 하므로 입력이 a, b, cin인 전가산기를 씁니다. sum = a XOR b XOR cin은 1인 입력의 개수가 홀수일 때 1입니다. cout는 1인 입력이 둘 이상일 때 1이며, 앞 단원에서 다룬 다수결입니다. cout sum을 이어서 읽으면 1인 입력의 개수입니다. 세 입력이 모두 1이면 개수는 3, 곧 11이므로 cout = 1, sum = 1입니다. 실험에서 확인한 뒤 1이 둘인 행들도 눌러 보세요.

개념 실험 · full-adder

컴파일한 설계가 아니라 브라우저 안의 회로 모델입니다. 실제 도구 체인은 예제에서 실행됩니다.

입력

출력

sum
0
cout
0
진리표
abcinsumcout현재 입력
00000◂ 현재 입력
00110
01010
01101
10010
10101
11001
11111

확인 문제

a = 1, b = 0, cin = 1일 때 전가산기의 출력은 무엇입니까?

답

5. 고정된 비트 연결에는 선택 논리가 필요하지 않습니다

고정된 위치의 비트를 고르고 이어 붙이거나 순서를 바꾸는 일은 논리 게이트 없이 연결로 표현할 수 있습니다. 다만 실제 배선도 공간을 차지하고 신호 전달에 시간이 걸립니다. 멀티플렉서·디코더·가산기는 일반적으로 입력과 출력 사이에 논리 회로가 필요합니다. 코드 길이가 비슷해도 생성되는 하드웨어는 다릅니다.

주의. 서로 다른 두 버스를 선택 비트로 고르면 연결이 sel에 따라 달라지므로 멀티플렉서가 필요합니다. 여기서는 일반적인 입력을 가정합니다. 두 입력이 같거나 상수이면 합성 과정에서 논리가 제거될 수도 있습니다.

확인 문제

다음 가운데 게이트가 하나 이상 필요한 것은 무엇입니까?

답

6. 변형: 4비트 리플 가산기

전가산기 네 개를 이어 붙이면 4비트 수 두 개를 더합니다. 단계 i는 a의 비트 i, b의 비트 i, 단계 i − 1의 cout를 더하고, 단계 0의 cin은 0이며 단계 3의 cout는 결과의 다섯 번째 비트입니다. 5 + 6, 곧 0101 + 0110을 단계별로 계산한 표입니다.

단계abcinsumcout
010010
101010
211001
300110

sum을 단계 3부터 읽으면 1011, 곧 11이고 마지막 cout는 0입니다. 같은 표를 종이에 그려 9 + 8, 곧 1001 + 1000을 네 단계로 계산해 보세요.

확인 문제

4비트 리플 가산기로 9 + 8을 계산할 때 단계 3의 cout는 무엇입니까?

7. 정리

  • 고정된 위치의 비트를 고르고 이어 붙이거나 순서를 바꾸는 일에는 논리 연산이 필요하지 않습니다.
  • 멀티플렉서는 k비트 선택 입력으로 2^k개 입력 가운데 하나를 고르고, 디코더는 n비트 수를 2^n개 출력 가운데 하나의 1로 바꿉니다.
  • 전가산기는 비트 셋을 더합니다. sum은 세 입력의 XOR, cout는 세 입력의 다수결입니다.
  • 배선도 물리적 연결 자원을 사용하며, 입력에 따른 선택과 산술 연산에는 일반적으로 논리 회로도 필요합니다.

다음 장에서는 자리올림이 들어가지 않을 때 가산기의 결과가 무엇을 뜻하는지, 그리고 패턴 하나를 양수로도 음수로도 읽는 방법을 다룹니다.

확인 지점

이 장의 확인 문제에 답하세요