计算机组成原理作业2023/10/24

【设计原理】

利用异或运算、与运算、或运算,实现二进制的数加减

1.全加器通过逻辑门控制当前位的运算和下一位的进位

2.通过级联全加器形成8位加法器

3.再利用异或运算将输入的数取反加一,之后两数相加

【设计思路】

X,Y 为两输入数,Sub 为加减控制信号,S 为运算结果输出,Cout 为进位输出,OF 为有符号运算溢出位。

  1. 全加器的设计

根据公式分析,x与y和cin进行异或操作

计算进位的值,根据公式将x和y进行与运算,x与y进行异或运算再进行与上一位进位cin的与运算,上面两个值在进行或运算。

实现一个全加器,可以计算出当前值和进位值。

2.级联封装好的全加器,使得形成8位的加法器,可以实现8位的加法运算

3.减法的实现

两个数进行减法运算可以看被减数加负的减数,因此要将y转换成(-y)补之后再进行加法运算:符号位转换成1,数值位按位取反再加1。根据判断发现当y和1进行异或运算时,可以达到转换效果,减法运算时sub为1,因此可以将y的各位与sub异或,同时sub作为最低位全加器的低位进位输入1.

4.溢出的解决

溢出仅会在正+正与负+负时有可能发生。m表示最高数值位进位,n表示符号位进位。正+正:可能的情况可以概括为01+01,01+00,00+00,其中第一种情况会发生溢出(n=0,m=1,n异或m=1),后两种情况不会发生溢出(n=0,m=0,n异或m=0).负+负:两个负数相加结果应为负数,结果符号位应为1,当符结果号位为0时发生溢出,可能的情况可概括为10+10,10+11,11+11,其中前两种情况的结果符号位为0,发生溢出(n=1,m=0,n异或m=1),第三种情况符号位为1,没有发生溢出(n=1,m=1,n异或m=0)。所以使用一个异或对m和n进行处理。

【测试结果】

正常计算

【总结】

注意好计算公式,考虑有无符号的溢出进位问题,核心点是用逻辑门进行运算。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注