第二节 组合逻辑电路设计
根据功能要求,实现具体电路设计,本节分为
用门电路 设计和 用中规模功能器件 设计。
一、采用门电路设计
1,一般设计方法
设计过程与分析过程正好相反,其步骤如下:
( 1)搞清功能要求,明确因果关系,设置输入、输
出变量。
( 2)列出真值表。
( 3)写出逻辑表达式。
( 4)化简逻辑表达式。
( 5)表达式变换(根据对使用器件的要求)。
( 6)画出逻辑电路图。
例题,火灾报警系统,有三种探测器:烟感、温
感和光感。为防止误报,规定只有两种或两种以上发出
报警才确认,并启动声光报警设备。 (用与非门实现)
解:
( 1)根据题意,设探头为输入,分别用 A,B,C代表
烟感、温感和光感三种探头。取值为 1=报警 0=无报警
设报警器输出为 F 1=启动设备 0=关闭设备
( 2) 列出真值表
( 3)写出逻辑表达式
F = ABC + ABC + ABC + ABC
( 4)化简表达式
F = AB + AC + BC
( 5)因为指定用与非门
实现,所以要对表达式进行
变换。
F = AB + AC + BC
= AB ? AC ? BC
( 6)画出电路图
也可以写或与式,再
两次求反,用或非门实现
2、输入只有原变量、使用与非门的设计
所谓输入只有原变量,没有反变量是指第一级的输入
信号只能由 A,B,C,D等组成,不能出现 A B C D等。
要解决这个问题似乎很简单:将所有的反变量都加
一个反相器。
但这样简单处理的结果是门太多,为了获得最佳设
计,我们可以通过表达式变换,用尽量少的电路满足只
有原变量的要求。
例如:在只有原变量输入的条件下,实现逻辑函数
F( A,B,C,D) = ? m ( 4,5,6,7,8,9,10,11,
12,13,14)
解,用卡诺图化简
F = A/B +/AB + B/C + A/D
两次求反:
F = A/B +/AB + B/C + A/D
= A/B ? /AB ? B/C ? A/D
?用反相器解决
只有原变量问题,
不用动脑筋,但增
加了四个门。
?如果将表达式进行
变换,可以简化电路。
F=A/B + /AB + B/C + A/D
=A( /B+/D) + B( /C+/A)
=A BD + B AC
再两次求反
F= A BD ? B AC
经过表达式变换,带“非号”
的项合并了,逻辑门也减少
了。如右图
?有时,为了减少带“非号”的项,还可以考虑利用
多余项,寻求进一步化简的可能。(当然,不一定都能
再简化)
F = AB + AB + BC + AD
= AB + AB + BC + AD + BD + AC
=A( B+C+D) + B( A+C+D)
=A BCD + B ACD
=A ABCD + B ABCD
两次求反
F = A ABCD B ABCD
总结上述简化过程,我们可以发现,电路越来越简
单了,但所需级数没变:三级。
输入级是为了解决“非号”而存在的,带“非号”
的项(称为尾部因子)越多,输入级越复杂,因此我们要
尽量减少带“非号”的项。
中间级的门数与表达式乘积项的多少有关,应尽量
减少乘积项个数。
下面我们归纳一下在只有原变量,没有反变量输入的
条件下,用与非门实现逻辑函数时设计步骤:
第一步:用卡诺图化简,得到最简与 — 或式。
第二步:寻找所有的多余项,将可以用来实现合并尾
部因子者加入(无此可能者不要)。
如,F= AB + AC +( BD + BC) =AC + B ACD
加入不能简化
第三步:尾部因子变换 如
A BCD = A ABCD
第四步:两次求反,得与非 — 与非表达式。
第五步:画出逻辑图。
(书上例题,自己看看)
3,如果规定使用“或非门”实现逻辑函数,也要求输入
只有原变量,没有反变量,怎么办? ————
核心方法还是与非门的方法,只是在开头和结尾时,
各加一个对偶变换。即:
?由 F 求 F,再求 F*。
?对 F* 按与非门实现方法设计,得到与非 — 与非式。
?再求对偶,得到或非 — 或非式。 (自学书上例题)
注 F=? m( F存在项); F= ? m( F不存在项);
F*= ? m( 2n -1 - F不存在项)
4、设计举例
例 5-5 设计一个 4位二进制代码转换为格雷码电路。
这个题有四个输入,四个输出。我们根据真值表,分
别列出每个输出的卡诺图,如同做了四个单输出的题。
例 5-6 设计 8421 BCD 七段译码电路。
解,七段显示我们十分熟悉,但显示数字的大小与数码
管的亮灭没有算法规律,因此我们要为它们建立一
个联系,即译码电路。
根据显示数据和显示段的关系,列出真值表。
由真值表可知,这是共阳的 LED显示块 或 加反相驱动。
做出卡诺图
多输出电路
要综合考虑,
每个输出都
最简未必整
体最佳。
电路图见书
显示器件的驱动 反相驱动
通用七段译码器芯片举例 74LS48
通用的七段译码器,除完成由二进制数据到显示码
的转换之外,还提供了一些辅助功能,如:
消隐( BI),可强行灭掉所有显示。
灯测试( LT),可强行使所有显示段都发亮,检
查有没有亮不了的。
灭零输入( RBI),当本位数值为 0时,是显示 0还
是显示“黑”,由灭零输入决定。
灭零输出( RBO),当本位数值为 0,灭零输入为
0,且不进行灯测试时,RBO=0
灭零输入和灭零输出是配合使用的,目的是突出有
效信息,去掉无用信息。 00123, 45600
二、采用中规模集成器件实现组合逻辑
前面我们学习了几种中规模的器件,如译码器、数据
选择器等,它们本身是为实现某种逻辑功能而设计的,但
由于它们的一些特点,我们也可以用它们来实现任意逻辑
函数。
逻辑函数的一种最基本的形式就是最小项表达式,任
一逻辑函数都可以表示为若干最小项之和。
如果有一种硬件电路,相当于最小项加法器,并且可
以任意选择加数、被加数们,它就可以称为 逻辑函数生成
器。 数据选择器就具有这种功能。
下面我们分别介绍用数据选择器和译码器实现逻辑函
数的方法。
1、用 2n选 1 数据选择器实现 n 变量逻辑函数
我们知道,8 选 1 数据选择器的输出表达式为:
Y = A2A1A0 D0 + A2A1A0 D1 + A2A1A0 D2 + A2A1A0 D3
+ A2A1A0 D4 + A2A1A0 D5 + A2A1A0 D6 + A2A1A0 D7
由表达式我们可以发现,数据选择器就是一个大加法
器,D0 ~ D7可以分别控制 8 个最小项的存在,设置 D0 ~
D7,我们就可以构造任意逻辑函数。
例如,用数据选择器实现下列逻辑函数:
F( A,B,C) = ? m( 1,4,7)
解,因该函数包含三个最小项,使其对应的三个“存在
开关”设置为 1,即 D1=D4=D7=1(高电平)。
其他开关为 0,即 D0=D2=D3=D5=D6=0 (低电平)
电路如图:
8 选 1 数据选择器有 3 个选择输入端,可以实现 3 变
量逻辑函数。
如果逻辑函数的变量数为 2 个,则可以将高位输入端
A2接地,数据端只用 D0 ~ D3。
如果逻辑函数的变量数为 4 个,又该怎么办呢?
2、输入变量数多于选择器输入端时的设计
当输入变量数多于选择器输入端时,有两种方法:
( 1)扩展法,先将选择器扩展,变成更多输入端的
选择器以满足要求。 (关键是扩展,自己看书)
( 2)降维法,如果不能扩展选择器,就只有在数据
端 D0 ~ Dn上想办法了,即不能简单地将 Dx接高接地了,
而是要和逻辑输入建立某种关系。
逻辑函数 F 有 n 个逻辑变量,称为 n 维逻辑函数。
n 维逻辑函数可以用 n 维卡诺图表示。
n 维卡诺图方格中的 1 表示 相应 最小项存在 于 F,方
格中为 0,表示 相应 最小项不存在 。
如果方格中填一个 Q 表示什么呢? ———— Q = 1,
最小项存在; Q = 0,最小项不存在。 说明 Q 也是逻辑
函数的一个变量(第 n+1 个变量),称为记图变量。
引入一个记图变量后,就可以用 n 维卡诺图,表示
n+1维逻辑函数了。再增加记图变量,还可以表示更多
维的逻辑函数。
在前面用数据选择器实现逻辑函数时,最小项存在,
相应 D 端接 1,不存在接 0 。如果最小项存在与否决定
于 Q,则相应数据端应接 Q 。
总之,用低维数据选择器实现高维逻辑函数时,首
先要降维,将多出的变量作为记图变量。
下面我们通过例题学习降维法的设计方法。
例 5-10 用 8 选 1 数据选择器实现逻辑函数
F( A,B,C,D) =? m( 1,5,6,7,9,11,12,13,14)
解,由于 8 选 1 有三个输入端,F函数有四个输入变量,
所以要先降维。 设以 D 为记图变量。






