一、实验目的、要求
- 实验目的
- 熟悉一位全加器的结构
- 理解并掌握补码加减法运算的原理及判溢方法
- 要求
- 需要掌握一位全加器如何实现的具体公式,在“一位全加器FA封装1”中,正确完成一位全加器的内部连接。
- 在“8位可控加法减法器”中,使用已经封装的一位全加器进行串行连接,并在外面加上Sub信号,以便于可以同时实现加减法运算。
- 要进行判溢操作,判断最后所得是否有溢出情况。
- 进行实验,判断运行是否正确。
二、实验方法、原理
- 实验方法
(1)、采用一位加法器原理,设置Xn,Yn以及低位进位Cn-1相加,全加的和Fn与进位输出Cn,的进位条件是:①Xn,Yn均为“1”②Xn,Yn均任意一个为“1”,且Cn-1为“1”。
因此,得出全加的和Fn与进位输出Cn的公式
Fn =XnYnCn-1+XnYnCn-1+XnYnCn-1+XnYnCn-1=Xn⊕Yn⊕Cn-1
Cn=XnYn+(Xn⊕Yn)Cn-1
(需要用到异或门、与门、或门)
(2)、采用串行多位加法器【下图是列举四位串行加法器】
(3)、增加Sub信号,分别与对应的Y进行异或,当Sub为0时,做的加法运算
[X+Y]补=[X]补+[Y]补,当Sub为1时,做的减法运算(通过补码将减法转化为加法),
[X-Y]补=[X]补+[-Y]补,(这里的[-Y]补是将[Y]补连同符号位一起取反加一)
(4)、判断溢出条件:有三种方法,其中方法三适用于实验——采用双符号位fs2,fs1来表表示,00为正、11为负,溢出条件=fs2⊕fs1,结果00为正,无溢出;结果01为上溢;结果10为下溢;结果11为负,无溢出。本实验的fs2,fs1分别是最高位的进位和次高位的进位。
2.原理
将一个八位的加法器拆分成8个全加器,通过设置一个全加器,将他们串行连接,再根据补码的特殊性质:将加法转化成减法进行运算,[x]补-[y]补=[X-Y]补=[x]补+[-y]补
根据以下理论(原理):
在串行加法器中引入Sub控制信号,输人数Y的所有位Y:均与Sub信号进行异或后送人多位串行加法器,当Sub=0时,送人加法器的是Y本身,当Sub=1时,送人加法器的是Y的反码,另外Sub连接到加法器的最低位的进位输人,实现了对Y操作数的逐位取反,末位加1的求补过程,从而完成减法操作,当Sub=0时,低位进位为零,不影响加法结果的正确性。对于减法的溢出检测,最直观的判断依据是正数减负数结果为负数,负数减正数结果为正数。
三、实验内容、步骤
1、实验步骤
- 打开一位全加器电路1,完成一位全加器电路设计。
- 打开8位可控加减法器电路,利用已经封装好的一位全加器设计8位串行可控加减法电路,并对电路功能进行仿真验证。
2、步骤
- 打开8位控制加减法器.circ,点开“一位全加器FA封装1”进行编辑,根据实验方法中所提及的两个公式,先求Si值——将Xi和Yi进行异或操作,并将其得到的结果与Cin再进行异或操作。再求Cout的值——将Xi和Yi的值进行异或,将其结果与Cin进行与操作,再将得到的结果和Xi、Yi与操作的结果进行或运算。由此,就完成了一位全加器FA的封装。
- 打开“8位可控加减法器”,先进行一位一位的处理,将Sub信号(通过其0或1的值,判断是加法运算还是减法运算,进行控制)、X0和Y0分别传入FA中,这里的Y0要进行相应的处理,要与Sub信号进行异或判断后送入FA中【详解:当Sub为0时,说明进行的是加运算,假设y0等于0,则异或之后的结果依旧为0;y0等于1,则异或的结果为1,证明其是正确的,因为加法并不会改变y0的原始值。反之,当Sub信号为1时,表明要进行减法运算,即根据公式要转换为[-y]补,需要对其所有位一起取反,设y0为0,则结果为1,反之为0,结果正确,并将Sub信号的值作为1传送给最初的进位】,得出的输出最末尾的数为S0,产生的进位传送给下一个FA(本实验是从最低为开始算起,依次到最高位)……以此类推,完成S0~S7的电路设计。
- 进行溢出判断,采用双符号位进行判断,将最终得到的最高位的进位Cout和次高位的进位进行异或,产生的结果放置于OF中(1则溢出,0则无溢)。
- 电路设计完成后,设置输入引脚的值,尝试设置不同的输入组合,观察探测区运算结果是否正确。
- 记录实验现象及实验过程遇到的问题,撰写实验报告。
四、实验现象、结果
1、以下是实验设计电路:
2、以下是实验测试过程:
当x为6,y为7时,进行[x+y]补操作可正确进位得结果为13,且无溢出情况。
当x为6,y为7时,[x-y]补可正确进位得有符号结果为-1,无符号结果为255,且无溢出情况
当x为-122,y为-121时,[x+y]补的最高进位1和数值最高进位0异或后结果为1,即为溢出,截取后得有符号与无符号结果均为13。
当x为64,y为65时,[x+y]补的符号位为0,数值为最高进位为1,异或后得出结果为1,判定为溢出,所得有符号结果为-127,无符号结果为129。
当x为-64,y为-63时,[x+y]补的符号位进位和最高数值位进位都是1,异或之后结果为0,并不会溢出,得有符号结果为-127,无符号结果为129
当x为-64,y为-127时,[x-y]补的符号位进位和最高数值位进位都是1,异或之后结果为0,并不会产生溢出,得有符号结果为63,无符号结果为63。
标签:全加器,Sub,结果,可控,异或,溢出,加减法,仅供参考,进位 From: https://blog.csdn.net/m0_69773916/article/details/144517919