1、10.3 乘法器10.3.2 部分积产生59部分积产生 部分积是被乘数 X和一个乘数位 Yi相乘的结果, 一位二进制乘法由 AND实现。 部分积产生逻辑 共 N个部分积, MXN个 AND( NAND)部分积压缩 波兹编码 乘数中等于 0的位所对应的部分积对结果没有影响,因此可以只计算非零位的部分积,减少部分积的数目 通过编码的方法可以减少非零行的数目 改进的波兹编码( Booth ):每次乘数中取 k 位(例如 k 2)与被乘数相 乘 产生部分积 ,并在乘数编码中引入 -1来减少非零位。改进的波兹( Booth)编码通过同时观察 3 位乘数进一步简化即:在乘数的低位上加一“考察位”:考察 y
2、i+1yiyi-1,其中 yi-1为“考察位”。下次考察时考察 yi+3yi+2yi+1,其中 yi+1为“考察位”。相邻两次考察时重叠一位乘数( yi+1)。对于有符号数 (2s补码表示)的乘数 Y2110/2 1221 2 21 1022(2),0nnjjiniiiiiYy yyyy y=+= +=+ =-2, -1, 0, 1, 2编码公式a20改进波兹编码的证明(n为奇数)改进波兹编码乘法yi+1yiyi-1部分积000 0001 +X010 +X011 +2X100 -2X101 -X110 -X111 021 2 212iiiyyy+X: 0011012x: 011010-2x:
3、100101+1=100110举例: X=1101, Y=1001, 4位乘 4位得 8位数将 X, Y看成无符号数(正数),则 X=13, Y=9, XY=117改进波兹编码乘法yi+1yiyi-1部分积000 0001 +X010 +X011 +2X100 -2X101 -X110 -X111 0计算与无符号数相同21 2 212iiiyyy+X=1101, Y=1001,将 X, Y看成 2s补码(负数),则 X= -3, Y= -7, XY=21X: 111101-x: 000010+1=000011-2x: 000110Booth编码器及部分积选择器 波兹编码的部分积计算需要编码、译码、移位和(求反 +1)X 2X M PP0 0 /1 0 00 1 01 0 10 1 10X2X-X-2X改进 Booth编码乘法的特点 优缺点: 部分积数目减为原来的一半。可用于无符号数及 2s 补码数。 代价是:部分积除 0 , X 外还有 +2X , -2X , +X , -X ,因此需要译码。对负项还要 “ 求反加 1 ” 。 在部分积累加时每产生一个部分积要 左移 2位