基于FPGA的快速加法器的设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的快速加法器的设计与实现

赵亚威1吴海波2

(1.沈阳理工大学,辽宁沈阳 110045;

2.东北大学,辽宁沈阳 110004)

E-mail: hb_0427@

摘要:加法器是算术运算的基本单元,可以有多种实现结构,采用不同的结构实现其耗用的资源和运算的速度也各不相同。本文研究了基于FPGA的常用加法器的结构及其设计方法,对各自性能加以分析比较,在此基础上采用流水线结构设计了一个8bit的加法器。并在Xilinx 公司的ISE 5.2i 软件环境下, 采用VHDL和Verilog HDL 硬件描述语言进行了设计实现并使用Modelsim进行仿真验证,在此基础上对其性能进行了比较分析。实验结果表明流水线加法器的速度高于其它结构实现的加法器。

关键词:加法器、进位、FPGA、Verilog HDL、流水线

1. 引言

算术逻辑单元(ALU) 不仅能完成算术运算也能完成逻辑运算,是微处理器芯片中的一个十分重要的部件[3]。但是所有基本算术运算(加、减、乘、除)最终都可归结为加法运算,所以加法运算的实现显得尤为重要。对于多位加法操作来说,因为存在进位问题,使得某一位计算结果的得出与所有低于它的位都相关。为了减少进位传输所耗费的时间,提高计算速度,人们设计了多种类型的加法器,提出了很多实现加法器的设计方法,如行波进位加法器、快速行波进位加法器、超前进位加法器等。以上提到的都是并行加法器,此外还有串行加法器,其具有占用资源少、设计灵活等优点。

2. 常用加法器设计方法的分析比较

并行加法器中全加器的位数与操作数的位数相同,可同时对操作数的各位相加。影响运算速度的主要是传递进位信号的逻辑线路(即进位链)。接下来就上面提到的几种并行加法器加以分析比较。

2.1 行波进位加法器

N位行波进位加法器是将N个一位全加器串联进行两个N位数的相加,进位是采用串行进位的方法来实现的,即本级的C out作为下一级的C in参与下一位的加法运算[3]。这种加法器结构简单,但速度较慢,从其逻辑表达式: Sum i = A i⊕B i⊕C i,C i + 1 =A i B i + C i(A i⊕B i)可以看

- 1 -

出,串行进位链的总延迟时间与字长成正比,字长越长,延迟时间就越长。假设每一级全加器的延迟时间为dt ,则N位加法器的进位总延迟为Ndt。所以高性能设计中一般不用这种结构的加法器。

2.2 快速行波进位加法器

从Xilinx公司的Virtex-E器件的结构可以发现,虽然行波进位加法器由于速度太慢一般不被IC设计采用,但是在这种可编程逻辑器件上,行波进位加法器由于结构最为工整,占用资源少,且速度能够满足较多应用的需求,是最适宜实现的结构形式[4]。每一个Virtex-E的CLB包含两个SLICE,每个SLICE由两个LC构成,在每个SLICE中都有专用进位逻辑,从而为高速算术功能提供快速的算术进位能力[2]。算术逻辑中包括一个异或门,使每个LC单元可以实现一个一位全加器。与传统的全加器相比,它在结构上有一些适当的调整,这样一方面缩短了进位传递的时间(约为组合逻辑输出的10%),另一方面又可以在低级进位到达时,更快速地输出该位的和运算结果。此外,在FPGA内部同一列的两个SLICE间,还专门为进位传递保留了一条最短连线。正是基于这样的一种结构,Virtex-E器件可以实现快速的行波进位加法器:16位的行波进位加法器寄存器输入到输出的响应时间为4.3ns,64位的行波进位加法器为6.3ns[4]。

2.3 超前进位加法器

影响加法器速度的关键因素是进位信号产生和传递的时间,所以要想提高加法器的速度,就必须尽可能的缩短进位时间,即改进进位方式[3]。超前进位加法器的特点是各级进位信号同时产生,大大减少了进位产生的时间。在加法器进位计算的表达式C i + 1 = A i B i + C i(A i⊕B i)中,令P i = A i⊕B i ,G i = A i B i ,则有

