注:文章内容基于 Thomas L. Floyd-Digital Fundamentals-Prentice Hall (2014)

一. SOP/POS介绍

1. The Sum-of-Products(SOP)Form

SOP表达式:

  1. 书中给出定义:
    A product term was defined as a term consisting of the product (Boolean multiplication) of literals (variables or their complements). When two or more product terms are summed by Boolean addition, the resulting expression is a sum-of-products (SOP).
  1. 普遍理解为:(变量的)乘积之和组成表达式
    Sum有求和之意,Product有乘积之意

例如如下表达式:

  1. A B C + A ‾ B + A C ‾ ABC+\overline{A}B+A\overline{C} ABC+AB+AC
  2. A B + A ‾ B + A B C ‾ + B C AB+\overline{A}B+AB\overline{C} +BC AB+AB+ABC+BC
  3. A B D + A ‾ B D + B C ‾ D + B ABD+\overline{A}BD+B\overline{C}D +B ABD+ABD+BCD+B

要注意在SOP表达式中 A ‾ B C ‾ \overline{A}B\overline{C} ABC可以作为一个求和项,但是 A B C ‾ \overline{ABC} ABC不可以表示一个求和项;
写成SOP表达式的时候需满足单个上划线下只存在一个变量

2.The Product-of-Sums(POS)Form

  1. 书中给出定义:
    A sum term was defined as a term consisting of the sum (Boolean addition) of literals (variables or their complements). When two or more sum terms are multiplied, the resulting expression is a product-of-sums (POS).
  1. 普遍理解为:(变量之)和的乘积组成的表达式
    Sum有求和之意,Product有乘积之意

例如如下表达式:

  1. ( A + B ) ( A + B ‾ + C ) ( B + C ‾ ) (A+B)(A+\overline{B}+C)(B+\overline{C}) (A+B)(A+B+C)(B+C)
  2. ( A + B + C ‾ ) ( A + B ‾ + C ) ( B + C ‾ ) ( B ‾ + C ) (A+B+\overline{C})(A+\overline{B}+C)(B+\overline{C})(\overline{B}+C) (A+B+C)(A+B+C)(B+C)(B+C)
  3. ( A + B + D ) ( A + C ‾ + D ) ( B + C + D ‾ ) (A+B+D)(A+\overline{C}+D)(B+C+\overline{D}) (A+B+D)(A+C+D)(B+C+D)

要注意在POS表达式中 ( A + B + C ) (A+B+C) (A+B+C)可以作为一个乘积项,但是 ( A + B + C ) ‾ \overline{(A+B+C)} (A+B+C)不可以表示一个乘积项;
写成POS表达式的时候需满足单个上划线下只存在一个变量


二. SOP/POS标准式

无论标准或非标准式,在写SOP/POS表达式时都必须满足上划线下只包含一个变量

标准形式的SOP/POS表示SOP/POS中的每个求和项或乘积项(求和项表示用于求和的项元;乘积项表示用于乘积的项元)包含全部的变量

① 实际上将SOP/POS化成标准形式是“化简为繁”
② 对应于“化繁为简”代指将SOP/POS式化至最简以简化设计门电路(化简方法有多种:公式化简法、卡诺图最小化布尔函数法、Quine-McCluskey法等)

在这里将SOP/POS化至最简实现的功能:方便写出SOP/POS真值表,并通过真值表实现简单的相互转换。

在进行标准化之前,先掌握如下基本公式(布尔代数基本公式):

1. A + 0 = A A+0=A A+0=A7. A ⋅ A = A A\cdot A=A AA=A
2. A + 1 = 1 A+1=1 A+1=18. A ⋅ A ‾ = 0 A\cdot \overline{A}=0 AA=0
3. A ⋅ 0 = 0 A\cdot 0=0 A0=09. A ‾ ‾ = A \overline{\overline{A}}=A A=A
4. A ⋅ 1 = A A\cdot 1=A A1=A10. A + A B = A A+AB=A A+AB=A
5. A + A = A A+A=A A+A=A11. A + A ‾ B = A + B A+\overline{A}B=A+B A+AB=A+B
6. A + A ‾ = 1 A+\overline{A}=1 A+A=112. ( A + B ) ( A + C ) = A + B C (A+B)(A+C)=A+BC (A+B)(A+C)=A+BC