第二步,确定数据端的设置(一个方格对应一个 D端)
D0 = D2 = D4 = D5 = D D3 = D6 = 1
D1 = 0 D7 = D
第三步,画逻辑电路图
例 5-11 用 8 选 1 数据选择器实现逻辑函数
F( A,B,C,D,E) =? m( 0,1,3,9,11,12,
13,14,20,21,22,23,26,31)
逻辑电路图
书中给出进一步降维的情况,自己看书。
归纳一下卡诺图降维的规律:
如果要把 X作为记图变量,它在原卡诺图中,X=0时
取值 F, X=1 时取值为 G,则合二为一后的取值为:
X F + X G
两点说明:
1、当需要降维处理时,将谁作为记图变量是任意的,
但结果是不同的,哪一种选择最佳还没有一个固定的
判断方法。
2、数据选择器最适于实现单一输出的逻辑函数。如果
要实现多输出逻辑函数,就要用多个选择器。 相比之下
用 译码器 实现多输出逻辑函数更方便些。
3、用译码器实现组合逻辑
一个 n线 — 2n 线译码器的输出包含了 n 变量的所有
最小项,或者说,每个输出只与一个最小项对应。
例如,3线 — 8 线译码器,满足如下关系:
Y0 = A B C = m0,Y1 = A B C = m1 · · · · · ·
Y7 = A B C = m7 即输出信号与最小项反相。
有一逻辑函数 F( A,B,C) = A B C + A B C
用译码器实现。
解,F( A,B,C) = m0 + m7
= Y0 + Y7
= Y0 ? Y7
书例 5-12 是一个多输出的逻辑函数,就按上述方法,
如同做了三道单输出的题一样。
实验课要求用译码器设计全减器,请考虑一下。
用译码器实现逻辑函数比较容易,要 注意 的是
译码器的输出 Y 不是最小项,而是最小项的“非”
Yi = mi
4、采用全加器实现组合逻辑函数
用全加器实现逻辑函数,不具有普遍意义,它不能
实现任意逻辑函数,只适合逻辑输出为两数之和的情况。
书中例题:
8421 BCD 转换为 余 3BCD —— 恒定加 3。
4位二进制加法器实现十进制加法 —— 有时加 6,
有时加 0 。
自己看书。
第三节 组合逻辑电路的冒险现象
以前我们设计电路时,假定所有输入信号同时变化,
门电路没有延迟,在此条件下,能保证输出逻辑正确。
实际情况是,输入信号不可能同时翻转,门的延迟
也各不相同,于是就要出现问题了 —— 冒险竞争!
几个概念:
静态冒险,如果输入的变化本 不应 引起输出 变化,但
实际 出现了变化,称静态冒险。(打破了应有的平静)
如,本应 1 1 实际 1 0 1
或 本应 0 0 实际 0 1 0
动态冒险,如果输入的变化确应引起输出发生 一次
翻转,但实际发生了 多次翻转,称为动态冒险。如:
本应 0 1 实际 0 1 0 1
本节只讨论静态冒险。
功能冒险,由于逻辑函数自身的原因,当多个输入要
发生变化,但又不能同步时,产生的冒险。(可理解为
逻辑功能在冒险方面有天生的缺陷)
功能冒险也叫竞争。
逻辑冒险,在没有功能冒险的前提下,由于门延迟而
造成的冒险。 (可理解为 逻辑表达式没调整好造成的冒
险,经过调整可以克服该冒险)
下面我们通过实例进一步说明功能冒险和逻辑冒险。
书例 5-16 分析下列逻辑电路的冒险情况。
F( a,b,c,d) = c d + b d + a c
有关功能冒险和逻辑冒险的判断和避免的细节,请
同学自己再看一看书,我们简单总结一下:
逻辑函数一旦确定,其卡诺图就确定了,如果从一个
1格变到另一个 1格的多条路径上有 0 格,则可能有功能冒
险。(上述 0 和 1 交换对应另一种情况)
功能冒险是不能通过修改逻辑来避免的。只能通过避
开变化瞬间的消极方法来解决(见本节最后电路图)。
在没有功能冒险的条件下,如果由于门的延迟而发生
逻辑冒险,则一定可以解决,方法是用所有的主要项构成
逻辑函数,不要化简多余项(没有独立 1格的包围圈)。
由此看来,化简和避免逻辑冒险有时是矛盾的。
第四章 作业
1,5( 1) 6( 1)
9,12,14( 2)
22、(统一设化学试剂为 S1 ~ S24)