和之积:从最大项到两级逻辑实现
和之积(POS)是 SOP 的对偶形式,由真值表中的 0 构成。学习推导最大项、构建 OR-AND 电路,并对比 POS 与 SOP。
简述: 规范和之积对各个输出为 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)。
考虑一般形式:
在该表达式中,括号内的每一项——如 ——都是“和项”。这些独立和项随后被“相乘”(逻辑 AND)以产生最终输出 。

这种结构自然映射为两级 OR-AND 电路。第一级由形成和项的 OR 门组成,其输出送入单个 AND 门以形成最终乘积。
规范 POS 表达式的基本构建块是最大项。最大项是一个包含函数中每个变量的和项,每个变量以原变量或补变量的形式出现。最小项(SOP)代表真值表中的单个“1”,而最大项代表单个“0”。
最大项约定:常见易错点
从 SOP 转向 POS 时,真值表中各位含义的约定完全相反,这是常见的易错点。
在 SOP(最小项)约定中:
- “1”表示变量采用原形式()。
- “0”表示变量采用补形式()。
在 POS(最大项)约定中,情况恰好相反:
- “0”表示变量采用其原形式()。
- “1”表示变量采用补形式()。
这一反转由最大项的目标决定。规范 POS 由函数输出为 0 的行构成;每个最大项仅在其对应的特定输入组合下产生“0”。
以三变量最大项 为例,它对应二进制输入 ()。为使该最大项的值为 ,需要构造一个在该特定输入下每个文字都为 的和。
- 对于 ,必须使用其补变量 ,其值为 。
- 对于 ,必须使用原变量 ,其值为 。
- 对于 ,必须使用其补变量 ,其值为 。
得到的最大项为 。输入为 时,其值为 。对任何其他输入组合,至少有一个文字为 ,从而使整个最大项为 。因此,POS 电路末端的 AND 门仅在至少一个 OR 门输出为 时输出 。
从真值表到 POS 表达式
POS 表达式可以按固定步骤推导。设逻辑函数 由下表定义:
| A | B | C | Y | 最大项 |
|---|---|---|---|---|
| 0 | 0 | 0 | 1 | - |
| 0 | 0 | 1 | 0 | |
| 0 | 1 | 0 | 1 | - |
| 0 | 1 | 1 | 1 | - |
| 1 | 0 | 0 | 0 | |
| 1 | 0 | 1 | 1 | - |
| 1 | 1 | 0 | 0 | |
| 1 | 1 | 1 | 1 | - |
第 1 步:识别零
扫描真值表,找出所有输出 为 的输入组合。以 000 为索引 0 时,对应的输入索引(亦即最大项编号)为 1、4 和 6;在当前显示的表格中,它们分别是第 2、5、7 行。
第 2 步:为每个零写出最大项
应用最大项约定(0 = 原变量,1 = 补变量):
- 编号 1(001):
- 编号 4(100):
- 编号 6(110):
第 3 步:对最大项进行 AND
最终 POS 表达式是逻辑乘积:
它通常写作紧凑的 Pi()记法:
规范比较为三个最大项对五个最小项。这还不是最佳实现。第 4 行(100)和第 6 行(110)仅在 B 上不同,因此其零单元可被分组:
这个最小化 POS 有两个子句。同一函数的最小化 SOP 需要不同的覆盖。比较最小化形式后,再将它们映射到实际单元或 LUT,然后才能主张面积、延迟或功耗优势。
在 digisim.io 上实现 POS
POS 的 OR-AND 结构可直接在 digisim.io 画布上构建。相同的规范形式也用于积之和和卡诺图化简。

构建指南
- **输入:**为 、 和 放置三个 INPUT_SWITCH 元件。
- **反相:**使用 NOT 门生成补变量 、 和。
- **OR 级:**对于表达式 ,在画布上拖入三个 OR 门。
- 将第一个 OR 接至 、 和。
- 将第二个 OR 接至 、 和 。
- 将第三个 OR 接至 、 和 。
- **AND 级:**拖入一个三输入 AND 门。
- **最终连接:**将三个 OR 门输出连接到 AND 门输入。把 OUTPUT_LIGHT 接到最终 AND 输出。
- **最小化:**在规范电路旁构建 ,并验证全部八行一致。
使用示波器验证
检查 POS 电路时序时,可使用 OSCILLOSCOPE_8CH:将前三个通道接至输入(),第四个通道接至最终输出 。
切换开关时,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. 权限逻辑
逻辑权限可能要求多个子句,例如:
这是单文字条件的乘积。等价地,shutdown = high_pressure OR high_temperature OR e_stop,且 RUN = NOT shutdown 。这些布尔方程有助于规格说明,但安全等级联锁还需要故障检测、定义好的失能行为、诊断、经过验证的硬件以及符合适用安全标准。POS 记法本身并不提供这些保证。
POS 到 NOR-NOR 的联系
正如 SOP 自然映射为 NAND-NAND 逻辑,POS 也自然映射为 NOR-NOR 逻辑。转换使用德摩根定律,并遵循相同模式。
从本例开始:
应用双重否定:
对外层横线应用德摩根定律(积变为和,每个因子取补):
每个 都是 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,可根据门数、传播延迟和目标技术,为给定函数选择更合适的实现。



