《补码一位乘法》由会员分享,可在线阅读,更多相关《补码一位乘法(10页珍藏版)》请在金锄头文库上搜索。
1、二. 补码一位乘法为了得到补码一位乘法的规律,我们先从补码和真值的转换公式开始讨论.1.补码与真值的转换公式设x补=x0.x1x2xn, 当x=0时, x0=0, nx补=0.x1x2xn=xi2-i=xi=1当x0,根据式(2.31a)有x(0.y1y2yn) 补=x 补(0.y1y2yn) 所以 xy 补=x 补(0.y1y2yn) + -x 补 (2.31b) (3)被乘数x和乘数y符号都任意.将式(2 31a)和武(2.31b)两种情况综合起来,即得补码乘法的统一算式,即 xy 补=x 补(0.y1y2yn) - x 补y0=x 补(-y0+0.y1y2yn)n=x 补(-yo + y
2、i2-i)i=1 证毕.,为了推出串行逻辑实现的分步算法,将上式展开加以变换: xy 补=x 补 -y0+ y12-1+y22-2+yn2-n =x 补 -y0+(y1-y12-1)+(y22-1-y22-2)+(yn2-(n-1) - yn2-n) =x 补(y1-y0)+(y2-y1)2-1+(yn-yn-1)2-(n-1) + (0-yn)2-nn =x 补 (yi+1 - yi)2-i i=1 写成递推公式如下 z0 补=0z1 补=2-1z0 补+(yn+1-yn)x 补 (yn+1=0)z2 补=2-1z1 补+(yn - yn-1)x 补zi 补=2-1zi-1 补+ (yn-i
3、+2 - yn-i+1)x 补zn 补=2-1zn-1 补+ (y2 - y1)x 补zn+1 补=zn 补+(y1-y0)x 补=xy 补,开始时,部分积为0,即z0补=0然后每一步都是在前次部分积的基础上,由(yi+1-yi)(i=0,1,2,n)决定对x补的操作,再右移一位,得到新的部分积.如此重复n+1步,最后一步不移位,便得到xy补,这就是有名的布斯公式.实现这种补码乘法规则时,在乘数最末位yn后面要增加一位补充位yn+1。开始时yn+1=0, 由 ynyn+1 判断第一步该怎么操作;然后再由yn-1yn判断第二步该怎么操作。但因为每作一步要右移一位,故作完第一步后,yn-1yn正好
4、移到原来ynyn+1的位置上。依此类推,所以每步都用ynyn+1位置进行判断.我们将此两位称为判断位.如果判断位ynyn+1=01,则yi+1 - yi=1,做加x补操作.如果ynyn+1=10,则yi+1 yi = -1,做减法,即做加-x补操作;如果ynyn+1=11 或 00,则yi+1 yi = 0,zi加0,即保持不变.,补码一位乘法的运算规则如下(开始时yn+1=0):(1)如果yn=yn+1,部分积Zi加0,再右移1位;(2)如果ynyn+1=01,部分积加x补,再右移1位;(3)如果ynyn+1=10,部分积加-x补,再右移1位. 这样重复进行n1步,但最后一步不移位.包括一位
5、符号位,所得乘积为2n1位,其中n为尾数数位.,例 x补=0.1101, y补=0.1011, 求xy补.,解: 部分积 乘数 说明0 0. 0 0 0 0 0. 1 0 1 1 0 yn+1=0 + 1 1. 0 0 1 1 ynyn+1=10,+-x补1 1. 0 0 1 1 1 1. 1 0 0 1 1 0 1 0 1 1 右移1位 + 0 0. 0 0 0 0 ynyn+1=11,+01 1. 1 0 0 1 1 1. 1 1 0 0 1 1 0 1 0 1 右移1位 + 0 0. 1 1 0 1 ynyn+1=01,+x补0 0. 1 0 0 1 0 0. 0 1 0 0 1 1 1
6、 0 1 0 右移1位 + 1 1. 0 0 1 1 ynyn+1=10,+-x补1 1. 0 1 1 1 1 1. 1 0 1 1 1 1 1 1 0 1 右移1位 + 0 0. 1 1 0 1 ynyn+1=01,+x补0 0. 1 0 0 0 1 1 1 1 0 1 最后一步不移位 实现一位补码乘法的逻辑原理图与一位原码乘法的逻辑结构非常类似,所不同的有以下几点:,(1) 被乘数的符号x0和乘数的符号y0都参加运算.(2) 乘数寄存器R1有附加位yn+1;,其初始状态为“0”.当乘数和部分积每次右移时,部分积最低位移至R1的首位位置,故R1必须是具有右移功能的寄存器.(3) 被乘数寄存器
7、R2的每一位用原码(即触发器Q端)或反码(即触发器Q端)经多路开关传送到加法器对应位的一个输入端.而开关的控制信号由yn和yn+1的输出译码 器产生.当ynyn+1=01时,送x补;当ynyn+1=1时,送-x补,即送R2的反码且在加法器最末位加”1” (4) R0保存部分积,它也是具有右移功能的移位寄存器,其符号位与加法器符号位f始终一致.(5)当计数器i=n+1时,封锁LDR1和LDR0控制信号,使最后一步不移位.执行补码一位乘法的总时间为tm=(n+1)ta+ntr (2 33)其中n为尾数位数,ta为执行一次加法操作的时间,tr为执行一次移位操作的时间.如果加法操作和移位操作同时进行,tr项可省去.,