好,我们这一讲来学习触发器和加法器 我们在前面的学习中,已经讲过了 由基本逻辑门怎么样构造出一些其它的逻辑门电路 那么说来说去什么叫逻辑电路呢 逻辑电路就是以二进制为原理 由各种逻辑门构成,实现数字信号逻辑运算和操作的电路 逻辑电路总体来讲,可以分为两种类型 一种称为组合逻辑电路,一种称为时序逻辑电路 什么叫组合逻辑电路,所谓组合逻辑电路 简单的来讲,就是没有记忆功能的逻辑电路 也就是说它当前的输出只取决于它当前的输入 给之前的状态没有任何关系,而相应的时序逻辑电路 就是有记忆功能的电路 那么也就是说它现在的输出不仅跟它当前的输入有关 还和它之前的状态有关系 我们这一讲要讲的触发器和加法器 就分别属于时序逻辑电路和组合逻辑电路 我们先来看一下触发器 触发器是由基本逻辑门电路构造出来一个基本 触发器是由基本逻辑门构造出来的一种逻辑电路 它具有记忆功能,所以它属于时序逻辑电路 所谓记忆功能是这样子的,就是说首先在通电的情况下 它可以输出高电平或者输出低电平 当有触发信号出现的时候 那么它的输出状态就会翻转 就是说由高电平就会变成低电平或者由低电平变成高电平 如果在没有触发信号的时候,那么它的状态会保持不变 除非断电,所以这个就是触发器它本身的特性 从这个描述上我们可以看出来 它就是说当你这个没有翻转信号,没有触发信号 又有电的情况下,它的状态是可以保持的 这个就是它所谓的记忆功能,我们下面来看一下 这个电路,这个电路我们可以看出来 它是两个与非门构成的 一个与非门的输出接到另外一个与非门的输入 两个都是一样,构成的这个电路 我们称为RS触发器,这个S端和R端 我们称为这个触发器的输入端,而相应的Q和Q非 我们前面讲个上面一横杠就表示取反的意思 在这里我们就念做它是非的这样子的读法 就是Q和Q非称为输出端,当然在这里Q和Q非互为相反状态 那么Q作为主输出端,所以我们通常以Q端的状态来描述 那么对于这个电路来讲,它的输入和输出有什么样关系呢 我们用这个表来看一下,当它的输入端S为0 R为1的时候,我们看因为S为0 所以G1这个与非门肯定输出1,所以这个时候Q就是1 那么Q是1 它又链接到了G2这个与非门 所以G2与非门的两个输入端都是1,就确保了Q非是0 所以这个时候,Q和Q非的状态,就是这样一个状态 那么如果现在换另外一种状态 如果这个时候S等于1,R等于0,那么因为R等于0 那么G2这个与非门的输出肯定就等于1了 那么所以这个时候,输出端Q和Q非就变成了0和1 这样子的话,就是两种稳定状态 所以RS触发器,我们也称为一种双稳态电路 那么如果是S和R都是1呢,那么我们看这个时候 两个与非门,每一个与非门的输入端都是1 那么这个与非门的输出就要由 另外一个输入端的状态来决定了 另外一个输入端的状态因为它又是输出的一个返回 所以这种时候呢,它的输出就不再会变化 这个时候Q和Q非端都会保持原来的状态不变 相应的如果这个R和S都是0,那么这就是麻烦了 因为两个都是0,即与非门的输出肯定两个都是变成1 两个都是1,它就会反馈回来 所以这种情况我们一般在RS触发电路里头 我们不允许它出现 也就是去掉这样子的一种状态 这个就是RS触发器它的输入和输出之间的关系 RS触发器,作为一个具有独立功能的逻辑器件 所以它是可以独立存在的 那么如果我们把它作为独立存在的这样一个器件 我们用一个框把它框起来,那么也就是说这个时候 我们不想它内部是怎么样构成的 我们实际上只希望关心它输入和输出之间 具有什么样的关系,那么这种用一个框把电路框起来 我们就把它叫做封装,封装的目的是 我们希望用一个符号来表示这个框或者表示这个电路 那么这个过程我们就叫做抽象 所以从它框起来到用一个符号来表示,这个整个的过程 我们就说封装和抽象的过程 封装本身这个名词在面向对象程序设计里边 是一个非常常见的一个名字或者说是一种功能 那么在硬件里头照样它也是一种方法 也就是说我们搭建了一个电路 这个电路在内部可能非常的复杂 搭建完了以后那,我们这个电路 我们不想再关心它内部是怎么搭建的了 我们现在只关心它有什么样的输入会得到什么样的输出 那么我们就把整个电路用一个盒子把它封起来 这个就是封装,封装完了之后 我们总是要来表示这个盒子,就像这里RS触发器 我们不想再表示成一个与非门又一个与非门 而是想表示成一个统一的符号,这就是右侧这符号 那么这个过程就叫做抽象,抽象结束之后 在这样一个逻辑图里,我们就可以看到S就是输入端 R也是输入端,相应的Q是输出端 我们从前面对的这个S触发器的这个逻辑关系 也就是它的输入和输出之间的这个逻辑真值表 我们已经看出来,当S等于0的时候,Q端会等于1 所以我们称S端为置1端,或者也叫置位端 那么R端为0的时候,我们说它正好可以是Q端是0 所以我们称R端为清0端或者叫复位端,这个就是RS触发器 我们再来看这样一个电路,这个电路里头 这一部分就是我们刚才看到的RS触发器 只不过在这个触发器的前面又加了两个与非门 这样子的电路构成的电路我们称为D触发器 D触发器也就是在RS触发器的基础上 又添加了两个与非门,在这样一个电路里头 我们把D端称为它的D触发器的输入端 CP端我们称为它的控制端或者是触发端 而相应的同样Q和Q非端就称为它的输出端 我们可以简单的来分析一下这个电路 当我们的CP端,为0的时候 大家会看到G3和G4这两个与非门都会输出1 这样就相当于在刚才RS触发器的两个输入端 都同时输入的高电平 按照我们前面学的RS触发器的逻辑真值表 我们会知道这个时候,它的输出状态是不变化的 所以当D触发器的CP端出现0电平的时候 D触发器的输出会保持不变 如果我们把CP端变成高电平的话 那么也就说CP端为1的话,我们可以看出来这个时候 G3和G4两个与非门它们的其中一个输入端就是 CP端就是高电平,那么这个时候 两个与非门的输出就取决于它们的另外一个输入端 对于G3这个与非门来讲 它的输出这个时候就取决于D端的状态 所以这个时候,D端状态就决定了它的输出端Q的状态 如果D端这个时候是0,那么G3的这个与非门的输出就是1 那么这个时候Q端就会是0,那么如果D端这个时候是1 G3这个与非门会输出0,相应的Q端它就会输出1 所以也就是说D触发器 当它的触发端CP端为高电平的时候 D端的状态就决定了Q端的状态 或者说Q端就保持了现在D端的状态 或者Q端就反映了D端目前的状态 那么如果这个时候CP又变成低电平的话 那么Q端就保持了之前D端的状态 所以D触发器也同样是一个具有记忆功能的触发电路 或者说时序逻辑电路,从这样一个例子里 我们可以看出来D触发器也是一个具有独立功能的逻辑器件 所以它也可以通过封装之后,抽象为这样一个逻辑符号 这就是D触发器的逻辑符号,下边的两个端CP是它的控制端 D端是它的输入端,而上面Q和Q非就是输出端 到此我们看我们从基本逻辑门的与门和非门构成了与非门 我们用两个与非门构成了RS触发器,通过封装和抽象之后 就用一个统一的符号来表示RS触发器,我们又用RS触发器 再加两个与非门构成了D触发器,同样的我们又把D触发器 封装在一起抽象为一个逻辑符号 我们的电路在越来越复杂 但实际上它都是由最基本的与门给非门来构成的 那么我们讲了这样两种类型的触发器 我们可以总结出来,触发器是在有电源的情况下 它的输出端总是会保持为一种确定的状态 或者为零或者为1 所以这就表示触发器是可以存储一位0或一位1的一种器件 也就是它是一种具有记忆功能的逻辑器件 触发器在计算机中起什么样的作用呢? 因为它具有记忆功能 我们说计算机里具有记忆功能的部件 我们已经知道的主要有存储器、有寄存器 好这些都是有记忆功能的部件 所以触发器就是用来制作寄存器或者存储器的 任何时候触发器的输出端都会保持一种确定的 稳定的状态,一个触发器能够存储一位0或者一位1 那么,我们说过内存一个单元里 是可以把8为二进制码的 那么也就说我们实际上可以用8个D触发器 来构成一个内存单元