C i + 1 = G i + C i P i 。各位进位产生的逻辑表达式可写为:

C1 = G1 + P1C0

C2 = G2 + P2G1 + P2P1C0

C3 = G3 + P3G2 + P3P2G1 + P3P2P1C0

从上面的表达式可知:所有位的进位都不依赖低位的进位,每一位的进位只依赖于输入的A、B 和C0 ,可以同时产生。若不考虑G i和P i的形成时间,则N位超前进位加法器的进位总延迟为dt ,与字长无关。但随着加法器位数的增加,C i的表达式会越来越长,电路结构会越来越复杂,而且将受到元器件扇入系数的限制,所以完全采用并行进位是不可能的,实际上通常采用分组并行进位来实现。即把N位字长分为许多小组(每组通常4 位),在组内实现超前进位,在组间既可采用行波进位,也可采用超前进位。一般地,把组内采用超前进位,组间行波进位的方式称为单级超前进位加法器;把组内、组间均采用超前进位的方式称为多级超前进位加法器[3]。

2.4 高速串行加法器

串行加法器利用多个时钟周期完成一个完整的加法运算,从而使占用的资源大幅度减少。为了使数字串行加法器具有更广泛的应用范围,设计的关键是要使电路达到尽可能高的工作频率,以取得高的数据吞吐量,从而满足系统其它部分的速度要求。在数字串行加法器中,字长为W的操作数被分为P个位宽为N(N能被W整除,P=W/N)的数字,然后从低位开始相加,

- 2 -

在P个时钟内完成加法操作。P个时钟周期称为一个采样周期。以N=2的数字串行加法器为例,如果输入操作数的字长为8那么串行加法器可以在4个时钟周期内完成加法运算。这个加法器只用了两个全加器的资源,比一般的8bit行波进位加法器小。数字串行加法器的控制也比较简单,输入移位寄存器完成并行—>串行转换功能,通过移位操作不断为加法器提供位宽为N 的操作数,输出移位寄存器完成串行—>并行转换,输出计算结果。对于特定的输入字长,通过选择不同的N可以实现速度、面积不同的数字串行加法器。这样,设计者可以根据实际情况加以选择,提高了设计的灵活性[5]。

3. 采用流水线结构实现的快速加法器

3.1 流水线结构

流水线的作用是提高硬件部件的使用率,减少指令的平均执行时间,从而增强了处理器的处理能力。流水线的流水线深度是指流水线中总的流水线的数目,也就是处理器可以并行处理多少条指令。流水线的每一个阶段称为流水步、流水步骤、流水段、流水线阶段、流水功能段、功能段、流水级、流水节拍等。一个流水阶段与另一个流水阶段相连形成流水线。指令从流水线一端进入,经过流水线的处理,从另一端流出。在流水线的每一个功能部件的后面都要有一个缓冲器,称为锁存器、闸门寄存器等它的作用是保存本流水段的执行结果。图1是一个三级流水线操作的示意图[1],在第N个指令取指时,前面一个(即第N-1个)指令正在译码,而第N-2个指令则正在执行。

图1 三级流水操作

3.2 基于流水线结构的加法器

并行加法器速度快,只有一级门延时,对于实现4位以下的加法器比较合适[2]。FPGA中每个逻辑单元规模小,其中实现组合逻辑的为4到5变量的查找表(LUT),当增加并行加法器的位数时,将受到查找表容量的限制,但是FPGA中具有上千个触发器,资源丰富,因此可以考虑在FPGA的设计中采用流水线结构,充分利用丰富的触发器资源从而大大提高加法器的工作速度。流水线结构将每一步运算都用寄存器暂存,尽管单个运算需要多个时钟周期才能得出结果,但由于操作数是不断加到运算输入端的,所以总的效果是每个加法运算平均耗费的时间等于锁存时钟的周期,即加法器的速度只受时钟速度的限制。

3.3 流水线加法器的实现

在ISE中使用Verilog HDL语言实现了一个8位加法器,分别采用了2级和4级流水线结构进行设计,下面分别给出了8位加法器的2级和4级流水线结构图:

- 3 -

相关文档
最新文档