乘法器
简介
乘法器在当今数字信号处理以及其他诸多应用领域中起着十分重要的作用。随着科学技术的发展,许多研究人员已经开始试图设计一类拥有更高速率和低功耗,布局规律占用面积小,集成度高的乘法器。这样,就能让它们更加适用于高速率,低功耗的大规模集成电路的应用当中。
通常的乘法计算方法是添加和位移的算法。在并行乘法器当中,相加的部分乘积的数量是主要的参数。它决定了乘法器的性能。为了减少相加的部分乘积的数量,修正的Booth算法是最常用的一类算法。为了实现速度的提高Wallace树算法可以用来减少序列增加阶段的数量。我们进一步结合修正的booth算法和Wallace树算法,可以看到将它们集成到一块乘法器上的诸多优势。但是,随着并行化的增多,大量的部分乘积和中间求和的增加,会导致运行速度的下降。不规则的结构会增加硅板的面积,并且由于路由复杂而导致中间连接过程的增多继而导致功耗的增大。另一方面串并行乘法器牺牲了运行速度来获得更好的性能和功耗。因此,选择一款并行或串行乘法器实际上取决于它的应用性质。在本文中,我们将介绍乘法算法以及在应用结构方面的速度比较,占用面积,功率和这些情况的组合绩效指标。
乘运算
对于一个N比特的被乘数和一个N比特的乘数相乘的算法如下图所示:
Y=Yn-1 Yn-2.....................Y2 Y1 Y0 被乘数 X=Xn-1 Xn-2.....................X2 X1 X0 乘数
例如: 1101 4-bits 1101 4-bits 1101 0000 1101 1101 10010101 一般来说
Y=Yn-1Yn-2....................... Y2Y1Y0 X=Xn-1Xn-2 .......................X2X1X0 2Yn-1X0 Yn-2X0 Yn-3X0 ……Y1X0 Y0X0 Yn-1X1 Yn-2X1 Yn-3X1 ……Y1X1 Y0X1
Yn-1X2 Yn-2X2 Yn-3X2 ……Y1X2 Y0X2 … … … … …. …. …. …. ….
Yn-1Xn-2 Yn-2X0 n-2 Yn-3X n-2 ……Y1Xn-2 Y0Xn-2
Yn-1Xn-1 Yn-2X0n-1 Yn-3Xn-1 ……Y1Xn-1 Y0Xn-1
---------------------------------------------------------------------------------------------------------------------- P2n-1 P2n-2 P2n-3 P2 P1 P0
“与”门被用来产生部分乘积,如果被乘数是N比特,乘数是M比
特,那么就会产生N*M个部分积,然而在不同结构和类型的乘法器
当中,部分乘积的产生方式是不同的。
二进制的乘法可以被分解为加法。现考虑两个八比特的二进制数A和B相乘产生一个16比特的数。
A7 A6 A5 A4 A3 A2 A1 A0 X B7 B6 B5 B4 B3 B2 B1 B0 --------------------------------------------------- -------------- A3.B0 A2.B0 A1.B0 A0.B0 A3.B0 A2.B0 A1.B0 A0.B0
+ A3.B1 A2.B1 A1.B1 A0.B1 A3.B0 A2.B0 A1.B0 A0.B0 + A3.B2 A2.B2 A1.B2 A0.B2 A3.B0 A2.B0 A1.B0 A0.B0
+ A3.B3 A2.B3 A1.B3 A0.B3 A3.B0 A2.B0 A1.B0 A0.B0 + A3.B3 A2.B3 A1.B3 A0.B3 A3.B0 A2.B0 A1.B0 A0.B0 + A3.B3 A2.B3 A1.B3 A0.B3 A3.B0 A2.B0 A1.B0 A0.B0
+ A3.B3 A2.B3 A1.B3 A0.B3 A3.B0 A2.B0 A1.B0 A0.B0 + A3.B3 A2.B3 A1.B3 A0.B3 A3.B0 A2.B0 A1.B0 A0.B0
----------------------------------------------------------------------------------------
P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0
m?1n?1这一方程:P(m?n)?乘算法如下:
A(m)B(n)???abii?0j?0j2i?j。
??????如果?的最低有效位是?,那么将?加到累加器中。???????将?右移一比特,那么?左移了一比特。???????当?的所有比特为?时停止。??
???????从上面可以清晰地看出,数乘已经被转换成了加法运算。如果部分乘积被连续相加,因此一个串行加法器就可以和硬件一起使用。在组合电路中通过并行乘法器将所有的部分乘积相加是可以行的通的。然而,通过使用压缩技术,可以将部分乘积的数量降低。从这方面,是可以进行的。?
串行乘法器?
???????在串行乘法器中,区域面积和功率是最重要的,而延迟是可以被
容忍的。这类电路使用一个加法器将n个部分乘积相加。该电路中显示的图如下。被乘数和乘数必须规则的输入到一个特别的同步行为系统当中。电路的行为方式显示在下图中。根据被乘数和乘数的长度可以将输入以不同的比率显示出来。两个时钟是?的第一个估计延迟是?(???)。此电路布局的延迟计算式是?:?D=??????????tfa??
y3y2y1y0X: Y:X3X2X1X0Iput Sequence for G1:X3X2X1X0X3X2X1X0X3X2X1X0X3X2X1X000 0 0 0y3y3y3y3y2y2y2y2y1y1y1y1y0y0y0y000 0 0 0Reset 0100001000010000100002Reset?00dG21clk1-bitREGqx0y0x0y0Gx0y00000RegisterCLKCLK/(N?1)? ?
由上图可看出,独立的部分乘积是单独产生的。部分乘积作为部分乘积相加数的中间值被储存到D触发器中,与新形成的部分乘积循环并相加,但是这种方法并不适合宽度较大的M和N,对于数据的移

