硬件02:二进制加法器
二进制加法器
二进制加法要解决的两个问题是,加法本位和进位,相加的操作和十进制加法非常类似。
加法器的控制面板如下图:
两排开关代表两个8位二进制数,一排灯泡代表加法的结果,亮代表1,不亮代表0,有9个灯泡代表相加结果可能是9位的二进制数。
相加的规律
进位的规律如下:
这个结果和与门的输出结果是一样的。
加法本位的规律如下:
或门除了右下角的数字以外都符合结果,而与非门除了左上角的数字以外都符合结果,将相同的输入连接到或门和与非门,然后将输出再连接到与门,就能得到想要的结果:
这个电路还有个专门的名称:异或门,简称XOR,用下列符号表示:
半加器和全加器
将异或门和与门连在一起计算A和B的和:
也可以采用下列符号表示:
这个符号被称为半加器,它描述了加法的规律,但是没有做到将进位结果纳入下一次计算。
当计算1111+1111时,只有最右边的两个1可以用半加器来相加,当计算到倒数第二位的时候,此时实际上是三个二进制数的相加,所以此时需要做两次加法,需要将两个半加器和一个或门连接起来:
上面的图也可以简化成一个符号:
它被称为全加器。
完成加法
对比加法器的控制面板,现在可以连接电路了:
对于最右侧的两个开关和一个灯泡,应该这样连接:
这里的特殊之处在于最右侧不存在最开始的进位,所以在全加器的进位端接地,如果加和输出为1,那么灯泡亮,同时产生进位输出。
对于接下来的灯泡和开关,应该这样连接:
此时就计入了进位输入,同时产生进位输出。
对于最后一对开关和两个灯泡应该这样连接:
至此电路就连接完毕了。
用下列符号代表8位二进制加法器:
一旦有了这个单元,就可以轻松构造任何位数的二进制加法器,如16位二进制加法器:
这种加法器有一个特点,一对数字相加的结果再次参与下一对数字的计算,以此类推,加法器的总体速度等于数字的位数乘以全加器器件的速度,这被称为行波进位,更快的加法器运用了一种被称为前置进位的电路。
搭建一个行波进位的加法器需要144个晶体管,如果是前置进位则需要更多晶体管,但是电路会变得很小。