欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Verilog中的加法器(半加器,全加器,串行、超前进位加法器)

发布时间:2024/10/14 编程问答 21 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Verilog中的加法器(半加器,全加器,串行、超前进位加法器) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

加法器为半加器和全加器:

半加器:不考虑低位向高位的进位。2输入,2输出。

全加器:考虑低位向高位的进位。3输入(多了进位输入C),2输出。

 

Verilog代码如下:

module half_add(input A,B, //两输入,无进位输入output sum,cout //加法结果和进位输出 ); assign sum=A^B; assign coot=A&B; endmodule

图中的co表达式错误,应为co=(A+B)ci +A·B

 Verilog代码如下:

module full_add(input A,B,cin //三输入,有进位输入output sum,cout ); assign sum=A^B^cin; assign co=(A&B)|(A&cin)|(B&cin); endmodule

用全加器实现半加器:只需要把全加器的进位端CI进位输入端屏蔽即可。

 用半加器实现全加器:用两个半加器如下图。

Verilog代码如下:

module half_add(input A,B,output sum,cout ); assign sum=A^B; assign cout=A&B; endmodule //先编写一个半加器module full_add( input A,B,cinoutput sum,cout ); //通过例化两个半加器组成一个全加器 wire w1,w2,w3;half_add add1(.A (A),.B (B),.sum (w1),.cout(w2) );half_add add2(.A (cin),.B (w1),.sum (sum),.cout(w3) );assign cout=w2|w3;endmodule

多位加法器的进位原理:

1.串行进位加法器

 从上面的原理图可以看出,串行进位加法器就是将上一片的进位输出与下一片的进位输入相连,用4片1bit全加器串行相接即可实现4bit全加器。

直接描述的Verilog代码会产生串行进位加法器:

//4位全加器,有低位向本位进位(即有输入进位) module four_bits_full_add(input [3:0]a,b,input cin,output cout,output [3:0]sum );assign {cout,sum} = a + b + cin; endmodule

但是这种结构的缺点是,必须要等到上一片的结果算出来之后下一片才能进行工作,当级数很高的时候计算的时间将是每一片时间的n倍,会出现组合逻辑延时过长的问题。此时另一种进位方法——超前进位加法器就可以解决这一延时过高的问题。

2.超前进位加法器

 超前进位加法器的原理是不等后级把进位算完再传过来,我们直接通过输入的数据把这个进位直接算出来发给每一级。

从上面的全加器讲解中我们知道,输出进位co=(A+B)cin+A·B。

 Verilog代码如下:

module four_bits_fast_add(input [3:0]a,b, input cin, output [3:0]sum, output cout );wire [3:0] g,p; //分别对应Gi、Piwire [4:0] c; //对应Ciassign p = a | b; // Pi = Ai·Biassign g = a & b;// Gi = Ai+Biassign c[0] = cin; //C0就是第一片的输入进位assign c[1] = g[0]|(p[0]&c[0]);assign c[2] = g[1]|(p[1]&(g[0]|(p[0]&c[0]) );assign c[3] = g[2]|(p[2]&(g[1]|(p[1]&(g[0]|(p[0]&c[0])))));assign c[4] = g[3]|(p[3]&(g[2]|(p[2]&(g[1]|(p[1]&(g[0]|(p[0]&c[0])))))));assign sum =a ^b^ c[3:0]; assign cout = c[4]; //C4就是最后一片的输出进位 endmodule

总结

以上是生活随笔为你收集整理的Verilog中的加法器(半加器,全加器,串行、超前进位加法器)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。