证明过程略

1. SOP标准化

给出如下SOP表达式:
A B + A C + B C AB+AC+BC AB+AC+BC

标准化方法:
① 确定表达式总变量数(此式为3)
② 依 A + A ‾ = 1 A+\overline{A}=1 A+A=1,对于第一项 A B AB AB,添加缺失的变量 C C C,有 A B = A B ( C + C ‾ ) AB=AB(C+\overline{C}) AB=AB(C+C)
③ 展开表达式、整理

得到 A B ( C + C ‾ ) + A C ( B + B ‾ ) + B C ( A + A ‾ ) AB(C+\overline{C})+AC(B+\overline{B})+BC(A+\overline{A}) AB(C+C)+AC(B+B)+BC(A+A)
展开整理得 A B C + A B C + A B C + A B C ‾ + A B ‾ C + A ‾ B C ABC+ABC+ABC+AB\overline{C}+A\overline{B}C+\overline{A}BC ABC+ABC+ABC+ABC+ABC+ABC

2. POS标准化

给出如下POS表达式:
( A + B ) ( A + C ) ( B + C ) (A+B)(A+C)(B+C) (A+B)(A+C)(B+C)

标准化方法:
① 确定表达式总变量数(此式为3)
② 依 A ⋅ A ‾ = 0 A\cdot \overline{A}=0 AA=0,对于第一项 ( A + B ) (A+B) (A+B),添加缺失的变量 C C C,有 ( A + B ) = ( A + B + C ⋅ C ‾ ) (A+B)=(A+B+C\cdot \overline{C}) (A+B)=(A+B+CC)
③ 依 ( A + B ) ( A + C ) = A + B C (A+B)(A+C)=A+BC (A+B)(A+C)=A+BC将表达式展开
( A + B ) = ( A + B + C ⋅ C ‾ ) = ( A + B + C ) ( A + B + C ‾ ) (A+B)=(A+B+C\cdot \overline{C})=(A+B+C)(A+B+\overline{C}) (A+B)=(A+B+CC)=(A+B+C)(A+B+C)
④ 整理

得到 ( A + B ) = ( A + B + C ⋅ C ‾ ) = ( A + B + C ) ( A + B + C ‾ ) (A+B)=(A+B+C\cdot \overline{C})=(A+B+C)(A+B+\overline{C}) (A+B)=(A+B+CC)=(A+B+C)(A+B+C)

即得到标准形式下的SOP/POS表达式

3. SOP对应真值表

以标准化后的SOP标准式为例

  1. 对于如下SOP标准式:
    A B C + A B C ‾ + A B ‾ C + A ‾ B C ABC+AB\overline{C}+A\overline{B}C+\overline{A}BC ABC+ABC+ABC+ABC

(1). 含有三个变量,对应 A B C ABC ABC所有可能情况为 2 3 2^{3} 23种,则需要确定该表达式对应于这 8 8 8种情况中的哪种情况。
(2). 以 A B C ABC ABC为例,对 A 、 B 、 C A、B、C ABC三个输入执行与操作,只要其中任意一个输入为 0 0 0,则输出为 0 0 0,反过来,当输出为 1 1 1时, A 、 B 、 C A、B、C ABC输入唯一确定且全为 1 1 1这就意味着,可以通过输出为 1 1 1的状态唯一确定输入值
(3). 现通过给定输出值来写出SOP表达式对应真值表
将输出定为 1 1 1,对于每一项例如 A ‾ B C \overline{A}BC ABC,此项其中每一项输入给 1 1 1,反求 A 、 B 、 C A、B、C ABC,反求结果为 A = 0 , B = 1 , C = 1 A=0,B=1,C=1 A=0B=1C=1,并将结果写入下表中
上式求得输出为 1 1 1的几种情况分别为 111 、 110 、 101 、 011 111、110、101、011 111110101011

ABCOutput X1Product Term
000
001
010
0111 A ‾ B C \overline{A}BC ABC
100
1011 A B ‾ C A\overline{B}C ABC
1101 A B C ‾ AB\overline{C} ABC
1111 A B C ABC ABC

除了输出为 1 1 1的所有状态,剩下状态即为输出为 0 0 0的所有状态
原理上述已给出,输入值满足输出为 1 1 1的条件,不满足即输出为 0 0 0

