资源描述:
《第四讲--定点运算(乘法).ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第四讲定点运算(乘法)本讲主要内容原码一位乘法原码两位乘法原码乘法的硬件实现补码一位乘法(Booth乘法)Booth乘法的硬件实现补码两位乘法1.分析笔算乘法A=–0.1101B=0.1011A×B=–0.100011110.11010.101111011101000011010.10001111符号位单独处理乘数的某一位决定是否加被乘数4个位积一起相加乘积的位数扩大一倍×乘积的符号心算求得?2.笔算乘法改进A•B=A•0.1011=0.1A+0.00A+0.001A+0.0001A=0.1A+0.00A+0.001(A+0.1A)=0.1
2、A+0.01[0•A+0.1(A+0.1A)]=0.1{A+0.1[0•A+0.1(A+0.1A)]}=2-1{A+2-1[0•A+2-1(A+2-1(A+0))]}①②⑧第一步被乘数A+0第二步右移一位,得新的部分积第八步右移一位,得结果③第三步部分积+被乘数…右移一位3.改进后的笔算乘法过程(竖式)0.00000.11010.11010.11010.00000.1101初态,部分积=0乘数为1,加被乘数乘数为1,加被乘数乘数为0,加01.001110.1001111.0001111乘数为1,加被乘数0.100011111,得结果1011
3、=0.01101,形成新的部分积1101=0.10011,形成新的部分积1110=0.01001,形成新的部分积1111=部分积乘数说明++++小结被乘数只与部分积的高位相加由乘数的末位决定被乘数是否与原部分积相加,然后1位形成新的部分积,同时乘数1位(末位移丢),空出高位存放部分积的低位。硬件3个寄存器,具有移位功能1个全加器乘法运算可用加和移位实现n=4,加4次,移4次4.原码乘法(1)原码一位乘运算规则以小数为例设[x]原=x0.x1x2xn…[y]原=y0.y1y2yn…=(x0y0).x*y*[x•y]原=(x0y0).(0.x1
4、x2xn)(0.y1y2yn)……式中x*=0.x1x2xn为x的绝对值…y*=0.y1y2yn为y的绝对值…乘积的符号位单独处理x0y0数值部分为绝对值相乘x*•y*(2)原码一位乘递推公式x*•y*=x*(0.y1y2yn)…=x*(y12-1+y22-2++yn2-n)…=2-1(y1x*+2-1(y2x*+2-1(ynx*+0)))……z1znz0=0z1=2-1(ynx*+z0)z2=2-1(yn-1x*+z1)zn=2-1(y1x*+zn-1)……z0例21已知x=–0.1110y=0.1101求[x•y]原解:数值部分的运算0
5、.00000.11100.11100.00000.11100.1110部分积初态z0=0部分积乘数说明0.011101.0001101.01101100.101101101,得z4逻辑右移1101=0.01111,得z10110=0.00111,得z21011=0.10001,得z31101=逻辑右移逻辑右移逻辑右移+++++x*+0+x*+x*②数值部分按绝对值相乘①乘积的符号位x0y0=10=1x*•y*=0.10110110则[x•y]原=1.10110110特点绝对值运算逻辑移位例21结果用移位的次数判断乘法是否结束(3)原码一位乘
6、的硬件配置A、X、Q均n+1位移位和加受末位乘数控制0An加法器控制门0Xn移位和加控制计数器CSGM0Qn右移R0→R1→ynR2计数器i部分积z被乘数x乘数yLDR0LDR1T1,T2,…TiQQ加法器RS启动ynCx计数器:对移位的次数进行计数,以便判断乘法运算是否结束。当计数器i=n时,计数器i的溢出信号使控制触发器Cx置0,关闭时序脉冲T,乘法操作结束。(4)原码两位乘(提高乘法运算速度)原码乘符号位和数值位部分分开运算两位乘每次用乘数的2位判断原部分积是否加和如何加被乘数11100100加“0”2加1倍的被乘数2加2倍的被乘数2
7、加3倍的被乘数23?先减1倍的被乘数再加4倍的被乘数4–13100–0111新的部分积乘数yn-1yn(5)原码两位乘运算规则111110101100011010001000操作内容标志位Cj乘数判断位yn-1ynz2,y*2,Cj保持“0”z2,y*2,Cj保持“1”z–x*2,y*2,Cj保持“1”z+2x*2,y*2,Cj保持“0”z+x*2,y*2,Cj保持“0”共有操作+x*+2x*–x*2实际操作+[x*]补+[2x*]补+[–x*]补2补码移z–x*2,y*2,Cj置“1”z+2x*2,y*2,Cj置“0”z+x*2,y*2,
8、Cj置“0”例22已知x=0.111111y=–0.111001求[x·y]原000.000000000.111111000.11111100.1110010初态z0=0+x*,