本章导航

本章讨论组合逻辑:任意时刻的输出只由该时刻输入决定,不具备记忆功能。学习主线是“电路图 → 布尔表达式/真值表”和“表达式/真值表 → 电路图”,再扩展到通用 NAND/NOR、脉冲波形、VHDL 建模及示波器排障。

第 5 章:组合逻辑分析

5.1 组合逻辑的核心观念

组合逻辑没有时钟和存储单元。输入一变化,经过门电路传播延迟后,输出随之变化。分析时先认清每一级门的功能,再逐级写出中间量,最后得到输出表达式。

AND-OR(与-或)逻辑

SOP(积之和)表达式可直接用“每个乘积项一个 AND 门,所有乘积项再接一个 OR 门”实现。例如图 5-1 的电路为

因此,仅当 A、B 同时为 1,或 C、D 同时为 1 时,X 才为 1。真值表应同时列出中间量 AB、CD,便于逐行核对。

图 5-1(a) 与-或逻辑门级图(ANSI 形状符号)

图 5-1(a) 与-或逻辑门级图(ANSI 形状符号)

图 5-1(b) ANSI 矩形轮廓符号

图 5-1(b) ANSI 矩形轮廓符号

算例 5-1:三个储罐的低液位报警

三个液位传感器 A、B、C 在液位低于规定值时输出高电平。要求任意两个储罐液位过低就报警。分别检测 AB、AC、BC,再用 OR 汇总:

只要三项中有一项为 1,报警输出 X 就为 1。

图 5-2 任意两个储罐低液位报警电路

图 5-2 任意两个储罐低液位报警电路

5.2 AND-OR-Invert 与 XOR/XNOR

AND-OR-Invert(AOI)

在与-或网络最后加反相器,得到

它天然适合实现 POS(和之积)形式。根据德摩根定律,AOI 的输出在 AB=1 或 CD=1 时为 0;只有两项都为 0 时才为 1。

图 5-3 四输入 AOI 电路

图 5-3 四输入 AOI 电路

算例 5-2:低有效传感器

若传感器在液位过低时输出低电平,则每个检测 AND 门只要有一个低输入就输出低,末级反相器把结果变为高电平报警。因此仍可检测“任意两个低有效输入”,但要按有效电平重新理解逻辑,不能机械套用高有效电路。

图 5-4 低有效液位传感器的 AOI 电路

图 5-4 低有效液位传感器的 AOI 电路

异或 XOR

XOR 只在两个输入不同的时候输出 1:

真值表为 00→0、01→1、10→1、11→0。它可用于比较、奇偶校验和受控翻转。

图 5-5 XOR 的与-或实现及符号

图 5-5 XOR 的与-或实现及符号

同或 XNOR

XNOR 是 XOR 的反相:

输入相同(00 或 11)时输出 1,常用于相等比较。

图 5-6 XNOR 的两种等效实现

图 5-6 XNOR 的两种等效实现

算例 5-3:4 位偶校验发生器

将四个数据位依次用 XOR 级联。若原数据中 1 的个数为奇数,校验位输出 1,使总 1 数变为偶数;若原数据已有偶数个 1,校验位输出 0。

图 5-7 偶校验发生器

图 5-7 偶校验发生器

算例 5-4:偶校验检查器

对 4 位数据和校验位共 5 位再次 XOR。结果为 0 表示总 1 数为偶数、未检测到错误;结果为 1 表示奇偶性不对、报告错误。

图 5-8 偶校验检查器

图 5-8 偶校验检查器

5.3 从表达式或真值表实现电路

表达式到门电路

先按括号和优先级拆分,再按“先 NOT、再 AND、后 OR”的顺序连接。例如:

需要一个 2 输入 AND、一个 3 输入 AND 和一个 OR。又如:

可先生成 (\overline D)、(C\overline D)、EF,再 OR,最后与 AB 相与。若中间和项不是外部输出,通常展开为 SOP:

这样可减少级数和传播延迟。

