三种高速乘法器的fpga实现及性能比较

上传人:第*** 文档编号:31383438 上传时间:2018-02-07 格式:DOC 页数:6 大小:775.50KB
返回 下载 相关 举报
三种高速乘法器的fpga实现及性能比较_第1页
第1页 / 共6页
三种高速乘法器的fpga实现及性能比较_第2页
第2页 / 共6页
三种高速乘法器的fpga实现及性能比较_第3页
第3页 / 共6页
三种高速乘法器的fpga实现及性能比较_第4页
第4页 / 共6页
三种高速乘法器的fpga实现及性能比较_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《三种高速乘法器的fpga实现及性能比较》由会员分享,可在线阅读,更多相关《三种高速乘法器的fpga实现及性能比较(6页珍藏版)》请在金锄头文库上搜索。

1、三种高速乘法器的 FPGA 实现及性能比较摘要:乘法是数字信号处理中重要的基本运算,在很大程度上影响着系统的性能。本文将介绍三种高速乘法器实现原理:阵列乘法器、华莱士(WT)乘法器、布斯华莱士树超前进位乘法器。而且通过 FPGA 技术实现了这三种乘法器,并对基于以上三种架构的乘法器性能进行了分析比较。关键字:阵列乘法器,华莱士乘法器,超前进位乘法器,FPGA1、引言随着3G 技术的发展,关于图像、语音、加密等数字信号处理技术随处可见,而且信号处理的实时性也要求越高。实时性即是要求对信号处理的速度要快,而乘法器是数字信号处理中重要的基本运算,在很大程度上影响着系统的性能。人们开始开发高速的乘法器

2、。以下将对三种乘法器:阵列乘法器、华莱士(WT)乘法器、布斯华莱士树超前进位乘法器进行原理分析,并用 FPGA 技术实现了这三种乘法器,对其结果进行了仿真,得出相应的性能比较。2、阵列乘法器2.1 阵列乘法器原理硬件乘法器的常规设计是适用“串行移位”和“并行加法”相结合的方法,这种方法并不需要很多器件。然而串行方法毕竟太慢,执行一次乘法的时间至少是执行一次加法时间的 n 倍,不能满足科学技术对高速乘法所提出的要求。自从大规模集成电路问世以来,高速的单元阵列乘法器应运而生,出现了各种形式的流水线阵列乘法器,它们属于并行乘法器,提供了极快的速度。阵列乘法器的运算过程如下:第一:当乘数的位数字为1

3、时,我们可以将被乘数的值直接放置适当的位置。而适当的位置是依乘数的第几个位和被乘数做运算之后所放的位置。第二:当乘数的位数字为 0 时,我们可以将 0 放置适当的位置, 以作为部分乘积。第三:我们利用笔和纸计算的乘法,在硬件中使用与门来实现。例如:1000 1 中,乘数 1 和每一个被乘数的位都个别做与运算,其结果为 1000 正是我们所要的结果。由此可知我们只需用与门就可以完成我们所要的乘法。第四:当部分乘积都运算完成后,使用加法来完成最终的乘法结果运算。根据以上四点的说明,我们可以运用最简单、最直观的方式来描述固定点乘法器的电路描述。我们使用与门来做部分积运算,使用全加器(Full add

4、er)来运算部分积的最终结果。图 1 所示为有符号位的 66 固定点乘法器的架构图。H AF AH AF AF AH AF AF AF AH AF AF AF AF AH AF AF AF AF AF AF AF AF AF AF AF AF AF AF A F AF AF AF AF AF AF AF AF AF AF AF AF AF AF AF A图 1 66 有符号位阵列乘法器乘法器架构图2.2 阵列乘法器 FPGA 仿真在名为 comult 的实体中设置 mulc 和 mulp 两个输入端口和一个 prod 输出端口。其中mulc 代表被乘数,mulp 为乘数,二者均为 6 位。乘积

5、 prod 是一个 12 位的结果,输入与输出端口的数据类型均为 std_logic_vector。流程图如图 2 所示,仿真如图 3 所示。图 2 6x6 有符号阵列乘法器流程图图 3 6x6 有符号阵列乘法器仿真3、华莱士乘法器原理部分积相加, 若采用累加移位的方法, 速度太慢。华莱士树算法(Wallace Tree Algorithm)是部分积化简的一种树形算法。它使乘法器的延时得到最大限度的缩短,但全加阵列的布局布线复杂度大为增加。一个全加器有三个输入: A , B , C (进位) 和两个输出 S , C(输出进位) , 3 个输入对 2 个输出而言是对称的, 即它们互相交换位置,

