摘要:乘法是数字信号处理的重要基本操作,在很大程度上影响了系统的性能。本文将介绍阵列乘法器、华莱士三种高速乘法器的实现原理(WT)乘法器,布斯华莱士树先进乘法器。FPGA该技术实现了这三种乘法器,并对基于上述三种结构的乘法器性能进行了分析和比较。
关键词:阵列乘法器,华莱士乘法器,先进乘法器,FPGA
引言
随着3G随着图像、语音、加密等数字信号处理技术的发展,信号处理的实时性要求越高。实时性要求信号处理速度快,乘法器是数字信号处理的重要基本操作,对系统性能影响很大。人们开始开发高速乘法器。
以下三种乘法器:阵列乘法器和华莱士(WT)分析乘法器和布斯华莱士树先进乘法器的原理FPGA该技术实现了这三种乘法器,模拟了其结果,并得到了相应的性能比较。
阵列乘法器
2.1 阵列乘法器原理
硬件乘法器的常规设计适用于串行移位和并行加法相结合的方法,不需要很多设备。然而,串行方法毕竟太慢了。一次乘法的执行时间至少是加法时间的n倍,不能满足科技对高速乘法的要求。自大规模集成电路问世以来,高速单元阵列乘法器应运而生,流水线阵列乘法器种类繁多,属于并行乘法器,速度极快。阵列乘法器的操作过程如下:
第一:当乘数的位数为1 当时,我们可以直接将乘数值放置在适当的位置。适当的位置是根据乘数的第几个位置和乘数计算的位置。
第二:当乘数的位数为0 时,我们可以将0 放置适当的位置, 以乘积为部分。
第三:我们使用笔和纸的乘法,在硬件中使用和门。例如:1万 ×1中,乘数1 结果是10000,每个乘数的位置都是个别做和计算的 这就是我们想要的结果。因此,我们只需要用门来完成我们想要的乘法。
第四:部分乘积运算完成后,最终乘法结果运算采用加法完成。
根据以上四点的描述,我们可以用最简单、最直观的方式描述固定点乘法器的电路描述。我们使用和门进行部分积累操作和全加器(Full adder)计算部分积的最终结果。图1显示了6个符号位×6固定点乘法器的架构图。
图1 6×6.符号位列乘法器
2.2 阵列乘法器FPGA仿真
在名为comult在实体中设置mulc和mulp两个输入端口和一个prod输出端口mulc代表乘数,mulp乘数为6位。prod输入和输出端口的数据类型是12位的结果std_logic_vector。如图2所示,仿真如图3所示。
图2 6x符号阵列乘法器流程图
图3 6x6.符号阵列乘法器仿真
华莱士乘法器原理
部分积相加, 若采用累加移位法, 速度太慢华莱士树算法(Wallace Tree Algorithm)是一种部分积化简化的树形算法。它最大限度地缩短了乘法器的延迟,但全阵列布局布线的复杂性大大提高。
全加器有三个输入:A,B,C(进位) 和两个输出S,C′(输出进位) , 三个输入对称于两个输出, 也就是说,它们相互交换位置, 结果不会受到影响。若将一串全加器简单地排成一行, 它们之间进位线不连, 这样一串全加器被称为保留进位加法器(CSA ) , 它具有以下特点: 三个输入数之和等于两个输出数之和, 也就是说,三个相加数的进位加法器, 它的数量减少了一个。
Wallace最早提出的方案利用了这一特点:第一步是将每列部分按三位分组,每组由全加器组成CSA零件,减少加数的数量;第二步是通过三位分组将同权的伪和局部进位信号发送给第一步的结果CSA 处理零件,再次减少加数,直到最后只有两个输出。通过进位传递加法器加入最终伪和局部进位得到真正结果。在这种处理方法中,每列中的求伪和操作并行完成。由于采用全加器作为加法部件,每次可以处理3个权为20的输入信号,获得21个权为20的局部进位信号和20个权为20的伪减少操作数量的1/ 3.以这种方式处理产生的中间伪和O(log3/ 2 N) 处理后可获得最终伪和局部进位信号。
图16 华莱士树加法树示意图
图17 4x四位华莱士树乘法器实现图
图18 4x4位华莱士树乘法器架构图
图19 保留进位加法器(CSA)
图20 半加器
布斯算法(Booth’s Algorithm)该方法是计算乘法运算结果的乘数编码,主要是乘数中的连续1,这些1会导致乘数的连加。
然而,乘数0110可以表示为10000-00010,这可以将部分积减少到2。当我们遇到乘数中的连续1(从右到左)时,第一个1减去乘数,最后一个1后面的0加上乘数。
布斯编码的核心是对连续的1字串进行头、中、尾的分段处理(从右到左)。当然,0字串不需要操作,所以不需要忽略。
华莱士乘法器
首先介绍阵列乘法器。当我们用笔计算乘法时,第一个操作数是乘数(multiplicand),第二个操作数是乘数(multiplier)。乘数中的每个位和乘数相乘的结果称为部分乘积(partial product),所有乘积相加后,其计算结果称为乘积(product)。如:1000×1001为例,
通过以上示例,我们可以发现以下四点:
第一:当乘数的位数字为1 当时,我们可以直接将乘数值放置在适当的位置。适当的位置是根据乘数的第几个位置和乘数计算的位置。
第二:当乘数的位数为0 我们可以把0 放置适当的位置, 以乘积为部分。
第三:我们利用笔和纸计算的乘法,在硬件中使用与门来实现。例如:1000 ×1中,乘数1 结果是10000,每个乘数的位置都是个别做和计算的 这就是我们想要的结果。因此,我们只需要用门来完成我们想要的乘法。
第四:部分乘积运算完成后,最终乘法结果运算采用加法完成。
根据以上四点,我们可以用最简单、最直观的方式来描述固定点乘法器的电路描述。我们用门做部分积计算,用全加器(Full adder)计算部分积的最终结果。由于加法时会出现进位问题,而上一位产生的进位也很重要,所以只有全加器才能满足我们的加法要求。图13显示符号位6×6固定点乘法器的架构图。
图13 6×6固定点乘法器架构图
看你最好看