← 返回博客布尔代数基础 · 3/4

和之积:从最大项到两级逻辑实现

和之积(POS)是 SOP 的对偶形式,由真值表中的 0 构成。学习推导最大项、构建 OR-AND 电路,并对比 POS 与 SOP。

DennyDenny
阅读约需 8 分钟
Chalkboard feature illustration for “和之积:从最大项到两级逻辑实现”

简述: 规范和之积对各个输出为 0 的行所对应的最大项进行 AND 运算;规范积之和则对各个输出为 1 的行所对应的最小项进行 OR 运算。零行数量可确定规范式的项数,却不能直接确定最优化简电路。应将化简后的 SOP 与 POS 分别映射到目标技术后再作比较。

积之和(SOP)通常从真值表中输出为 1 的行出发:写出相应最小项,再用 OR 将其连接。其代数对偶**和之积(POS)**则从输出为 0 的行出发,以相反方向处理同一问题。

当真值表中输出为 0 的行少于输出为 1 的行时,规范 POS 的子句数少于规范 SOP 的最小项数。化简会改变这一比较;书写项较少也不代表综合后的面积、延迟或功耗必然更低。POS 可自然映射为 OR-AND 或 NOR-NOR 结构,SOP 则可自然映射为 AND-OR 或 NAND-NAND 结构。

拆解和之积

顾名思义,和之积(POS)表达式是一个或多个和(OR)项的逻辑乘积(AND)。

考虑一般形式:

Y=(A+B)⋅(A‾+C)⋅(B+C‾)Y = (A + B) \cdot (\overline{A} + C) \cdot (B + \overline{C})

在该表达式中,括号内的每一项——如 (A+B)(A + B)——都是“和项”。这些独立和项随后被“相乘”(逻辑 AND)以产生最终输出 YY 。

OR 门元件

这种结构自然映射为两级 OR-AND 电路。第一级由形成和项的 OR 门组成,其输出送入单个 AND 门以形成最终乘积。

规范 POS 表达式的基本构建块是最大项。最大项是一个包含函数中每个变量的和项,每个变量以原变量或补变量的形式出现。最小项(SOP)代表真值表中的单个“1”,而最大项代表单个“0”。

探索 OR 门元件

最大项约定:常见易错点

从 SOP 转向 POS 时,真值表中各位含义的约定完全相反,这是常见的易错点。

在 SOP(最小项)约定中:

  • “1”表示变量采用原形式(AA)。
  • “0”表示变量采用补形式(A‾\overline{A})。

在 POS(最大项)约定中,情况恰好相反:

  • “0”表示变量采用其原形式(AA)。
  • “1”表示变量采用补形式(A‾\overline{A})。

这一反转由最大项的目标决定。规范 POS 由函数输出为 0 的行构成;每个最大项仅在其对应的特定输入组合下产生“0”。

以三变量最大项 M5M_5 为例,它对应二进制输入 101101(A=1,B=0,C=1A=1, B=0, C=1)。为使该最大项的值为 00,需要构造一个在该特定输入下每个文字都为 00 的和。

  • 对于 A=1A=1,必须使用其补变量 A‾\overline{A},其值为 00 。
  • 对于 B=0B=0,必须使用原变量 BB,其值为 00 。
  • 对于 C=1C=1,必须使用其补变量 C‾\overline{C},其值为 00 。

得到的最大项为 M5=A‾+B+C‾M_5 = \overline{A} + B + \overline{C}。输入为 101101 时,其值为 0+0+0=00 + 0 + 0 = 0。对任何其他输入组合,至少有一个文字为 11,从而使整个最大项为 11。因此,POS 电路末端的 AND 门仅在至少一个 OR 门输出为 00 时输出 00 。

从真值表到 POS 表达式

POS 表达式可以按固定步骤推导。设逻辑函数 YY 由下表定义:

