FPGA加法器设计总结 半加法器的设计

FPGA加法器设计

杨剑 2011.11.29

加法作为一种基本运算,大量运用在数字信号处理和数字通信的各种算法中。由于加法器使用频繁,因此其速度往往影响着整个系统的运行速度。如果可以实现快速加法器的设计,则可以提高整个系统的处理速度。

加法运算是最基本的算数运算,在多数情况下,无论是乘法、除法还是减法以及FFT等运算,最终都可以分解为加法运算来实现,因此对加法运算的实现进行一些研究是非常必要的。实现加法运算有如下一些方法:

(1)级连加法器;

(2)并行加法器;

(3)超前进位加法器;

(4)流水线加法器。

1、级连加法器

级连加法器是由1位全加器级连构成的,本位的进位输出作为下一级的进位输入。级连加法器的结构简单,但N位级连加法运算的延时是1为全加器的N倍,延时主要是由于进位信号级连造成的。在需要高性能的设计中,这种结构不宜采用。

module add_jl(sum,cout,a,b,cin);

output [3:0] sum;

output cout;

input [3:0] ina,inb;

input cin;

wire [3:1] c;

full_add1 f0 (ina[0],inb[0],cin,sum[0],c[1]);//级连描述

full_add1 f1 (ina[1],inb[1],c[1],sum[1],c[2]);

full_add1 f2 (ina[2],inb[2],c[2],sum[2],c[3]);

full_add1 f3 (ina[3],inb[3],c[3],sum[3],cout);

modulefull_add1(ina,inb,cin,sum,cout);//1位全加器

input ina,inb,cin;

output sum,cout;

wire s1,m1,m2,m3;

and (m1,ina,inb),

(m2,inb,cin),

(m3,ina,cin);

xor (s1,a,b),

(sum,s1,cin);

or (cout,m1,m2,m3);

endmodule

2、并行加法器

并行加法器可采用Verilog语言的加法运算符直接描述,或称为数据流描述方式,实现容易,其运算速度快,但耗费资源多,尤其是当加法运算的位数较宽时,其耗用资源将会大大增加。

module add_bx(cout,sum,a,b,cin);

output [7:0] sum;

output cout;

input [3:0] a,b;

input cin;

assign {cout,sum}=a+b+cin;

endmodule

3、超前进位加法器

级连加法器的延时主要是由于进位的延时造成的,因此要加快加法器的运算速度,就必须减小进位延迟,超前进位链能有效地减少进位的延迟。

这里以4位超前进位链的推导为例介绍超前进位的概率。

首先对于1位全加器,其本位值与进位输出可表示如下:

sum=a⊕b⊕cin

cout=(a·b)+(a·cin)+(b·cin)=ab+(a+b)cin

从上面式子可以看出:如果a和b都为1,则进位输出为1;如a和b有一个为1,则进位输出等cin.

另G=ab,P=a+b,则有:

cout=ab+(a+b)cin=G+P·cin

由此可以得出用G和P来写出4位超前进位链如下(设定4位被加数和加数位A和B,进位输入为Cin,进位输出为Cout,进位产生Gi=AiBi,进位传输Pi=Ai+Bi):

C0=Cin

C1=G0+P0C0=G0+P0Cin

C2=G1+P1C1=G1+P1(G0+P0Cin)=G1+P1G0+P1P0Cin

C3=G2+P2C2=G2+P2(G1+P1C1)=G2+P2G1+P2P1G0+P2P1P0Cin

C4=G3+P3C3=G3+P3(G2+P2C2)=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0Cin

Cout=C4

由上面的超前进位链可以看出:各个进位彼此独立产生,将进位级连传播给去掉了,因此,减少了进位产生的延迟时间。

同样,可推导出下面的式子:

sum=A⊕B⊕Cin=(AB)⊕(A+B)⊕Cin=G⊕P⊕Cin

4、流水线加法器

以上实现的加法器虽然尽量减少了延时,但还是不可避免地有多级门延时和布线延时,随着位数的增加,延迟还会增加。为了设计更快的加法器,可以采用流水线设计技术(Pipeline),以提高系统的运行频率。其基本设计思想是在逻辑电路中插入若干寄存器来暂存中间结果,虽然多了一些寄存器资源,但减少了每一级组合的延时,因为可以提高整个加法器的运行频率,是用于提高所设计系统运行速度的一种有效方法。

流水线操作的概念以下图来说明,在图中,假设某个复杂逻辑功能的实现需要较长时间,我们可以将其分解为几个步聚来实现,每一步延时变为原来的1/3,并在各步之间加入寄 存器,以暂存中间结果,这样的话,整个系统的最高工作频率得到很大的提高。
FPGA加法器设计总结 半加法器的设计

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/261934.html

更多阅读

解开索菲娅·维加拉的秘密 索菲娅.维加拉 gif

稿件来源:《时尚先生》摄影:James White 文:Cal Fussman 制图: 陈伟杰一个男人走出电梯,走进索菲娅·维加拉所在公寓的大厅。他身材高大,长相英俊,神情自若,穿着一身运动装。一个彻头彻尾的美国男人。而我刚刚赶到,正要开始喋喋不休。“嘿

微信加粉的20个秘诀一 20岁长高的秘诀

微信加粉的20个秘诀(一)——简介微信如何加粉丝?微信如何推广?下面结合实践体会,给大家分享一个快速加当地粉丝的方法微信加粉的20个秘诀(一)——工具/原料微信苹果智能手机一部地理位置定位系统微信加粉的20个秘诀(一)——方法/步骤微信加

声明:《FPGA加法器设计总结 半加法器的设计》为网友凘擔噹分享!如侵犯到您的合法权益请联系我们删除