380 likes | 494 Views
第四章 组合逻辑电路. 内容提要 数字逻辑电路可分为两大类: 一类叫组合逻辑电路;另一类叫时序逻辑电路。本章首先介绍组合逻辑电路的共同特点和描述方法,然后重点介绍组合逻辑电路的分析和 设计,最后讨论组合逻辑电路系统中竞争-冒险现象及消除竞争-冒险现象的方法。. § 4.1 逻辑函数的实现 .
E N D
第四章组合逻辑电路 • 内容提要 • 数字逻辑电路可分为两大类: 一类叫组合逻辑电路;另一类叫时序逻辑电路。本章首先介绍组合逻辑电路的共同特点和描述方法,然后重点介绍组合逻辑电路的分析和设计,最后讨论组合逻辑电路系统中竞争-冒险现象及消除竞争-冒险现象的方法。
§4.1逻辑函数的实现 • “与”、“或”、“非”运算是逻辑代数的基本运算。通过这些基本运算,逻辑函数可以表示成许多种不同的形式,通常采用的有以下几种:“与-或”表达式;“或-与”表达式;“与非-与非”表达式; “或非-或非”表达式;“与-或-非”表达式等。 • 对于某一个逻辑函数,尽管其表达式的形式不同, 但这些表达式所表示的逻辑功能却是相同的。函数的表示形式和实现该函数的逻辑电路之间有着对应的关系,也就是说,每一种函数形式对应一种逻辑电路。
4.1.1 用“与非”门实现逻辑函数 • 用“与非”门实现逻辑函数,一般按以下步骤进行 • 第一步:求出函数的最简“与-或”表达式。 • 第二步:将最简“与-或”表达式变换成“与非-与非”表达式。 • 第三步:画出与函数表达式对应的逻辑电路图。下面举例说明。
例4.1.1 用“与非”门实现逻辑函数 • F=ABC+ABC+BC D+BC • 解:第一步:求出函数的最简“与-或”表达式。将逻辑函数表示在卡诺图上,并加以简化,如图4.1.1所示。由图4.1.1所示卡诺图,得到函数的最简“与—或”表达式: • F=AB+BC+BD • 第二步:将最简“与-或”表达式 • 变换成“与非-与非”表达式。对 • 所得函数表达式两次求反,得到 • 函数的“与非-与非”表达式。
F=AB·BC·BD 第三步: 画出与函数表达 式对应的逻辑电路图。根据 所得逻辑函数“与非-与非” 表达式,画出实现给定函数 的两级“与非”逻辑电路, 如图4.1.2所示。
4.1.2 用“或非”门实现逻辑函数 • 使用“或非”门也可以构成实现各种逻辑功能的逻辑电路,其基本步骤为: • 第一步:求函数的最简“或-与”表达式。 • 第二步:将最简“或-与”表达式变换成“或非-或非”表达式。 • 第三步:根据“或非-或非”表达式画出逻辑电路图。下面举例说明。
例4.1.2用“或非”门实现逻辑函数,F=CD+ACD+ABD+ACD例4.1.2用“或非”门实现逻辑函数,F=CD+ACD+ABD+ACD • 解:第一步:求函数的最简“或-与”表达式。将给定逻辑函数表示在卡诺图上,如4.1.4所示。再对图4.1.4卡诺图的0方格进行合并, 得到反函数F的最简“与-或”表达式: • F=A C+A D • 然后对该函数表达式取反,即可得到函数 • F的最简“或-与”表达式: • F=(A+C)(A+D)
示例: • 第二步:将最简“或-与”表达式变换成“或非-或非”表达式。只要对所得最简“或-与”表达式两次得反,即可得到 • F = (A+C)(A+D)=(A+C)+(A+D) • 第三步:根据“或非-或非”表达式画出逻辑电路图。
4.1.3 用“与或非”门实现逻辑函数 • 例4.1.3 用“与或非”门实现逻辑函数 • F=∑m(1,3,4,5,6,7,12,14)
4.1.4 用“异或”门实现逻辑函数 • 例4.1.4 用“异或”门实现函数 • F=∑m(1,2,4,7)
§4.2 组合逻辑电路的分析 • 组合逻辑电路的分析是指分析一个给定的逻辑电路,找出电路的逻辑功能。通常采用的分析方法是: • 从电路输入到输出逐级写出逻辑函数式,得到表示输出与输入关系的逻辑函数式。然后将得到的函数式化简或变换,以使逻辑关系简单明了。为了使电路的逻辑功能更加直观,可以把逻辑函数式转换为真值表的形式。通过分析,不仅确定了电路的逻辑功能,而且可以发现原电路设计的缺点,以便完善和改进电路。
组合逻辑电路分析 • 组合逻辑电路的分析一般可按以下步骤进行: • 第一步:根据给定逻辑电路图,写出逻辑表达式 • 第二步:简化逻辑函数表达式。 • 第三步:列出逻辑电路的真值表。 • 第四步:逻辑功能分析。
例4.2.1 分析图4.2.1给定的逻辑电路。 • 解: 第一步:逻辑函数 • P1=ABC • P2=A·P1=A·ABC • P3=B·P1=B·ABC • P4=C·P1=C·ABC • F=P4+P2+P3=A·ABC+B·ABC+C·ABC • 第二步:化简
组合逻辑电路分析 • F =A·ABC+B·ABC+C·ABC • =ABC(A+B+C) • =ABC+A+B+C=ABC+A B C • 第三步:表4.2.1 给定逻辑电路的真值表 • 第四步:功能 • 分析: • 当A=B=C时 • F=1,全1或全 • 0检测电路。 A B C F 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1
§4.3 组合逻辑电路的设计 • 4.3.1 组合逻辑电路的设计工作一般过程: • 1.进行逻辑抽象关系,建立真值表。 • (1)分析实际问题的因果关系,确定输入和输出变量。 • (2)定义逻辑状态的含意。 • (3)根据给定因果关系的逻辑要求建立真值表。 • 2.根据真值表写出逻辑函数表达式。 • 3.逻辑函数化简,并根据要求把函数转换为适当的形式。 • 4.根据逻辑函数表达式,选择器件的类型,画出逻辑电路图。
4.3.2 单输出组合逻辑电路的设计 • 例4.3.1 用“与非”门设计一个三变量“多数表决电路”要求该逻辑电路的三个输入量中出现两个以上的1时,表示表决通过,电路输出为1,否则输出为0 。 • 解:第一步:进行逻辑抽象关系,建立真值表。 F 0 0 0 1 0 1 1 1 A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1
第二步:根据真值表写出 逻辑函数表达式。 • F=∑m(3,5,6,7) • 第三步:将逻辑函数化简, • 根据题意,要求用“与非”门 • 实现上述函数,故将函数表达 • 式转换成“与非-与非”表达式,即: • F = AB+AC+BC = AB ·AC · BC • 第四步:根据逻辑函数表达式选用“与非”门画出逻辑电路图。
例4.3.2 设计一个一位数值检测器当输入的十进制数大于等于5时,输出为1,否则输出为输 • 输出为0,(十进制数用8421BCD码)。 • 解:第一步:进行逻辑抽象关系,建立真值表。设十进制数8421BCD码用四个变量A、B、C、D表示输入,电路的输出为F。根据题意,当变量A、B、C、D取值为:0000~0100时,函数F的值为0;当变量A、B、C、D取值为0101~1001时,函数F的值为1。由于四位二进制数有16种组合,而十进制数0~9只利用了10种组合,还冗余6种组合。为讨论方便起见,对应这6种输入组合的函数值记作“d”,表示既可当作1处理,也可当作0处理,为任意值。由此,可列出表4.3.2的真值表。
例4.3.2 的真值表P75表4.3.2 • 第二步:根据真值表列出逻辑函数表达式: • F = ∑m(5,6,7,8,9)+∑d(10,11,12,13,14,15) • 第三步:对逻辑函数进行简化, • F=A+BD+BC • 转换成“与非-与非”表达式: • F = A+BD+BC • =A · BD · BC
第四步:对应的逻辑电路图,如图4.3.4所示。 图4.3.4
4.3.3多输出组合逻辑电路的设计 • 例4.3.3设计一个一位二进制全加器,它能将两个一位二进制数及来自低位的进位进行相加,并产生“和”及向高位的“进位”。 • 解:第一步:进行逻辑抽象关系,建立真值表。 Ai Bi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1
第二步: 根据真值表写出函数表达式。 • Si = AiBiCi-1 + AiBiCi-1 + AiBiCi-1 + AiBiCi-1 • Ci = AiBiCi-1 + AiBiCi-1 + AiBiCi-1 + AiBiCi-1 • 第三步:逻辑函数化简并转换成适当形式。
逻辑表达式变换 • Si=AiBiCi-1+AiBiCi-1 + AiBiCi-1+AiBiCi-1 • =AiBiCi-1 · AiBiCi-1 · AiBiCi-1 · AiBiC • Ci=AiBi+AiCi-1+BiCi-1 • = AiBi · AiCi-1 · BiCi-1 • 实现上述函数的相应逻辑电路图如图4.3.6所示。
例4.3.4 用“与非”门设计一个将8421BCD码转换成余3码的代码转换电路。 • 解:第一步:进行逻辑抽象关系,建立真值表。 • ① 输入为8421BCD码,用A、B、C、D四个变量。 • ② 输出为余3码,用W、X、Y、Z四个变量。 • ③ 注意不允许出现的6种组合码。 • 其逻辑功能真值表P79如4.3.4所示。 • 第二步: 根据真值表列出函数表达式。 • W=∑m(5,6,7,8,9)+∑d(10,11,12,13,14,15) • X=∑m(1,2,3,4,9)+∑d(10,11,12,13,14,15) • Y=∑m(0,3,4,7,8)+∑d(10,11,12,13,14,15) • Z=∑m(0,2,4,6,8)+∑d(10,11,12,13,14,15)
第三步:化简函数表达式,并转换成适当形式。第三步:化简函数表达式,并转换成适当形式。 • 上述函数分别表示在卡诺图上,如图4.3.9所示。图4.3.9的四个卡诺图分别表示四个函数,通过卡诺图化简,可得: • W=A+BC+BD • X=BC+BD+BC D • Y=CD+C D • Z=D • 图4.3.10是电路图
§4.4 组合逻辑电路的竞争与冒险 • 前面讨论组合逻辑电路设计时,只研究电路输出和输入稳态值之间的关系,没有考虑信号传输时延的影响。实际上,信号通过逻辑门和导线都会产生时间延迟,这就是说,信号从逻辑电路的输入端传送到输出端会产生一定的时间延迟。例如, 一个二输入“与非”门,假定其延迟时间为tpd,当输入B为1,而输入A从0变到1再回到0时,“与非”门的输出将由1变到0再变到1,其输出、输入时间图如图4.4.1所示。
输入、输出时间关系图如图4.4.1所示。 • 4.4.1竞争与冒险的产生 • 由于组成电路的逻辑门 • 和导线延迟时间的影响, • 输入信号通过不同途径 • 到达输出端的时间就有 • 先有后,这一现象称为 • 竞争。竞争的结果是随机的,有时竞争不影响电路的逻辑功能,有时竞争却导致逻辑错误,使电路产生错误的输出。
竞争与冒险的产生 分析 • 对于图4.4.2给定的组合 • 逻辑电路,可写出函数表 • 达式 : • F = AB·AC = AB·AC • 当输入B=C=1,则上述表 • 达式为:F=A+A • 当B=C=1时,无论A怎样 • 变化,函数值F保持1不变。
竞争与冒险的产生 分析 • 这是一种理想状态下的结论,考虑到实际电路存在时延,当B=C=1时,电路的输出、输入关系可用图4.4.3的时间图来说明。 • 当A由0变到1时,在图中①处存在一次非临界竞争,输出F仍保持为1,没有出现错误;但当A由1变为0时,在图中②处存在一次临界竞争,输出F出了错误,也就是说,竞争的结果产生了冒险。 • 组合逻辑电路的冒险分为静态冒险和动态冒险。如果在输入变化而输出不应发生变化的情况下产生了短暂的错误输出,这种冒险称为静态冒险。如果在输入变化而输出应该发生变化的情况下,在变化过程中产生了短暂的错误输出,这种冒险称为动态冒险。
4.4.2 判别冒险 • 判别一个电路是否存在冒险有代数法和卡诺图法 • 一、代数判别法 • 在函数表达式中,不同的“与”项彼此包含着互补变量,在某种输入变量组合下,函数表达式可能形成互补“或”项,该函数表达式所对应的逻辑电路就有可能出现冒险。 • 同理,对于函数表达式,不同的“或”项彼此包含着互补变量,在某种输入变量组合下,函数表达式可能形成互补的“与”项,该函数表达式所对应的逻辑电路就有可能出现冒险。
代数判别法 • 冒险究竟会不会产生,还要结合电路的延迟,通过时间图仔细观察和分析。代数判别法是从函数表达式的结构来判别是否具有产生险象的条件,若函数表达式中某个变量X同时以原变量和反变量形式存在,则将函数表达式中其他变量的各种取值组合依次代入,把它们从函数表达式中消去,仅保留被研究的变量X,如果函数表达式出现: • X+X、X·X形式,说明对应的逻辑电路可能产生冒险。
举例 • 给定组合逻辑电路的函数为 • F=A C+AB+AC • 从函数表达式可知,变量A和C同时以原变量和反变量形式出现在函数表达式中,则与该函数表达式对应的组合逻辑电路在A或C发生变化时,可能由于竞争而产生冒险。 • 现对A、C两个变量分别进行分析。将B和C的各种取值组合分别代入函数表达式中,则
具体分析 • 当BC=00时,F=A; 当BC=01时, F=A; • 当BC=10时,F=A; 当BC=11时, F=A+A。 • 由此可见,当BC=11时,变量A改变状态可能使逻辑电路产生偏1型冒险。同样,将A和B的各种取值组合分别代入函数表达式中,则 • 当AB=00时,F=C ; 当AB=01时,F=C+1; • 当AB=10时,F=C; 当AB=11时,F=C。 • 由此可见,当AB在各种取值组合时,变量C改变状态均不会使逻辑电路产生险象。
二、卡诺图判别法 • 具体办法是:将函数用卡诺图表示,并画出能合并项对应的卡诺圈,若发现两个卡诺圈“相切”,即两个卡诺圈之间存在被不同卡诺圈包含的相邻最小项,该逻辑电路就可能产生冒险。例如,某逻辑电路对应的函数表达式为 • F=AD+AC+AB C • 将该函数表示在卡诺图上, • 观察卡诺图可发现,
分析 • “与”项AD包含最小项m1、m3、m5、m7,“与”项AB C包含最小项m12和m13,它们分别被各“与”项对应的卡诺圈所包含,当变量ABCD由1101变到0101时,即由m13转移到m5时,由于m13和m5被不同“与”项所覆盖, 因而使两个“与”项的值都发生变化,此时就有可能产生冒险。 • 在卡诺图上,最小项m5和m13相邻,分别被不同卡诺圈包含,两个卡诺圈彼此“相切”,在这种情况下 函数表达式所对应的电路就可能产生冒险。
4.4.3 消除冒险 • 当我们判别出所设计的组合逻辑电路存在冒险时,就必须采取适当措施消除它。通常的办法是在逻辑函数最简“与-或”表达式(或者“或-与”表达式)中增加冗余项,该项应包含而且只能包含彼此相邻但属于不同“与”项(或者“或”项)的相邻最小项(或最大项),使原函数不可能在某些条件下出现x+x或x·x形式,从而消除可能产生的冒险。 • 举例说明
举例 • F=AB+AC • 本章结束