补全上述真值表

ABCOutput XProduct Term
0000
0010
0100
0111 A ‾ B C \overline{A}BC ABC
1000
1011 A B ‾ C A\overline{B}C ABC
1101 A B C ‾ AB\overline{C} ABC
1111 A B C ABC ABC

4. POS对应真值表

以标准化后的SOP标准式为例

  1. 对于如下POS表达式:
    ( A + B + C ) ( A + B + C ‾ ) ( A ‾ + B + C ) ( A + B ‾ + C ) (A+B+C)(A+B+\overline{C})(\overline{A}+B+C)(A+\overline{B}+C) (A+B+C)(A+B+C)(A+B+C)(A+B+C)

(1). 含有三个变量,对应 A B C ABC ABC所有可能情况为 2 3 2^{3} 23种,则需要确定该表达式对应于这 8 8 8种情况中的哪种情况。
(2). 以 ( A + B + C ) (A+B+C) (A+B+C)为例,对 A 、 B 、 C A、B、C ABC三个输入执行或操作,只要其中任意一个输入为 1 1 1,则输出为 1 1 1,反过来,当输出为 0 0 0时, A 、 B 、 C A、B、C ABC输入唯一确定且全为 0 0 0这就意味着,可以通过输出为 0 0 0的状态唯一确定输入值
(3). 现通过给定输出值来写出POS表达式对应真值表
将输出定为 0 0 0,对于每一项例如 ( A + B + C ‾ ) (A+B+\overline{C}) (A+B+C),此项其中每一项输入给 0 0 0,反求 A 、 B 、 C A、B、C ABC,反求结果为 A = 0 , B = 0 , C = 1 A=0,B=0,C=1 A=0B=0C=1,并将结果写入下表中
上式求得输出为 0 0 0的几种情况分别为 000 、 001 000、001 000001

ABCOutput XProduct Term
0000 ( A + B + C ) (A+B+C) (A+B+C)
0010 ( A + B + C ‾ ) (A+B+\overline{C}) (A+B+C)
0100 ( A + B ‾ + C ) (A+\overline{B}+C) (A+B+C)
011
1000 ( A ‾ + B + C ) (\overline{A}+B+C) (A+B+C)
101
110
111

除了输出为 0 0 0的所有状态,剩下状态即为输出为 1 1 1的所有状态
原理上述已给出,输入值满足输出为 0 0 0的条件,不满足即输出为 1 1 1

补全上述真值表

ABCOutput XProduct Term
0000 ( A + B + C ) (A+B+C) (A+B+C)
0010 ( A + B + C ‾ ) (A+B+\overline{C}) (A+B+C)
0100 ( A + B ‾ + C ) (A+\overline{B}+C) (A+B+C)
0111
1000 ( A ‾ + B + C ) (\overline{A}+B+C) (A+B+C)
1011
1101
1111

三. SOP/POS的相互转换

在给出真值表后,根据下述两种真值表

表1
ABCOutput XProduct Term
0000
0010
0100
0111 A ‾ B C \overline{A}BC ABC
1000
1011 A B ‾ C A\overline{B}C ABC
1101 A B C ‾ AB\overline{C} ABC
1111 A B C ABC ABC
表2
ABCOutput XProduct Term
0000 ( A + B + C ) (A+B+C) (A+B+C)
0010 ( A + B + C ‾ ) (A+B+\overline{C}) (A+B+C)
0100 ( A + B ‾ + C ) (A+\overline{B}+C) (A+B+C)
0111
1000 ( A ‾ + B + C ) (\overline{A}+B+C) (A+B+C)
1011
1101
1111

可由SOP/POS求得POS/SOP
转换方法:
① 根据给定的表达式类型列全真值表
② 根据需要求取的类型逐一列每一项的表达式
例如需要由SOP求POS,则依据真值表中Output X为 0 0 0的部分,写出其对应每一项的表达式(如由从表一转换为表二)
③ 将项与项之间依据表达式相整合

最后给出所求表达式类型
据此,通过非标准形式的SOP/POS表达式可以求得标准形式的POS/SOP表达式并给出对应真值表


希望能够帮到迷途之中的你,知识有限,如有学术错误请及时指正,感谢大家的阅读

(^^)/▽ ▽\(^^)

  1. Output X表示表达式输出值 ↩︎

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