1.基于二次Booth编码的大数乘法器,其特征在于,该基于二次Booth编码的大数乘法器对高阶Booth64算法结果进行二次编码
1.1高阶Booth 64算法
设两个位长为n的补码二进制数X、Y分别表示被乘数和乘数:
其中Xi,Yj∈{0,1};
设乘法结果为Z,则基本乘法运算为
高阶Booth 64编码一次考虑7位乘数,由于每7位之间都重叠一位,因此实际每次编码处理了6位乘数,其数学表达式如下:
式(4)假设乘数Y的位宽n为6的倍数,若其位宽不是6的倍数,则在其高位进行符号位补偿,使得其位宽补足至6的倍数;
根据式(3),高阶Booth 64算法部分积产生的编码规则为
Bj=-32Y6j5+16Y6j+4+8Y6j+3+4Y6j+2+2Y6j+1+Y6j+Y6j-1 (4)
则高阶Booth 64算法可以表示为
式(5)表示部分积从集合{±0X,±1X,±2X,±3X,…,±32X}进行选择,在产生部分积前需要预计算3X,5X,……,31X;部分积个数从n减少为
1.2二次Booth 64编码
由于高阶Booth 64算法需要预计算大量奇数倍被乘数,给硬件实现造成了困难;为了克服这个困难,基于Booth编码基础上,再次进行线性变换编码,即用一个线性表达式B=ka+b来表达高阶Booth 64编码的结果,其中k为系数,a、b为变量;
二次Booth 64线性变换式为:
B=8a+b. (6)
其中:a,b∈{±0,±1,±2,±3,±4},B={±0,±1,±2,±3,…,±32}.
根据式(6)可得到二次Booth 64编码,见表1,
表1二次Booth 64编码表
B a,b B a,b B a,b B a,b
1 0,1 9 1,1 17 2,1 25 3,1
2 0,2 10 1,2 18 2,2 26 3,2
3 0,3 11 1,3 19 2,3 27 3,3
4 0,4 12 1,4 20 2,4 28 3,4
5 1, -3 13 2, -3 21 3, -3 29 4, -3
6 1, -2 14 2, -2 22 3, -2 30 4, -2
7 1, -1 15 2, -1 23 3, -1 31 4, -1
8 1,0 16 2,0 24 3,0 32 4,0
这种转换方式,使得部分积不再从有大量的奇数倍被乘数集合{±0,±1,±2,±3,…,±32}中选取,而是转化成从集合{±0,±1,±2,±3,±4}中选取,从而大大地简化了电路的设计。
2.基于二次Booth编码的大数乘法器,其特征在于,在一块数字集成电路芯片内采用下述三级流水线的并行结构实现:
1)在第一级结构中,用一个超前进位加法器预计算3倍的被乘数,在预计算的同时,分别对权为81的aj和权为80的bj进行二次Booth编码;
2)在第二级结构中,存在两个相同部分积选择和压缩阵列,分别进行权为81的aj和权为80的bj的部分积化简,部分积从集合{±0X,±1X,±2X,±3X,4X}选择,部分积数目的压缩采用Wallace树结构,部分积阵列采用4-2计数器和免进位加法器(CSA-carry save adder)进行部分积的化简,直至得到两个部分积(Sum与Carry),那么,两个部分积选择和压缩阵列共产生4个部分积;
3)在第三级结构中,将第二级得到的4个部分积相加;依据式(6),权为81的aj产生的2个部分积Sum、Carry首先需要通过移位产生8_Sum、8_Carry;这样得到的4个部分积再通过一个4∶2部分积压缩电路得到最终的两个部分积Sum、Carry。