好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第四讲--定点运算(乘法)PPT课件.ppt

41页
  • 卖家[上传人]:日度
  • 文档编号:211176533
  • 上传时间:2021-11-16
  • 文档格式:PPT
  • 文档大小:896KB
  • / 41 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单击此处编辑母版标题样式单击此处编辑母版副标题样式2021/7/222021/7/221 1第四讲定点运算(乘法)本讲主要内容n原码一位乘法n原码两位乘法n原码乘法的硬件实现n补码一位乘法(Booth乘法)nBooth乘法的硬件实现n补码两位乘法2021/7/222021/7/22n22 21. 分析笔算乘法A = 0.1101 B = 0.1011AB = 0.100011110 . 1 1 0 10 . 1 0 1 11 1 0 11 1 0 10 0 0 01 1 0 10 . 1 0 0 0 1 1 1 1符号位单独处理乘数的某一位决定是否加被乘数 4个位积一起相加乘积的位数扩大一倍乘积的符号心算求得 ?2021/7/222021/7/22n33 32. 笔算乘法改进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.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第二步 右移 一 位,得新的部分积第八步 右移 一 位,得结果第三步 部分积 + 被乘数右移一位2021/7/222021/7/22n44 43. 改进后的笔算乘法过程(竖式)0 . 0 0 0 00 . 1 1 0 10 . 1 1 0 10 . 1 1 0 10 . 0 0 0 00 . 1 1 0 1初态,部分积 = 0乘数为 1,加被乘数乘数为 1,加被乘数乘数为 0,加 01 . 0 0 1 110 . 1 0 0 11 11 . 0 0 0 11 1 1乘数为 1,加 被乘数0 . 1 0 0 01 1 1 11,得结果1 0 1 1=0 . 0 1 1 01,形成新的部分积1 1 0 1=0 . 1 0 0 11,形成新的部分积1 1 1 0=0 . 0 1 0 01,形成新的部分积1 1 1 1= 部 分 积 乘 数 说 明2021/7/222021/7/22n55 5小结 被乘数只与部分积的高位相加 由乘数的末位决定被乘数是否与原部分积相加, 然后 1 位形成新的部分积,同时 乘数 1位(末位移丢),空出高位存放部分积的低位。

      硬件3个寄存器,具有移位功能1个全加器 乘法 运算可用 加和移位实现n = 4,加 4 次,移 4 次2021/7/222021/7/22n66 64. 原码乘法(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*2021/7/222021/7/22n77 7(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)z02021/7/222021/7/22n88 8例21已知 x = 0.1110 y = 0.1101 求x y原解:数值部分的运算0 . 0 0 0 00 . 1 1 1 00 . 1 1 1 00 . 0 0 0 00 . 1 1 1 00 . 1 1 1 0部分积 初态 z0 = 0 部 分 积 乘 数 说 明0 . 0 1 1 101 . 0 0 0 11 01 . 0 1 1 01 1 00 . 1 0 1 10 1 1 01,得 z4逻辑右移1 1 0 1=0 . 0 1 1 11,得 z10 1 1 0=0 . 0 0 1 11,得 z21 0 1 1=0 . 1 0 0 01,得 z31 1 0 1=逻辑右移逻辑右移逻辑右移+ x*+ 0+ x*+ x*2021/7/222021/7/22n99 9 数值部分按绝对值相乘 乘积的符号位 x0 y0 = 1 0 = 1x* y* = 0. 1 0 1 1 0 1 1 0则 x y原 = 1. 1 0 1 1 0 1 1 0特点绝对值运算逻辑移位例21 结果用移位的次数判断乘法是否结束2021/7/222021/7/22n101010(3) 原码一位乘的硬件配置A、X、Q 均 n+1 位移位和加受末位乘数控制0 A n 加 法 器控 制 门0 X n 移位和加控制计数器 CSGM0Q n右移2021/7/222021/7/22n111111 R0 R1 ynR2 计数器i 部分积z 被乘数x 乘数y LDR0LDR1 T1, T2, Ti 加法器RS启动ynCx计数器:对移位的次数进行计数,以便判断乘法运算是否结束。

      当计数器i=n时,计数器i的溢出信号使控制触发器Cx 置0,关闭时序脉冲T,乘法操作结束2021/7/222021/7/22n121212(4) 原码两位乘(提高乘法运算速度)原码乘符号位 和 数值位 部分 分开运算两位乘每次用 乘数的 2 位判断 原部分积是否加 和 如何加 被乘数1 11 00 10 0 加 “0” 2加 1 倍的被乘数 2加 2 倍的被乘数 2加 3 倍的被乘数 23 ?先 减 1 倍 的被乘数再 加 4 倍 的被乘数4 13100 0111 新的部分积乘数yn-1 yn2021/7/222021/7/22n131313(5) 原码两位乘运算规则11 111 010 110 001 101 000 100 0 操 作 内 容标志位 Cj乘数判断位 yn-1yn z 2, y* 2, Cj 保持“0” z 2, y* 2, Cj 保持“1”zx* 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 补码移zx* 2, y* 2, Cj 置“1” z+2x* 2, y* 2, Cj 置“0” z+x* 2, y* 2, Cj 置“0” 2021/7/222021/7/22n141414例22已知 x = 0.111111 y = 0.111001 求xy原0 0 0 . 0 0 0 0 0 00 0 0 . 1 1 1 1 1 10 0 0 . 1 1 1 1 1 10 0 . 1 1 1 0 0 10初态 z0 = 0+ x*, Cj = 00 1 0 . 0 0 1 1 0 11 10 0 0 . 1 1 1 0 0 00 0 0 1 1 1 1 1 1 . 1 0 0 1 0 00 1 1 1 0 0 1 . 1 1 1 1 1 0+ 2x*,Cj = 01 1 1 . 0 0 0 0 0 1 x*, Cj = 10 0 0 . 1 1 1 1 1 1+ x*, Cj = 000 0 0 . 0 0 1 1 1 11 1 0 0 1 1 1 0200 0 0 . 1 0 0 0 1 10 1 1 1 0 0 1 1211 1 1 . 1 1 1 0 0 1 0 0 0 1 1 1 0 02Cj部 分 积 乘 数 说 明补码右移补码右移解:数值部分的运算补码右移+2021/7/222021/7/22n151515 数值部分的运算 乘积的符号位 x0 y0 = 0 1 = 1x* y* = 0. 1 1 1 0 0 0 0 0 0 1 1 1则 x y原 = 1. 1 1 1 0 0 0 0 0 0 1 1 1例22 结果特点绝对值的补码运算算术移位用移位的次数判断乘法是否结束2021/7/222021/7/22n161616(6) 原码两位乘和原码一位乘比较符号位操作数移位移位次数最多加法次数x0 y0 x0 y0绝对值绝对值的补码逻辑右移算术右移nnn2(n为偶数)n2+1(n为偶数)思考 n 为奇数时,原码两位乘 移 ?次 最多加 ?次原码一位乘原码两位乘2021/7/222021/7/22n1717175. 补码乘法设 被乘数乘数x补 = x0. x1x2 xny补 = y0. y1y2 yn 被乘数任意,乘数为正同原码乘但 加 和 移位 按 补码规则 运算乘积的符号自然形成 被乘数任意,乘数为负乘数y补,去掉符号位,操作同 最后 加x补,校正(1) 补码一位乘运算规则以小数为例2021/7/222021/7/22n1818181)、当被乘数x符号任意,乘数y符号为正时: 根据补码定义:=yyyy .ynL210补)(modxxxxx .xxnn+=+=+L1210222补 由于(y1y2yn)是大于或等于1的正整数,根据模运算性质(大于2的部分全部丢掉)有:2 (y1y2yn) = 2(mod2)即:Booth乘法公式证明2021/7/222021/7/22n1919192)、 当被乘数x符号任意,乘数y符号为负时:)(modyyyy .yn22121+=L补xxx .xxn210=L补又因 ( 0.y1y2yn )0所以:2021/7/222021/7/22n202020(mod2)= x补= x补 y2021/7/222021/7/22n212121 为推导出逻辑实现的分步算法,将上式展开得到各项部分积累加的形式。

      yn+1是增加的附加位,初值为0 )公式展开2021/7/222021/7/22n222222递推公式z0补= 0z1补= 2-1(yn+1yn)x补+z0补 yn+1 = 0zn补= 2-1(y2y1)x补+zn-1补x y补= zn补+(y1y0)x补最后一步不移位如何实现 yi+1yi ?0 00 11 01 11+x补 1+x补 110 1 -1 0 yi yi+1操作yi+1yi 2021/7/222021/7/22n232323由此可见: 每次都是在前次部分积的基础上,由(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补运算;ynyn1 =1ynyn1= 0则 yi1-yi= 0 zi加0,即保持不变; 2021/7/222021/7/22n242424补码一位乘的运算规则(1) 如果 yn=yn+1 ,则部分积 zi 加0,再右移一位;(2) 如果 yn yn+1=01 ,则部分积 zi 加x补,再右移一位;(2) 如果 yn yn+1=10 ,则部分积 zi 加-x补, 再右移一位; 如此重复n + 1步,但最后一步不移位。

      包括一位符号位,所得乘积为2n+1位,其中n为尾数位数2021/7/222021/7/22n252525算法流程图 开始结束zi补+x补zi补zi补+-x补zi补 z补=0, i=0 yn yn+1=? zi补不变i=n+1? zi补, y右移一位,i=i+1 011000或11YN2021/7/222021/7/22n262626例23已知 x = +0.0011 y = 0.1011 求xy补解:0 0 . 0 0 0 01 1 . 1 1 0 11 1 . 1 1 0 10 0 . 0 0 1 11 1 . 1 1 0 10 0 . 0 0 1 11 1 . 1 1 0 11 . 0 1 0 100 0 . 0 0 0 1。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.