hello world

Adder(가산기)

Electronics2016. 11. 5. 04:45

위키 백과 참고 하기 : https://en.wikibooks.org/wiki/Digital_Circuits/Adders


Half Adder(반가산기)

 - 한 자리 2진수 2개를 입력하여 합(S)과 캐리(C - 자리올림)를 계산하는 덧셈 회로

 - 캐리(C)는 입력 X, Y가 모두 1인 경우에만 1이 됨 -> C=XY

 - 합(S)는 입력 X, Y 둘 중 하나만 1일 경우에만 1이 됨 -> S=X^Y


 

 +



Full Adder(전가산기)

 - 반가산기에서 2bit이상인 2진수 덧셈 불가 -> 전가산기 등장

 - 이진수 입력 X, Y와 아랫자리로부터 올라온 캐리(Cin)를 포함하여 2진수 3개를 더함

 - S=(X^Y)^Cin

 - Cout=Cin(X^Y)+XY


   Cin

 

 +

Cout



Parallel Adder(병렬가감산기)

 - 전가산기 여러개를 병렬 연결하여 2bit이상의 가산기 제작


(4bit 병렬가산기)

(4bit 병렬감가산기 - M은 Signbit(M=1 -> Sub / M=0 -> Add))



고속 가산기

 - 아랫단에서 윗단으로 전달되는 캐리(=Ripple carry) 때문에 병렬 가산기의 속도는 매우 느림

 - 하나의 전가산기에서 캐리가 나오기까지 게이트 4개(XOR*2 / AND*1 / OR*1)를 거치며, 3단계에 걸쳐 최종 출력이 나옴

 - 전가산기 한 개를 지날 때마다 지연이 심해짐 -> 비트가 늘어날수록 지연 심해짐

 - 병렬가산기의 지연을 해결하기 위해 CLA(Carry-Lookahead-Adder)사용.


CLA(캐리예측가산기)

 - 캐리를 미리 계산하여 위로 보내는 것. i단에서 캐리의 논리식은 Xi, Yi모두 1일 때 또는, Xi,Yi 둘 중 하나가 1이고 Ci가 1일 때 캐리가 발생


 - Ci+1=XiYi+(Xi^Yi)Ci=XiYi+(Xi+Yi)Ci

 - Gi=XiYi (Generate)

 - Pi=Xi^Yi (Propagate)

 - Ci+1=Gi+PiCi

 - Si=Xi^Yi^Ci=Pi^Ci


 - Si, Gi, Pi를 발생시키는 PFA(Partial-Full-Adder)와 C1, C2, C3, C4를 발생시키는 캐리예측회로로 구성


(4bit CLA)

(16bit CLA)


BCD가산기

 - 유효 표현 범위가 0~9임 (10~15는 Don't Care)

 - 유효 표현 범위가 정해져있기 때문에 계산 후에는 결과를 보정해야함

 - 2진수 합의 결과가 01010~10011 (10~19)일 경우에 보정 필요




*사진 출처
http://www.electronicshub.org/binary-adder-and-subtractor/

https://en.wikipedia.org/wiki/Lookahead_carry_unit

http://xilinx.pe.kr/_hdl/2/-seas.upenn.edu/_ese201/lab/CarryLookAhead/CarryLookAheadF01.html

https://www.semanticscholar.org/paper/A-Low-Voltage-Low-Power-4-bit-BCD-Adder-designed-Saha-Basak/6d589293e2d571a678c32f4ef08fbdb79d13b821

'Electronics' 카테고리의 다른 글

Encoder  (0) 2016.11.12
Decoder(=Demultiplexer)  (0) 2016.11.12
BCD와 3초과 코드  (0) 2016.11.05
Arduino UNO & Pro micro  (0) 2016.09.13
Arduino UNO Serial and ISP  (0) 2016.09.13