图 5-9 表达式 X=AB+CDE 的结构分析

图 5-9 表达式 X=AB+CDE 的结构分析

图 5-9 表达式实现电路

图 5-9 表达式实现电路

图 5-10 表达式分层分析

图 5-10 表达式分层分析

图 5-10(a)(b) 两种实现及 SOP 展开

图 5-10(a)(b) 两种实现及 SOP 展开

真值表到电路

只看输出 X=1 的行:每一行写一个最小项(输入为 0 的变量取反,输入为 1 的变量保持),最后将所有最小项 OR 起来。例如表 5-3 给出

每个最小项对应一个 AND,末级用 OR 汇总。

图 5-11 真值表实现电路

图 5-11 真值表实现电路

算例 5-5:三输入函数

若 X=1 的行是 011、101、110,则

需要 3 个反相器、3 个三输入 AND 和 1 个三输入 OR。得到表达式后再用布尔代数或卡诺图化简。

图 5-12 算例 5-5 电路

图 5-12 算例 5-5 电路

算例 5-6:四输入中恰好三个为 1

四个满足条件的最小项为 (\overline A BCD)、(A\overline BCD)、(AB\overline C D)、(ABC\overline D):

图 5-13 恰好三个输入为 1 的检测电路

图 5-13 恰好三个输入为 1 的检测电路

算例 5-7、5-8:化简

分析复杂电路时先写完整输出表达式,再用德摩根、吸收律和结合律化简。算例 5-7 最终得到

即一个四输入 OR 门。算例 5-8 先补全缺失变量 ((D+\overline D)=1),再用卡诺图合并相邻项。

图 5-14 待化简电路

图 5-14 待化简电路

图 5-15 化简后的四输入 OR

图 5-15 化简后的四输入 OR

图 5-17 卡诺图化简过程与实现

图 5-17 卡诺图化简过程与实现

5.4 NAND 与 NOR:通用逻辑门

NAND、NOR 都是通用门,只用一种门即可构成 NOT、AND、OR 及其组合。

只用 NAND

  • 反相:两输入并接,(\overline A=A\operatorname{NAND}A)。
  • 与:先 NAND 得 (\overline{AB}),再用 NAND 反相,得到 AB。
  • 或:先分别反相 A、B,再 NAND,依据德摩根得到 A+B。
  • NOR:在上述 OR 后再加一个 NAND 反相。

图 5-18 NAND 的通用应用:反相、与、或、或非

图 5-18 NAND 的通用应用:反相、与、或、或非

只用 NOR

  • 反相:输入并接,(\overline A=A\operatorname{NOR}A)。
  • 或:先 NOR 得反相结果,再用 NOR 反相。
  • 与:先分别反相 A、B,再 NOR。
  • NAND:在上述 AND 后再加 NOR 反相。

图 5-19 NOR 的通用应用

图 5-19 NOR 的通用应用

双重符号与气泡

画 NAND/NOR 逻辑图时,优先使用 dual symbol,使相邻连接成为“气泡对气泡”或“无气泡对无气泡”。两个相连气泡代表两次反相,彼此抵消。NAND 的等效符号是负或门,NOR 的等效符号是负与门;这样可以直接从图读出表达式。

5.5 脉冲波形与时序图

门的真值表对脉冲同样适用,但要逐时刻观察输入。AND 仅在所有输入同时为高时输出高;OR 只要一个输入为高就输出高;NAND 仅在所有输入同时为高时输出低;NOR 只要一个输入为高就输出低。分析方法是从输入开始,逐级画中间波形,注意传播延迟。

图 5-30 脉冲波形分析示意

图 5-30 脉冲波形分析示意

算例 5-12~5-15

对每个时间区间列出 A、B、C、D 的逻辑值,代入表达式即可。算例 5-12 的输出为 (\overline{AB+AC}),所以 AB 或 AC 任一同时为高时 X 变低;算例 5-13 的电路是 XNOR,输入相同时 X 为高;算例 5-14 先求 Y1~Y4 再求 X;算例 5-15 直接利用 SOP 识别 X 为高的区间,两种方法结果一致。

