《《定点运算乘法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《定点运算乘法》PPT课件.ppt(41页珍藏版)》请在三一办公上搜索。
1、第四讲,定点运算(乘法),本讲主要内容,原码一位乘法原码两位乘法原码乘法的硬件实现补码一位乘法(Booth乘法)Booth乘法的硬件实现补码两位乘法,1.分析笔算乘法,A=0.1101 B=0.1011,AB=0.10001111,0.1 1 0 1,0.1 0 1 1,1 1 0 1,1 1 0 1,0 0 0 0,1 1 0 1,0.1 0 0 0 1 1 1 1,符号位单独处理,乘数的某一位决定是否加被乘数,4个位积一起相加,乘积的位数扩大一倍,乘积的符号心算求得,?,2.笔算乘法改进,A B=A 0.1011,=0.1A+0.00A+0.001A+0.0001A,=0.1A+0.00A
2、+0.001(A+0.1A),=0.1A+0.010 A+0.1(A+0.1A),=0.1A+0.1 0 A+0.1(A+0.1A),=2-1A+2-1 0 A+2-1(A+2-1(A+0),第一步 被乘数A+0,第二步 右移 一 位,得新的部分积,第八步 右移 一 位,得结果,第三步 部分积+被乘数,3.改进后的笔算乘法过程(竖式),0.0 0 0 0,0.1 1 0 1,0.1 1 0 1,0.1 1 0 1,0.0 0 0 0,0.1 1 0 1,初态,部分积=0,乘数为 1,加被乘数,乘数为 1,加被乘数,乘数为 0,加 0,乘数为 1,加 被乘数,小结,被乘数只与部分积的高位相加,硬
3、件,3个寄存器,具有移位功能,1个全加器,乘法 运算可用 加和移位实现n=4,加 4 次,移 4 次,4.原码乘法,(1)原码一位乘运算规则,以小数为例,数值部分为绝对值相乘 x*y*,(2)原码一位乘递推公式,z0,例21,已知 x=0.1110 y=0.1101 求x y原,解:,数值部分的运算,0.0 0 0 0,0.1 1 1 0,0.1 1 1 0,0.0 0 0 0,0.1 1 1 0,0.1 1 1 0,部分积 初态 z0=0,逻辑右移,1 1 0 1,=,=,=,=,逻辑右移,逻辑右移,逻辑右移,+,+,+,+,+x*,+0,+x*,+x*,数值部分按绝对值相乘,x*y*=0.
4、1 0 1 1 0 1 1 0,则 x y原=1.1 0 1 1 0 1 1 0,特点,绝对值运算,逻辑移位,例21 结果,用移位的次数判断乘法是否结束,(3)原码一位乘的硬件配置,计数器:对移位的次数进行计数,以便判断乘法运算是否结束。当计数器i=n时,计数器i的溢出信号使控制触发器Cx 置0,关闭时序脉冲T,乘法操作结束。,(4)原码两位乘(提高乘法运算速度),原码乘,符号位 和 数值位 部分 分开运算,两位乘,每次用 乘数的 2 位判断 原部分积是否加 和 如何加 被乘数,1 1,1 0,0 1,0 0,3?,先 减 1 倍 的被乘数再 加 4 倍 的被乘数,(5)原码两位乘运算规则,例
5、22,已知 x=0.111111 y=0.111001 求xy原,0 0 0.0 0 0 0 0 0,0 0 0.1 1 1 1 1 1,0 0 0.1 1 1 1 1 1,0 0.1 1 1 0 0 1,0,初态 z0=0,+x*,Cj=0,0 0 1.1 1 1 1 1 0,+2x*,Cj=0,1 1 1.0 0 0 0 0 1,x*,Cj=1,0 0 0.1 1 1 1 1 1,+x*,Cj=0,0,0,1,补码右移,补码右移,解:,数值部分的运算,补码右移,+,+,+,+,数值部分的运算,x*y*=0.1 1 1 0 0 0 0 0 0 1 1 1,则 x y原=1.1 1 1 0 0
6、 0 0 0 0 1 1 1,例22 结果,特点,绝对值的补码运算,算术移位,用移位的次数判断乘法是否结束,(6)原码两位乘和原码一位乘比较,绝对值,绝对值的补码,逻辑右移,算术右移,n,n,思考 n 为奇数时,原码两位乘 移?次,最多加?次,5.补码乘法,设 被乘数,乘数,被乘数任意,乘数为正,同原码乘,但 加 和 移位 按 补码规则 运算,乘积的符号自然形成,被乘数任意,乘数为负,乘数y补,去掉符号位,操作同,最后 加x补,校正,(1)补码一位乘运算规则,以小数为例,1)、当被乘数x符号任意,乘数y符号为正时:根据补码定义:,由于(y1y2yn)是大于或等于1的正整数,根据模运算性质(大于
7、2的部分全部丢掉)有:2(y1y2yn)=2,即:,Booth乘法公式证明,2)、当被乘数x符号任意,乘数y符号为负时:,又因(0.y1y2yn)0,所以:,(mod2),=x补,=x补 y,为推导出逻辑实现的分步算法,将上式展开得到各项部分积累加的形式。,(yn+1是增加的附加位,初值为0),公式展开,递推公式,z0补=0,z1补=2-1(yn+1yn)x补+z0补 yn+1=0,zn补=2-1(y2y1)x补+zn-1补,x y补=zn补+(y1y0)x补,最后一步不移位,如何实现 yi+1yi?,0 0,0 1,1 0,1 1,0,1,-1,0,由此可见:每次都是在前次部分积的基础上,由
8、(yi+1-yi)决定对x补的操作,然后再右移一位,得到新的部分积;重复进行。,yn+1,yn的作用:开始操作时,补充一位yn+1,使其初始为0。由yn+1 yn 判断进行什么操作;然后再由ynyn-1 判断第二步进行什么操作。,若 yn yn1=1 则 yi1-yi=1 做加x补运算;,ynyn1=则 yi1-yi=-做加-x补运算;,则 yi1-yi=0 zi加0,即保持不变;,补码一位乘的运算规则,(1)如果 yn=yn+1,则部分积 zi 加0,再右移一位;,(2)如果 yn yn+1=01,则部分积 zi 加x补,再右移一位;,(2)如果 yn yn+1=10,则部分积 zi 加-x
9、补,再右移一位;,如此重复n+1步,但最后一步不移位。包括一位符号位,所得乘积为2n+1位,其中n为尾数位数。,算法流程图,例23,已知 x=+0.0011 y=0.1011 求xy补,解:,0 0.0 0 0 0,1 1.1 1 0 1,1 1.1 1 0 1,0 0.0 0 1 1,1 1.1 1 0 1,0 0.0 0 1 1,1 1.1 1 0 1,1.0 1 0 1,0,x补=0.0011,y补=1.0101,x补=1.1101,+x补,+x补,+x补,+x补,+x补,xy补=1.11011111,最后一步不移位,补码右移,补码右移,补码右移,补码右移,+,+,+,+,+,0 0.0
10、 0 0 0 1.0 0 1 1 0 yn+1=0+0 0.1 0 1 1 ynyn+1=10,加-x补 0 0.1 0 1 1 0 0.0 1 0 1 1 1 0 0 1 1 右移一位+0 0.0 0 0 0 ynyn+1=11,加0 0 0.0 1 0 1 0 0.0 0 1 0 1 1 1 0 0 1 右移一位+1 1.0 1 0 1 ynyn+1=01,加x补 1 1.0 1 1 1 1 1.1 0 1 1 1 1 1 1 0 0 右移一位+0 0.0 0 0 0 ynyn+1=00,加0 1 1.1 0 1 1 1 1.1 1 0 1 1 1 1 1 1 0 右移一位+0 0.1 0
11、 1 1 ynyn+1=10,加-x补 0 0.1 0 0 0 1 1 1 1 1 0 最后一位不移位,例:x补=1.0101,y补=1.0011,求xy补=?-x补=0.1011,xy补=0.10001111,部分积,乘数 yn yn+1,说明,0 0 0 0 0 0 1 0 1 1 0 0 yn+1=0+0 0 0 0 0 0 ynyn+1=00,加0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 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 右移一位+0 0 0 0 0 0
12、 ynyn+1=11,加0 1 1.1 0 0 1 1 1.1 1 0 0 1 1 0 1 0 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 0 1 0 右移一位+1 1 0 0 1 1 ynyn+1=10,加-x补 1 1 0 1 1 1 1 1 1 0 1 0 最后一位不移位,x补=001101,y补=10110,-x补=110011,xy补=101111110,部分积,乘数 yn yn+1,说明,例:x=13,y=-10 求xy=?,xy=-01000 0010=-82H=-130,(2)Booth 算法的硬
13、件配置,4.补码一位乘逻辑原理图,注被乘数寄存器R2的每一位用原码(触发器Q端)或 反码(触发器Q端)经多路开关送出;送-x补时,即送R2反码且在加法器最末为加1;(2)R0保存部分积,其符号与加法器符号位f始终一致。(3)当计数器i=n+1时,封锁LDR1、LDR0信号,使最后 一步不移位。,不带符号的阵列乘法器,设有两个不带符号的二进制整数 Aam1a1a0,Bbn1b1b0它们的数值分别为a和b,即:,在二进制乘法中,被乘数A与乘数B相乘,产生mn位乘积P:Ppmn1p1p0 乘积P 的数值为:,pm+n-1 pm+n-2 pm+n-3 pn-1 p1 p0,am-1 am-2 a1 a
14、0)bn-1 b1 b0 am-1b0 am-2b0 a1b0 a0b0 am-1b1 am-2b1 a1b1 a0b1.+)am-1bn-1 am-2bn-1 a1bn-1 a0bn-1,(1)习惯方法运算过程:,带符号的阵列乘法器,(1)对2求补器电路,例1:对1010求补。,例2:对1011求补。,方法:从数的最右端a0开始,由右向左,直到找出第一个“1”,例如ai1,0in。这样,ai以左的每一个输入位都求反,即1变0,0变1。,包括求补级的乘法器又称为符号求补的阵列乘法器。在这种逻辑结构中,共使用三个求补器:两个算前求补器 作用是:将两个操作数A和B在被不带符号的乘法 阵列(核心部件)相乘以前,先变成正整数。算后求补器 作用则是:当两个输入操作数的符号不一致时,把运算结果变成带符号的数。,结构:,在必要的求补操作以后,A和B的码值输送给nn位不带符号的阵列乘法器,并由此产生2n位的乘积:ABPp2n1p1p0p2nanbn 其中P2n为符号位。,乘法小结,原码乘 符号位 单独处理 补码乘 符号位 自然形成,原码乘去掉符号位运算 即为无符号数乘法,不同的乘法运算需有不同的硬件支持,整数乘法与小数乘法完全相同 可用 逗号 代替小数点,