实验介绍
经过上一节计算机那点事儿之0和1的内容介绍,我们掌握了4个逻辑门电路与门(AND)、或门(OR)、与非门(NAND)和或非门(NOR)的真值表(输入输出关系)和特征描述图。
这一节,我们利用上一节的知识,来完成一个8比特位的加法器,通过上述逻辑门来组合一个支持8bit的加法计算器。
实验目的
- 模拟出8bit的加法计算器
实验准备
在本次实验前,我们需要先贴出上一节计算机那点事儿之0和1中的两个结论,这会在本节中重复用到。
结论1 真值表
结论2 形状特征标识
本次实验共分为3个部分:
- 观察1个比特位的加法,异或门
- 半加器
- 全加器
- 8bit的加法器
实验过程
实验1 1个比特位的加法
首先,我们观察一下2个1bit的数字相加的所有结果,这里所有结果都为二进制;
2个1bit的数字A和B相加 A=0 A=1 B=0 00 01 B=1 01 10 我们可以看到,这里在A和B都为1时,出现了进位,结果为10(是不ten哦),其中进位为1,加和位为0。也就是说,当两个1bit的数字相加时,出现的结果最多为2bit,这个很重要,因此,我们在其余3个结果前都加上进位为0,尽管它是0。
在这里,为了方便我们观察,我们将进位和加和位分开,效果如下:
进位 A=0 A=1 B=0 0 0 B=1 0 1 加和位 A=0 A=1 B=0 0 1 B=1 1 0 我们首先观察进位位的结果,对比文章开始贴出来的真值表,不难看出其结果与与门的结果完全一致,因此,在我们的加法运算中,进位位置就可以用一个与门计算结果。这不得不说是一个令人振奋人心的消息。
继续观察加和位之前,我们再熟悉一下我们的真值表吧;
不知道大家有没有发现,我发现了或门、与非门和加和位的关系:即是或门和与非门的结果的交集(一样的部分)的结果和加和位得到结果是一致的。
这里我们在观察 与门(AND)的真值表不难发现,所谓的交集可以用与门来实现,因此,我们用1个或门、1个与非门和1个与门来得到加和位。在Proteus中实现的效果如下图:
根据Proteus中的效果图,我们可以得到这样一张真值表,这也就是我们介绍的最后一个逻辑电路,异或门。顾名思义,只有当输入A和B不一样的时候结果为1,否则结果为0。
XOR 输入A0 输入A1 输入A 0 0 1 输入A 1 1 0
实验2 半加器
根据实验1的结论,我们就可以得到一个支持两个1bit位相加的电路。在proteus中实现的效果如下:
左侧为输入A和输入B,右侧的输出结果分别是进位位CARRY BIT
和加和位SUM BIT
;
当输入为1 和 0时,CARRY BIT为0,SUM BIT为1;
当输入为1 和 1时,CARRY BIT为1,SUM BIT为0;
实验3 全加器
在实验2中,我们得到的只是半加器,输入只有2个bit。为了将3个1bit的数字进行运算(多出1个进位位输入),我们可以设计如下电路,这也就是我们本次实验要完成的全加器。
基于半加器,我们可以这样理解这个电路:
代表最终加和位R_SUM_BIT的状态:由输入A和B进行异或获取它们的加和位,再和输入的进位位进行异或,得到最终的结果加和位R_SUM_BIT;
代表最终进位位R_CARRY_BIT的状态:由输入A和B取与获得它们本身的进位位,再与AB的加和位与CI进位位的结果的进位位相或,得到最后的进位位R_CARRY_BIT;
上边这两句话比较绕,读起来可能没有看电路图容易理解。
如果大家理解了之后,我们可以看出来,我们的全加器输入端包括1个进位标志位、输入A和输入B,输出包括1个进位位和1个加和位。
现在,我们就可以完成我们8bit的加法器了。
实验4 8bit的加法器
从实验3中,我们已经掌握了将两个二进制数和1个进位位进行计算,所谓的8个二进制,也就是将8个全加器串起来,将前1次的进位位与作为本次的进位标志位输入,最后的效果在Proteus中是这样子的:
- 上边的两排A0-A7为输入A的8个bit位,第二排的B0-B7为输入B的8bit位;
- 在第一个(A0和B0)全加器的进位位,因为它永远不会有进位位,因此我们将其直接连接到地,永远置为0;
- 最后的结果二进制形式为R0-R7,进位位在我们图中表现为D1;
我们来测试一下我们的加法器,计算一个250+100 = 350;
首先,我们需要得到250和100的二进制形式,作为A、B输入:
250: 1111 1010 100: 0110 0100
将其输入到A、B,得到的结果为:进位位为1,R0-R7是0101 1110
我们将结果转换为十进制观察一下,值为350,证明我们的加法器工作正常。
实验结论
至此,我们掌握了如何通过基本的逻辑门搭建一个8位加法器,可以很容易通过这种方式扩展到16位、32位……
后边,我们将继续根据这些研究基础进行拓展,逐步的完善计算机背后的基础运作逻辑。