오늘 끝나면
반가산기와 전가산기
- ✓반가산기와 전가산기의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 반가산기와이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
XOR로 합, AND로 올림 — 세 번째 입력이 필요한 이유 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
반도체 설계 · 06
반가산기와
전가산기
덧셈 한 자리는 게이트 몇 개로 끝난다.
그런데 한 자리만으로는 부족하다. 아래에서 올라온 carry-in을 받아야 한다.
그 세 입력을 받는 회로가 전가산기다. 덧셈의 진짜 단위다.
반가산기, 한 자리 덧셈의 시작
비트 두 개를 더하면 결과가 두 칸 나온다. 자기 자리 합과 위로 넘기는 자리올림이다.
0+0=0, 0+1=1, 1+0=1까지는 한 칸이면 된다.
그런데 1+1은 2이고, 2진수로는 10이다. 자리 합은 0, 올림은 1이다.
그래서 출력이 둘 필요하다. Sum과 Carry다.
이 두 출력을 게이트로 그대로 만든다.
Sum = A XOR B이고, 둘이 다를 때만 1이다.
Carry = A AND B이고, 둘 다 1일 때만 1이다.
이렇게 XOR 하나와 AND 하나로 한 자리 덧셈이 끝나는 회로가 반가산기다.
XOR는 합, AND는 올림
반가산기의 정체는 진리표 네 줄이다. 그 네 줄을 게이트 두 개가 그대로 흉내 낸다.
Sum 열만 따로 떼서 보면 0·1·1·0이고, 입력이 다를 때만 1이다.
이 패턴이 정확히 XOR, 즉 ‘배타적 또는’이다.
Carry 열은 0·0·0·1이고, 둘 다 1일 때만 1이다.
이건 AND 그대로다.
판단을 회로로 바꾸는 건 늘 이 순서다. 먼저 원하는 출력 표를 적고, 그 표를 내는 게이트를 고른다.
| A | B | Sum | Carry |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
반가산기의 한계, carry-in을 못 받는다
반가산기는 입력이 A와 B 둘뿐이다. 그래서 혼자 쓰면 한 자리짜리 덧셈밖에 못한다.
종이로 여러 자리를 더할 때를 떠올려본다.
오른쪽 자리에서 1이 넘치면 왼쪽 자리로 1을 올려 보낸다.
그 올라온 1이 carry-in이다. 다음 자리는 A와 B에 이것까지 셋을 더해야 맞는다.
예를 들어 11 + 01이다.
1의 자리는 1+1=0이고 올림 1이 생긴다. 이 올림이 2의 자리로 들어가야 한다.
그런데 반가산기는 들어오는 올림을 받을 입력 칸이 없어서 더하다 새버린다.
그래서 입력 셋을 받는 회로가 따로 필요해진다.
반가산기는 입력이 A와 B 둘뿐이라 올라온 올림을 받을 칸이 없다.
전가산기, 입력 셋이 덧셈의 단위
전가산기는 A와 B에 carry-in(Cin)까지 세 입력을 받아 Sum과 Cout을 낸다. 이게 덧셈의 진짜 단위다.
반가산기 두 개를 이어 만든다.
먼저 A XOR B로 부분 합을 내고, 거기에 다시 Cin을 XOR해서 최종 Sum을 낸다.
올림은 두 군데서 생긴다. A와 B에서 한 번, 부분합과 Cin에서 한 번 생기는데, 둘을 OR로 합치면 Cout이다.
그래서 속은 XOR 2 · AND 2 · OR 1, 다섯 게이트다.
입력을 켜고 끄면 1인 신호선만 진하게 흐른다. 어느 게이트가 결과를 만들었는지 따라간다.
Cin = 아래 자리에서 올라온 carry-in
| A | B | Cin | Sum | Cout |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
여기서 고른 전가산기 셀이 7강에서 비트마다 줄줄이 이어져 MyChip의 덧셈기가 된다.
A+B+Cin은 0~3, 그래서 출력이 둘
입력 셋을 더하면 합은 0부터 3까지 나온다. 한 자리로는 못 담는다. 그래서 출력이 Sum과 Cout 두 비트다.
0+0+0=0이면 00이다.
1+1+0=2이면 10이고, Sum은 0, Cout은 1이다.
1+1+1=3이면 11이고, Sum은 1, Cout은 1이다.
Cout이 윗자리, Sum이 그 자리값이고, 둘이 합쳐 2비트 수가 된다.
전가산기 하나는 딱 한 자리만 책임진다.
한 칸의 Cout을 옆 칸의 Cin으로 넘겨 줄줄이 이으면 몇 비트든 더해진다.
Q. 전가산기가 반가산기보다 더 받는 입력 하나는 무엇인가?
정답은 carry-in(Cin)이다.반가산기는 A와 B 둘만 받아 한 자리밖에 못 더한다.
전가산기는 아래 자리에서 올라온 carry-in까지 셋을 받아, 자리들을 이어 여러 비트 덧셈을 가능하게 한다.
| A+B+Cin | 합(10진) | Cout | Sum |
|---|---|---|---|
| 0+0+0 | 0 | 0 | 0 |
| 1+0+0 | 1 | 0 | 1 |
| 1+1+0 | 2 | 1 | 0 |
| 1+1+1 | 3 | 1 | 1 |