下面我们来学习加法器,微处理器那我们在前面已经学过 就是CPU,不管哪一种类型的CPU 它主要的是由三个部分来组成的 就是它的控制器,运算器和寄存器 所有程序的执行,都是在运算器里边来完成的 而运算器的核心称为算术逻辑单元 就是ALU,而ALU是由各种逻辑门构成的 它的主要功能就是实现二进制的算术运算 逻辑运算以及其它的一些操作 而ALU的基本功能,就是它的算术运算 在现在计算机里头,我们通过前面引入补码 在现代计算机中,通过引入补码 我们已经知道能够将减法运算转换为加法的运算 而乘法的运算实际上是加法和移位的运算 或者它移位的操作,那么除法运算呢,是乘法的逆运算 所以它是移位和减法的运算 而减法的运算又可以转换为加法的运算 所以,ALU它的基本运算功能就是加法运算 或者说ALU的基本功能部件就是加法器 下边我们简单的来学习一下加法器 它的基本原理,加法器那又可以分为半加器和全加器两种 所谓半加器就是不考虑低位向上的进位 这样的一种加法器称为半加器 相应的全加器就是要考虑进位的一种加法器 不管是半加器也好,全加器也好 我们都指能够实现一位二进制运算的加法器 下边我们来看一下,半加器这样一个电路 这个电路大家可以看出来,上面这个门是异或门 底下的这个门电路是与门 由一个异或门和一个与门就构成了半加器 那么这里A和B是我们要输入的两个二进制位 那么S就是它的输出,C是它向高位的进位 从这个电路里头,大家应该能够得出输出S跟输入端A和B 之间具有的逻辑关系,就是A和B的异或关系 而它的进位和输入端的关系就是相与的关系,这就是半加器 我们来看一下半加器的逻辑关系 或者说它的输入与输出的之间的真值表 因为它的输出等于输入的异或 所以当输入状态相同的时候S是0 输入状态不同的时候S是1,那么输入端都是0的时候结果为0 这个没有问题,那么输入端都是1的时候结果还是0 是因为1加1就等于0,但是有进位,大家看这个真值表里头 当输入端都是1的时候输出是0,但是进位C端是1 这个半加器的逻辑电路图和它的真值表 那么全加器呢,就是要考虑进位的一种加法器 它是在两个半加器的基础上再加上一个或门来构成的 这就是全加器的逻辑电路,我们来简单的分析一下 这个全加器输入和输出的关系 在全加器的输入端除了要求和的两个二进制位 A和B之外还包括了一个来自低位的进位C端 那么它的输出 除了它们的求和S以外还有向高位的进位Cout端 那么好,我们下面用一个例子来看一下它们的关系 假设我们的输入端两个数是0和1,就是要做一个0加1的运算 它们低位向前的进位是0,那么这个时候,我们看异或门 它的输出就是1,那么这个时候,进位位是0 所以右侧最后一个异或门它的输出也是1 这个时候就是说它们的结果会是1 大家会很明显就证明了0加1再加0 肯定结果是1,会不会有进位呢?不会有进位 因为这个时候,大家看,两个与门的输出是0 所以或门的输出也就是0 好如果我们这个时候把输入端的进位变成了1 那么也就说这个时候我们要做一个0加1再加1的运算 按我们本能的这个或者我们直接得出来结果 我们会知道输出这个时候肯定应该是0 而且有进位,我们看看它是不是如此,因为A和B一个是0 一个是1,所以左侧第一个异或门它的输出端输出状态是1 因为有进位,这一端也是1 所以右侧最后一个异或门它的输入状态相同 所以S就等于0,那的确就是0,应该有进位对吧 那么两个与门,这个时候一个输出0,一个输出1 或门的输入端一个为1,一个为0,所以或门的输出一定是1 这就是它们的结果,所以从这样一个关系上 就是我们用两种这样一个数字输入端的状态 我们就验证了这样一个全加器 它确实真值表就如同右边这个真值表一样来表示 它们输出和输入的关系 或者说确定的做到了两位二进制加法的求和 是没问题的,这个是一种类型的全加器 请大家注意逻辑电路的设计中间有这样的一种规则 就是其实不论是逻辑电路设计还是软件设计 也就是说它的设计结果都很难会是 都很少会是唯一的一种设计,也就是说它可能有多个结果 但是它们都是正确的,对于逻辑电路来讲 怎么样去表述它的正确还是不正确 主要是在相同的这种情况下 我们不管换哪一种逻辑电路 都要保证它的输出和输入之间满足它们要求的 这样的一个逻辑对应 我们现在又看到了这是另外一种全加器 它虽然在电路的设计电路图上 就是它这个线路的设计上不一样 但是那它们都符合着刚才我们要求的这种全加器 所必须要求的逻辑关系 就是说它们输入端都满足1加1会等于0 1加1加0还是会等于0有进位 对吧,所以相同的逻辑关系或者说相同这种逻辑功能 我们可以用不同的逻辑电路来实现 这个在未来的学习中,也是对大家非常有帮助的 就像我们用两个与非门可以构造出RS触发器 并且RS触发器是作为一个独立的逻辑功能可以把它 抽象出一个统一的逻辑符号是一样的 我们的全加器,也是一个具有完整功能的逻辑部件 所以它也可以通过封装之后,用一个统一逻辑的符号来表述 这就是全加器的逻辑符号,所以到这里我们可以看出来 我们用基本逻辑门构造出了一般的常用的一些其它的逻辑门 比如像与非门,或非门等等 我们又通过与非门构造出了RS触发器 又构造出了D触发器并且通过封装和抽象 使它们作为一个独立的逻辑符号存在 或者说一个独立的逻辑器件存在 那么我们现在从这些基本的逻辑门我们又通过一种组合 又构造出了半加器构造出了全加器 而且构造出了不同的全加器 同样我们也通过封装,用统一的逻辑符号抽象出来 同样我们也通过封装,然后,用抽象出一个统一的逻辑符号 一个全加器能够完成两个一位二进制数的加法 那么用N个全加器,就可以实现两个N位二进制数的求和 这个图是四个全加器连接在一起来 实现两个四位二进制数的加法运算 这边是它门的输入端,它的运算过程是这样 分别每一个全加器都可以输入两个一位二进制数 然后那低位的进位通过这样一个路一级一级的传到前面去 所以这个加法器我们也叫做 四位涟波进位加法器 也就说它的进位位像波浪一样一级一级的向前传 所以它也属于串行加法器 这种加法器,它的效率相对比较低 因为每一个全加器或者甚至每一个门电路 它的触发或者它的信号的向前的传输 实际上都是有一定的延迟时间的 那么这个低位向前一级一级的向前进位 所以它的整个运算时间要取决于它所有加法器 它们的延迟时间之和 那么今天在现代的这个计算机CPU里头 我们的加法器都是采用的并行加法器 有关这些我们就不在这里再详细介绍下去了 我们学习这些触发器也好,加法器也好 实际上通过这样一个简单的介绍 完全不足以让同学们了解 它们的整个详细的工作原理 或者说我们实际上这门课里 完全没有涉及到它们内部更详细的电路 我们学习这些我们希望给大家传达一个这样的信息 就是说我们不论是触发器也好加法器也好,甚至是CPU也好 甚至到最后到计算机我们整个的电路都是由 最基本的像基本逻辑门这样的原子细胞器件通过逐渐的 组合封装抽象再组合再封装再抽象 像搭积木一样一层一层搭上来 最终构成了我们今天复杂的计算机系统 这就是我们所谓的自底向上实现系统构造的 一种思路或者方法,这种思路或者方法 是未来同学们从事系统系统设计非常重要的素质 好,这一讲我们就到这里