以半加器实现全加器

该博客详细介绍了如何使用Verilog进行全加器和半加器的模块化设计。通过实例展示了全加器的组合逻辑实现,包括两个半加器的级联以及或运算来确定最终的进位。此外,还提供了一个用于测试全加器模块的测试平台,通过随机输入来验证其正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

module fulladder(	input wire in_1,
						input wire in_2,
						input wire cin,   //进位
						
						output wire sum,
						output wire count
    );
wire hfsum1;
wire hfcount1;
wire hfcount2;
halfadder  halfadder_inst1
(    						.in_1(in_1),
							.in_2(in_2),
							.sum(hfsum1),
							.count(hfcount1)
    );
halfadder  halfadder_inst2
(    						.in_1(cin),
							.in_2(hfsum1),
							.sum(sum),
							.count(hfcount2)
    );
assign count = hfcount1 | hfcount2;  //或运算

endmodule

半加器:

module halfadder(    input wire in_1,
							input wire in_2,
							output wire sum,
							output wire count
    );
assign {count,sum} = in_1+in_2;


endmodule
module vtf_fulladder;

	// Inputs
	reg in_1;
	reg in_2;
	reg cin;

	// Outputs
	wire sum;
	wire count;

	// Instantiate the Unit Under Test (UUT)
	fulladder uut (
		.in_1(in_1), 
		.in_2(in_2), 
		.cin(cin), 
		.sum(sum), 
		.count(count)
	);

	initial begin
		// Initialize Inputs
		in_1 = 0;
		in_2 = 0;
		cin = 0;

		// Wait 100 ns for global reset to finish
		#100;

        
		// Add stimulus here

	end
	
		always #10 in_1<= {$random} %2;  //取随机数对2求余(0或者1) 
		always #10 in_2<= {$random} %2;
		always #10 cin <= {$random} %2;
      
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值