第四讲乘除法器的设计优秀PPT.ppt
第四讲乘除法器的设计第一页,本课件共有65页常用机器数的编码格式常用机器数的编码格式 原码表示法反码表示法补码表示法第二页,本课件共有65页常用机器数的编码格式常用机器数的编码格式原码表示法原码表示法原码表示法是一种最简单的机器数表示法,其最高位为符号位,符号位为0时表示该数为正,符号位为1时表示该数为负,数值部分与真值相同。原码形式为原码形式为X XS S.X.X1 1X X2 2X Xn n,其中其中X XS S表示符号位。表示符号位。纯小数原码的定义为:纯小数原码的定义为:XX原原 纯整数原码的定义为:纯整数原码的定义为:XX原原 X 0X1 1 1X1 1X 1 1X0 X,0XX,0X2 2n n 2 2n nX X2 2n nX,X,2 2n nX0X0第三页,本课件共有65页常用机器数的编码格式常用机器数的编码格式原码的优点是直观易懂,机器数和真值间的转换很容易,用原码实现乘、除运算的规则简单。缺点是加、减运算规则较复杂。第四页,本课件共有65页常用机器数的编码格式常用机器数的编码格式l反码表示法反码表示法反码是对一个数的各位求反。反码是对一个数的各位求反。正数的反码和原码的形式相同;负数的反码是符号位为1,数值部分等于其各位的绝对值求反。第五页,本课件共有65页常用机器数的编码格式常用机器数的编码格式l补码表示法补码表示法补码的符号位表示方法与原码相同(即正数为0,负数为1),其数值部分的表示与数的正负有关:正数:数值部分与真值形式相同;负数:将真值的数值部分按位取反,且在最低位加1。第六页,本课件共有65页常用机器数的编码格式常用机器数的编码格式补码形式为补码形式为X XS S.X.X1 1X X2 2X Xn n,其中其中X XS S表示符号位。表示符号位。纯小数补码的定义为:纯小数补码的定义为:XX补补 纯整数补码的定义为:纯整数补码的定义为:XX补补 在补码表示中在补码表示中,真值真值0 0的表示形式是唯一的:的表示形式是唯一的:X,0XX,0X1 1 2 2X X2 2X,X,1 1X0X0X,0XX,0X2 2n n2 2n+1n+1X X2 2n+1n+1X,X,2 2n nX0X00补补0补补00000第七页,本课件共有65页定点乘法器的原理及实现定点乘法器的原理及实现乘法运算是计算机中一种重要的基本运算,实现方法包括以下几种。(1)用软件实现乘法运算。(2)在加法器基础上增加一些硬件实现乘法运算。(3)设置专用硬件乘法器实现乘法运算。使用该方法会使计算机结构复杂,成本增加,但能使运算速度大大提高。第八页,本课件共有65页定点乘法器的原理及实现定点乘法器的原理及实现乘法运算是计算机中一种重要的基本运算,实现方法包括以下几种。(1)用软件实现乘法运算。(2)在加法器基础上增加一些硬件实现乘法运算。(3)设置专用硬件乘法器实现乘法运算。使用该方法会使计算机结构复杂,成本增加,但能使运算速度大大提高。第九页,本课件共有65页定点乘法器的原理及实现定点乘法器的原理及实现原码一位乘法设计补码一位乘法设计阵列乘法器设计第十页,本课件共有65页设计方法设计方法模块功能与原理分析模块结构与电路模型VHDL语言设计实现FPGA验证第十一页,本课件共有65页原码一位乘法原理及实现原码一位乘法原理及实现原码一位乘法的法则是:乘积的符号为被乘数的符号位与乘数的符号位相异或;乘积的绝对值为被乘数的绝对值与乘数的绝对值之积。即 X原Y原(X0 Y0)(|X|Y|)第十二页,本课件共有65页原码一位乘法原理及实现原码一位乘法原理及实现手工乘法运算 例:若X原0.1101,Y原1.1011,求两者之积。解:乘积的符号为0 1 1手算过程如下:1101 1011 1101 1101 0000 1101 .10001111第十三页,本课件共有65页原码一位乘法原理及实现原码一位乘法原理及实现A,B,C,D都是寄存器二选一选择器一位全加器移位寄存器计数器第十四页,本课件共有65页原码一位乘法原理及实现原码一位乘法原理及实现原码一位乘法器框图 第十五页,本课件共有65页原码一位乘法器功能模块第十六页,本课件共有65页控制器设计控制器设计控制器功能:控制移位寄存器和控制器功能:控制移位寄存器和1616位寄存器。位寄存器。端口定义:端口定义:PORT(CLK,START:IN STD_LOGIC;CLKOUT,RSTALL,DONE:OUT STD_LOGIC);第十七页,本课件共有65页控制器设计控制器设计输入端口输入端口CLK:乘法时钟信号START:乘法器启动信号。信号的上跳沿及其高电平有两个功能,即16位寄存器清零和被乘数A7.0向移位寄存器加载;低电平则作为乘法使能信号。输出端口输出端口CLKOUT:时钟控制端RSTALL:清零端口DONE:乘法完成标志位第十八页,本课件共有65页控制器设计控制器设计计数器端口输出控制信号第十九页,本课件共有65页16位锁存器设计位锁存器设计16位锁存器功能:存储部分积及部分积移位端口定义 PORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;D:IN STD_LOGIC_VECTOR(8 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);第二十页,本课件共有65页16位锁存器设计位锁存器设计移位及锁存功能第二十一页,本课件共有65页移位寄存器移位寄存器移位寄存器功能是右移一位操作。端口定义 PORT(CLK:IN STD_LOGIC;LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);QB:OUT STD_LOGIC );第二十二页,本课件共有65页移位寄存器设计移位功能第二十三页,本课件共有65页1位乘法器设计1位乘法器功能:当前数据位与另外一个操作数进行与运算。1位乘法运算第二十四页,本课件共有65页加法器设计加法器设计8位并行加法器设计第二十五页,本课件共有65页仿真结果第二十六页,本课件共有65页原码二位乘法器设计原码二位乘法器设计原码二位乘法原码二位乘法 Yi+1 Yi C 操 作 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0,右移2次,C0 +X,右移2次,C0 +X,右移2次,C0 +2X,右移2次,C0 +2X,右移2次,C0 X,右移2次,C1 X,右移2次,C1 +0,右移2次,C1原码二位乘法的法则表原码二位乘法的法则表 第二十七页,本课件共有65页原码二位乘法器设计原码二位乘法器设计例:设X0.100111,Y0.100111,利用原码求积。第二十八页,本课件共有65页原码二位乘法器设计原码二位乘法器设计 Yi+1 Yi C 操 作 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0,右移2次,C0 +X,右移2次,C0 +X,右移2次,C0 +2X,右移2次,C0 +2X,右移2次,C0 X,右移2次,C1 X,右移2次,C1 +0,右移2次,C1Yi+1=Yi=C第二十九页,本课件共有65页原码二位乘法器设计原码二位乘法器设计 Yi+1 Yi C 操 作 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0,右移2次,C0 +X,右移2次,C0 +X,右移2次,C0 +2X,右移2次,C0 +2X,右移2次,C0 X,右移2次,C1 X,右移2次,C1 +0,右移2次,C1Yi+1=0&YiC=1第三十页,本课件共有65页原码二位乘法器设计原码二位乘法器设计 Yi+1 Yi C 操 作 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0,右移2次,C0 +X,右移2次,C0 +X,右移2次,C0 +2X,右移2次,C0 +2X,右移2次,C0 X,右移2次,C1 X,右移2次,C1 +0,右移2次,C1Yi+1Yi=1&Yi=C第三十一页,本课件共有65页原码二位乘法器设计原码二位乘法器设计 Yi+1 Yi C 操 作 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0,右移2次,C0 +X,右移2次,C0 +X,右移2次,C0 +2X,右移2次,C0 +2X,右移2次,C0 X,右移2次,C1 X,右移2次,C1 +0,右移2次,C1Yi+1=1&YiC=1第三十二页,本课件共有65页原码二位乘法器设计原码二位乘法器设计第三十三页,本课件共有65页补码一位乘法运算补码一位乘法运算布斯(布斯(BoothBooth)法)法 假定被乘数X和乘数Y均为用补码表示的纯小数,其中X0、Y0是它们的符号位:X补X0.X1X2X(n-1)Y补Y0.Y1Y2Y(n-1)布斯法补码一位乘法的算法公式为:XY补X补(Y1Y0)20(Y2Y1)21(Y3Y2)22(Y(n1)Y(n2)2(n2)(0Y(n1)2(n1)第三十四页,本课件共有65页布斯补码一位乘法运算布斯补码一位乘法运算 Yi Yi1 Yi1Yi 操 作 0 0 0 0,右移一次 0 1 1 X补,右移一次 1 0 1 X补,右移一次 1 1 0 0,右移一次u乘数的相邻两位的操作规律 第三十五页,本课件共有65页布斯补码一位乘法运算布斯补码一位乘法运算 例:已知X0.1010,Y0.1101。利用布斯法补码一位乘法求积。解:首先将两数用补码表示:X补00.1010,Y补11.0011,而X补11.0110。第三十六页,本课件共有65页布斯补码一位乘法运算布斯补码一位乘法运算第三十七页,本课件共有65页布斯补码一位乘法运算布斯补码一位乘法运算A,B,C,D都是寄存器四选一选择器加法器移位寄存器计数器符号位参与运算第三十八页,本课件共有65页布斯补码一位乘法运算布斯补码一位乘法运算第三十九页,本课件共有65页阵列乘法器设计阵列乘法器设计设XX3X2X1X0,YY3Y2Y1Y0,计算XY?第四十页,本课件共有65页基本乘加单元基本乘加单元二输入与门一位全加器第四十一页,本课件共有65页定点无符号数阵列乘法器定点无符号数阵列乘法器Y0Y0Y2Y3Y1Y2Y1Y3X3X2X1X00000Z6Z7Z5Z4Z2Z3Z0Z1第四十二页,本课件共有65页定点无符号数阵列乘法器定点无符号数阵列乘法器TOP_ROWMID_ROWLOW_ROW第四十三页,本课件共有65页TOP_ROW功能实现功能实现第四十四页,本课件共有65页MID_ROW功能实现功能实现第四十五页,本课件共有65页LOW_ROW功能实现功能实现第四十六页,本课件共有65页阵列乘法器结构描述实现阵列乘法器结构描述实现第四十七页,本课件共有65页定点数除法运算定点数除法运算u定点数除法分为原码除法和补码除法两类。u除法实现方法双操作数加法器将除法分为若干次“加减与移位”的循环,由时序控制部分实现;采用迭代除法,将除法转换为乘法处理,可以利用快速乘法器实现除法器;阵列除法器,一次求得商与余数,实现快速除法的基本途径。第四十八页,本课件共有65页原码除法运算原码除法运算原码除法的法则应包括:除数0;定点纯小数时,被除数除数;定点纯整数时,被除数除数。与原码乘法类似的是原码除法商的符号和商的值也是分别处理的,商的符号等于被除数的符号与除数的符号相异或。商的值等于被除数的绝对值除以除数的绝对值。将商的符号与商的值拼接在一起就得到原码除法的商。第四十九页,本课件共有65页定点除法器的原理及实现定点除法器的原理及实现u恢复余数法:先减后判,如果减后发现不够减,则上商0,并加上除数,即恢复到减操作之前的余数(第一步的余数即被除数)。u其缺点是即增加了一些不必要的操作,又使操作步数随着不够减情况发生的次数而变。第五十页,本课件共有65页定点除法器的原理及实现定点除法器的原理及实现u不恢复余数除法(加减交替除法)先减后判,如果发现不够减,则上商0,并将下一步的减除数操作改为加除数操作。这样可使操作步数固定,只与所需商的位数有关,而与是否够减无关,因此能减少运算时间。第五十一页,本课件共有65页原码加减交替除法器原码加减交替除法器原码加减交替除法器的运算法则:原码加减交替除法器的运算法则:1.除法运算前,应满足条件:X*Y*,且Y*0,否则,按溢出或非法除数处理;2.符号位不参与运算,单独处理:qf=xf yf;3.部分余数采用单符号位或双符号位;4.每步部分余数运算规则:若余数R0,则商上1,左移一次,减除数;若余数R0,则商上0,左移一次,加除数。第五十二页,本课件共有65页原码加减交替除法器原码加减交替除法器例:若X0.10001011,Y0.1110 试利用原码加减交替除法器求商及余数。解:写出X原1.10001011,Y原0.1110。商符101;第五十三页,本课件共有65页原码加减交替除法器原码加减交替除法器左移第五十四页,本课件共有65页补码除法运算补码除法运算符号判断。被除数和除数同号,被除数减除数;若异号则加除数。余数与除数同号,上商为1,余数左移1位,下次用余数减除数操作求商。若异号,上商为0,余数左移1位,下次用余数加除数操作求商。重复直至除尽或达到精度要求。商修正。在除不尽时,最低位恒置1修正。第五十五页,本课件共有65页补码除法运算补码除法运算YNNY第五十六页,本课件共有65页补码除法运算补码除法运算例:若X0.10001011,Y0.1110 试利用补码除法求商及余数。解:写出X补1.01110101,Y补0.1110。Y补1.0010 商商补补1.01101;余数为:;余数为:余数余数补补1.00112-4第五十七页,本课件共有65页补码除法运算补码除法运算补码除法器框图 第五十八页,本课件共有65页补码除法设计补码除法设计端口定义port(oper_a,oper_b:in std_logic_vector(7 downto 0);-被除数,除数,最高位为符号位done:out std_logic;-完成除法操作标志clk,rst:in std_logic;-时钟信号/复位信号Q,R:out std_logic_vector(7 downto 0)-商Q最高位为符号位,余数R );第五十九页,本课件共有65页补码除法设计补码除法设计复位赋初值判断余数与除数符号是否相同运算结束第六十页,本课件共有65页阵列除法器阵列除法器0 0 y1 x1 y2 x2 y3 x3 r3 r4 r5 r6x4x5x6q110q2q3CASCASCASCAS异或门异或门全加器全加器PxiCiyiCi+1可控加减法器可控加减法器CASCASSi第六十一页,本课件共有65页阵列除法器(1 1)可控加)可控加/减法单元减法单元 (CAS CAS Controllable Adder SubtracterControllable Adder Subtracter)当当P=0 P=0 时,做加法;时,做加法;当当P=1 P=1 时,做减法,变时,做减法,变+Y*+Y*为为+-Y*+-Y*补补 。异或门异或门全加器全加器PxiCiyiCi+1Si第六十二页,本课件共有65页阵列除法器阵列除法器(2 2)阵列除法算法流程)阵列除法算法流程 设设 被除数被除数 X=0.xX=0.x1 1 x x2 2 x x 3 3 x x4 4 x x5 5 x x 6 6 除除 数数 Y=0.yY=0.y1 1 y y2 2 y y3 3 则则 商商 Q=Q=0.q0.q1 1 q q2 2 q q3 3 余数余数 R=0.00rR=0.00r3 3 r r4 4 r r5 5 r r6 6第六十三页,本课件共有65页阵列除法过程阵列除法过程第一步:试减,即P=1,实现 X+-Y补。因为X*Y*,所以一定不够减,则最高位进位Ci+1=0,可利用此进位输出产生商和下一步的P。第二步:P=0,做 X+Y。当最高位进位Ci+1=1时,表示够减,则 q1=1,P=1;当最高位进位Ci+1=0时,表示不够减,则 q1=0,P=0。第三步和第四步:P=0时,做 X+Y;P=0时,做 X+-Y补。上商和P值产生的规则与第二步相同。第六十四页,本课件共有65页阵列除法器设计根据原理说明采用VHDL进行功能设计。参考阵列乘法器设计方法进行设计。第六十五页,本课件共有65页