(Adder에 관한 이론적인 설명은 논리회로 카테고리에 추후 추가하겠다)
Adder는 기본적으로 carry와 sum 이 out값으로 발생하게 된다.
그러므로 설계를 하기 전 1-bit Full Adder의 carry와 sum에 대해 truth table을 살펴보면 다음과 같다.
For sum
Cin / AB | 00 | 01 | 11 | 10 |
0 | 1 | 1 | ||
1 | 1 | 1 |
S = A'B'Cin + A'BCin' + ABCin + AB'Cin'
으로 나타낼 수 있다.
For carry out
Cin / AB | 00 | 01 | 11 | 10 |
0 | 1 | |||
1 | 1 | 1 | 1 |
Cout = AB + BCin + ACin
으로 나타낼 수 있다.
이를 가지고 Dataflow style 로 1-bit Full Adder를 설계하면 다음과 같이 쓸 수 있다.
assign 다음에 위에서 나타낸 sum 과 carryout을 게이트를 이용하여 나타낸 것을 볼 수 있다.
이를 case문을 활용해서도 1-bit Full Adder를 설계할 수 있다.
위와 마찬가지로 입출력은 동일하지만 이번에는 assign문이 아닌 case 문을 활용하여 나타낸 것을 볼 수 있다.
case 안에 넣어준 입력 차례대로 ci a b 가 각각의 비트일 때 co와 s 가 어떤 비트를 가지는지를 하나하나 케이스별로 쓴 것이다.
또한 이는 베릴로그의 concatenation 문법을 사용하여 다음과 같이도 설계할 수 있다.
이렇게 1-bit Full Adder를 design 할 때도 여러 방법을 사용할 수 있다.
'디지털 논리 회로 > Verilog (베릴로그)' 카테고리의 다른 글
[베릴로그] EP.5 2:1 먹스 만들기 (Design 2:1 MUX) (0) | 2021.01.21 |
---|---|
[베릴로그] EP.4 4-bit ripple carry adder의 testbench (리플캐리애더의 테스트벤치 만들기 ) (0) | 2021.01.13 |
[베릴로그] EP.3 4-bit 리플캐리애더 만들기 (Ripple Carry Adder) (0) | 2021.01.13 |
[베릴로그] EP. 1 베릴로그 시작 (Start of Verilog) (2) | 2020.12.28 |
EP.0 디지털 논리 설계 (0) | 2020.12.20 |