好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

6页
  • 卖家[上传人]:第***
  • 文档编号:31383438
  • 上传时间:2018-02-07
  • 文档格式:DOC
  • 文档大小:775.50KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 三种高速乘法器的 FPGA 实现及性能比较摘要:乘法是数字信号处理中重要的基本运算,在很大程度上影响着系统的性能本文将介绍三种高速乘法器实现原理:阵列乘法器、华莱士(WT)乘法器、布斯华莱士树超前进位乘法器而且通过 FPGA 技术实现了这三种乘法器,并对基于以上三种架构的乘法器性能进行了分析比较关键字:阵列乘法器,华莱士乘法器,超前进位乘法器,FPGA1、引言随着3G 技术的发展,关于图像、语音、加密等数字信号处理技术随处可见,而且信号处理的实时性也要求越高实时性即是要求对信号处理的速度要快,而乘法器是数字信号处理中重要的基本运算,在很大程度上影响着系统的性能人们开始开发高速的乘法器以下将对三种乘法器:阵列乘法器、华莱士(WT)乘法器、布斯华莱士树超前进位乘法器进行原理分析,并用 FPGA 技术实现了这三种乘法器,对其结果进行了仿真,得出相应的性能比较2、阵列乘法器2.1 阵列乘法器原理硬件乘法器的常规设计是适用“串行移位”和“并行加法”相结合的方法,这种方法并不需要很多器件然而串行方法毕竟太慢,执行一次乘法的时间至少是执行一次加法时间的 n 倍,不能满足科学技术对高速乘法所提出的要求。

      自从大规模集成电路问世以来,高速的单元阵列乘法器应运而生,出现了各种形式的流水线阵列乘法器,它们属于并行乘法器,提供了极快的速度阵列乘法器的运算过程如下:第一:当乘数的位数字为1 时,我们可以将被乘数的值直接放置适当的位置而适当的位置是依乘数的第几个位和被乘数做运算之后所放的位置第二:当乘数的位数字为 0 时,我们可以将 0 放置适当的位置, 以作为部分乘积第三:我们利用笔和纸计算的乘法,在硬件中使用与门来实现例如:1000 ×1 中,乘数 1 和每一个被乘数的位都个别做与运算,其结果为 1000 正是我们所要的结果由此可知我们只需用与门就可以完成我们所要的乘法第四:当部分乘积都运算完成后,使用加法来完成最终的乘法结果运算根据以上四点的说明,我们可以运用最简单、最直观的方式来描述固定点乘法器的电路描述我们使用与门来做部分积运算,使用全加器(Full adder)来运算部分积的最终结果图 1 所示为有符号位的 6×6 固定点乘法器的架构图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 6×6 有符号位阵列乘法器乘法器架构图2.2 阵列乘法器 FPGA 仿真在名为 comult 的实体中设置 mulc 和 mulp 两个输入端口和一个 prod 输出端口。

      其中mulc 代表被乘数,mulp 为乘数,二者均为 6 位乘积 prod 是一个 12 位的结果,输入与输出端口的数据类型均为 std_logic_vector流程图如图 2 所示,仿真如图 3 所示图 2 6x6 有符号阵列乘法器流程图图 3 6x6 有符号阵列乘法器仿真3、华莱士乘法器原理部分积相加, 若采用累加移位的方法, 速度太慢华莱士树算法(Wallace Tree Algorithm)是部分积化简的一种树形算法它使乘法器的延时得到最大限度的缩短,但全加阵列的布局布线复杂度大为增加一个全加器有三个输入: A , B , C (进位) 和两个输出 S , C′(输出进位) , 3 个输入对 2 个输出而言是对称的, 即它们互相交换位置, 结果不会受影响如果把一串全加器简单排成一行, 它们之间进位线不连, 把这样一串全加器称为保留进位加法器 (CSA ) , 它有以下特性: 三个输入数之和等于二个输出数之和, 即 3 个相加数每通过一次保留进位加法器, 其个数就减少 1 个Wallace 最早提出的方案就利用了这一特点:第一步将每列的部分积按三位进行分组,每组通过使用全加器构成的 CSA 部件,将加数的数目减少; 第二步对第一步产生的结果仍按三位分组的方式将同权的伪和与局部进位信号通过 CSA 部件进行处理,再次减少加数的数目,这种处理一直进行到最后只有两个输出为止。

      对最后的伪和与局部进位通过进位传递加法器相加得出真正的结果在这种处理方式中,每列中求伪和的操作是并行完成的由于采用全加器作为加法部件,每次能将 3 个权为 20 的输入信号经处理后得到一个权为 21 的局部进位信号和一个权为 20 的伪和信号,这样操作数的数目减少 1/ 3,将产生的中间伪和也按照这种方式处理,经过时间为 O(log3/ 2 N) 的处理后可以得到最后的伪和与局部进位信号图 16 华莱士树加法树示意图我们来考虑一个 位华莱士树乘法器的结构设被乘数为 ,乘数为4 0123x0123y65432106543210Partil products First tage Bit positn65432106543210Second stage Final derFA HA(a) (b)(c) (d)图 17 位华莱士树乘法器实现图4图 18 位华莱士树乘法器架构图4F 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 半加器 布斯算法(Booth’s Algorithm)的做法是对乘数编码以计算出乘法运算的结果,主要的想法在于乘数中连续的1,这些1会造成被乘数的连加。

      但是,乘数 01110 又可表示为 10000-00010,这样可将部分积减少为 2 个当我们遇到乘数中连续的’1’时(从右往左看) ,第一个’1’减去被乘数,最后一个’1’后面的’0’ 则加上被乘数 011000010部 分 积部 分 积乘 数被 乘 数布斯编码的核心在于对连续的’1’字串进行头、中、尾三段的分段处理(从右往左看) 当然, ’0’字串由于本身就无须进行运算,所以不必理会4、华莱士乘法器先介绍阵列乘法器,我们用笔计算乘法时,第一个操作数为被乘数(multiplicand) ,第二个操作数为乘数(multiplier)而乘数中的每一个位和被乘数做相乘的运算后的结果称之为部分乘积(partial product),而将所有的部分乘积相加之后,其运算结果称为乘积(product)如:1000×1001 为例, multiplicand 1000 × multiplier × 1001partial product 1000 partial product 0000 partial product 0000 partial product 1000 product 1001000 通过以上的示例我们可以发现如下四点:第一:当乘数的位数字为 1 时,我们可以将被乘数的值直接放置适当的位置。

      而适当的位置是依乘数的第几个位和被乘数做运算之后所放的位置第二:当乘数的位数字为 0 时,我们可以将 0 放置适当的位置, 以作为部分乘积第三:我们利用笔和纸计算的乘法,在硬件中使用与门来实现例如:1000 ×1 中,乘数 1 和每一个被乘数的位都个别做与运算,其结果为 1000 正是我们所要的结果由此可知我们只需用与门就可以完成我们所要的乘法第四:当部分乘积都运算完成后,使用加法来完成最终的乘法结果运算根据以上四点的说明,我们可以运用最简单、最直观的方式来描述固定点乘法器的电路描述我们使用与门来做部分积运算,使用全加器(Full adder)来运算部分积的最终结果因为作加法时,会有进位问题,且上一位所产生的进位也非常重要,所以只有全加器能满足我们的加法要求图 13 所示为有符号位的 6×6 固定点乘法器的架构图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 6×6 固定点乘法器架构图。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.