본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

가산기(加算器, Adder)는 2진수를 더해 합(Sum)과 자리올림(Carry)을 내는 조합 논리 회로로, 전가산기를 이어 여러 비트를 한꺼번에 더하는 병렬 가산기와 덧셈·뺄셈을 함께 하는 가감산기로 확장된다.

가산기는 산술 논리 장치(ALU)의 산술 연산부를 이루는 기본 회로다. 기억 소자 없이 현재 입력만으로 출력이 정해지는 조합 논리 회로이다. 한 비트를 더하는 반가산기와 전가산기가 단위 회로이고, 이것을 n개 이어 n비트 수를 더한다. 뺄셈은 따로 회로를 두지 않고 2의 보수를 더하는 방법으로 같은 가산기에서 처리한다.

회로 입력 출력 논리식
반가산기(Half Adder) A, B 합 S, 자리올림 C S = A ⊕ B, C = A·B
전가산기(Full Adder) A, B, 아랫자리 올림 Cin 합 S, 자리올림 Cout S = A ⊕ B ⊕ Cin, Cout = A·B + Cin(A ⊕ B)

전가산기는 반가산기 2개와 OR 게이트 1개로 만들 수 있다.

병렬 가산기(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 으로 검출한다.

비슷한 회로와의 구분

편집 원본 편집
회로 하는 일 회로도에서 알아보는 법
가산기·가감산기 두 수를 더하거나 뺀다 전가산기(FA)가 자리올림으로 줄지어 이어진다
비교기 두 수의 크고 작음·같음(A>B, A=B, A<B)을 판별한다 출력이 대소 관계 세 줄이고 XNOR·AND 로 같은 자리를 비교한다
디코더 n비트 부호를 받아 2n개 출력 중 하나를 고른다 입력 n개, 출력 2n개, AND 게이트가 출력마다 하나
플립플롭 1비트를 기억한다 출력이 입력으로 되먹임되는 순차 회로라 조합 회로가 아니다