真值表到最小/大项表达式

[TOC]

问题

有这样一个逻辑真值表, XYZ表示输入, F表示输出:

X Y Z F
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1

这个要怎么用逻辑门搭出来呢?

还是先写出表达式吧

这个要直接搭的话实在是捉鸡, 那就先写出输入输出与或非逻辑表达式吧.

最小项表达式就是乘积项的和表达式, 最大项表达式就是最小项表达式的对偶形式, 是求和项的积表达式.

这样, 把最小项和最大项都先写到这个表的后头.

序号 X Y Z F 最小项 最大项
0 0 0 0 1 ~X~Y~Z X+Y+Z
1 0 0 1 0 ~X~YZ X+Y+~Z
2 0 1 0 0 ~XY~Z X+~Y+Z
3 0 1 1 1 ~XYZ X+~Y+~Z
4 1 0 0 1 X~Y~Z ~X+Y+Z
5 1 0 1 0 X~YZ ~X+Y+~Z
6 1 1 0 1 XY~Z ~X+~Y+Z
7 1 1 1 1 XYZ ~X+~Y+~Z

注意这里最小项的取值是输入为1就是原符号, 输入为0就是原符号取反; 最大项就是反着来.

然后就是要写表达式了, 最小项表达式的取值规则是取出输出为1的乘积项, 然后求和. 根据上表, 就是:

1
2
F(min) = F(0) + F(3) + F(4) + F(6) + F(7)
= ~X~Y~Z + ~XYZ + X~Y~Z + XY~Z + XYZ

然后最大项的取值规则是取出输出为0的求和项, 然后取积, 就是:

1
2
F(max) = F(1F(2F(5)
= (X+Y+~Z)·(X+~Y+Z)·(~X+~Y+Z)

这样其实就已经可以画出逻辑门的实现图来了, 最小项表达式就是前级是与运算, 后级是或运算, 最大项表达式就是相反, 两个出来的电路还是不一样的. 完全按这个表达式来取还是稍显复杂的, 不过看这个表达式的话还是有可以简化的地方的:

1
2
F(min) = (~X + X)·~Y~Z + ~XYZ + XY(~Z + Z)
= ~Y~Z + ~XYZ + XY

这样就简单了许多了.

总结

整个步骤归纳起来就是:

  1. 写出真值表.
  2. 在每条值后面写出相应的最小项和最大项.
  3. 根据取值规则选取最小项作和, 最大项作积.
  4. 根据布尔运算定理作一些简化.
  5. 画出逻辑门电路.

还有一种实现真值表直接到简化的逻辑表达式的方法, 就是用卡诺图, 这里就先不讲了.

然后重要的一点, 要注意验算, 这样就不容易错了.