ABCY最大项
0001-
0010M1=A+B+C‾M_1 = A + B + \overline{C}
0101-
0111-
1000M4=A‾+B+CM_4 = \overline{A} + B + C
1011-
1100M6=A‾+B‾+CM_6 = \overline{A} + \overline{B} + C
1111-

第 1 步:识别零

扫描真值表,找出所有输出 YY 为 00 的输入组合。以 000 为索引 0 时,对应的输入索引(亦即最大项编号)为 1、4 和 6;在当前显示的表格中,它们分别是第 2、5、7 行。

第 2 步:为每个零写出最大项

应用最大项约定(0 = 原变量,1 = 补变量):

  • 编号 1(001): A=0,B=0,C=1→(A+B+C‾)A=0, B=0, C=1 \rightarrow (A + B + \overline{C})
  • 编号 4(100): A=1,B=0,C=0→(A‾+B+C)A=1, B=0, C=0 \rightarrow (\overline{A} + B + C)
  • 编号 6(110): A=1,B=1,C=0→(A‾+B‾+C)A=1, B=1, C=0 \rightarrow (\overline{A} + \overline{B} + C)

第 3 步:对最大项进行 AND

最终 POS 表达式是逻辑乘积:

Y=(A+B+C‾)⋅(A‾+B+C)⋅(A‾+B‾+C)Y = (A + B + \overline{C}) \cdot (\overline{A} + B + C) \cdot (\overline{A} + \overline{B} + C)

它通常写作紧凑的 Pi(Π\Pi)记法:

Y=∏M(1,4,6)Y = \prod M(1, 4, 6)

规范比较为三个最大项对五个最小项。这还不是最佳实现。第 4 行(100)和第 6 行(110)仅在 B 上不同,因此其零单元可被分组:

Y=(A+B+C‾)(A‾+C)Y=(A+B+\overline C)(\overline A+C)

这个最小化 POS 有两个子句。同一函数的最小化 SOP 需要不同的覆盖。比较最小化形式后,再将它们映射到实际单元或 LUT,然后才能主张面积、延迟或功耗优势。

在 digisim.io 上实现 POS

POS 的 OR-AND 结构可直接在 digisim.io 画布上构建。相同的规范形式也用于积之和和卡诺图化简。

AND 门元件

构建指南

  1. **输入:**为 AA 、 BB 和CC 放置三个 INPUT_SWITCH 元件。
  2. **反相:**使用 NOT 门生成补变量 A‾\overline{A}、B‾\overline{B} 和C‾\overline{C}。
  3. **OR 级:**对于表达式 Y=∏M(1,4,6)Y = \prod M(1, 4, 6),在画布上拖入三个 OR 门。
  • 将第一个 OR 接至 AA 、 BB 和C‾\overline{C}。
  • 将第二个 OR 接至 A‾\overline{A}、 BB 和CC 。
  • 将第三个 OR 接至 A‾\overline{A}、B‾\overline{B} 和 CC 。
  1. **AND 级:**拖入一个三输入 AND 门。
  2. **最终连接:**将三个 OR 门输出连接到 AND 门输入。把 OUTPUT_LIGHT 接到最终 AND 输出。
  3. **最小化:**在规范电路旁构建 (A+B+C‾)(A‾+C)(A+B+\overline C)(\overline A+C),并验证全部八行一致。

打开通用逻辑模板

使用示波器验证

检查 POS 电路时序时,可使用 OSCILLOSCOPE_8CH:将前三个通道接至输入(A,B,CA, B, C),第四个通道接至最终输出 YY 。

切换开关时,Y 在 001 、 100 和 110 时为低电平。应记录全部八个输入/输出对,而不是依赖 POS 会“滤除禁止状态”的视觉印象;这些只是指定函数的零行。

常见陷阱:悬空输入与传播延迟

构建 POS 电路时,初学者常忘记带有悬空输入的 AND 门可能表现不可预测。在 digisim.io 中,确保所有输入均连接到 CONSTANT 或 INPUT_SWITCH。

