第四讲-定点运算乘法_第1页
第四讲-定点运算乘法_第2页
第四讲-定点运算乘法_第3页
第四讲-定点运算乘法_第4页
第四讲-定点运算乘法_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

11三月2024第四讲定点运算乘法本讲主要内容原码一位乘法原码两位乘法原码乘法的硬件实现补码一位乘法(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.1A+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=0.01101,形成新的部分积1101=0.10011,形成新的部分积1110=0.01001,形成新的部分积1111=部分积乘数说明++++小结被乘数只与部分积的高位相加

由乘数的末位决定被乘数是否与原部分积相加,然后1位形成新的部分积,同时乘数

1

位(末位移丢),空出高位存放部分积的低位。硬件3

个寄存器,具有移位功能1

个全加器乘法运算可用加和移位实现n=4,加4次,移4次4.原码乘法(1)原码一位乘运算规则以小数为例设[x]原=x0.x1x2

xn…[y]原=y0.y1y2

yn…=(x0

y0).x*y*[x

•y]原=(x0

y0).(0.x1x2

xn)(0.y1y2

yn)……式中x*=0.x1x2

xn

为x的绝对值…y*=0.y1y2

yn

为y的绝对值…乘积的符号位单独处理x0

y0数值部分为绝对值相乘x*•

y*(2)原码一位乘递推公式x*•

y*=x*(0.y1y2

yn)…=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.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*②数值部分按绝对值相乘①乘积的符号位

x0

y0=10=1x*•

y*=0.10110110则[x

y]原

=1.10110110特点绝对值运算逻辑移位例21结果用移位的次数判断乘法是否结束(3)原码一位乘的硬件配置A、X、Q均n+1位移位和加受末位乘数控制0An加法器控制门0Xn

移位和加控制计数器CSGM0Qn右移

R0→

R1→ynR2

计数器i

部分积z

被乘数x

乘数y

LDR0LDR1

T1,T2,…

Ti

QQ加法器RS启动ynCx计数器:对移位的次数进行计数,以便判断乘法运算是否结束。当计数器i=n时,计数器i的溢出信号使控制触发器Cx

置0,关闭时序脉冲T,乘法操作结束。(4)原码两位乘(提高乘法运算速度)原码乘符号位和数值位部分分开运算两位乘每次用乘数的2位判断原部分积是否加和如何加被乘数11100100加“0”2加1倍的被乘数2加2倍的被乘数2加3倍的被乘数23?先减1倍的被乘数再加4倍的被乘数4–13100–0111新的部分积乘数yn-1

yn(5)原码两位乘运算规则111110101100011010001000操作内容标志位Cj乘数判断位yn-1yn

z2,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,Cj置“0”例22已知x=0.111111y=–0.111001求[x·y]原000.000000000.111111000.11111100.1110010初态

z0=0+x*,Cj=0010.00110111000.111000000111111.1001000111001.111110+2x*,Cj=0111.000001–x*,Cj=1000.111111+x*,Cj=00000.001111110011

1020000.100011011100

1121111.111001000111002Cj部分积乘数说明补码右移补码右移解:数值部分的运算补码右移++++②数值部分的运算①乘积的符号位

x0

y0=01=1x*•

y*=0.111000000111则[x

y]原=1.111000000111例22结果特点绝对值的补码运算算术移位用移位的次数判断乘法是否结束(6)原码两位乘和原码一位乘比较符号位操作数移位移位次数最多加法次数x0

y0x0

y0绝对值绝对值的补码逻辑右移算术右移nnn2(n为偶数)n2+1(n为偶数)思考

n为奇数时,原码两位乘移?次最多加?次原码一位乘原码两位乘5.补码乘法设被乘数乘数[x]补=x0.x1x2

xn…[y]补=y0.y1y2

yn…①被乘数任意,乘数为正同原码乘但加和移位按补码规则运算乘积的符号自然形成②被乘数任意,乘数为负乘数[y]补,去掉符号位,操作同①

最后加[–x]补,校正(1)补码一位乘运算规则以小数为例1)、当被乘数x符号任意,乘数y符号为正时:

根据补码定义:==yyyy.]y[nL210补)(modxxxxx.x]x[nn+=+==+L1210222补∴由于(y1y2…yn)是大于或等于1的正整数,根据模运算性质(大于2的部分全部丢掉)有:2(y1y2…yn)=2∴(mod2)即:Booth乘法公式证明2)、