5.6 用 VHDL 描述组合逻辑

数据流与结构化

数据流法直接写布尔表达式,简洁清晰;结构化法把门封装成 component,用 signal 表示连线,再用 port map 实例化,适合复杂层次化设计。

component AND_gate is
  port (A, B: in bit; X: out bit);
end component AND_gate;
 
signal OUT1, OUT2: bit;
begin
  G1: AND_gate port map (A => IN1, B => IN2, X => OUT1);
  G2: AND_gate port map (A => IN3, B => IN4, X => OUT2);
  G3: OR_gate  port map (A => OUT1, B => OUT2, X => OUT3);
end architecture;

component 是预定义逻辑模块;instantiation 是调用模块;signal 是模块间内部连线。编译后可用 waveform editor 输入波形,并用仿真检查所有组合和传播延迟。

5.7 组合逻辑故障诊断

节点与常见故障

节点是驱动门输出与一个或多个负载输入的公共连接点。常见故障包括:驱动输出开路(所有负载失去信号)、负载输入开路(只影响该负载)、输出短接地(节点恒低)、输出短接 VCC(节点恒高)。

信号跟踪

用示波器或逻辑分析仪从输入逐级向输出测量:先确认输入,再检查每个门输出;第一个出现错误的节点通常就是故障门或其连接。数字波形测量使用 DC 耦合;触发应选最低频率通道。

算例 5-17:由波形定位开路

逐门比较实测(绿)与正确(红)波形,若 G1、G2 正常而 G3 首次不一致,则故障在 G3 或其 D 输入;若 D 输入开路并表现为高电平,可解释该波形。更换包含 G3 的芯片后重新检查。

5.8 应用:储罐阀门与温度控制

入口阀在液位低于最低点,或正在进料且尚未达到最高点时打开:

出口阀要求液位高于最低点、没有进料且温度达到设定值:

温度控制把实测与设定的 8 位 BCD 逐位 XOR,再 OR 汇总:只要有一位不同,T=1,启动加热器。

易错点

  1. 不要混淆高有效与低有效传感器;先写“何时为 1”再写表达式。
  2. XOR 是“不同为 1”,XNOR 是“相同为 1”。
  3. 由真值表写最小项时,输入为 0 的变量必须取反。
  4. 多级门的传播延迟会叠加,时序图不能只看逻辑值而忽略时间。
  5. NAND/NOR 双符号的气泡连接必须保持一致,否则容易漏掉反相。

本章小结

  • 与-或电路直接实现 SOP;AOI 可实现 POS。
  • XOR/XNOR 分别实现“不等比较/等值比较”,也是奇偶校验的基础。
  • 从表达式或真值表均可系统地设计门电路,再用布尔代数或卡诺图最小化。
  • NAND、NOR 是通用门;双符号和气泡抵消能帮助快速读图。
  • 脉冲分析需按时间区间逐级求波形;故障诊断需从输入到输出寻找首个错误节点。
  • VHDL 数据流法写表达式,结构化法用 component、signal 和 port map 描述硬件连接。

自测题

  1. 对 (X=\overline{AB+CD}),当 A=1、B=0、C=1、D=0 时,X 为多少?
  2. 写出三输入“至少两个输入为 1”电路的 SOP 表达式。
  3. 证明 (A\oplus B=A\overline B+\overline AB),并写出 XNOR 表达式。
  4. 仅用 NAND 门实现 NOT、AND、OR,各需要几级门?
  5. 真值表中 X=1 的行如何转换为 SOP 最小项?
  6. 为什么组合逻辑输出波形可能比输入晚?
  7. VHDL 中 component、component instantiation、signal 分别对应什么?
  8. 节点恒低时,列出至少两种可能故障。
  9. 入口阀和出口阀的化简表达式分别是什么?
  10. 设计一个 4 位偶校验发生器和检查器,并说明输出 1 的含义。

自测一下