数字电路 - K-Map 方法

在前面的章节中,我们使用布尔公理和定理简化了布尔函数。这是一个耗时的过程,我们必须在每个步骤之后重写简化的表达式。

为了克服这个困难,卡诺 介绍了一种简单的布尔函数简化方法。此方法称为卡诺图方法或 K-map 方法。它是一种图形方法,由 2n 个单元格组成,用于"n"个变量。相邻单元格仅在单个位位置上有所不同。

2 到 5 个变量的 K-Map

K-Map 方法最适合最小化 2 个变量到 5 个变量的布尔函数。现在,让我们逐一讨论 2 到 5 个变量的 K-Map。

2 变量 K-Map

2 变量 K-Map 中的单元格数量为四个,因为变量数量为两个。下图显示了2 变量 K-Map

2 变量 K-Map
  • 只有一种可能性是对 4 个相邻的最小项进行分组。

  • 对 2 个相邻的最小项进行分组的可能组合是 {(m0, m1), (m2, m3), (m0, m2) 和 (m1, m3)}。

3 变量 K-Map

3 变量 K-Map 中的单元格数量为 8,因为变量数量为 3。下图显示3变量K-Map

3变量K-Map
  • 将8个相邻的最小项分组只有一种可能性。

  • 将4个相邻的最小项分组的可能组合是{(m0, m1, m3, m2), (m4, m5, m7, m6), (m0, m1, m4, m5), (m1, m3, m5, m7)、(m3、m2、m7、m6) 和 (m2、m0、m6、m4)}。

  • 将 2 个相邻的最小项分组的可能组合为 {(m0, m1)、(m1, m3)、(m3, m2)、(m2, m0)、(m4, m5)、(m5, m7)、(m7, m6), (m6,m4)、(m0,m4)、(m1,m5)、(m3,m7)和(m2,m6))。

  • 如果 x=0,则 3 变量 K 图变为 2 变量 K 图。

4 变量 K 图

4 变量 K 图的单元格数为 16,因为变量数为 4。下图显示 4 变量 K 图

  • 将 16 个相邻的最小项组合在一起的可能性只有一种。

  • 令 R1、R2、R3 和 R4 分别表示第一行、第二行、第三行和第四行的最小项。同样,C1、C2、C3 和 C4 分别表示第一列、第二列、第三列和第四列的最小项。 8 个相邻最小项的可能组合为 {(R1, R2), (R2, R3), (R3, R4), (R4, R1), (C1, C2), (C2, C3), (C3, C4), (C4, C1)}。

  • 如果 w=0,则 4 变量 K 图变为 3 变量 K 图。

5 变量 K 图

5 变量 K 图的单元格数为 32,因为变量数为 5。下图显示 5 变量 K-Map

5 变量 K-Map
  • 只有一种可能性可以将 32 个相邻的最小项分组。

  • 有两种可能性可以将 16 个相邻的最小项分组。即,将最小项从 m0 分组到 m15 和从 m16 分组到 m31

  • 如果 v=0,则 5 变量 K-map 变为 4 变量 K-map。

在上述所有 K-map 中,我们仅使用最小项符号。类似地,您可以专门使用最大项符号。

使用 K-Maps 最小化布尔函数

如果我们考虑布尔函数为"1"的输入组合,那么在简化 K-map 后,我们将得到布尔函数,该函数为标准乘积和形式。

类似地,如果我们考虑布尔函数为"0"的输入组合,那么在简化 K-map 后,我们将得到布尔函数,该函数为标准和积形式。

遵循这些简化 K-maps 的规则以获得标准乘积和形式。

  • 根据布尔函数中存在的变量数量选择相应的 K-map。

  • 如果布尔函数给出为最小项和形式,然后将这些值放在 K-map 中相应的最小项单元格中。如果布尔函数以乘积和形式给出,则将这些值放在 K-map 中给定乘积项有效的所有可能单元格中。

  • 检查对最大数量的相邻值进行分组的可能性。它应该是 2 的幂。从最高的 2 的幂开始,直到最小的 2 的幂。最高幂等于 K-map 中考虑的变量数,最小幂为零。

  • 每个分组都会给出一个文字或一个乘积项。它被称为素蕴涵项。如果至少一个"1"未被任何其他分组覆盖,而只有该分组覆盖,则素蕴涵项被称为基本素蕴涵项

  • 记下所有素蕴涵项和基本素蕴涵项。简化的布尔函数包含所有必要的素蕴涵项和仅必需的素蕴涵项。

