Verilog实现一个8位带进位全加器

项目简介:
用Verilog语言实现一个8位带进位全加器。顶层采用结构描述的方法用8个1位全加器来实现一个8位带进位全加器,底层的1位全加器采用行为描述的方法来实现。
代码实现:

/*--------------------------------------------------------------
Filename: adder_8.v
Function: 实现两个8位二进制数的带进位加法运算(输出和S最大为256)
Author: Zhang Kaizhou
Date: 2019-10-1 19:42:22
--------------------------------------------------------------*/
//8位加法器顶层模块
module adder_8(s, cout, a, b, cin);
	//输入输出端口及变量定义
	output [7 : 0] s;
	output cout;
	input [7 : 0] a, b;
	input cin;
	wire [6 : 0] carry;
	
	//采用结构描述的方式实现一个8位加法器
	fulladder m0(s[0], carry[0], a[0], b[0], cin);
	fulladder m1(s[1], carry[1], a[1], b[1], carry[0]);
	fulladder m2(s[2], carry[2], a[2], b[2], carry[1]);
	fulladder m3(s[3], carry[3], a[3], b[3], carry[2]);
	fulladder m4(s[4], carry[4], a[4], b[4], carry[3]);
	fulladder m5(s[5], carry[5], a[5], b[5], carry[4]);
	fulladder m6(s[6], carry[6], a[6], b[6], carry[5]);
	fulladder m7(s[7], cout, a[7], b[7], carry[6]);
endmodule

//1位全加器模块
module fulladder(s, cout, a, b, cin);
	//输入输出端口定义
	output s, cout;
	input a, b, cin;
	
	//采用行为描述的方式实现1位全加器
	assign s = a ^ b ^ cin;
	assign cout = a & b | a & cin | b & cin;
endmodule
/*---------------------------------
Filename: adder_8_t.v
Function: 测试adder_8模块逻辑功能
Author: Zhang Kaizhou
Date: 2019-10-1 19:58:22
---------------------------------*/
`timescale 1ns/1ns
module adder_8_t(s, cout);
	//端口及变量定义
	output [7 : 0] s;
	output cout;
	reg [7 : 0] a, b;
	reg cin;
	
	initial
	begin
		#100 a = 8'b0000_0000; b = 8'b0000_0000; cin = 1'b0; //0 + 0 + 0= 0
		#100 a = 8'b0000_0001; b = 8'b0000_0001; cin = 1'b1; //1 + 1 + 1 = 3
		#100 a = 8'b0010_0000; b = 8'b0010_0011; cin = 1'b1; //32 + 35 + 1 = 68
		#100 a = 8'b1111_1100; b = 8'b0000_0011; cin = 1'b0; //252 + 3 + 0 = 255
		#100 a = 8'b1111_1100; b = 8'b0000_0011; cin = 1'b1; //252 + 3 + 1 = 256
		#100 a = 8'b1111_1100; b = 8'b0000_1000; cin = 1'b0; //252 + 8 + 0 = 260 (溢出错误)
		#500 $stop;
	end
	
	adder_8 m0(.s(s), .cout(cout), .a(a), .b(b), .cin(cin));
endmodule

Modelsim仿真结果:
在这里插入图片描述
总结:
由上面的仿真波形易知,以上代码实现了一个8位全加器的逻辑功能,达到了设计预期。

  • 25
    点赞
  • 158
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值