FPGA学习笔记(二)4位全加器分层设计

今天学习了1位全加器的设计,然后我脑洞大开,自己模块化搭建了一个4位全加器。

思路:自上而下模块化编程

第一层:2个2位全加器构成1个四位全加器

直接将两个2位全加器例化过来即可。

module add_full_4bit(
	input     wire  [3:0]  A,
	input     wire  [3:0]  B,
	input     wire        CIN,
	output    wire  [3:0] SUM,
	output    wire        COUT
);
//2位全加器构成4位
	wire c_12;
	add_full_2bit add_full_2bit_inst1(
			.A        (A[1:0]),
			.B        (B[1:0]),
			.CIN      (CIN),
			
			.SUM      (SUM[1:0]),
			.COUT     (c_12)
);
	
	add_full_2bit add_full_2bit_inst2(
			.A    (A[3:2]),//4位中的高2位
			.B    (B[3:2]),
			.CIN  (c_12),
			
			.SUM  (SUM[3:2]),
			.COUT (COUT)
);

endmodule 
	

第二层:2个全加器构成1个2位全加器

我们将第三层的思路框图打包成1位全加器:

module add_full_2bit(
	input     wire [1:0] A,
	input     wire [1:0] B,
	input     wire       CIN,
	output    wire [1:0] SUM,
	output    wire       COUT
);

	wire c_01;//低位向高位的进位
	add_full_1bit add_full_1bit_inst1(
			.A       (A[0]),
			.B       (B[0]),
			.CIN     (CIN),
			.SUM     (SUM[0]),
			.COUT    (c_01)
);

	add_full_1bit add_full_1bit_inst2(
			.A       (A[1]),
			.B       (B[1]),
			.CIN     (c_01),
			.SUM     (SUM[1]),
			.COUT    (COUT)
);


endmodule 

第三层:2个半加器构成1个全加器

 

 根据此思路,我们可以这样写:

module add_full_1bit(
	input     wire A,
	input     wire B,
	input     wire CIN,
	output    wire SUM,
	output    wire COUT
);
//2个半加器构成1位全加器
	wire   d1,d2,d3;//设置三个变量
	//例化,第一个半加器
	add_half add_half_inst1(
			.A    (A),
			.B    (B),
			.SUM  (d1),
			.COUT (d2)
);
    //例化,第一个半加器
	add_half add_half_inst2(
			.A    (d1),
			.B    (CIN),
			.SUM  (SUM),
			.COUT (d3)
);
	or
	or1(COUT,d2,d3);
endmodule 

 第五层:半加器

半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。 是实现两个一位二进制数的加法运算电路。

半加器是实现两个一位二进制数加法运算的器件。它具有数据输入被加数A、加数B,数据输出S和数(半加和)、进位C0。A和B是相加的两个数,S是半加和数,C是进位数。

 

 根据此结论可以写出半加器电路代码

module add_half(
	input     wire A,
	input     wire B,
	
	output    wire SUM,
	output    wire COUT
);

	assign SUM=A^B;
	assign COUT=A&B;

endmodule 

程序编写完成后,模块组合如下

 这样我们就完成了4位全加器的设计。

//大三小白第一次投稿,望各方大佬多多指教!!(✪ω✪)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值