在概念性的两级 POS 电路中,数据路径经过一个 OR 级、一个 AND 级以及所需的输入反相。物理时序还涉及单元延迟、扇入、布线、负载、输入转换时间和输出要求。映射后的 SOP、POS、因式分解或 LUT 实现孰优,取决于具体目标;应进行时序分析,不能简单相加通用 OR 与 AND 门的延迟。

实际应用

若系统主要由故障或例外条件定义,POS 往往比 SOP 更便于表达。

1. 地址与资格逻辑

地址选择函数可由匹配区域或排除区域表示。当少量零条件能干净地组合时,POS 很方便;对于范围,前缀比较和因式分解译码器往往更清楚。最佳实现取决于映射和目标,而不是某条 Intel 8086 时代的规则。

2. 权限逻辑

逻辑权限可能要求多个子句,例如:

RUN=(pressure_ok)(temperature_ok)(guard_closed)RUN=(pressure\_ok)(temperature\_ok)(guard\_closed)

这是单文字条件的乘积。等价地,shutdown = high_pressure OR high_temperature OR e_stop,且 RUN = NOT shutdown 。这些布尔方程有助于规格说明,但安全等级联锁还需要故障检测、定义好的失能行为、诊断、经过验证的硬件以及符合适用安全标准。POS 记法本身并不提供这些保证。

POS 到 NOR-NOR 的联系

正如 SOP 自然映射为 NAND-NAND 逻辑,POS 也自然映射为 NOR-NOR 逻辑。转换使用德摩根定律,并遵循相同模式。

从本例开始:

Y=(A+B+C‾)⋅(A‾+B+C)⋅(A‾+B‾+C)Y = (A + B + \overline{C}) \cdot (\overline{A} + B + C) \cdot (\overline{A} + \overline{B} + C)

应用双重否定:

Y=(A+B+C‾)⋅(A‾+B+C)⋅(A‾+B‾+C)‾‾Y = \overline{\overline{(A + B + \overline{C}) \cdot (\overline{A} + B + C) \cdot (\overline{A} + \overline{B} + C)}}

对外层横线应用德摩根定律(积变为和,每个因子取补):

Y=(A+B+C‾)‾+(A‾+B+C)‾+(A‾+B‾+C)‾‾Y = \overline{\overline{(A + B + \overline{C})} + \overline{(\overline{A} + B + C)} + \overline{(\overline{A} + \overline{B} + C)}}

每个 (A+B+C‾)‾\overline{(A + B + \overline{C})} 都是 NOR 运算(计入补输入后),外层表达式同样是 NOR。结果是两级 NOR-NOR 电路。

结构配对是核心洞见:通过德摩根定律,SOP 可映射为 NAND-NAND,POS 可映射为 NOR-NOR。这并不强制实现方式。库可能偏好特定单元,综合也可能对表达式作因式分解或重映射。

SOP 与 POS:何时使用哪一种

标准SOP(积之和)POS(和之积)
推导自输出 = 1 的行输出 = 0 的行
构建块最小项(AND 项)最大项(OR 项)
电路结构AND-OR(或 NAND-NAND)OR-AND(或 NOR-NOR)
项较少的情形真值表中 1 较少真值表中 0 较少
设计思维“输出何时应为 ON?”“输出何时应为 OFF?”

在该示例中,规范 POS 有三个最大项,规范 SOP 有五个最小项。化简后,POS 有两个子句。因此,在满足目标映射与时序条件时,此函数采用 POS 更具优势。

结论

和之积从函数的零值条件——例外、错误与禁止状态——出发。结合 POS 与 SOP,可根据门数、传播延迟和目标技术,为给定函数选择更合适的实现。

后续可使用卡诺图以图形方式化简函数,或参照 OR 门元件文档构建本文的 OR-AND 电路。

将想法变成真正可运行的电路。