注释 1 − 如果未针对某些输入组合定义输出,则这些输出值将用无关符号"x"表示。这意味着,我们可以将它们视为"0"或"1"。

注释 2 − 如果还存在无关项,则将无关项"x"放置在 K 图的相应单元格中。仅考虑有助于对最大数量的相邻项进行分组的无关项"x"。在这些情况下,将无关值视为"1"。

示例

让我们使用 K-map 简化以下布尔函数,f(W, X, Y, Z)= WX'Y' + WY + W'YZ'

给定的布尔函数是乘积和形式。它有 4 个变量 W、X、Y 和 Z。因此,我们需要 4 变量 K-map。下图显示了 4 变量 K-map,其中 1 对应于给定的乘积项。

最小化示例

这里,1 被放置在 K-map 的以下单元格中。

  • 第 4 行和第 1 列的交点所共有的单元格 & 2 对应于乘积项 WX'Y'

  • 第 3 行和第 4 行以及第 3 列和第 4 列的交点所共有的单元格对应于乘积项 WY

  • 第 1 行和第 2 行以及第 4 列的交点所共有的单元格对应于乘积项 W'YZ'

16 个相邻的或 8 个相邻的不可能被分组。4 个相邻的有三种分组可能性。经过这三种分组后,没有一个是未分组的。因此,我们不需要检查 2 个相邻的分组。下图显示了具有这三个分组4 变量 K 图

三个分组

在这里,我们得到了三个素蕴涵项 WX'、WY 和 YZ'。由于以下原因,所有这些素蕴涵项都是必需的

  • 第四行分组中的两个 1(m8 和 m9) 未被任何其他分组覆盖。只有第四行分组覆盖这两个 1。

  • 方形分组中的单个 1(m15) 未被任何其他分组覆盖。只有方形分组覆盖了那个。

  • 第四列分组的两个 1(m2 & m6) 未被任何其他分组覆盖。只有第四列分组覆盖了这两个。

因此,简化的布尔函数

f = WX' + WY + YZ'

遵循这些简化 K 图的规则,以获得标准的和积形式。

  • 根据布尔函数中存在的变量数量选择相应的 K 图。

  • 如果布尔函数以最大项乘积的形式给出,则将零放置在 K 图的相应最大项单元格中。如果布尔函数以和积的形式给出,则将零放置在给定和项有效的 K 图的所有可能单元格中。

  • 检查对最大数量的相邻零进行分组的可能性。它应该是 2 的幂。从 2 的最高幂开始,直到 2 的最小幂。最高功率等于 K-map 中考虑的变量数,最低功率为零。

  • 每个分组将给出一个文字或一个和项。它被称为素蕴涵项。如果至少一个"0"未被任何其他分组覆盖,而只有该分组覆盖,则素蕴涵项被称为基本素蕴涵项

  • 记下所有素蕴涵项和基本素蕴涵项。简化的布尔函数包含所有基本素蕴涵项和仅所需的素蕴涵项。

注意 − 如果还存在无关项,则将无关项"x"放置在 K-map 的相应单元格中。仅考虑有助于对最大数量的相邻零进行分组的无关项"x"。在这些情况下,将无关值视为"0"。

示例

让我们使用 K-map 简化以下布尔函数 $f\left ( X,Y,Z ight )=\prod M\left ( 0,1,2,4 ight )$。

给定的布尔函数是最大项乘积形式。它有 3 个变量 X、Y 和 Z。因此,我们需要 3 个变量 K-map。给定的最大项是 M0、M1、M2 和 M4。下图显示了具有与给定最大项相对应的零的 3 变量 K-map

素数蕴涵项

8 个相邻零或 4 个相邻零均不可能分组。2 个相邻零有三种分组可能性。经过这三种分组后,没有单个零未分组。下图显示了具有这三种分组3 变量 K 图

ungrouped

这里,我们得到了三个素数蕴涵项 X + Y、Y + Z & Z + X。所有这些主要蕴涵项都是必要的,因为每个分组中的一个零除了它们各自的分组外,不会被任何其他分组覆盖。

因此,简化的布尔函数

f = (X + Y).(Y + Z).(Z + X)

这样,我们可以使用 K-map 方法轻松简化最多 5 个变量的布尔函数。对于超过 5 个变量,使用 K-Map 简化函数会很困难。因为,通过包含一个新变量,K-map 中的单元格数量会翻倍

因此,检查和分组相邻的 1(最小项)或相邻的零(最大项)将变得复杂。下一章我们将讨论表格方法来克服K-map方法的困难。