第 5 讲:组合逻辑电路的分析与设计

组合逻辑电路的输出只取决于当前输入,不含记忆元件和状态反馈。分析是“电路 → 功能”,设计是“功能 → 电路”。

分析流程

给定逻辑图:

  1. 从输入向输出逐级给中间节点命名;
  2. 写每一级逻辑表达式;
  3. 代入并化简输出表达式;
  4. 必要时列真值表;
  5. 用人话说明功能。

“功能”不只是重复表达式。例如输出为输入中 1 的奇偶性,应说明是奇偶校验;两个输出分别是异或和与,应说明是半加器。

低有效信号通常用上划线、小圆圈或名称后缀表示。分析前先确认有效电平,避免把“输出低表示选中”误解为普通反相。

设计流程

1. 定义变量

把自然语言中的条件映射为输入变量,并明确 0/1 各代表什么。输出也要定义“1 表示动作发生”还是“0 表示动作发生”。

2. 建真值表

枚举所有输入组合,根据需求填输出。永远不会出现的输入可标无关项,但必须有事实依据。

3. 写并化简函数

可从最小项写标准与或式,再用 Karnaugh 图化简。多个输出分别化简,但也应寻找能共享的中间项,实际门数可能更少。

4. 选器件并变换门型

根据要求使用基本门、NAND/NOR、译码器、MUX、加法器等。若指定器件是低有效输出,逻辑式要做相应变换。

5. 验证

重新列出电路真值表,与需求逐项比较;再考虑门延迟、扇出、未用输入和冒险。

多输出设计

多个输出常有公共乘积项。若每个输出独立做到代数最简,可能重复大量门。先写

P1=f1(A,B,C),P2=f2(A,B,C)P_1=f_1(A,B,C),\quad P_2=f_2(A,B,C)

等共享节点,再组合输出,可能降低总成本。PLD/FPGA 实现中综合工具也会做共享优化。

只用 NAND 或 NOR

两级与或式适合 NAND–NAND:

F=P1+P2+⋯=Pˉ1Pˉ2⋯‾.F=P_1+P_2+\cdots =\overline{\bar P_1\bar P_2\cdots}.

或与式适合 NOR–NOR。若逻辑图中相邻级的反相气泡相消,可以直接“气泡推移”,但需保持信号有效极性一致。

组合电路的时间行为

理想 Boolean 模型只看稳态。真实输入变化后,各级门要经过传播延迟,输出可能短暂错误。设计若用于异步控制、时钟或复位,必须检查冒险;若输出只在充分稳定后被寄存,毛刺影响可能减小,但仍需满足建立时间。

一个典型多数表决器

三个输入 A,B,CA,B,C,至少两个为 1 时输出 1。真值表化简得

F=AB+AC+BC.F=AB+AC+BC.

它也正是全加器的进位函数。这个例子说明相同 Boolean 函数可以有不同语义,电路功能由输入输出定义决定。

交付检查

  • 变量含义和有效电平已写清;
  • 真值表没有漏组合;
  • 无关项有来源;
  • 化简式和原表等价;
  • 指定器件的使能端已正确处理;
  • 多输出是否能共享逻辑;
  • 真实实现是否存在总线冲突或冒险。

评论