第 4 章 组合逻辑电路 4.1 组合逻辑电路的分析 4.2 组合逻辑电路的设计 4.3 常用MSI组合逻辑器件及应用 4.4 组合逻辑电路中的竞争与冒险
4.1 组合逻辑电路的分析 所谓逻辑电路的分析,就是找出给定逻辑电路输出和输入之间的逻辑关系,并指出电路的逻辑功能。分析过程一般按下列步骤进行: ① 根据给定的逻辑电路,从输入端开始,逐级推导出输出端的逻辑函数表达式。 ② 根据输出函数表达式列出真值表。 ③ 用文字概括出电路的逻辑功能。
【例4-1】 分析图4-2所示组合逻辑电路的逻辑功能。 解:根据给出的逻辑图, 逐级推导出输出端的逻辑函数表达式:
表 4-1 例4-1真值表 A B C F 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1 由真值表可以看出,在三个输入变量中,只要有两个或两个以上的输入变量为1,则输出函数F为1,否则为0,它表示了一种“少数服从多数”的逻辑关系。因此可以将该电路概括为:三变量多数表决器。
【例4-2】分析图4-3(a)所示电路,指出该电路的逻辑功能。 图 4-3 例4-2电路 (a) 一位全加器; (b) 一位全加器符号
解: ① 写出函数表达式。 ② 列真值表。 表 4 - 2 例4 - 2真值表 Ai Bi Ci Ci+1 Si 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 0 1 1
③ 分析功能。 由真值表可见,当三个输入变量Ai、Bi、Ci中有一个为1或三个同时为1时,输出Si=1,而当三个变量中有两个或两个以上同时为1时,输出Ci+1=1,它正好实现了Ai、Bi、Ci三个一位二进制数的加法运算功能,这种电路称为一位全加器。其中,Ai、Bi分别为两个一位二进制数相加的被加数、加数, Ci为低位向本位的进位,Si为本位和,Ci+1是本位向高位的进位。一位全加器的符号如图4 - 3(b)所示。 如果不考虑低位来的进位,即Ci=0,则这样的电路称为半加器,其真值表和逻辑电路分别如表4-3和图4-4所示。
表 4-3 半加器真值表 Ai Bi Ci+1 Si 0 0 0 1 1 0 1 1 0 0 0 1 1 0 图 4-4 半加器
4.2 组合逻辑电路的设计 工程上的最佳设计,通常需要用多个指标去衡量,主要考虑的问题有以下几个方面: ① 所用的逻辑器件数目最少,器件的种类最少,且器件之间的连线最简单。这样的电路称“最小化”电路。 ② 满足速度要求,应使级数尽量少,以减少门电路的延迟。 ③ 功耗小,工作稳定可靠。
上述“最佳化”是从满足工程实际需要提出的。显然,“最小化”电路不一定是“最佳化”电路,必须从经济指标和速度、 功耗等多个指标综合考虑,才能设计出最佳电路。 组合逻辑电路可以采用小规模集成电路实现,也可以采用中规模集成电路器件或存储器、可编程逻辑器件来实现。 虽然采用中、大规模集成电路设计时,其最佳含义及设计方法都有所不同,但采用传统的设计方法仍是数字电路设计的基础。因此下面先介绍采用设计的实例。
组合逻辑电路的设计一般可按以下步骤进行: ① 逻辑抽象。将文字描述的逻辑命题转换成真值表叫逻辑抽象,首先要分析逻辑命题,确定输入、 输出变量;然后用二值逻辑的0、1两种状态分别对输入、输出变量进行逻辑赋值,即确定0、1 的具体含义;最后根据输出与输入之间的逻辑关系列出真值表。 ② 选择器件类型。根据命题的要求和器件的功能及其资源情况决定采用哪种器件。例如,当选用MSI组合逻辑器件设计电路时,对于多输出函数来说,通常选用译码器实现电路较方便,而对单输出函数来说,则选用数据选择器实现电路较方便。 ③ 根据真值表和选用逻辑器件的类型,写出相应的逻辑函数表达式。当采用SSI集成门设计时,为了获得最简单的设计结果,应将逻辑函数表达式化简,并变换为与门电路相对应的最简式。 ④ 根据逻辑函数表达式及选用的逻辑器件画出逻辑电路图。
【例4-3】设计一个一位全减器。 ① 列真值表。 ① 列真值表。 全减器有三个输入变量:被减数An、减数Bn、低位向本位的借位Cn;有两个输出变量:本位差Dn、本位向高位的借位C n+1, 其框图如图4 - 5(a)所示。 表 4-4 全减器真值表 An Bn Cn Cn+1 Dn 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1
图 4-5 全减器框图及K图 (a) 框图; (b) Cn+1; (c) Dn
② 选器件。 选用非门、异或门、与或非门三种器件。 ③ 写逻辑函数式。 首先画出Cn+1和Dn的K图如图4-5(b)、(c)所示,然后根据选用的三种器件将Cn+1、Dn分别化简为相应的函数式。由于该电路有两个输出函数,因此化简时应从整体出发,尽量利用公共项使整个电路门数最少,而不是将每个输出函数化为最简当用与或非门实现电路时,利用圈0方法求出相应的与或非式为
当用异或门实现电路时,写出相应的函数式为 其中 为Dn和Cn+1的公共项。
④ 画出逻辑电路。 图 4 – 6 全减器逻辑图
【例4-4】用门电路设计一个将8421 BCD码转换为余3码的变换电路。 解: ① 分析题意, 列真值表。 该电路输入为8421 BCD码,输出为余3码,因此它是一个四输入、四输出的码制变换电路,其框图如图4-7(a)所示。根据两种BCD码的编码关系,列出真值表,如表4-5所示。由于8421 BCD码不会出现1010~1111这六种状态, 因此把它视为无关项。
② 选择器件,写出输出函数表达式。 题目没有具体指定用哪一种门电路,因此可以从门电路的数量、种类、速度等方面综合折衷考虑,选择最佳方案。该电路的化简过程如图4-7(b)所示,首先得出最简与或式,然后进行函数式变换。变换时一方面应尽量利用公共项以减少门的数量,另一方面减少门的级数,以减少传输延迟时间,因而得到输出函数式为
图 4 – 7 例4 - 4框图及K图
该电路采用了三种门电路,速度较快,逻辑图如图4-8所示。 ③ 画逻辑电路。 该电路采用了三种门电路,速度较快,逻辑图如图4-8所示。 表 4 – 5 例4-4真值表 A B C D E3 E2 E1 E0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 × × × ×
图 4 – 8 8421 BCD码转换为余3码的电路
4.3 常用MSI组合逻辑器件及应用 4.3.1 编码器 用文字、符号或数码表示特定对象的过程称为编码。在数字电路中用二进制代码表示有关的信号称为二进制编码。 实现编码操作的电路就是编码器。按照被编码信号的不同特点和要求,有二进制编码器、二—十进制编码器、优先编码器之分。
1. 二进制编码器 用n位二进制代码对N=2n个一般信号进行编码的电路,叫做二进制编码器。例如n=3,可以对8个一般信号进行编码。这种编码器有一个特点:任何时刻只允许输入一个有效信号,不允许同时出现两个或两个以上的有效信号,因而其输入是一组有约束(互相排斥)的变量。 现以三位二进制编码器为例,分析编码器的工作原理。图4-9是三位二进制编码器的框图,它的输入是I0~I78个高电平信号,输出是三位二进制代码F2、F1、F0。为此,又把它叫做8线—3线编码器。输出与输入 的对应关系如表4-6所示。
图 4 – 9 三位二进制8线—3线编码器框图
表 4 – 6 三位二进制编码器的真值表 输 入 输 出 I0 I1 I2 I3 I4 I5 I6 I7 F2 F1 F0 表 4 – 6 三位二进制编码器的真值表 输 入 输 出 I0 I1 I2 I3 I4 I5 I6 I7 F2 F1 F0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
由表4 - 6可得出编码器的输出函数为 因为任何时刻I0~I7当中仅有一个取值为1,利用这个约束条件将上式化简,得到
图 4 – 10 三位二进制编码器
2. 二—十进制(BCD)编码器 将十进制数0、 1、 2、 3、 4、 5、 6、 7、 8、 9 等10个信号编成二进制代码的电路叫做二—十进制编码器。它的输入是代表0~9这10个数符的状态信号,有效信号为1(即某信号为1时, 则表示要对它进行编码),输出是相应的BCD码,因此也称10线—4线编码器。它和二进制编码器特点一样,任何时刻只允许输入一个有效信号。 例如,要实现一个十进制8421BCD编码器,因输入变量相互排斥,可直接列出编码表如表4-7所示。将表中各位输出码为1的相应输入变量相加,便可得出编码器的各输出表达式:
表 4 – 7 8421 BCD码编码表
图 4 - 118421BCD码编码器
3. 优先编码器 优先编码器常用于优先中断系统和键盘编码。与普通编码器不同,优先编码器允许多个输入信号同时有效,但它只按其中优先级别最高的有效输入信号编码,对级别较低的输入信号不予理睬。常用的MSI优先编码器有10线—4线(如74LS147)、 8线—3线(如74LS148)。 74LS148二进制优先编码器的逻辑符号如图4-12所示。功能表如表4-8所示。
图 4 – 12 74LS148逻辑符号
表 4 – 8 74LS148的功能表
图4 - 12中,小圆圈表示低电平有效,各引出端功能如下: 7~0为状态信号输入端,低电平有效,7的优先级别最高,0的级别最低; C、B、A 为代码(反码)输出端,C为最高位; E1为使能(允许)输入端,低电平有效;当E1=0时,电路允许编码;当E1=1时,电路禁止编码,输出C、B、A均为高电平;E0和CS为使能输出端和优先标志输出端,主要用于级联和扩展。
从功能表可以看出,当E1=1时,表示电路禁止编码,即无论7~0中有无有效信号,输出C、B、A均为1,并且CS=E0=1。当E1=0时,表示电路允许编码,如果7~0中有低电平(有效信号)输入,则输出C、B、A是申请编码中级别最高的编码输出(注意是反码),并且CS=0,E0=1;如果7~0中无有效信号输入,则输出C、B、A均为高电平,并且CS=1, E0=0。 从另一个角度理解E0和CS的作用。当E0=0,CS=1时,表示该电路允许编码,但无码可编;当E0=1,CS=0时,表示该电路允许编码,并且正在编码;当E0=CS=1时,表示该电路禁止编码,即无法编码。
4.3.2 译码器 1. 二进制译码器 二进制译码器有n个输入端(即n位二进制码),2n个输出线。 常见的MSI译码器有2—4译码器、3—8译码器和4—16译码器。 图4-13为2—4译码器的逻辑电路及逻辑符号,其功能表如表4-9所示,图4-13中A1、A0为地址输入端,A1为高位。 为状态信号输出端,Yi上的非号表示低电平有效。 E为使能端(或称选通控制端),低电平有效。当E=0时,允许译码器工作, 中有一个为低电平输出;当E=1时,禁止译码器工作,所有输出 均为高电平。一般使能端有两个用途:一是可以引入选通脉冲,以抑制冒险脉冲的发生(参看本章4.4节);二是可以用来扩展输入变量数(功能扩展)。
图 4 – 13 2—4译码器逻辑电路及符号
从表4 - 9还可以看出,当E=0时,2—4译码器的输出函数分别为: 如果用 表示i端的输出,mi表示输入地址变量A1、A0的一个最小项,则输出函数可写成 可见,译码器的每一个输出函数对应输入变量的一组取值, 当使能端有效(E=0)时,它正好是输入变量最小项的非。 因此变量译码器也称为最小项发生器。
表 4 – 9 2—4译码器功能表
图4-14为3—8译码器的逻辑符号,功能表如表4-10所示。图中,A2、A1、A0为地址输入端,A2为高位。 为状态信号输出端,低电平有效。E1和E2A、E2B为使能端。由功能表可看出,只有当E1为高,E2A、E2B都为低时,该译码器才有有效状态信号输出;若有一个条件不满足,则译码不工作,输出全为高。 图 4 – 14 3—8译码器逻辑符号
表 4 – 10 3—8译码器功能表
如果用 表示i端的输出,则输出函数为 可见,当使能端有效(E=1)时,每个输出函数也正好等于输入变量最小项的非。 二进制译码器的应用很广,典型的应用有以下几种: ① 实现存储系统的地址译码; ② 实现逻辑函数; ③ 带使能端的译码器可用作数据分配器或脉冲分配器。
【例 4 - 5】 试用3—8译码器实现函数: 解:因为当译码器的使能端有效时,每个输出 , 因此只要将函数的输入变量加至译码器的地址输入端,并在输出端辅以少量的门电路,便可以实现逻辑函数。 本题F1、F2均为三变量函数,首先令函数的输入变量ABC=A2A1A0,然后将F1、F2变换为译码器输出的形式:
图 4 – 15 例4 - 5之电路
2. 二—十进制译码器 二—十进制译码器也称BCD译码器,它的功能是将输入的一位BCD码(四位二元符号)译成10个高、低电平输出信号,因此也叫4—10译码器。 图4-16是二—十进制译码器74LS42的逻辑图和逻辑符号。 功能表如表4 - 11所示。
图 4 – 16 二—十进制译码器74LS42
表 4 – 11 二—十进制译码器74LS42的真值表
3. 显示译码器 与二进制译码器不同,显示译码器是用来驱动显示器件,以显示数字或字符的MSI部件。显示译码器随显示器件的类型而异,与辉光数码管相配的是BCD十进制译码器,而常用的发光二极管(LED)数码管、液晶数码管、荧光数码管等是由7个或8个字段构成字形的,因而与之相配的有BCD七段或BCD八段显示译码器。现以驱动LED数码管的BCD七段译码器为例,简介显示译码原理。
发光二极管(LED)由特殊的半导体材料砷化镓、 磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。 分段式显示器(LED数码管)由7条线段围成 字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光,有红、黄、绿等色。只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。 LED数码管有共阳、共阴之分。图4 - 17(a)是共阴式LED数码管的原理图,图4-17(b)是其表示符号。使用时,公共阴极接地,7个阳极a~g由相应的BCD七段译码器来驱动(控制),如图4 - 17(c)所示。
图 4 – 17 数字显示译码器
BCD七段译码器的输入是一位BCD码(以D、C、B、A表示),输出是数码管各段的驱动信号(以Fa~Fg表示),也称4—7译码器。若用它驱动共阴LED数码管,则输出应为高有效,即输出为高(1)时,相应显示段发光。例如,当输入8421码DCBA=0100时,应显示 , 即要求同时点亮b、c、f、g段, 熄灭a、d、e段,故译码器的输出应为Fa~Fg=0110011,这也是一组代码,常称为段码。同理,根据组成0~9这10个字形的要求可以列出8421BCD七段译码器的真值表,见表4 - 12(未用码组省略)。
表 4-12 BCD七段译码器真值表
MSI BCD七段译码器就是根据上述原理组成的, 只是为了使用方便,增加了一些辅助控制电路。这类集成译码器产品很多,类型各异,它们的输出结构也各不相同,因而使用时要予以注意。图4-17(c)是BCD七段译码器驱动LED数码管(共阴)的接法。图中,电阻是上拉电阻,也称限流电阻,当译码器内部带有上拉电阻时,则可省去。数字显示译码器的种类很多,现已有将计数器、锁存器、译码驱动电路集于一体的集成器件,还有连同数码显示器也集成在一起的电路可供选用。
4.3.3 数据选择器 数据选择器又称多路选择器(Multiplexer, 简称MUX),其框图如图4-18(a)所示。它有2n位地址输入、2n位数据输入、1位输出。每次在地址输入的控制下,从多路输入数据中选择一路输出,其功能类似于一个单刀多掷开关,见图4 - 18(b)。 图 4 – 18 数据选择器框图及等效开关
常用的数据选择器有2选1、4选1、8选1、16选1等。 图4-19是4选1数据选择器的逻辑图及符号,其中D0~D3是数据输入端,也称为数据通道;A1、A0是地址输入端,或称选择输入端;Y是输出端;E是使能端,低电平有效。当E=1时,输出Y=0,即无效,当E=0时,在地址输入A1、A0的控制下,从D0~D3中选择一路输出,其功能表见表4-13。 表 4 – 13 4选1 MUX功能表 E A1 A0 Y 1 0 0 0 1 1 0 1 1 × × D0 D1 D2 D3
图 4 – 19 4选1 MUX
当E=0时,4选1 MUX的逻辑功能还可以用以下表达式表示: 式中,mi是地址变量A1、A0所对应的最小项,称地址最小项。 式(4 - 13)还可以用矩阵形式表示为
式中(A1A0)m是由最小项组成的行阵,(D0D1D2D3)T是由D0、D1、D2、D3组成的列阵的转置。 图4-20为8选1 MUX的逻辑符号,其功能表如表4-14所示, 输出表达式为 图 4 – 20 8选1MUX逻辑符号
表 4 – 14 8选1 MUX功能表 E A2 A1 A0 Y 1 × × × 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 D0 D1 D2 D3 D4 D5 D6 D7
1. 数据选择器的应用 数据选择器的应用很广,典型应用有以下几个方面: ① 作数据选择,以实现多路信号分时传送。 ② 实现组合逻辑函数。 ③ 在数据传输时实现并—串转换。 ④ 产生序列信号。 对于n个地址输入的MUX,其表达式为
其中mi是由地址变量An-1、…、A1、A0组成的地址最小项。而任何一个具有l个输入变量的逻辑函数都可以用最小项之和来表示: 这里的mi是由函数的输入变量A、B、C、…组成的最小项。 比较Y和F的表达式可以看出,只要将逻辑函数的输入变量A、B、C、 …加至数据选择器地址输入端,并适当选择Di的值,使F=Y,就可以用MUX实现函数F。因此,用MUX实现函数的关键在于如何确定Di的对应值。
1) l≤n的情况 l为函数的输入变量数,n为选用的MUX的地址输入端数。 当l=n时,只要将函数的输入变量A、B、C、…依次接到MUX的地址输入端,根据函数F所需要的最小项,确定MUX中Di的值(0或1)即可;当l<n时,将MUX的高位地址输入端不用(接0或1),其余同上。
【例 4-6】 试用8选1MUX实现逻辑函数: 解:首先求出F的最小项表达式。 将F填入K图,如图4 - 21所示,根据K图可得 当采用8选1 MUX时,有 令A2=A,A1=B,A0=C,且令D1=D2=D3=D4=D5=D7=1,D0=D6=0则有Y=(ABC)m(01111101)T= m(1, 2, 3, 4, 5, 7),故F=Y。用8选1MUX实现函数F的逻辑图如图4-22所示。
图 4 – 21 例4 - 6之K图
图 4-22 例4 - 6之逻辑图 需要注意的是,因为函数F中各最小项的标号是按A、B、C的权为4、2、1写出的,因此A、B、C必须依次加到A2、A1、 A0端。
2) l>n的情况 当逻辑函数的变量数l大于MUX的地址输入端数n时,不能采用上面所述的简单方法。如果从l个输入变量中选择n个直接作为MUX的地址输入,那么,多余的(l-n)个变量就要反映到MUX的数据输入Di端,即Di是多余输入变量的函数,简称余函数。因此设计的关键是如何求出函数Di。 确定余函数Di可以采用代数法或降维K图法。
【例 4-7】 试用4选1MUX实现三变量函数: 解: ① 首先选择地址输入,令A1A0=AB,则多余输入变量为C,余函数Di=f(c)。 ② 确定余函数Di。 用代数法将F的表达式变换为与Y相应的形式:
将F与Y对照可得 图 4 – 23 例4 - 7之逻辑图
n变量的逻辑函数,可以用n维(即n变量)K图表示,也可以用(n-1)、(n-2)、…维K图表示,这种(n-1)、(n-2)、…维K图称为降维K图。 例4-7中的三变量逻辑函数F可以用图4 -24(a)三变量K图表示,也可以用图(b)所示的以A、B为变量,C为引入变量的二维K图表示。降维的方法是在图(a)中先求出在AB各组取值下F与C变量之间的函数关系,然后将它们分别填入图(b)的降维K图中。从图(b)中看出,该K图中除了填0、1外,还填入了变量C、 ,因此它又称为引入变量K图。如果选择4选1MUX的地址输入A1A0=AB,将图(c)所示Y的K图和图(b)F的K图相对照, 则很容易求出多余函数:
为了减少画K图的次数,也可以直接在F的三变量K图上求出余函数Di。例如在图4 - 24(d)F 的K图中选择AB=A1A0,则AB变量(即地址变量)按其组合可直接将F的K图划分为四个子K图,如图(d)中虚线所示。每个子K图所对应的函数就是余函数Di,它们仅与多余输入变量C有关,即Di=f(C)。在各子K图上直接化简,便可求出余函数Di的值:D0=1,D1=C, D2=C, D3=0。可见,后面这种方法更加简便,其求解步骤归纳如下: ① 画出函数F的K图。 ② 选择地址输入。 ③ 在F的K图上确定余函数Di的范围。 ④ 求余函数Di。 ⑤ 画出逻辑图。
图 4-24 例4-7卡诺图法
【例4-8】试用8选1MUX实现逻辑函数: ① 画出F的四变量K图如图4 - 25(a)所示。 图 4 – 25 例 4 - 8在F之K图上确定Di
② 选择地址变量,确定余函数Di。 原则上,地址变量的选择是任意的,但选择合适了才能使电路简化。 若选择A2A1A0=ABC,则引入变量为D。 在图4-25(a)F之K图上,确定8选1MUX数据输入Di的范围,如图(a)中虚线所示。化简各子K图求得余函数为:D0=D, D1=0, D2=1,D3=D, D4=D, D5=0, D6=1, D7=D,函数F可表示为 其逻辑图如图4 - 26(a)所示。
图 4 – 26 例4 - 8的逻辑图
比较图4 - 26(a)和(b)可看出,显然选择A、C、D为地址变量时电路简单,其数据输入可以不附加任何门。因此,为了在产生余函数时不附加门电路或尽量少附加门电路,通常要将各种地址选择方案进行比较,这样做是比较麻烦的。比较简单的方法是观察F的K图或将F化简,从F的输入变量中选择出现比较多的输入变量加到地址输入端,这样就能简化电路。
2. 数据选择器的扩展 ① 利用使能端进行扩展。图4-27是将双4选1MUX扩展为8选1 MUX的逻辑图。其中A2是8选1MUX地址端的最高位, A0是最低位。 ② 树状扩展。通过MUX的级联用2n+1个2n选1的MUX可以扩展为(2n)2选1的MUX。 例如,n=2,即可用5个4选1MUX实现16选1MUX。如图4 - 28所示。
图 4 – 28 5个4选1MUX实现16选1MUX
4.3.4 数据分配器 数据分配器又称多路分配器(DEMUX),其功能与数据选择器相反,它可以将一路输入数据按n位地址分送到2n个数据输出端上。图4 - 29为1—4 DEMUX的逻辑符号, 其功能表如表4 - 15所示。其中D为数据输入,A1、A0为地址输入,Y0~Y3为数据输出,E为使能端。 表 4 – 15 1—4 DEMUX功能表 E A1 A0 Y0 Y1 Y2 Y3 1 × × 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 1 D 1 1 1 1 D 1 1 1 1 D 1 1 1 1 D
图 4-29 1—4DEMUX
常用的DEMUX有1—4DEMUX,1—8DEMUX,1—16 DEMUX等。从表4-15看出,1—4 DEMUX与2—4译码器功能相似,如果将2-4译码器的使能端E用作数据输入端D(见图4 - 30(a)),则2—4译码器的输出可写成 随着译码器输入地址的改变,可使某个最小项mi为1,则译码器相应的输出Yi=D,因而只要改变译码器的地址输入A、 B,就可以将输入数据D分配到不同的通道上去。因此,凡是具有使能端的译码器,都可以用作数据分配器。图4 - 30(b)是将3—8译码器用作1—8DEMUX的逻辑图。其中:
当改变地址输入A、B、C时,Yi=D,即输入数据被反相分配到各输出端。 数据分配器常与数据选择器联用,以实现多通道数据分时传送。例如,发送端由MUX将各路数据分时送到公共传输线上,接收端再由分配器将公共传输线上的数据适时分配到相应的输出端,而两者的地址输入都是同步控制的,其示意图如图4 - 31所示。
图 4 – 30 用译码器实现DEMUX
图 4 – 31 多通道数据分时传送
4.3.5 数码比较器 1. 逻辑功能 图 4 – 32 四位并行数码比较器逻辑符号
由图4 - 32可见,该比较器有 11 个输入端,三个输出端,其中输入端A3~A0、B3~B0接两个待比较的四位二进制数;输出端PA<B、PA=B、PA>B是三个比较结果;CA<B、CA=B、 CA>B是三个级联输入端,当扩大待比较的二进制数的位数时,可将低位比较器的输出端PA<B、PA=B、PA>B分别接到高位比较器的CA<B、CA=B、CA>B三个输入端。
表 4 – 16 四位比较器功能表
由表4-16可以看出: 输出PA>B=1(即A大于B)的条件是:最高位A3>B3,或者最高位相等而次高位A2>B2,或者最高位和次高位均相等而次低位A1>B1,或者高三位相等而最低位A0>B0,或者四位均相等而低位比较器来的输入CA>B=1。 输出PA=B=1的条件是:A3=B3,A2=B2, A1=B1,A0=B0, 且级联输入端CA=B为1。 输出PA<B=1的条件请读者导出。
2. 比较器的级联 四位比较器可直接用来比较两个四位或小于四位的二进制整数的大小。当两个待比较的数的位数超过四位时, 往往要将多个比较器级联使用。 【例 4 - 9】试比较两个七位二进制整数的大小。 解: 采用两块四位比较器组件,用分段比较的方法,可以实现对七位二进制的比较,其逻辑图如图4 - 33所示。
图 4 – 33 七位数的比较
4.3.6 加法器 图 4 – 34 四位串行进位并行加法器
图 4 – 35 超前进位加法器
超前进位产生器逻辑符号如图4-35(c)所示,它是一种产生快速进位的集成电路。根据全加器进位信号 令Gn=AnBn,则可以得出 上式称为递推公式,Gn称进位产生函数,Pn称为进位传输函数。由式(4 - 18)可以推出各级进位信号表达式,并构成快速进位的逻辑电路(推导过程从略)。因此,图4 - 35(c)中P0、P1、 P2、P3分别为进位传输信号,G0、G1、G2、G3分别为进位产生输入信号,Cn+1、Cn+2、Cn+3分别为进位输出,FP和FG 分别为进位传输输出和进位产生输出。 其表达式为
加法器在数字系统中的应用十分广泛。其除了能进行多位二进制数的加法运算外,也可以用来完成二进制减法运算。在利用加法器完成减法运算时,最通常的做法是将减数的二进制数的每一位变反(0→1, 1→0),并且在最低位加1, 其结果再同被减数相加。即采用减数求补相加法,A-B=A加[B]反加1。 利用加法器可以实现码组变换。
【例4-10】 试采用四位加法器完成余3码到8421 BCD码的转换。 解: 因为对于同样一个十进制数,余3码比相应的8421BCD码多3,因此要实现余3码到8421 BCD码的转换,只需从余3码减去(0011)即可。由于0011各位变反后成为1100,再加1,即为1101,因此,减(0011)同加(1101)等效。所以,在四位加法器的A3~A0接上余3码的四位代码,B3、B2、B1、B0上接固定代码1101,就能实现转换,其逻辑电路如图4-36所示。 利用加法器还可以实现8421 BCD码相加。
图 4 – 36 全加器构成的余3码到8421BCD码的转换
【例4-11】 用四位加法器构成一位8421 BCD码加法器。 解: 两个用BCD码表示的数字相加,并以BCD码给出其和的电路称为BCD码加法器。两个一位十进制数相加, 若考虑低位的进位,其和应为0~19。8421 BCD码加法器的输入、输出都应用8421 BCD码表示,而四位二进制加法器是按二进制数进行运算的,因此必须将输出的二进制数(和数)进行等值变换。表4-17列出了与十进制数0~19相应的二进制数及8421 BCD码。从表中看出,当和小于等于9时不需要修正,当和大于9时需要加6(0110)修正,即当和大于9时,二进制和数加6(0110)才等于相应的8421 BCD码。从表中还看出,当和大于9时,D10=1,因此可以用D10来控制是否需要修正,即D10=1时,和加6,D10=0时则不加。
D10可以据表4-17求出:当B4=1时,D10一定为1;当B4=0, B3B2B1B0从1010到1111时,D10=1。故可求得 图4-37表示用2片四位二进制全加器完成两个一位8421 BCD码的加法运算电路,第Ⅰ片完成二进数相加的操作,第Ⅱ片完成和的修正操作。图中,第一片输出的二进制数为C4、S3、 S2、S1、S0,第二片完成和的修正操作,根据式(4-20)可求得8421BCD码的进位输出为
表 4 – 17 十进制数0~19与相应的二进制数及8421BCD码
图 4 – 37 一位8421 BCD码加法器
4.4 组合逻辑电路中的竞争与冒险 1. 竞争与冒险 在组合电路中,某一输入变量经不同途径传输后,到达电路中某一会合点的时间有先有后,这种现象称为竞争。 由于竞争而使电路输出发生瞬时错误的现象称为冒险。例如, 图4-38(a)所示电路,其输出函数为F=AB+AC。当B=C=1时, 应有F=A+A=1,即不管A如何变化,输出F恒为高。而实际上由于门电路有延迟,当A由高变低时,在输出波形上出现了一个负脉冲, 如图4 - 38(b)所示。
这就是由竞争所造成的错误输出,这种宽度很窄的脉冲, 人们形象地称其为毛刺(图中波形忽略了信号的前后沿,并假定各门的延迟时间均为tpd)。这种负向毛刺也称为0型冒险; 反之,若出现正向毛刺称1型冒险。 又如图4-39所示情况,加到同一门电路的两输入信号同时向相反方向变化,由于过渡过程不同也会出现竞争,也有可能在输出端出现毛刺(图中未考虑门的延迟时间)。这种由于多个输入变量同时变化引起的冒险称为功能冒险。
竞争是经常发生的,但不一定都会产生毛刺。如图4 - 38(b)中A由0变1时也有竞争,却未产生毛刺,所以竞争不一定造成危害。但一旦出现了毛刺,若下级负载对毛刺敏感,则毛刺将使负载电路发生误动作。
图 4 – 38 竞争与冒险现象示例1
图 4 – 39 竞争与冒险现象示例2
2. 竞争与冒险的识别 ① 代数法。当函数表达式在一定条件下可以简化成F=X+X, 或F=X·X的形式时,X的变化可能引起冒险现象。 ②K图法。如果两卡诺圈相切,而相切处又未被其它卡诺圈包围,则可能发生冒险现象。如图4-40所示电路,其K图示于图4 - 40(a),该图上两卡诺圈相切,当输入变量ABC由111变为110时,F从一个卡诺圈进入另一个卡诺圈,若把圈外函数值视为0,则函数值可能按1 - 0 - 1变化,从而出现毛刺。
③ 实验法。两个以上的输入变量同时变化引起的功能冒险难以用上述方法判断。因而发现冒险现象最有效的方法是实验。 利用示波器仔细观察在输入信号各种变化情况下的输出信号, 发现毛刺则分析原因并加以消除,这是经常采用的办法。 图 4 – 40 用K图识别和消除逻辑冒险
3. 冒险现象的消除 当电路中存在冒险现象时,必须设法消除它,否则会导致错误结果。消除冒险现象通常有如下方法: ① 加滤波电路, 消除毛刺的影响。毛刺很窄,其宽度可以和门的传输时间相比拟,因此常在输出端并联滤波电容C,或在本级输出端与下级输入端之间,串接一个如图4 - 41所示的积分电路来消除其影响。但C或R、C的引入会使输出波形边沿变斜,故参数要选择合适,一般由实验确定。
图 4 – 41 加滤波电路排除冒险
② 加选通信号,避开毛刺。毛刺仅发生在输入信号变化的瞬间,因此在这段时间内先将门封住,待电路进入稳态后, 再加选通脉冲选取输出结果。该方法简单易行,但选通信号的作用时间和极性等一定要合适。例如,像图4-42所示的那样,在组合电路中的输出门的一个输入端,加入一个选通信号, 即可有效地消除任何冒险现象的影响。如图4-42所示电路中,尽管可能有冒险发生,但是输出端却不会反映出来,因为当险象发生时,选通信号的低电平将输出门封锁了。
图 4 – 42 避开冒险的一种方法
③ 增加冗余项消除逻辑冒险。例如,对于图4 - 40所示电路,只要在其K图上两卡诺圈相切处加一个卡诺圈(示于图4 - 40(b))就可消除逻辑冒险。这样,函数表达式变为 即增加了一个冗余项。冗余项是简化函数时应舍弃的多余项, 但为了电路工作可靠又需加上它。可见,最简化设计不一定都是最佳的。 以上三种方法各有特点。增加冗余项适用范围有限;加滤波电容是实验调试阶段常采取的应急措施;加选通脉冲则是行之有效的方法。目前许多MSI器件都备有使能(选通控制)端, 为加选通信号消除毛刺提供了方便。