原创 加法器设计(三)超前进位加法器(Verilog)

2009-2-11 22:32 8811 14 16 分类: FPGA/CPLD

加法器设计(三)超前进位加法器(Verilog<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


超前进位加法器



module add4_head ( a, b, ci, s, pp, gg);

input[3:0]    a;
input[3:0]    b;
input            ci;

output[3:0]  s;
output          pp;
output          gg;

wire[3:0]       p;
wire[3:0]       g;
wire[2:0]       c;

assign p[0] = a[0] ^ b[0];
assign p[1] = a[1] ^ b[1];
assign p[2] = a[2] ^ b[2];
assign p[3] = a[3] ^ b[3];

assign g[0] = a[0] & b[0];
assign g[1] = a[1] & b[1];
assign g[2] = a[2] & b[2];
assign g[3] = a[3] & b[3];

assign c[0] = (p[0] & ci) | g[0];
assign c[1] = (p[1] & c[0]) | g[1];
assign c[2] = (p[2] & c[1]) | g[2];

assign pp = p[3] & p[2] & p[1] & p[0];
assign gg  = g[3] | (p[3] & (g[2] | p[2] & (g[1] | p[1] & g[0])));

assign s[0] = p[0] ^ ci;
assign s[1] = p[1] ^ c[0];
assign s[2] = p[2] ^ c[1];
assign s[3] = p[3] ^ c[2];

endmodule

首先要明确几个概念:
p
表示进位否决信号(pass),如果p0就否决调前一级的进位输入。否决的意思就是即使前一级有进位,本级也不会向后一级产生进位输出。
g
表示进位产生信号(generate),如果g1就表示一定会向后一级产生进位输出。

p[n] = a[n] ^ b[n]
这句话的意思是说,当a=1,b=0a=0,b=1时前一级的进位输入信号不能否决。这样就有个问题了,即当a=1,b=1时前一级的进位输入信号也不能否决啊,怎么没有体现出来?其实当a=1,b=1时产生了进位产生信号g,它的优先级高于p信号,就忽略了p信号,直接产生了向后一级产生进位输出,是没有逻辑错误的。

g[n] = a[n] & b[n]
这句话的意思是说,如果a=1,b=1时就直接向后一级产生进位输出信号,而不用考虑其它的任何因素。

pp
表示本级模块的进位否决信号,如果pp0就否决调前一级模块的进位输入。
gg
表示本级模块进位产生信号,如果gg1就表示一定会向后一级模块产生进位输出。

这两个信号ppgg都是用于超前进位模块之间的连接,如44位超前进位加法器模块再使用超前进位逻辑进行连接构成16位超前进位加法器。

pp = p[3] & p[2] & p[1] & p[0]
这句话的意思是说,当a+b=1111时,此时前一级模块的进位输入不能被否决。

gg = g[3] | (p[3] & (g[2] | p[2] & (g[1] | p[1] & g[0])))
这一句可以这样理解,它是嵌套了几层的:
1.  
如果g[3]=1,即最高位要产生进位位,则表示本模块一定会向后一级模块产生进位输出,于是gg=1
2.  
如果g[3]=0,但是p[3]=1(表示不能否决掉前一级的进位),而且前一级又有进位输入时,gg=1
3.  
以下层次的关系依此类推。

总之,可以看出几个规律:
1.  
用于模块内部的pg信号,它们的产生都不依赖于模块内部各位之间的进位信号,而是由输入信号ab直接得到的。
2.  
用于模块外部的ppgg信号,它们的产生也不依赖于该模块的进位输入信号,ppgg信号用于超前进位链的再次级联。
3.  
当进位产生信号(ggg)为1时,一定向后一级产生进位输出,此时不需要等待前一级进位信号的输入,速度得以加快。
4.  
当进位产生信号(ggg)为0时,向不向后一级产生进位输出就不好说了。我们能肯定的是如果此时进位否决信号(ppp)为0,则一定不会向后一级产生进位输出,这种情况也不需要等待前一级进位信号的输入,速度还是得以加快。
5.  
如果进位产生信号(ggg)为0,并且进位否决信号(ppp)为1,向不向后一级产生进位输出就完全取决于前一级进位信号的输入了,这时花的时间最长。

写得很仓促,加上原先对超前进位链的结构设计理解不深,内容定有不妥之处,还望大家指正。


 


超前进位加法器顶层模块


`timescale 1ns / 1ps


module add4_headtest_v;


 


       // Inputs


       reg [3:0] a;


       reg [3:0] b;


       reg ci;


 


       // Outputs


       wire [3:0] s;


       wire pp;


       wire gg;


 


       // Instantiate the Unit Under Test (UUT)


       add4_head uut (


              .a(a),


              .b(b),


              .ci(ci),


              .s(s),


              .pp(pp),


              .gg(gg)


       );


 


       initial begin


              // Initialize Inputs


              a = 4'b1100;


              b = 4'b1010;


              ci = 1;


 


              // Wait 100 ns for global reset to finish


              #100;


       a = 4'b1010;


              b = 4'b0011;


              ci = 1;


              // Add stimulus here


             


              #200;


              a = 4'b1011;


              b = 4'b1001;


              ci = 0;


 


       end


     


endmodule


 


行为仿真结果:基本实现加法器功能


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


 

 037d10f2-d531-4be9-896d-03ebb656854c.JPG


 


综合后的RTL



 

点击看大图 


 


综合后可以看到path delay比全加器少



 

c135f474-8da8-4b9d-aa4f-594ca11d9b49.JPG


 


Post-Place & Route Simulator就可以看到在器件上的实际延迟了(XC3S500E)



 

点击看大图


 


超前进位加法器工程文件:https://static.assets-stash.eet-china.com/album/old-resources/2009/2/11/6cc0fce8-bc15-4b1a-9220-c753a5d48df9.rar


 

 

参考资料:


1)            超前进位加法器详解『原创』


http://www.edacn.net/bbs/viewthread.php?tid=86224


2)            Verilog 16位超前进位加法器源码


http://www.dzkf.cn/html/EDAjishu/2006/1117/1050.html


PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户219778 2009-11-4 16:29

哦,不好意思,问题解决了,谢谢你的资源!

用户219778 2009-11-4 16:25

我验证了你的程序,可是在M0DELSIM上运行后,没有输出波形,而且显示变量类型的时候gg,pp,s都为net型的,没有数据输出(显示N0 DATA);

用户235330 2009-9-21 16:40

IC渠道网,www.17ic.com 为广大的供应商和采购商提供最真切的服务1512
相关推荐阅读
藤井树 2015-10-12 14:43
印制电路板的抗干扰设计 zz
印制电路板的抗干扰设计     作者:中船重工集团第707所 肖麟芬   摘   要:本文以印制电路板的电磁兼容性为核心,分析了电磁干扰的产生机理...
藤井树 2013-10-22 15:32
2010.5.30 黄草梁上包饺子一日登山活动——摘韭菜篇
        上次桃花节的时候也有野韭菜,那时候的我连草和韭菜叶分不清,才回去的韭菜也不敢吃,哈哈,这次可算真正见识了韭菜,黄草梁也叫韭菜梁,因为满山遍野都是野韭菜而闻名,比较圆比较粗的就是野韭...
藤井树 2013-10-22 15:28
2010.5.30 黄草梁上包饺子一日登山活动——包饺子篇
摘韭菜回来,大家已经忙开了 我也装模作样地“工作着” 哈哈,还不让我包,包饺子是技术活,一定要皮薄馅厚才有资格包,像我这样的只能旁观了 摘的韭菜应该足够了,旁边那个袋子是我摘来带回学校的 ...
藤井树 2013-08-09 15:19
datasheet下载网站整理(查IC芯片手册)【原创】
*************************************************************************         作为电子工程师,芯片的dat...
藤井树 2010-06-04 00:21
陈伟宁王辉一家捐助渠道(北京菲亚特—英菲尼迪)
       王辉的最新消息请关注 http://chenweining.org/       目前事故责任认定已经出来了——陈家全责。        发信人: program (程序), 信区: D...
藤井树 2010-06-01 13:43
2010.5.30 黄草梁上包饺子一日登山活动——美景篇
这天不得不说的是天空,蓝蓝的天空,白白的云    绿油油的山脊  我、洪涛哥哥、huangna妹妹还有她同事小艾走在黄草梁上    在蓝天白云下合影       阳光照过来,景色真美 象鼻山,走不...
EE直播间
更多
我要评论
2
14
关闭 站长推荐上一条 /3 下一条