之前我们了解并实现了全加器,又通过全加器改造的到了减法器,将这两个电路合并到一起,就构成了ALU的加减法计算部分。
在之前我们有介绍过,ALU其实就是用来做一些运算的,我们把各种运算模块组合到一起,就变成了ALU。
加法和减法
在很久以前的从零开始的手搓CPU(3)——从逻辑门到全加器一章中,我们使用逻辑门建造了一个4位的全加器。全加器是我们CPU计算功能,同时也是ALU的重要组成基础。
如果我们使用两个4位全加器相连,便可以实现一个8位的加法器,也就是我们ALU中负责运算的模块,为了节省空间,我们会使用到74LS283芯片,这是一个4位全加器芯片,我们使用两块74LS283便可以组成8位全加器。这个芯片的资料可以在文章底部找到。
关于其他加法的相关内容,在之前制作全加器时已经介绍的比较多了,这里就不再重复说明了。这里说一下减法器。
减法器,顾名思义是用来做减法运算的。在之前的从零开始的手搓CPU(6)——负数及CPU的减法运算一章中,我们也详细介绍了CPU中是如何进行减法运算的。减法运算本质上也使用了加法器,只是需要做一些简单的修改。所以实际上我们可以使用一个加法器+模式切换的方式来为ALU同时实现加法和减法的功能。
根据从零开始的手搓CPU(6)——负数及CPU的减法运算一章的介绍,减法计算只需要将减数的绝对值取相反数,然后与被减数相加即可,所以我们需要先将减数处理成绝对值的相反数,也即是正数按位取反后+1,不过实际上,减数(加数2)存在两个状态,在加法时该数不用进行操作,但是在减法时需要取反,所以我们需要设计一种电路,达到可控按位取反的目的。
实际上,我们观察各种门电路的真值表可以得知,XOR可以满足我们的需求。在从零开始的手搓CPU(2)——从开关到逻辑门一章中我们有介绍到XOR,它的输出只会在两个输入信号不同时为1。我们将该门的一个引脚接入减法运算控制线,另一个引脚接入减数(加数2)。