6、结果不会受影响。如果把一串全加器简单排成一行, 它们之间进位线不连, 把这样一串全加器称为保留进位加法器 (CSA ) , 它有以下特性: 三个输入数之和等于二个输出数之和, 即 3 个相加数每通过一次保留进位加法器, 其个数就减少 1 个。Wallace 最早提出的方案就利用了这一特点:第一步将每列的部分积按三位进行分组,每组通过使用全加器构成的 CSA 部件,将加数的数目减少; 第二步对第一步产生的结果仍按三位分组的方式将同权的伪和与局部进位信号通过 CSA 部件进行处理,再次减少加数的数目,这种处理一直进行到最后只有两个输出为止。对最后的伪和与局部进位通过进位传递加法器相加得出真正的结果

7、。在这种处理方式中,每列中求伪和的操作是并行完成的。由于采用全加器作为加法部件,每次能将 3 个权为 20 的输入信号经处理后得到一个权为 21 的局部进位信号和一个权为 20 的伪和信号,这样操作数的数目减少 1/ 3,将产生的中间伪和也按照这种方式处理,经过时间为 O(log3/ 2 N) 的处理后可以得到最后的伪和与局部进位信号。图 16 华莱士树加法树示意图我们来考虑一个 位华莱士树乘法器的结构。设被乘数为 ,乘数为4 0123x。0123y65432106543210Partil products First tage Bit positn65432106543210Second s

8、tage Final derFA HA(a) (b)(c) (d)图 17 位华莱士树乘法器实现图4图 18 位华莱士树乘法器架构图4F u l l A d d e r( C S A )A BC o u tSC i nC i nABSABAC i nBC i nC o u t图 19 保留进位加法器(CSA)H a l f A d d e rA BC o u tS 图 20 半加器 布斯算法(Booths Algorithm)的做法是对乘数编码以计算出乘法运算的结果,主要的想法在于乘数中连续的1,这些1会造成被乘数的连加。但是,乘数 01110 又可表示为 10000-00010,这样可将部分

9、积减少为 2 个。当我们遇到乘数中连续的1时(从右往左看) ,第一个1减去被乘数,最后一个1后面的0 则加上被乘数。 011000010部 分 积部 分 积乘 数被 乘 数布斯编码的核心在于对连续的1字串进行头、中、尾三段的分段处理(从右往左看) 。当然, 0字串由于本身就无须进行运算,所以不必理会。4、华莱士乘法器先介绍阵列乘法器,我们用笔计算乘法时,第一个操作数为被乘数(multiplicand) ,第二个操作数为乘数(multiplier)。而乘数中的每一个位和被乘数做相乘的运算后的结果称之为部分乘积(partial product),而将所有的部分乘积相加之后,其运算结果称为乘积(pr

10、oduct)。如:10001001 为例, multiplicand 1000 multiplier 1001partial product 1000 partial product 0000 partial product 0000 partial product 1000 product 1001000 通过以上的示例我们可以发现如下四点:第一:当乘数的位数字为 1 时,我们可以将被乘数的值直接放置适当的位置。而适当的位置是依乘数的第几个位和被乘数做运算之后所放的位置。第二:当乘数的位数字为 0 时,我们可以将 0 放置适当的位置, 以作为部分乘积。第三:我们利用笔和纸计算的乘法,在硬件中

11、使用与门来实现。例如:1000 1 中,乘数 1 和每一个被乘数的位都个别做与运算,其结果为 1000 正是我们所要的结果。由此可知我们只需用与门就可以完成我们所要的乘法。第四:当部分乘积都运算完成后,使用加法来完成最终的乘法结果运算。根据以上四点的说明,我们可以运用最简单、最直观的方式来描述固定点乘法器的电路描述。我们使用与门来做部分积运算,使用全加器(Full adder)来运算部分积的最终结果。因为作加法时,会有进位问题,且上一位所产生的进位也非常重要,所以只有全加器能满足我们的加法要求。图 13 所示为有符号位的 66 固定点乘法器的架构图。H AF AH AF AF AH AF AF AF AH AF AF AF AF AH AF AF AF AF AF AF AF AF AF AF AF AF AF AF A F AF AF AF AF AF AF AF AF AF AF AF AF AF AF AF A图 13 66 固定点乘法器架构图

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号