当被乘数x符号任意,乘数y符号为负时:)(modyyyy.]y[n22121+==L补xxx.x]x[n210=L补∵∴又因(0.y1y2…yn)>0所以:(mod2)=[x]补·=[x]补·y为推导出逻辑实现的分步算法,将上式展开得到各项部分积累加的形式。(yn+1是增加的附加位,初值为0)公式展开递推公式[z0]补=0[z1]补=2-1{(yn+1–yn)[x]补+[z0]补}yn+1=0[zn]补=2-1{(y2–y1)[x]补+[zn-1]补}…[x

·

y]补=[zn]补+(y1–y0)[x]补最后一步不移位如何实现

yi+1–yi

?000110111+[x]补

1+[–x]补

1101-10yi

yi+1操作yi+1–yi由此可见:每次都是在前次部分积的基础上,由(yi+1-yi)

决定对[x]补的操作,然后再右移一位,得到新的部分积;重复进行。yn+1,yn的作用:开始操作时,补充一位yn+1,使其初始为0。由yn+1yn判断进行什么操作;然后再由ynyn-1判断第二步进行什么操作…。

ynyn+1=01

yi+1-yi=1

做加[x]补运算;ynyn+1=10

yi+1-yi=-1

做加[-x]补运算;ynyn+1=11ynyn+1=00则

yi+1-yi=0

[zi]加0,即保持不变;

补码一位乘的运算规则(1)如果yn=yn+1,则部分积[zi]加0,再右移一位;(2)如果ynyn+1=01

,则部分积[zi]加[x]补,再右移一位;(2)如果ynyn+1=10

,则部分积[zi]加[-x]补,再右移一位;如此重复n+1步,但最后一步不移位。包括一位符号位,所得乘积为2n+1位,其中n为尾数位数。算法流程图开始结束[zi]补+[x]补→[zi]补[zi]补+[-x]补→[zi]补[z]补=0,i=0ynyn+1=?[zi]补不变i=n+1?[zi]补,y右移一位,i=i+1

011000或11YN例23已知x=+0.0011y=–0.1011求[x·y]补解:00.000011.110111.110100.001111.110100.001111.11011.0101000.0001111.11011100.000111111.11011111

[x]补=0.0011

[y]补=1.0101[–x]补=1.1101+[–x]补11.111011010

11+[x]补00.00001110101+[–x]补11.1110111101100.00001111101+[–x]补+[x]补∴

[x·y]补=1.11011111最后一步不移位补码右移补码右移补码右移补码右移+++++00.00001.00110yn+1=0+00.1011ynyn+1=10,加[-x]补00.1011

00.0101110011右移一位+00.0000ynyn+1=11,加000.010100.0010111001右移一位+11.0101ynyn+1=01,加[x]补11.011111.1011111100右移一位+00.0000ynyn+1=00,加011.101111.11011111

10右移一位+00.1011ynyn+1=10,加[-x]补00.10001111

10最后一位不移位例:[x]补=1.0101,[y]补=1.0011,求[x·y]补=?

[-x]补=0.1011[x·y]补=0.10001111部分积乘数

ynyn+1说明000000101100

yn+1=0+000000ynyn+1=00,加0000000

000000010110

右移一位+110011ynyn+1=10,加[-x]补110011111001101011

右移一位+000000ynyn+1=11,加011.100111.1100110101

右移一位+001101ynyn+1=01,加[x]补0010010001001110

10

右移一位+110011ynyn+1=10,加[-x]补

11011111101

0

最后一位不移位[x]补=001101,[y]补=10110,

[-x]补=110011[x·y]补=101111110部分积乘数

ynyn+1说明例:x=13,y=-10求x·y=?x·y=-010000010=-82H=-130(2)Booth算法的硬件配置A、X、Q均n+2位移位和加受末两位乘数控制0An+1n+2位加法器控制门0Xn+10Qn

n+1移位和加控制逻辑计数器CGM00,110110右移4.补码一位乘逻辑原理图

R0→

R1→ynyn+1R2

计数器i

部分积z

被乘数x乘数y

+1LDR0LDR1

T1,T2,…+1

Ti

QQ加法器RS启动Cx

f

+-yn+1ynyn+1yn多开关路原反1001QQ[注]被乘数寄存器R2的每一位用原码(触发器Q端)或反码(触发器Q端)经多路开关送出;送[-x]补时,即送R2反码且在加法器最末为加1;(2)R0保存部分积,其符号与加法器符号位

f始终一致。(3)当计数器i=n+1时,封锁LDR1、LDR0信号,使最后一步不移位。不带符号的阵列乘法器设有两个不带符号的二进制整数

A=am-1…a1a0,B=bn-1…b1b0它们的数值分别为a和b,即:

m-1a=∑ai2ii=0n-1b=∑bj2jj=0在二进制乘法中,被乘数A与乘数B相乘,产生m+n位乘积P:

P=pm+n-1…p1p0乘积P的数值为:pm+n-1pm+n-2pm+n-3···

pn-1···p1p0am-1am-2···

a1a0

)

bn-1···

b1b0am-1b0am-2b0···

a1b0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论