原创 [博客大赛]小程序大道理---加法器

2014-3-11 16:54 1721 11 11 分类: FPGA/CPLD 文集: FPGA

看过一篇文章,讲的是一道FPGA面试题,http://blog.chinaaet.com/detail/33877.html

问题:如何用32bit的加法器和逻辑门实现2个并行的16bit加法器功能 ?

放下问题不说,先说说 加法器基本的设计方法: 串行进位加法器,超前进位加法器,模加法器等等。常用的,也是最简单的是 串行进位加法器,其组合电路如下图所示:

20140311152444782.jpg

注意:这是一个组合电路,小方块不是触发器。这是串行进位加法器或者叫逐位进位加法器 !

用quartus综合出来的加法器,就是这种方式的加法器!

42bit 加法器,直接相加

module top(clk,rst_n,data1,data2,data3);

input [41:0]data1;
input [41:0]data2;
output reg [42:0] data3;
input clk;
input rst_n;


reg [41:0]a;
reg [41:0]b;

always@(posedge clk or negedge rst_n )
if(!rst_n)
begin a<=52'd0;b<=42'd0; end
else begin a<=data1;b<=data2; end

always@(posedge clk or negedge rst_n)
if(!rst_n)
begin data3<=43'd0; end
else data3<=a+b;
endmodule

RTL视图:

20140311153547605.jpg

Technology Map Viewer(局部)

20140311154611517.jpg

可以看到把上边原理图,输入端A0-A3,B0-B3和输出端S0-S3,Co3 接上触发器,就是quartus综合后的加法器。

从Chip planner看,黄色LUT 实现每一位的全加器功能(原理图的FA),红色是输出寄存器,箭头表示连接,向下的箭头是进位线。

20140311154847176.jpg

串行进位加法器,最大的缺点: 每一位的相加必须等低一位的进位产生以后,才能进行,如果位宽比较大,这种组合逻辑延时势必会影响到Fmax,加法器的速率不会太高 !

以上边42bit加法器程序为例,b[0]到b[41]是源同步,中间经过40个全加器LUT,如下图20140311161305892.jpg

20140311161425103.jpg

20140311161450755.jpg

上边的42bit加法器,最高速率为 183MHZ

20140311161955471.jpg

那么怎么提高加法器时钟速率呢 ??流水线 ,下一篇博文继续。。。。。

 

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /2 下一条