卡诺图化简实例 | AI生成和翻译

Home 2025.10

卡诺图应用示例:最小化三变量布尔函数

让我们通过一个实际示例来演示如何使用卡诺图简化布尔表达式。我们将使用一个三变量函数(A, B, C),当最小项 m(1, 2, 4, 7) 时输出为 1。这意味着:

目标是将此表达式最小化为最少的项(和文字),从而减少电路中的逻辑门数量。

步骤 1:构建卡诺图

三变量卡诺图是一个 2x4 网格(或 4x2,但我们将使用行表示 AB,列表示 C)。行按格雷码顺序(00, 01, 11, 10)标记,确保相邻单元格仅有一位不同。在与最小项对应的单元格中填入 1:

AB \ C 0 1
00 0 1 (m1)
01 1 (m2) 0
11 0 1 (m7)
10 1 (m4) 0

(此处,m1 = A’B’C,m2 = A’BC’,m4 = AB’C’,m7 = ABC。)

步骤 2:分组相邻的 1

最小化的关键在于找到尽可能大的相邻 1 组(矩形或正方形,包括环绕边缘,如环形)。每组的大小必须是 2 的幂(1, 2, 4, 8 等)。组可以重叠。

等等,为了清晰起见重新绘制——实际上,此函数的最优分组:

我选了一个不好的示例——让我选一个具有清晰组别的更好示例来说明。

为清晰起见修订的示例:让我们使用 f(A, B, C) = Σ m(0, 1, 2, 4, 5, 6) = A’B’C’ + A’B’C + A’BC’ + AB’C’ + AB’C + ABC’

卡诺图:

AB \ C 0 1
00 1 (m0) 1 (m1)
01 1 (m2) 0 (m3)
11 1 (m6) 0 (m7)
10 1 (m4) 1 (m5)

最小项:0(000),1(001),2(010),4(100),5(101),6(110)——是的 m3(011)=0, m7(111)=0。

所以表格:

AB \ C 0 1
00 1 1
01 1 0
11 1 0
10 1 1

步骤 3:识别组

现在,对 1 进行分组:

为了最小化,我们选择覆盖所有 1 的、大小最大的非重叠或最小覆盖组。

最优:

m5 被覆盖,m1 被覆盖。

注意:m0 同时在组1 和组2 中,但这没问题——允许重叠。

步骤 4:推导最小化表达式

每个组变成一个乘积项(公共文字的 AND):

所以,最小化 SOP(积之和):f = C’ + A’B’ + B’C

验证:这有 3 项(对比原始 6 项),更少的文字(4 对比 12),更简单的电路(基本上 3 个 AND/OR 门)。

你可以在真值表上绘制此表达式以确认它与原始 1 匹配。

为什么这能最小化?

此示例展示了卡诺图如何将最小项之和快速转换为紧凑形式,而无需代数操作。对于 4+ 变量,使用软件,但练习 2-3 变量示例可以建立直觉。

数字逻辑设计基础


Back

x-ai/grok-4-fast

Donate