Altifigence Academy

13 / 36 · 개념

반가산기와 전가산기

합과 자리올림을 따로 계산하고 연결합니다.

학습 목표

  • 합과 자리올림의 폭을 구분합니다.
  • 전가산기를 연결하는 원리를 설명합니다.

1+1은 두 비트의 결과입니다.

반가산기는 a와 b를 더해 sum=a^b, carry=a&b를 만듭니다. 입력 1과 1의 합은 이진수 10이므로 sum=0, carry=1입니다.

전가산기는 이전 자리에서 온 cin까지 더합니다. sum=a^b^cin이고 cout=(a&b)|(a&cin)|(b&cin)입니다. 세 입력 중 둘 이상이 1이면 자리올림이 생깁니다.

RTL 코드 발췌
assign sum = a ^ b ^ cin;
assign cout = (a & b) | (a & cin) | (b & cin);

입력을 바꿔 확인하기

자리올림을 다음 비트로 연결합니다.

여러 전가산기를 연결하면 비트 0의 cout이 비트 1의 cin이 됩니다. 최상위 자리올림까지 저장하려면 N비트 입력 둘에 대해 N+1비트 결과가 필요합니다.

폭을 분명히 하려면 assign total = {1'b0, a} + {1'b0, b};처럼 두 입력을 먼저 확장하세요. 자리올림이 차례로 전달되는 구조에는 실제 지연이 있으며 이 수식만으로 속도를 검증할 수 없습니다.

직접 생각해 보기

a=1, b=0, cin=1의 sum과 cout은 무엇인가요?

해설 보기

합은 2이므로 이진수 10, sum=0, cout=1입니다.

선택은 이 브라우저에만 적용됩니다. 언제든 푸터에서 변경할 수 있습니다.