4 常用组合逻辑功能器件 4.1编码器 编码:在数字系统里,把某一信号输入变换为某一特定的代码输出,可能是8421码、格雷码等,但每组代码具有某一特定的含义,就是编码 编码器:具有编码功能的逻辑电路。编码器有若干个输入端,在某一时刻只有一个输入信号被转换为二进制码。 4.1.1编码器的定义与功能 1. 4线-2线编码器 4线-2线编码器的功能表如下 表4.1.1  功能表中是输入高电平有效。 由功能表可以得到下面的逻辑表达式: 见书上126页 由逻辑表达式可以画出逻辑图 图4.1.1显示  为1时,输出是01,其它的输入取0动态 这个逻辑电路就可以实现表4.1.1的功能。 例如当为1时,是01。即对应输入某一个是1时,输出即为相对应的代码。 说明:编码器也可以设计成低电平有效。 2. 键盘输入8421BCD码编码器 设用来代表十个按键,每个按键对应一个十进制数,0—9。 每次按下一个键,对应有一组8421码输出,输入和输出关系如下表所示 表4.1.2   :标志位(控制标志),=1,表示使用按键。 =0表示不使用按键。 主要是用来区别 不按任何键时 ABCD=0000 =0 按时也有ABCD=0000 但=1 输入是低电平有效 由功能表可以 写出逻辑表达式     由功能表可以画出逻辑图 图4.1.2  显示A、B、C、D中有一个是高电平,或非门的输出,或非门的输出就是高电平,ABCD=0000 (=0)。 由图可以看出A、B、C、D中只要有一个是高电平,或非门的输出就是低电平,与非门的输出就是高电平,可以用来区别不按任何键时 ABCD=0000 (=0)和按时也有ABCD=0000 (=1) 3. 优先编码器 上面的编码器每次只允许一个输入端上有信号,而在实际中还常常出现多个输入端上同时有信号的情况。比如,计算机有许多的输入设备,在某一时刻可能有多台设备同时向主机发出中断请求,希望输入数据,这就要求主机能自动识别这些请求信号的优先级别,按顺序进行编码,这时候就需要优先编码器。 4线-2线优先编码器的功能表如下 表4.1.3  输入是高电平有效,由功能表可以看出: 对于,只有当、、均为0(无效电平)=1(有效电平),输出为0. 对于,无论其它的3个输入是否是有效电平,只要有效,则输出为1。 也就是说的有效级最高,最低。 由功能表可以写出逻辑表达式为:   根据上面的表达式就可以画出逻辑电路图 4.1.2 集成电路编码器 1. 8线-3线优先编码器74148 它的功能表如下 表4.1.4  输入是低电平有效,输出用反码表示。 说明: (1)8个信号输入端,3个二进制码输出端。另外还有输入使能端,输出使能端,工作状态标志。 (2)=0时,电路工作。 =1时,电路不工作,输出 =1 =1。 (3)=0,且输入有信号时, =0 =0,无输入信号时, =1。 这样输入端0有信号时,输出 =0。 无输入信号时,输出 =1。 也就是说根据就可以判断,是否是有效编码。 (4)只有在=0,且所有的输入端都为1时,才为0,其它情况下为1,它主要是用于级连,即用多个优先编码器构成有更多输入端的编码器。 (5)由功能表可以看出,电路的优先级别次序是7、6、5…0,7的优先级别最高,0最低。 根据功能表可以写出来逻辑表达式 见书上(写出、、、、) 应用 例 用两片74148组成16位输入、4位二进制码输出的优先编码器,逻辑图如下所示,分析电路的工作原理 图4.1.4  解:(1)当时,,使,两个74148均禁止编码,它们的输出,由电路知,==1,所以这时电路的代码输出DBCA=1111是无效编码输出。 (2)当时,高位片允许编码,当无编码请求时,,使,允许低位片编码,因为高位片的,使门C、B、A打开,它们的输出取决于低位片的,而D=,总是等于1,所以输出代码在1111-1000之间变化。如果单独有效,输出为1111;如果和任意其它输入同上优先,则输出为1000,低位片以的优先级最高。 (3)当且中有编码请求(至少有一个是低电平)时,,使,高位片编码,低位片禁止编码。高位片的编码级别高于低位片。这时D==0,门C、B、A的输出取决于高位片的,电路的输出代码在0111-0000之间变化,高位片中的优先级别最高。 总结:电路实现了16位输入的优先编码,具有最高的优先级。 2. 优先编码器74LS147 74LS147的功能表如下 表4.1.5  从它的功能表可以看出,它实际上就是一个二――十进制(二――十进制码就是8421BCD码)编码器,输入是低电平有效,输出用反码表示。的优先级别最高,最低。 例 用74147和适当的门电路构成输出为8421BCD码并具有编码输出标志的编码器 解:由74147的功能表可知,它的输出是8421BCD码的反码,所以为了实现题中的要求在它的输出端加了反相器。是输出标志,要求在输入端都是高电平时,是1,输入端中有低电平信号时,是0,即编码输出标志应该是输入信号的与非运算结果。 可以实现题中的要求的电路图如下 图4.1.5  4.2 译码器/数据分配器 译码:是编码的逆过程,它是对具有特定含义的二进制码进行辨别,并转换成控制信号或另一种代码。 译码器:可以完成译码功能的电路。 4.2.1 译码器的定义及功能 译码器可分为两种类型:一种是把一系列代码转换成和它一一对应的有效信号,称为唯一地址译码器。 另一种是把一种代码转换成另一种代码,称为代码转换器。 1. 二进制唯一地址译码器 它的一般框图如下 图4.2.1  有个输入端,个输出端,一个使能端。 在使能端是有效信号时,对应一组输入代码,只有一个输出端是有效电平,其余的输出端都是无效电平。 2输入变量的二进制译码器的功能表如下所示 表4.2.1  输入和输出都是低电平有效。 当使能端为1时,无论A、B是什么状态,输出全是1,译码器处于非工作状态。当使能端为0时,对应于输入A、B的某中组合只有一个输出是0,其余各端的输出都是1。 由上面的功能表可以写出逻辑表达式为:     根据逻辑表达式,可以画出逻辑图 图4.2.2  比如,AB=00时,输出是0,、、是1。 2. 二-十进制译码器 它把对应于四位二进制数的8421BCD码,译成对应于0—9的十个十进制数,有4个输入端,,10个输出端,也称4线-10线译码器。 功能表如下所示 表4.2.3  从功能表可以写出,即当时,=0,对应于十进制数的0,其它的和这个类似。 由功能表可以画出逻辑图 图4.2.5  3. 七段显示译码器 下面是数字显示电路组成方框图 图4.2.6  显示译码器能够把8421BCD码译成能用显示器件显示出的十进制数。 (1)常用的显示器件 显示器件可以显示数字、文字和符号,现在已有多种不同类型的产品。目前显示器件向小型化,低功耗,平面化方向发展。 数码的显示方式①字形重叠式:把不同字符的电极重叠起来,要显示某个字符的时候,只需要使相应的电极电亮即可。如辉光放电管等。 ②分段式:数码由分布在平面上的的若干段发光的笔划组成。如荧光数码管等。 ③点阵式;是一些按一定规律排列的可发光的点阵,利用光点的不同组合,显示不同数码。 数字显示以分段式最普遍。 (2)七段式数字显示器 七段式数字显示器有以下几类(1)半导体数码管(2)荧光数码管 (3)液体数字显示器 (4)气体放电显示器。 七段式数字显示器利用不同发光段的组合,可以显示出0—15等阿拉伯数字,实际中10—15不采用,而是用2位数字显示器显示。 七段式数字显示器如下 图4.2.7   a、b、c亮显示7,a、b、g、c、d亮显示3。 (3) 七段显示译码器 功能:把8421BCD码译成对应于七字段显示器的七字段信号,驱动显示器件显示出相应的十进制数码。 如果显示器件是半导体显示器,且半导体采用共阴极接法,则七段显示译码器的功能表如下所示。 表4.2.4  4.2.2集成电路译码器 1. 74138集成译码器 (1)原理 逻辑图 图4.2.3  有3个输入端A、B、C。8个输出端。另外设置了、、3个使能输入端。 功能表 表4.2.2  由功能表可以写出:  即 其它各输出端的逻辑表达式自己写。 (2). 应用 ①作逻辑函数产生器 例 用一个3线-8线译码器实现函数 解:把输入变量X、Y、Z分别接到C、B、A端。则上面的函数相当于  对138来说,令=1、=0、=0,则  同理   而 即要实现函数 先令138的=1、=0、=0,再把X、Y、Z分别接到C、B、A端。 则 逻辑图如下 图4.2.4  ② 作数据分配器(后面讲) 2.7442 二-十进制译码器 它可以把8421BCD码译成对应于0---9的十进制数。译码器有4个输入端,10个输出端。它的功能表见表4.2.3  输出是低电平有效。 图4.2.5  是它的逻辑图和引脚图。 从逻辑图和功能表都可以写出,即当时,=0,对应于十进制数的0,其它的和这个类似。 3. 7448 中规模七段显示译码器 它的功能表如下 表4.2.4   、、是它的三个辅助控制端 (1) 灭灯输入端,有时作输入,有时作输出。 作输入使用且=0时,无论其它的输入端是什么电平,所有各段a—g均为零,所有字形熄灭。 (2)试灯输入 =0时,是输出端,且=1,此时无论其它的输入端是什么电平,各段a—g均为1,显示字形8。这个输入端常用来检查7448本身及显示器件的好坏。 (3) 动态灭0输入 =1,=0,且输入DBCA=0000时,各段输出a—g均为低电平,与DBCA=0000对应的0熄灭,所以称灭0输入。 利用=1,=0,可以实现某一位的消隐。这时是输出端且=1。 (4) 动态灭0输出 作输出使用时,受控于、。 =1,=0,DBCA=0000时,=0。 =0或=1且=1,=1,主要用于显示多位数字时,多个译码器之间的级连。 图4.2.8  7位显示器由7个译码器7448驱动,各片的都接高电平。 第一片的=1,=0,DBCA=0000,满足灭0条件 ,输出a—g均为0,=0无显示。 第二片的=1,=0,DBCA=0000,满足灭0条件 ,输出a—g均为0,无显示。 第三片的=1,=0,DBCA=0000,满足灭0条件 ,输出a—g均为0,无显示。 第四片到第七片的=1,=1,正常译码,按输入的DCBA去点亮各段。 如果第一片的输入代码不是0000,而是任何其它的BCD码,则这一片正常译码并驱动显示,同时使=1。这样第二片、第三片就丧失了灭0条件,电路就可以对最高位的非零数字正常显示。 4.2.3 数据分配器 数据分配器:把一个数据源来的数据根据需要传送到不同的通道上去,实现数据分配功能的逻辑电路。 图4.2.9  数据分配器可以用唯一地址译码器实现。 74138就可以把一个数据源来的数据分配到8个通道上去。这时的原理图如下所示 图4.2.10 作使能端,作数据输入端,接低电平。 C、B、A是选择通道地址输入,是数据输出端。 由前面的功能表可知  当CBA=000时,选择0通道, 其它的输出是高电平 即当地址CBA=000时,只有输出得到了与输入相同的数据波形。 数据分配器的应用:(1)可以用它将一台PC机与多台外设连接,将计算机的数据分送到外设中去。 (2)与计数器结合组成脉冲分配器。 (3)与数据选择器连接组成分时数据传送系统。 4.3 数据选择器 4.3.1数据选择器的定义及功能 数据选择器又称为多路开关,可以把多路输入数码选其中的一路输送到输出端上(公共的数据线上) 图4.3.1  数据选择器示意图 这里以4选1数据选择器为例,说明它的工作原理及基本功能。 为了对4个数据源进行选择,需要使用两位地址码产生4个地址信号,用于通道地址选择。还需要一个输入使能端,(控制端),用于多片数据选择器的并联。所以可以列出它的功能表如下: 表4.3.1  由功能表可以写出逻辑函数式   为CBA的最小项 根据表达式可以画出逻辑图 图4.3.2  同样的原理可以设计出更多输入通道的数据选择器,被选数据源越多,所需地址码的位数也越多,若地址输入端为,则可选的输入通道数为 4.3.2 集成电路数据选择器 1.74LS151集成电路数据选择器 它的逻辑电路图如下 图4.3.3  它是一种典型的集成电路数据选择器,有3个地址输入端CBA,可以选择8个数据源,具有两个互补输出端,同相输出端和反相输出端。使能端是低电平有效。 它的功能表如下所示 表4.3.2  使能端是低电平有效,即=0时,数据选择器正常工作。 电路的输出的表达式是  为CBA的最小项 说明:(1)74LS151是1位数据选择器,需要选择多位数据时,可以把几个一位数据选择器并联(使能端并联,地址输入端并联) 图4.3.4  用两片1位八选一数据选择器并联组成2位八选一数据选择器,更多位时用更多的片子并联。 (2) 利用使能端,可以使多片74LS151级连,构成更多通道的数据选择器 图4.3.5  用两片74LS151构成16选1数据选择器。 连接方法:第一片的直接作地址选择输入,第二片的反相以后作为地址选择输入。 地址选择输入是四位 DCBA DCBA=0000—0111时, DCBA=1000-1111时, 即DCBA=0000-1111时, 是16选1数据选择器。 2. 数据选择器的应用 (1)作逻辑函数产生器 对数据选择器,有  时, 是地址变量的最小项。 若=1,则对应的最小项在中出现; =0,对应的最小项不在中出现。 用数据选择器产生逻辑函数的过程为: 把函数变换成最小项表达式的形式 数据选择器的地址信号作函数的输入变量,数据输入端作控制信号。 使能端保持有效电平,根据最小项表达式,确定各数据输入端的值。 例4.3.1用八选一数据选择器74LS151产生逻辑函数  解:最小项表达式   确定各数据输入端的值 都应该是1,因为式中没有出现最小项,所以都应该等于0。 所以逻辑图为 图4.3.6  和用不同的颜色显示 (2)实现数据的串并行转换 图4.3.8  电路由一个八选一数据选择器和一个三位二进制计数器构成。计数器可以累计时钟脉冲的个数,时钟脉冲一个一个送入时,计数器的输出端从000到111依次变化。与数据选择器的地址输入端C、B、A相连,C、B、A就随时钟脉冲的逐个输入从000到111依次变化,选择器的输出就接通…。如果数据选择的输入端…和一个并行八位数01001101相连,输出端就可以得到一串随时钟节拍变化的数据0-1-0-0-1-1-0-1,这是串行数据。 这样就实现了数据的串并行转换。 4.4 数值比较器 4.4.1 数值比较器的定义及功能 数值比较器:对两个数A、B进行比较,判断它们的大小的逻辑电路。比较的结果有A>B、A<B、A=B三种结果。 1. 1位数值比较器 可以比较两个1位数A、B的大小,是多位比较器的基础。A、B都只能取0或1两种值,比较的结果有A>B、A<B、A=B。所以可以写出1位数值比较器的真值表是 表4.4.1  由真值表可以写出如下的逻辑表达式:    根据逻辑表达式可以画出逻辑图 图4.4.1  实际应用中,可以根据具体的情况选用逻辑门。 2. 两位数值比较器 两位数值比较器的比较原理是这样的: 设某两个两位数是,先比较高位,如果两位数的高位不相等,则高位的比较结果就是两数的比较结果,与低位无关。高位相等时,再比较低位,以低位的比较结果作为两数的比较结果。 为了减少符号的种类,用、、表示逻辑函数。所以两位数值比较器的真值表为 表4.4.2  由表可以写出逻辑表达式为 = = = 根据表达式可以画出逻辑图为(利用1位数值比较器的输出作中间结果): 图4.4.2  显示讲解=1,=0,使与门、、封锁,而或门打开,低位比较结果不能影响或门,高位比较结果从或门直接输出。 依据的原理是:如果两位数和的高位不相等,高位的比较结果就是两数的比较结果,与低位无关。这时,由于中间函数=0,使与门、、封锁,而或门打开,低位比较结果不能影响或门,高位比较结果从或门直接输出。 4.4.2 集成数值比较器 1. 集成数值比较器74LS85的功能 74LS85是4位数值比较器,逻辑图 图4.4.3  用不同的颜色闪烁显示与、与、与、与以及、和。 由逻辑图可以看出,电路的输入变量包括与、与、与、与以及A与B的比较结果。A和B是另外两个低位数,、和是A与B的比较结果。设置它们的目的是为了能和其它的数值比较器连接,以便组成位数更多的数值比较器。 功能表: 表4.4.3  由功能表可以看出这个比较器的比较原理和两位数值比较器的比较原理是相同的,两个四位数的比较,先从两个四位数的最高位开始比较,如果它们不相等,则这一位的比较结果就可以作为两数的比较结果,如果最高位相等,再比较次高位,余下的位的比较相同。 由功能表可以写出逻辑表达式  用这个比较器仅对四位数比较时,应对、和进行处理,令 ,。 2. 数值比较器的位数扩展 扩展的方式有串联和并联两种 串联方式: 图4.4.4  用两个四位比较器扩展成一个八位比较器。 对于两个八位数来说,如果高四位相同,则两个八位数的大小由低四位的比较结果而定,也就是说低四位的比较结果是作为高四位的条件,所以扩展的时候要把低四位比较器的输出端分别和高四位比较器的、和连接。 并联方式: 图4.4.5  用五个四位比较器并联成一个16位的比较器,采用两级比较方式。 先把要比较的16位数按高低位分成4组,每组4位,各组的比较并行进行。 再把各组的比较结果经4位比较器进行比较,得出结果。 优点:比较的速度快。 4.5 算术运算电路 4.5.1 半加器和全加器 半加器和全加器是算术运算电路中的基本单元,是完成1位二进制数相加的一种组合逻辑电路。 1. 半加器 两个1位二进制数的加法运算如果只考虑两个加数本身,而不考虑由低位来的进位,这种运算称为半加。设A、B是加数和被加数,S表示和数,C表示向高位的进位位。表示半加运算的功能表如下 表4.5.1  由这个表可以写出来逻辑表达式   把上式变换成与非形式   由与非门组成的实现半加运算的电路为 图4.5.1   因为,即S是A、B的异或运算结果,所以半加器也可以用异或门和与门来实现。 半加器的代表符号 2.全加器 两个1位二进制数的加法运算如果不仅考虑两个加数本身,而且考虑由低位来的进位,这种运算称为全加。设A、B是加数和被加数,表示本位和数(又称全加和),表示向高位的进位位,表示相邻低位来的进位数。根据全加器的功能,可以列出它的真值表为: 表4.5.2  为了求出和的逻辑表达式,画出和的卡诺图 图4.5.2   写表达式中的第一项时,卡诺图中的第一个0能否同时闪烁 为了方便地获得它们的与-或-非表达式,用圈0的方法化简得     根据这个式子可以画出1位全加器的逻辑图 图4.5.3可以链接  代表符号 4.5.2 多位数加法器 1. 并行相加串行进位加法器 两个4位二进制数的相加运算可以用全加器来实现 图4.5.4  用4个全加器。第一个的进位输出作为下一个的进位输入,所以任一位的加法运算必须等低一位 的运算完成以后才能进行,这种进位方式就是串行进位。 缺点:运算速度不高 2. 超前进位集成4位加法其74LS283 所谓超前进位就是指每位的进位,只与加数、被加数有关,而与低位的进位无关 由前面的卡诺图4.5.2可以写出     在这里定义两个中间变量和   当时,,,即产生进位,所以把称为产生变量。 若,则,可以得出。即时,低位的进位能传输到高位的进位输出端,把称为传输变量。这两个变量都和进位信号无关。 把和的表达式代入和的表达式,可以得出   由此可得各位进位信号的逻辑表达式如下:     由此可知,各位进位信号只与变量、和有关,而是向最低位的进位信号,它的值为0,这样各位的进位信号就只与两个加数有关,它们可以并行产生。 74LS283就是利用超前进位的概念构成的集成4位加法器 图4.5.5用不同的颜色闪烁显示输入端、输入端,最低位进位输入端  输入端有:加数输入端, 被加数输入端,最低位进位输入端 输出端有:4位和数输出端,进位输出端。 3. 超前进位产生器74182 对超前进位加法器来说,随着位数的增加,超前进位逻辑电路越来越负载,为了解决这个矛盾,设计出了专用的超前进位产生器,用多挂超前进位产生器连接,既可以扩充位数,又不会使逻辑电路太复杂。 图4.5.6  用不同的颜色闪烁显示输入端、产生输入端、传输输入端。和下面的讲解同步 上面是超前进位产生器74182的逻辑图和引脚图 输入端有:进位输入端,是最低位的输入信号。 进位产生输入端; 进位传输输入端。 它们都是低电平有效. 输出端有:进位产生输出端;进位传输输出端。 它们都是低电平有效,可以实现多个超前进位产生器的连接。 进位输出端、、(是各位的进位信号) 表4.5.3a 输 入 输 出  G3 G2 G1 G0 P3 P2 P1 FG  L × × × × × × L  × L × × L × × L  × × L × L L × L  × × × L L L L L  所有其他组合 H  是的输出功能表 表4.5.3b 输 入 输 出  P3 P2 P1 P0 FP  L L L L L  所有其他组合 H  是的输出功能表 表4.5.3c 输 入 输 出  G0 P0 Cn Cn+x  L × × H  × L H H  所有其他组合 L  是的输出功能表 表4.5.3d 输 入 输 出  G1 G0 P1 P0 Cn Cn+y  L × × × × H  × L L × × H  × × L L H H  所有其他组合 L  是的输出功能表 表4.5.3e 输 入 输 出  G2 G1 G0 P2 P1 P0 Cn Cn+z  L × × × × × × H  × L × L × × × H  × × L L L × × H  × × × L L L H H  所有其他组合 L  是的输出功能表 和可以用来实现多个超前进位产生器的连接,这样既可以扩充位数,又不会使电路太复杂。具体的连接方法见 图4.5.10  4.5.3 减法运算 减法运算可以采用减法器来实现,半减器和全减器的设计方法和加法器相同。 实用上,为了简化系统的结构,减法器常常不另外设计,而是通过把减法运算变成加法运算,用加法器来实现减法运算。下面来介绍这种方法的原理 1. 反码和补码 原码:设数码中不含有符号位。以前应用的自然二进制码称为原码。 反码:把原码中的所有的0变1,1变0后就得到了这个码的反码。 原码和反码之间的关系是这样的 原码可以通过从1111中减去反码得到,即原码和反码的关系为:  是数码的位数 补码定义为:  所以补码和反码的关系为: =+1 这样,一个数的反码就可以通过将原码经反相器得到。再把反码加1就可以得到补码。 2. 由加补码完成减法运算 设把A、B两个数相减  即A减B可以由A加B的补码并减去完成。可以用全加器来实现,是加数,是被加数,1可以通过把低位进位置1即可。 下面来看一下减怎么实现 位二进制数相加,当最高位有进位时,它这一位的值是(例如4位二进制数的加法,最高位有进位是第五位,它的值刚好是)与相减,差是0,不需要借位。 当最高位无进位,它的这一位就是0 ,0减去,差是1,要发出借位信号 。 这也就是说只要把最高的进位信号反相就可以实现减的运算 下面分两种情况来分析减法运算过程 (1)的情况。设A=0101,B=0001 求补相加演算过程如下 第164页  直接作减法运算则有 第165页 两种运算结果完全相同,即时,所得的差就是差的原码,借位信号是0 (2)的情况。设A=0001,B=0101 求补相加演算过程如下 第165页  直接作减法运算则有 第165页  比较它们的结果可知,前者是后者的绝对值的补码,借位信号是1时,表示差是负数 即有借位时,它的差取补才是真实结果。 总结:借位信号 时, 时, 图    将图4.5.7和图4.5.8连接 是一个输出是原码的完整的4位减法运算电路 求补相加而得的差输入到不同的异或门的一个输入端,另一个输入端由借位信号控制。当时,反相,加法器也不实现加1运算,维持原码。 4.5.4 集成算术/逻辑单元举例 集成算术/逻辑单元能够完成一系列的算术运算和逻辑运算。74LS381是比较简单的双极型ALU,功能表 表4.5.4  它可以对两个4位二进制数进行6种算术或逻辑运算,并有清零和预置功能。 可以根据需要把若干片的4位ALU和超前进位产生器连接,扩展ALU的位数。 图4.5.10 是16位的ALU的连接方法。这种运算电路从最低位到最高位都是超前进位,常称为全超前进位电路