Adder
Half Adder
- 2개의 bit를 입력으로 addition 수행.
- 이전 자리에서 넘어오는 carry에 대한 고려를 하지 않아 half adder라 불림.
Full Adder
- 2개의 bit와 이전 자리에서 넘어오는 carry를 고려한 addition 수행
Ripple-carry Adder
- full adder들을 순차적으로 연결한 것
- input carry가 이전 자리에 대한 full adder의 출력 carry와 연결되는 형태
- propagation delay의 발생으로 자리수가 높은 adder 구현에는 적합하지 않은 형태
Carry Look-ahead Adder
- i+1번째 bit의 입력 carry가 다음과 같이 i번째 bit의 입력 bit Ai, Bi, carry in Ci에 의해 결정
Ci+1=(AiANDBi)OR(AiANDCi)OR(BiANDCi)
- ripple carry adder의 문제점이 carry들이 순차적으로 입력된다는 것인데 이 경우에는 첫자리의 carry-in과 A,B를 안다면 모든 자리의 carry-out을 구할 수 있음
Ci+2=(Ai+1ANDBi+1)OR(Ai+1ANDCi+1)OR(Bi+1ANDCi+1)
∴ Ci+2=(Ai+1ANDBi+1)OR(Ai+1AND[(AiANDBi)OR(AiANDCi)OR(BiANDCi)])OR(Bi+1AND[(AiANDBi)OR(AiANDCi)OR(BiANDCi)])
- 이를 가장 첫째 자리까지 수행하여 구하면 한번에 모든 자리의 carry를 구할 수 있음.
- propagation delay의 영향을 최소화할 수 있음.
Encoder and Decoder
Encoder
- Take all of their data inputs one at a time and converts them into an equivalent binary code at its outputs.
Decoder
- The exact opposite to that of an Encoder.
- Encoding된 number를 개별 bit의 집합으로 변환해주며 display 제어에 응용됨.
cf) display decoder
Demux and Mux
Demux
- Demultiplexer를 줄여서 Demux라 부름.
- 1개의 input line을 여러 output line 중 하나로 연결.
- Schemetic diagram은 위와 같음.
Mux
- 위와 같이 decoder로 간략히 나타낼 수 있음.
- Multiplexer, 다른 이름으로는 selector라고도 불림.
- 여러 input line 중 하나를 하나의 output line으로 연결
- Schemetic diagram은 위와 같음.
References:
1) https://dsaint31.tistory.com/entry/CI-Binary-Decoder
2) https://dsaint31.tistory.com/entry/CI-Demultiplexer-and-Multiplexer
3) https://projects.raspberrypi.org/en/projects/halfadder
4) https://ko.m.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:Full-adder.svg
5) https://ko.m.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:4-bit_carry_lookahead_adder.svg
6) https://dsaint31.me/mkdocs_site/CE/ch02_co/ce02_05_1_adder/