四位二进制数除法器.doc_第1页
四位二进制数除法器.doc_第2页
四位二进制数除法器.doc_第3页
四位二进制数除法器.doc_第4页
四位二进制数除法器.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

一、 设计目的1.掌握电子电路的一般设计方法和设计流程;2.学习使用PROTEL软件绘制电路原理图及印刷板图;3.掌握应用EWB对所设计的电路进行仿真,通过仿真结果验证设计的正确性。二、 设计要求设计一个四位二进制除法器,具体要求如下:1. 用键盘输入两个四位二进制数,并用数码管显示输入数。2按除法键即显示相除结果。 3. 除数为零时,数码管黑屏,不显示任何内容。三、 设计内容1分析笔算除法以小数为例,设 x=-0.1011,y=0.1101,求x/y笔算除法时,商的符号心算而得:负正得负;其数值部分的运算如下面竖式。所以商x/y=0.1101,余数=-0.00000111其特点可归纳如下:每次上商都是由心算来比较余数(被除数)和除数的大小,确定商为1还是0。每做一次减法,总是保持余数不动,低位补0,再减去右移后的除数。商符单独处理。如果将上述规则完全照搬到计算机内,实现起来有一定困难,主要问题是:a机器不能“心算”上商,必须通过比较被除数(或余数)和除数绝对值的大小来确定商值,即|x|-|y|,若差为正(够减)上商1,差为负(不够减)上商0。b按照每次减法总是保持余数不动低位补0,再减去右移后的除数这一规则,则要求加法器的位数必须为除数的两倍。仔细分析发现,右移除数可以用左移余数的办法代替,其运算结果是一样的,但对线路结构更有利。不过此刻所得到的余数不是真正的余数,只有将它乘上2-n才是真正的余数。c笔算求商时是从高位向低位逐位求的,而要求机器把每位商直接写到寄存器的不同位也是不可取的。计算机可将每一位商直接写到寄存器的最低位,并把原来的部分商左移一位。综上所述便可得原码除法运算规则。2原码除法:原码除法和原码乘法一样,符号位是单独处理的。以小数为例:设 式中 为x的绝对值,记作x* 为y的绝对值,记作y*即商符由两数符号位“异或”运算求得,商值由两数绝对值相除(x*/y*)求得。小数定点除法对被除数和除数有一定的约束,即必须满足下列条件:0|被除数|除数|实现除法运算时,还应避免除数为0或被除数为0。前者结果为无限大,不能用机器的有限位数表示;后者结果总是0,这个除法操作等于白做,浪费了机器时间。至于商的位数一般与操作数的位数相同。原码除法中由于对余数的处理不同,又可分为恢复余数法和不恢复余数法(加减交替法)两种。(1)恢复余数法。恢复余数法的特点是:当余数为负时,需加上除数,将其恢复成原来的余数。由上所述,商值的确定是通过比较被除数和除数的绝对值大小,即x*-y*实现的, 而计算机内只设加法器, 故需将x*-y*操作变为x*补+-y*补的操作。例:已知:x=-0.1011,y=-0.1101,求:xy原解:由x*=0.1011,x原=1.1011y*=0.1101,-y补=1.0011,y原=1.1101商值的求解过程如下:被除数(余数)商说 明0.1011+ 1.00110.0000+-y*补(减去除数)1.1110+ 0.11010余数为负,上商0恢复余数+y*补0.10111.0110+ 1.00110被恢复的被除数 1位+-y*补(减去除数)0.10011.0010+ 1.001101 01余数为正,上商1 1位+-y*补(减去除数)0.01010.1010+1.0011011 011余数为正,上商1 1位+-y*补(减去除数)1.1101+ 0.11010110余数为负,上商0恢复余数+y*补0.10101.0100+ 1.00110110被恢复的被除数 1位+-y*补(减去除数)0.011101101余数为正,上商1故商值为0.1101商的符号位为 由此可见,共上商5次,第一次上的商在商的整数位上,这对小数除法而言,可用它作溢出判断。即当该位为“1”时,表示此除法为溢出,不能进行,应由程序进行处理;当该位为“0”时,说明除法合法,可以进行。在恢复余数法中,每当余数为负时,都需恢复余数,这变延长了机器除法的时间,操作也很不规则,对线路结构不利。加减交替法可克服这些缺点。(2)加减交替法。加减交替法又称不恢复余数法,可以认为它是恢复余数法的一种改进算法。分析原码恢复余数法得知:当余数Ri0时,可上商“1”,再对Ri左移一位后减除数,即2Ri-y*。当余数Ri0时,可上商“0”,然后再做Ri+y*,即完成恢复余数的运算,再做2(Ri+y*)-y*,也即2Ri+y*。可见,原码恢复余数法可归纳为:当余数Ri0时,商上“1”,做2Ri-y*的运算;当余数Ri0时,商上“0”,做2Ri+y*的运算。这里已看不出余数的恢复问题了,而只是做加y*或减y*,因此,一般把它叫做加减交替法或不恢复余数法。例:已知:x=-0.1011,y=-0.1101,求:x y原解:x原=1.1011, x*=0.1011y原=0.1101, y*=0.1101, -y*补=1.0011商值的求解过程如下表所示:被除数(余数)商说 明0.1011+ 1.00110.0000+-y*补(减除数)1.11101.1100+ 0.11010 0余数为负,上商0 1位+y*补 (加除数)0.10011.0010+ 1.00110101余数为正,上商1 1位+-y*补(减除数)0.01010.1010+ 1.0011011011余数为正,上商1 1位+-y*补(减除数)1.11011.1010+ 0.11010110 0110余数为负,上商0 1位+y*补 (加除数)0.011101101余数为正,上商1商的符号位为 所以 分析此例可见,n位小数的除法共上商n+1次,第一次商用来判断是否溢出。倘若比例因子选择恰当,除数结果不溢出,则第一次商肯定是0。如果省去这位商,只需上商n次即可,此时除法运算一开始应将被除数左移一位减去除数,然后再根据余数上商。(3)原码加减交替法所需的硬件配置。下图是实现原码加减交替除法运算的基本硬件配置框图。图中A、X、Q均为n+1位寄存器,其中A存放被除数的原码,X存放除数的原码。移位和加控制逻辑受Q的末位Qn控制。(Qn=1作减法,Qn=0作加法),计数器C用于控制逐位相除的次数n,GD为除法标记,V为溢出标记,S为商符。(4)原码加减交替除法控制流程。下图为原码加减交替除法控制流程图。除法开始前,Q寄存器被清0,准备接收商,被除数的原码放在A中,除数的原码放在X中,计数器C中存放除数的位数n。除法开始后,首先通过异或运算求出商符,并存于S。接着将被除数和除数变为绝对值,然后开始用第一次上商判断是否溢出。若溢出,则置溢出标记V为1,停止运算,进行中断处理,重新选择比例因子:若无溢出,则先上商,接着A、Q同时左移一位,然后再根据上一次商值的状态,决定是加还是减除数,这样重复n次后,再上最后一次商(共上商n+1次),即得运算结果。对于整数除法,要求满足以下条件:0|除数|被除数|因为这样才能得到整数商。通常在做整数除法前,先要对这个条件进行判断,若不满足上述条件,机器发出出错信号,程序要重新设定比例因子。上述讨论的小数除法完全适用于整数除法,只是整数除法的被除数位数可以是除数的两倍,且要求被除数的高M位要比除数(n位)小,否则即为溢出。如果被除数和除数的位数都是单字长,则要在被除数前面加上一个字的0,从而扩展成双倍字长再进行运算。3补码除法与补码乘法类似,也可以用补码完成除法操作。补码除法也分恢复余数法和加减交替法,后者用得较多,在此只讨论加减交替法。(1)补码加减交替法运算规则。补码除法其符号位和数值部分是一起参加运算的,因此在算法上不像原码除法那样直观,主要需解决三个问题:第一,如何确定商值;第二,如何形成商符;第三,如何获得新的余数。商值的确定。欲确定商值,必须先比较被除数和除数的大小,然后才能求得商值。a比较被除数(余数)和除数的大小。补码除法的操作数均为补码,其符号又是任意的,因此要比较被除数x补和除数y补的大小就不能简单地用x补减去y补。实质上比较x补和y补的大小就是比较它们所对应的绝对值的大小。同样在求商的过程中,比较余数Ri补与除数y补的大小,也是比较它们所对应的绝对值。这种比较的算法可归纳为以下两点:第一,当被除数与除数同号时,做减法,若得到的余数与除数同号,表示“够减”,否则表示“不够减”。第二,当被除数与除数异号时,做加法,若得到的余数与除数异号,表示“够减”,否则表示“不够减”。此算法如下表所示。比较x补与y补的符号求余数比较 Ri补与y补的符号同号x补-y补同号,表示“够减”异号x补+y补异号,表示“够减”b商值的确定。补码除法的商也是用补码表示的,如果我们约定商的末位用“恒置1”的舍入规则,那么除末位商外,其余各位的商值对正商和负商而言,上商规则是不同的。因为在负商的情况下,除末位商以外,其余任何一位的商与真值都正好相反。因此,上商的算法可归纳为以下两点:第一,如果x补与y补同号,商为正,则“够减”时上商“1”。“不够减”时上商“0”(按原码规则上商)。第二,如果x补与y补异号,商为负,则“够减”时上商“0”,“不够减”时上商“1”(按反码规则上商)。结合比较规则与上商规则,使可得商值的确定办法,如下表所示。x补与y补商R补与y补商值同号正同号,表示“够减”1异号,表示“不够减”0异号负异号,表示“够减”0同号,表示“不够减”1进一步简化,商值可直接由下表确定。x补与y补商值同号1异号0商符的形成。在补码除法中,商符是在求商的过程中自动形成的。 在小数定点除法中,被除数的绝对值必须小于除数的绝对值,否则商大于1而溢出。因此,当x补与y补同号时,x补-y补所得的余数R0补与y补异号,商上“0”,恰好与商的符号(正)一致;当x补与y补异号时,x补+y补所得的余数R0补与y补同号,商上“1”,这也与商的符号(负)一致。可见,商符是在求商值过程中自动形成的。此外,商的符号还可用来判断商是否溢出。例如,当x补与y补同号时,若R0补与y补同号,上商“l”,即溢出。当x补与y补异号时,若R0补与y补异号,上商“0”,即溢出。当然,对于小数补码运算,商等于“-1”应该是允许的,但这需要特殊处理,为简化问题,这里不予考虑。新余数Ri+1补的获得。新余数Ri+1补的获得方法与原码加减交替法极相似,其算法规则为:当R0补与y补同号时,商上“l”,新余数Ri+1补=2Ri补-y补=2Ri补+-y补当R0补与y补异号时,商上“0”,新余数Ri+1补=2Ri补+y补将此法列于下表:R补与y补商新余数Ri+1补同号1Ri+1补=2Ri补+-y补异号0Ri+1补=2Ri补+y补如果对商的精度没有特殊要求,一般可采用“末位恒置1”法,这种方法操作简单,易于实现,而且最大误差仅为2-n。例:已知:x=-0.1001, y=+0.1101 求: xy补解:x补=1.0111,y补=0.1101,-y补=1.0011运算过程如下:被除数(余数)商 上商说 明1.0111+ 0.11010.0000x补与y补异号,+y补0.0100 0.1000+ 1.0011 1 1R补与y补同号,上商1 1位+-y补1.1011 1.0110+ 0.11011010R补与y补异号,上商0 1位+y补0.0011 0.0110+ 1.0011101101R补与y补同号,上商1 1位+-y补1.1001 1.0010 101010101R补与y补异号,上商0 1位,末位商恒置“1”所以xy补=1.0101(2)补码加减交替法所需的硬件配置。补码加减交替法所需的硬件配置基本上与原码加减交替法所需的硬件配置相似。(3)补码加减交替法的控制流程。上图示出了补码加减交替除法的控制流程。除法开始前,Q寄存器被清0,准备接收商,被除数的补码在A中,除数的补码在x中,计数器C中存放除数的位数M。除法开始后,首先根据两操作数的符号确定是作加法还是减法,加(或减)操作后,即上第一次商(商符),然后A、Q同时左移一位,再根据商值的状态决定加或减除数,这样重复”次后,再上一次末位商“1”(恒置“1”法),即得运算结果。 补充说明几点:图中未画出补码除法溢出判断的内容;按流程图所示,多作一次加(或减)法,其实末位恒置“1”前,只需移位不必作加(或减)法;与原码除一样,图中均未指出对0进行检测,实际上在除法运算前,先检测被除数和除数是否为0,若被除数为0,结果即为0;若除数为0,结果为无穷大,这两种情况都无需继续作除法运算;为了节省时间,上商和移位操作可以同时进行。除法开始前,Q寄存器被清0,准备接收商,被除数的原码放在A中,除数的原码放在X中,计数器C中存放除数的位数n。除法开始后,首先通过异或运算求出商符,并存于S。接着将被除数和除数变为绝对值,然后开始用第一次上商判断是否溢出。若溢出,则置溢出标记V为1,停止运算,进行中断处理,重新选择比例因子:若无溢出,则先上商,接着A、Q同时左移一位,然后再根据上一次商值的状态,决定是加还是减除数,这样重复n次后,再上最后一次商(共上商n+1次),即得运算结果。对于整数除法,要求满足以下条件:0|除数|被除数|因为这样才能得到整数商。通常在做整数除法前,先要对这个条件进行判断,若不满足上述条件,机器发出出错信号,程序要重新设定比例因子。上述讨论的小数除法完全适用于整数除法,只是整数除法的被除数位数可以是除数的两倍,且要求被除数的高M位要比除数(n位)小,否则即为溢出。如果被除数和除数的位数都是单字长,则要在被除数前面加上一个字的0,从而扩展成双倍字长再进行运算。3补码除法与补码乘法类似,也可以用补码完成除法操作。补码除法也分恢复余数法和加减交替法,后者用得较多,在此只讨论加减交替法。(1)补码加减交替法运算规则。补码除法其符号位和数值部分是一起参加运算的,因此在算法上不像原码除法那样直观,主要需解决三个问题:第一,如何确定商值;第二,如何形成商符;第三,如何获得新的余数。商值的确定。欲确定商值,必须先比较被除数和除数的大小,然后才能求得商值。a比较被除数(余数)和除数的大小。补码除法的操作数均为补码,其符号又是任意的,因此要比较被除数x补和除数y补的大小就不能简单地用x补减去y补。实质上比较x补和y补的大小就是比较它们所对应的绝对值的大小。同样在求商的过程中,比较余数Ri补与除数y补的大小,也是比较它们所对应的绝对值。这种比较的算法可归纳为以下两点:第一,当被除数与除数同号时,做减法,若得到的余数与除数同号,表示“够减”,否则表示“不够减”。第二,当被除数与除数异号时,做加法,若得到的余数与除数异号,表示“够减”,否则表示“不够减”。此算法如下表所示。比较x补与y补的符号求余数比较 Ri补与y补的符号同号x补-y补同号,表示“够减”异号x补+y补异号,表示“够减”b商值的确定。补码除法的商也是用补码表示的,如果我们约定商的末位用“恒置1”的舍入规则,那么除末位商外,其余各位的商值对正商和负商而言,上商规则是不同的。因为在负商的情况下,除末位商以外,其余任何一位的商与真值都正好相反。因此,上商的算法可归纳为以下两点:第一,如果x补与y补同号,商为正,则“够减”时上商“1”。“不够减”时上商“0”(按原码规则上商)。第二,如果x补与y补异号,商为负,则“够减”时上商“0”,“不够减”时上商“1”(按反码规则上商)。结合比较规则与上商规则,使可得商值的确定办法,如下表所示。x补与y补商R补与y补商值同号正同号,表示“够减”1异号,表示“不够减”0异号负异号,表示“够减”0同号,表示“不够减”1进一步简化,商值可直接由下表确定。x补与y补商值同号1异号0商符的形成。在补码除法中,商符是在求商的过程中自动形成的。 在小数定点除法中,被除数的绝对值必须小于除数的绝对值,否则商大于1而溢出。因此,当x补与y补同号时,x补-y补所得的余数R0补与y补异号,商上“0”,恰好与商的符号(正)一致;当x补与y补异号时,x补+y补所得的余数R0补与y补同号,商上“1”,这也与商的符号(负)一致。可见,商符是在求商值过程中自动形成的。此外,商的符号还可用来判断商是否溢出。例如,当x补与y补同号时,若R0补与y补同号,上商“l”,即溢出。当x补与y补异号时,若R0补与y补异号,上商“0”,即溢出。当然,对于小数补码运算,商等于“-1”应该是允许的,但这需要特殊处理,为简化问题,这里不予考虑。新余数Ri+1补的获得。新余数Ri+1补的获得方法与原码加减交替法极相似,其算法规则为:当R0补与y补同号时,商上“l”,新余数Ri+1补=2Ri补-y补=2Ri补+-y补当R0补与y补异号时,商上“0”,新余数Ri+1补=2Ri补+y补将此法列于下表:R补与y补商新余数Ri+1补同号1Ri+1补=2Ri补+-y补异号0Ri+1补=2Ri补+y补如果对商的精度没有特殊要求,一般可采用“末位恒置1”法,这种方法操作简单,易于实现,而且最大误差仅为2-n。例:已知:x=-0.1001, y=+0.1101 求: xy补解:x补=1.0111,y补=0.1101,-y补=1.0011运算过程如下:被除数(余数)商 上商说 明1.0111+ 0.11010.0000x补与y补异号,+y补0.0100 0.1000+ 1.0011 1 1R补与y补同号,上商1 1位+-y补1.1011 1.0110+ 0.11011010R补与y补异号,上商0 1位+y补0.0011 0.0110+ 1.0011101101R补与y补同号,上商1 1位+-y补1.1001 1.0010 101010101R补与y补异号,上商0 1位,末位商恒置“1”所以xy补=1.0101(2)补码加减交替法所需的硬件配置。补码加减交替法所需的硬件配置基本上与原码加减交替法所需的硬件配置相似。(3)补码加减交替法的控制流程。上图示出了补码加减交替除法的控制流程。除法开始前,Q寄存器被清0,准备接收商,被除数的补码在A中,除数的补码在x中,计数器C中存放除数的位数M。除法开始后,首先根据两操作数的符号确定是作加法还是减法,加(或减)操作后,即上第一次商(商符),然后A、Q同时左移一位,再根据商值的状态决定加或减除数,这样重复”次后,再上一次末位商“1”(恒置“1”法),即得运算结果。1移位的意义 计算机中小数点的位置是事先约定的,因此,二进制表示的机器数在相对于小数点作n位左移或右移时,其实质就便该数乘以或除以2n(n=1,2.n)。移位运算又叫移位操作,对计算机来说,有很大的实用价值,例如,当计算机没有乘(除)运算线路时,可以采用移位和加法相结合,实现乘(除)运算。计算机中机器数的字长往往是固定的,当机器数左移n位或右移n位时,必然会使其n位低位或n位高位出现空位。那么,对空出的空位应该添补0还是1呢?这与机器数采用有符号数还是无符号数有关,对有符号的移位叫算术移位。2算术移位规则对于正数,由于x原=x补=x反=真值,故移位后出现的空位均以0添之。对于负数,由于原码、补码和反码的表示形式不同,故当机器数移位时,对其空位的添补规则也不同。下表列出了三种不同码制的机器数(整数或小数均可),分别对应正数或负数,移位后的添补规则。必须注意的是:不论是正数还是负数,移位后其符号位均不变,这是算术移位的重要特点。不同码制机器数移位后的空位添补规则 码 制添补代码正数原码、补码、反码0 原码0负数补码左移添0右移添1反 码1由上表可得出如下结论:(1)机器数为正时,不论左移或右移,添补代码均为0。(2)由于负数的原码其数值部分与真值相同,故在移位时只要使符号位不变,其空位均添0。(3)由于负数的反码其各位除符号位外与负数的原码正好相反,故移位后所添的代码应与原码相反,即全部添1。 (4)分析任意负数的补码可发现,当对其由低位向高位找到第一个“1”时,在此“1”左边的各位均与对应的反码相同,而在此“1”右边的各位(包括此“1”在内)均与对应的原码相同,即添0;右移时困空位出现在高位,则添补的代码应与反码相同,即添1。移位结果表示如下:移位操作机 器 数对应的真值A原=A补=A反移位前0,0011010+26左移一位0,0110100+52左移两位0,1101000+104右移一位0,0001101+13右移两位0,0000110+6可见,对于正数,三种机器数移位后符号位不变,左移时最高数位丢1,结果出错;右移时最低数位丢1,影响精度。(2)A=-26=(-11010)2三种机器数移位结果示于下表。移位操作机 器 数对应的真值移位前原码1,0011010-26左移一位1,0110100-52左移两位1,1101000-104右移一位1,0001101-13右移两位1,0000110-6移位前补码1,1100110-26左移一位1,1001100-52左移两位1,0011000-104右移一位1,1110011-13右移两位1,1111001-7移位前反码1,1100101-26左移一位1,1001011-52左移两位1,0010111-104右移一位1,1110010-13右移两位1,1111001-6可见,对于负数,三种机器数移位后符号位均不变。负数的原码左移时,高位丢1,结果出错;低位丢1,影响精度。负数的补码左移时,高位丢0,结果出错;低位丢1,影响精度。负数的反码左移时,高位丢0,结果出错;低位丢0,影响精度。下图示意了机器中实现算术左移和右移操作的硬件框图。其中(a)真值为正的三种机器数的移位操作;(

温馨提示

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

评论

0/150

提交评论