卡诺图求解器 (K-Map)

使用卡诺图、真值表、布尔表达式、最小项或最大项快速化简布尔函数,并逐步查看SOP/POS结果。

您想如何输入您的卡诺图?

变量
00
01
11
10
00
01
11
10

点击单元格在 0、1 和 X (无关项) 之间切换

化简结果

卡诺图分组

00
01
11
10
00
01
11
10

函数为常数;卡诺图全部被分组,或没有任何单元格被分组。

化简表达式

F = 0

原始分组明细

无需分组 (F = 0).
项
0
文字
0
逻辑门
0

逻辑门电路

F0GND

同步真值表

根据您的 卡诺图 输入自动更新。

ABCD
m
输出
0000
m0
0001
m1
0010
m2
0011
m3
0100
m4
0101
m5
0110
m6
0111
m7
1000
m8
1001
m9
1010
m10
1011
m11
1100
m12
1101
m13
1110
m14
1111
m15

工作原理

只需四个步骤,即可从布尔函数得到化简后的逻辑电路。

  1. 选择变量

    根据需要化简的布尔函数,选择 2、3、4 或 5 个变量。

  2. 输入函数

    输入布尔表达式、最小项或最大项,也可以直接编辑真值表。

  3. 查看 K-Map 分组

    卡诺图会自动标出由 2、4、8 个单元格组成的分组,并寻找最大的有效分组。

  4. 获取化简结果

    复制化简后的 SOP 或 POS 表达式,查看逻辑电路,或将完整解答导出为 PDF。

你可以查看什么

快速了解求解器的主要功能。滚动即可查看各个部分。

卡诺图

按 Gray code 排列的 K-Map,可直接显示由 2、4、8 个单元格组成的分组。

真值表

在 0、1 和 X 之间切换每个输出值,并立即查看函数的变化。

布尔表达式

输入 AB' + C 这样的表达式,即可直接转换为真值表和卡诺图。

逻辑电路

将化简后的表达式显示为由 AND、OR 和 NOT 门组成的逻辑电路。

逐步解答

查看 Quine-McCluskey 的每个步骤以及 Petrick's Method 的选择过程,并配有清晰说明。

使用卡诺图化简布尔函数

卡诺图(K-Map)会把只相差一个变量的输入组合放在相邻位置,让布尔函数中的可合并部分更容易看出来。

本工具支持 2、3、4 和 5 个变量。你可以直接操作卡诺图,也可以从真值表、布尔表达式、最小项或最大项开始。

这些输入方式表示的是同一个函数。修改其中一个值后,其他视图也会同步更新。

0、1 和 X 分别表示什么?

每个 K-Map 单元格可以是:

  • 1 — 该输入组合下函数为真;
  • 0 — 该输入组合下函数为假;
  • X — 该输入组合的输出不需要固定。

X表示 don't-care 条件。如果它能帮助形成更大的分组并减少变量,就可以使用;如果没有帮助,也可以忽略。

从真值表到 K-Map

真值表列出所有可能的输入组合以及对应输出。

卡诺图使用相同的数据,但按 Gray code 排列单元格,因此相邻单元格只会有一个变量不同。

例如:

A'B'

A'B

只有 B发生变化。

因此这两个项可以化简为:

A'

在一个分组中发生变化的变量,不需要保留在最终项中。

同样的原理也适用于 4、8 或 16 个单元格组成的分组。

最小项、最大项和布尔表达式

如果题目已经给出了最小项编号,就不必逐个填写 K-Map 单元格。

例如:

Σm(1,3,5,7)

表示输出为 1 的最小项。

而:

ΠM(0,2,4,6)

表示输出为 0 的最大项。

你也可以直接输入布尔表达式。

Solver 会计算表达式在所有输入组合下的结果,并生成相应的真值表、K-Map、最小项和最大项。

这样可以在同一页面中比较一个布尔函数的不同表示形式。

K-Map 分组规则

有效分组中的单元格数量必须是 2 的幂:

1, 2, 4, 8, 16

通常,合法分组越大,最终表达式中保留的文字越少。

卡诺图的边缘也是相邻的。

最左侧单元格可以和最右侧单元格组成分组,上边缘和下边缘也一样。

因此,四个角也可能组成一个合法分组。

分组还可以重叠。如果同一个单元格参与多个分组能得到更简单的表达式,这种做法是允许的。

Solver 会直接在卡诺图中显示使用到的分组,便于对照最终结果。

SOP 与 POS

SOP (Sum of Products)主要从输出为 1 的单元格开始进行化简。

例如:

A'B + BC

POS (Product of Sums)则主要使用输出为 0 的单元格。

例如:

(A + B')(B + C)

SOP 并不一定总是比 POS 更短。

有些函数用 SOP 表示更简单,而有些函数使用 POS 时会需要更少的项或文字。

如果题目没有规定格式,可以比较两种结果。

Quine-McCluskey 与 Petrick's Method

在较小的 K-Map 中,合适的分组通常比较容易直接看出来。

但是对于 4 或 5 个变量的函数,可能会存在多个有效覆盖。

Solver 使用 Quine-McCluskey 系统地寻找 implicant。

不能再继续扩大的 implicant 称为 prime implicant。

其中有些 prime implicant 是必需的,因为它们覆盖了其他 prime implicant 无法覆盖的必要最小项。

如果选择这些必需项后仍有多个可行覆盖,Petrick's Method会用于分析剩余组合。

这在仅凭卡诺图外观无法立即判断哪个分组组合更合适时尤其有用。

2~5 变量卡诺图

2 变量 K-Map有 4 个单元格。

3 变量 K-Map有 8 个单元格,也更容易看出两侧边缘之间的邻接关系。

4 变量卡诺图有 16 个单元格,在数字逻辑课程中很常见。

5 变量 K-Map包含 32 种输入组合。当存在多个 prime implicant 或 don't-care 条件时,手动化简会明显更复杂。

在所有支持的变量数量下,Solver 都会让 K-Map、真值表、表达式、最小项和最大项保持同步。

逻辑电路与 PDF 导出

化简后的结果不仅可以显示为布尔表达式。

还可以生成逻辑电路,直观看到 SOP 或 POS 结果如何对应 AND、OR、NOT 门。

结果区域也可以显示项数、文字数和逻辑门数量。

如果需要保存完整过程,可以把 K-Map、分组、步骤和电路一起导出为 PDF。

常见问题

什么是卡诺图?
卡诺图是一种通过对逻辑相邻的输入条件进行分组来化简布尔函数的图形方法。
支持多少个变量?
支持 2、3、4 和 5 个变量。
K-Map 中的 X 是什么?
X表示 don't-care 条件。如果它能帮助形成更大的分组,就可以使用。
可以直接输入真值表吗?
可以。每个输出都可以直接设置为 0、1 或 X。
可以输入最小项和最大项吗?
可以。支持直接输入 Σm(...) 和 ΠM(...)。
SOP 和 POS 有什么区别?
SOP 主要使用输出为 1 的组合,POS 则从输出为 0 的组合开始。
为什么分组可以跨越 K-Map 边缘?
因为 Gray code 排列使相对边缘在逻辑上仍然相邻。
可以查看逻辑电路吗?
可以。化简后的表达式可以显示为门级逻辑电路。

可用语言