[Verilog] 전가산기
by JungWook_전가산기
이번에는 전가산기를 만들어보자.
반가산기는 두개의 입력만 가지고 계산을 했다.
하지만 실제 덧셈에서는 자리올림까지 계산해야 하기때문에 입력이 3개가 필요하다. 즉 입력은 3개가 되고 출력은 2개가 된다.
A | B | C | Sum | Carry |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
전가산기의 truth table이다.
전가산기는 반가산기 두개를 연결해서 구현할수 있다.
module fullAdder(x, y, cin, sum, carry);
input x;
input y;
input cin;
output sum;
output carry;
wire w1, w2, w3;
halfAdder adder1(x, y, w1, w2);
halfAdder adder2(w1, cin, sum, w3);
or OR(carry, w2, w3);
endmodule
adder1에서 나온 출력을 adder2에 입력으로 넣어줘서 구현한다.
다음은 testbench 코드이다.
`timescale 1ns/100ps
module testbench();
reg x, y, z;
wire sum, carry;
fullAdder adder(x, y, z, sum, carry);
initial begin
x = 0; y = 0; z = 0; #200;
x = 0; y = 0; z = 1; #200;
x = 0; y = 1; z = 0; #200;
x = 0; y = 1; z = 1; #200;
x = 1; y = 0; z = 0; #200;
x = 1; y = 0; z = 1; #200;
x = 1; y = 1; z = 0; #200;
x = 1; y = 1; z = 1; #200;
$finish;
end
endmodule
'Programming' 카테고리의 다른 글
VSCode에서 SSH를 통해 Synology에 접속하기 (0) | 2022.03.24 |
---|---|
Synology에서 Github Webhook 사용하기 (0) | 2021.06.15 |
Visual studio code c 설정 (0) | 2020.01.22 |
[Verilog] Quartus II (0) | 2018.05.20 |
[Verilog] HDL (0) | 2018.05.18 |
블로그의 정보
hongmono
JungWook_