4비트 계산기 선행 지식
- 논리회로
- 반가산기 : 논리회로를 이용해 만들 수 있음
- 전가산기 : 반가산기를 이용해 만들 수 있음
- 4비트 계산기 : 전가산기를 이용해 만들 수 있음
논리회로
Buffer
- 입력 값을 아무처리 없이 그대로 출력함
- 0 => 0, 1 => 1
NOT 게이트
- 입력 값의 반전 값을 출력함
- 0 => 1, 1 => 0
AND 게이트
- 입력 값이 모두 1이어야 1을 출력함
- 입력 값중 하나라도 0이면 0을 출력함
- [0,0] => 0, [0,1] => 0, [1,0] => 0, [1,1] => 1
OR 게이트
- 입력 값이 모두 0인 경우에만 0을 출력함
- 입력 값중 하나라도 1이면 1을 출력함
- [0,0] => 0, [0,1] => 1, [1,0] => 1, [1,1] => 1
NAND (NOT AND) 게이트
- AND 게이트의 출력 값을 반전
- [0,0] => 1, [0,1] => 1, [1,0] => 1, [1,1] => 0
NOR (NOT OR) 게이트
- OR 게이트의 출력 갑을 반전
- [0,0] => 1, [0,1] => 0, [1,0] => 0, [1,1] => 0
XOR (EXCLUSIVE OR) 게이트
- 베타적인 OR게이트로 입력값이 모두 0이거나 모두 1일때만 0을 출력하고
- 입력값중 하나라도 1이면 1을 출력 (모두 1일때 제외)
- [0,0] => 0, [0,1] => 1, [1,0] => 1, [1,1] => 0
XNOR (NOT EXCLUSIVE OR) 게이트
- XOR 게이트의 출력 값을 반전
- [0,0] => 1, [0,1] => 0, [1,0] => 0, [1,1] => 1
[A,B] | AND | OR | NAND | NOR | XOR | XNOR |
---|
[0,0] | 0 | 0 | 1 | 1 | 0 | 1 |
[0,1] | 0 | 1 | 1 | 0 | 1 | 0 |
[1,0] | 0 | 1 | 1 | 0 | 1 | 0 |
[1,1] | 1 | 1 | 0 | 0 | 0 | 1 |
기호
반가산기
- 1비트의 2진수 2개를 더한값 Sum과 자리 올림수 Carry를 구하는 계산기
반가산기의 원리
- 1비트의 2진수 2개를 더하는 경우의 수를 살펴보면 아래와 같다
A | B | Sum | Carry |
---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
- Sum은 A와B를 XOR 게이트를 이용해 출력한 값이 됨
- Carry는 A와B를 AND 게이트를 이용해 출력한 값이 됨
반가산기 회로
전가산기
- 올림수 CarryIn과 1비트 2진수 2개 총 3개의 1비트 2진수를 더한값 Sum과 자리 올림수 CarryOut을 구하는 계산기
전가산기의 원리
- 2진수를 더하는 방식은 A와 B를 더하고 이전 자리수에서 올라온 CarryIn 값을 더하는 것이 전부이다.
- 1비트의 2진수 3개를 더하는 경우의 수를 살펴보면 아래와 같다.
A | B | CarryIn | Sum | CarryOut |
---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
- Sum은 A와B를 반가산기를 이용해 나온 Sum과 CarryIn을 다시 한번 반가산기를 이용해 출력해 얻은 Sum 값이 됨
- 위의 반가산기를 이용해 출력된 Carry값들을 OR 게이트를 이용해 출력한 값이 CarryOut 값이 됨
전가산기 회로
4비트 계산기
4비트 계산기 원리
- 각 비트마다 전가산기를 이용해 sum과 carryOut을 구함, 이때 두번째 자리 계산 부터는 이전 계산의 carryOut값을 carryIn값으로 사용해 1비트 3개의 덧셈(전가산기)을 이용해 계산함
- 전가산기 4개를 이용해 만들 수 있음
- 4비트의 2진수 2개의 첫번째 자리수를 각각 첫번째 전가산기 A, B로 넣음 (carryIn은 첫자리이기 때문에 0으로 설정)
- (2)번의 결과로 나온 Sum을 결과값의 첫번째 비트에 넣고, carryOut 값은 두번째 전가산기의 carryIn 값으로 넣음
- 다음 입력 값 2개의 두번째 자리수를 두번째 전가산기 A, B로 넣음
- (3), (4)을 끝 자리까지 반복함
4비트 계산기 회로