Lined Notebook

[Verilog] 전가산기

by JungWook_

image-20180531223950077

전가산기


이번에는 전가산기를 만들어보자.

반가산기는 두개의 입력만 가지고 계산을 했다.

하지만 실제 덧셈에서는 자리올림까지 계산해야 하기때문에 입력이 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_

활동하기