定点数补码加减法运算器设计

注:如果文章有很多地方不懂,请先看上一节内容。https://blog.csdn.net/qq_43355372/article/details/100065075

一,四位串行加法器的设计(基于一位全加器FA)

在这里插入图片描述 图 1 图1 1

之 后 若 不 做 说 明 , 则 X : A 3 A 2 A 1 A 0 Y : B 3 B 2 B 1 B 0 之后若不做说明,则\quad X:A_3A_2A_1A_0\qquad Y:B_3B_2B_1B_0 X:A3A2A1A0Y:B3B2B1B0

二,四位串行加减法器设计

在这里插入图片描述
图 2 图2 2在一的基础上做出如图改进,可实现加减法运算,当 p=0 时,Y值不变,根据公式 [ X + Y ] 补 = [ X ] 补 + [ Y ] 补 [X+Y]_补=[X]_补+[Y]_补 [X+Y]=[X]+[Y],实现加法运算。当 P=1时,Y相当于取反加一(别问我一是怎么来的,C0即P),从而实现了 [ Y ] 补 → [ − Y ] 补 [Y]_补\rightarrow[-Y]_补 [Y][Y]根据公式 [ X ] 补 − [ Y ] 补 = [ X ] 补 + [ − Y ] 补 [X]_补-[Y]_补=[X]_补+[-Y]_补 [X][Y]=[X]+[Y],实现减法运算。(发现没有,就是想办法把减法变为加法)

三,带溢出检测功能的加/减法运算器

在这里插入图片描述 图 3 图3 3

方法一:对操作数与运算结果的符号位进行检测。

在这里插入图片描述
图 4 图4 4

方法二:对最高数据位进位与符号位进行进行检测。纠正:图应是 V = C 3 ⨁ C 4 V=C_3\bigoplus C_4 V=C3C4

方法三:用变形补码。直接将S2与S3进行异或,为1则溢出。(由于过于简单,就不上图了)

四,带无符号数溢出检测功能的加减运算器

在这里插入图片描述 图 5 图5 5

五,串行进位

在这里插入图片描述
图 6 图6 6

由文首到此,不管是加法还是加减法混合或者溢出检测,我们都是用的串行进位,这种方法很容易理解,但是,由上图可以的例子可以发现,若S1想得到结果,必须由上一步的FA得出进位信息才行,以此类推,到了Cout,效率肯定是不高的。那有没有方法让S0,S1,S2,S3不必得出上一步再才到下一步呢,而是同时运行呢?答案肯定是有的——并行进位。

六,并行进位

在这里插入图片描述
图 7 图7 7

因为每一个进位信息都是由参与计算的补码计算而来的,所以我们可以如图7所示把C2,C3,C4用A0,B0,A1,B1…进行替换。

在这里插入图片描述
图 8 图8 8

按照图8的示例可设计出四位并行运算器。

七,多位串行与并行进位运算器

在这里插入图片描述
图 9 图9 9
四位并行加法器组成ALU。现在我们又可以将ALU用来组合。因为每个ALU为4位,所以图9就是一个16位的串行加法器(当然叫串行与并行加法器更合适,因为每个ALU都是并行进位加法器,而ALU与ALU之间是串行连接的)。

在这里插入图片描述
图 10 图10 10

在这里插入图片描述
图 11 图11 11
可以类似将FA做成四位并行加法器的方法,我们也可一将ALU做成并行加法器,图10,图11。现在,不如让我们发挥一下想象力,我们是不是也可以做出32位,甚至64位的加/减法运算器,而且溢出检测是不是也可以运用上去呢?

参考文献:https://www.icourse163.org/learn/HUST-1003159001?tid=1206076221#/learn/content?type=detail&id=1210645301&sm=1

  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值