가산기
IT위키
더 많은 작업
가산기(加算器, Adder)는 2진수를 더해 합(Sum)과 자리올림(Carry)을 내는 조합 논리 회로로, 전가산기를 이어 여러 비트를 한꺼번에 더하는 병렬 가산기와 덧셈·뺄셈을 함께 하는 가감산기로 확장된다.
병렬 가산기(Parallel Adder)는 n비트 두 수의 각 자리를 전가산기 n개에 동시에 넣어 더하는 회로다. 아랫자리 전가산기의 자리올림 출력 Ci+1 을 윗자리 전가산기의 Cin 에 잇는다. 맨 아랫자리(LSB)의 C0 는 덧셈만 할 때 0 이고, 맨 윗자리(MSB)에서 나온 Cn 이 최종 자리올림이다.
- 자리올림이 아랫자리에서 윗자리로 차례로 번져 나가므로 리플 캐리 가산기(Ripple Carry Adder)라고도 한다. 비트 수가 늘수록 자리올림 전파 지연이 길어진다
- 이 지연을 줄이려고 각 자리의 자리올림을 입력에서 바로 미리 계산하는 캐리 예측 가산기(Carry Look-ahead Adder)를 쓴다
- 직렬 가산기는 전가산기 1개와 시프트 레지스터로 한 비트씩 차례로 더한다. 회로는 작지만 느리다
A − B 는 A + (B 의 2의 보수) = A + B' + 1 로 계산한다. 따라서 B 의 각 비트를 반전해 넣고 맨 아랫자리 자리올림 입력에 1 을 주면 병렬 가산기가 그대로 감산기가 된다.
가감산기(Adder-Subtractor)는 제어 신호 하나로 덧셈과 뺄셈을 고른다.
- 각 자리의 Bi 를 제어 신호 S(또는 M)와 XOR 게이트에 넣은 뒤 전가산기로 보낸다. B ⊕ 0 = B, B ⊕ 1 = B' 이므로 XOR 가 '선택적 반전기' 노릇을 한다
- 같은 제어 신호 S 를 맨 아랫자리 전가산기의 C0 에도 잇는다
- S = 0 : B 가 그대로, C0 = 0 → A + B(덧셈)
- S = 1 : B 가 반전되고, C0 = 1 → A + B' + 1 = A − B(뺄셈)
전가산기(FA) 4개가 자리올림 C1~C3 로 이어지고, B3~B0 앞에 XOR 게이트가 하나씩 있으며, 제어 신호가 XOR 들과 C0 에 함께 들어가는 회로가 4비트 병렬 가감산기다. 출력은 합(차) S3~S0 와 마지막 자리올림 C4 이다. 부호 있는 수의 오버플로는 C4 ⊕ C3 으로 검출한다.