考研数电·零基础讲义 · 第 04 讲(中)|卡诺图化简法
学完这一讲,你能画出 2、3、4 变量卡诺图,按规则"圈 1",稳稳地写出最简与或式;还会"圈 0"求反函数和最简或与式。预计用时 2.5~3 小时。
本讲地图#
- 卡诺图是什么:把真值表"折"成一个方格图,让"逻辑相邻"的最小项在位置上也挨着。
- 怎么画:2、3、4 变量卡诺图的格局,为什么行列要按 00、01、11、10(格雷码)排。
- 相邻性:上下左右挨着的格相邻,最左列和最右列相邻,最上行和最下行相邻,四个角也相邻。
- 圈 1 规则与步骤:圈的大小必须是 1、2、4、8……个格,形状必须是矩形;圈要尽量大、个数尽量少;先圈"只有一种圈法"的 1。
- 华师怎么考:2026 回忆题第 5 题"化简Y=∑m(1,3,5,8,9,13)+∑d(7,10,11,14,15)"就是四变量卡诺图(带无关项,第 04 讲下完整讲)。4 变量卡诺图是必须熟练的硬功夫。
- 教材对应:阎石《数字电子技术基础》第六版 第 2 章 2.6.2 节。
前置知识#
- 最小项、编号mi、∑m写法;"相邻最小项相加能消去一个变量"(见第 03 讲)。
- 公式化简的并项法AB+AB=A(见第 04 讲上)。
- 格雷码"相邻两个码只差一位"的特点(见第 01 讲下)。
一、为什么需要卡诺图#
大白话#
上一讲的公式法像"徒手解谜":灵活,但没固定套路,化到一半常常不知道是不是已经最简。
卡诺图的思路很聪明:既然化简的本质就是"把只差一个变量的最小项合并"(AB+AB=A),那就把所有最小项摆在一张方格图上,让能合并的两个最小项在图上正好挨着。这样,找合并对象就从"推公式"变成了"看图找邻居",谁都能做,而且一定能找到最简结果。
正式定义#
把n变量的全部2n个最小项各用一个小方格表示,并且使逻辑相邻(只有一个变量不同)的最小项在几何位置上也相邻,这样排列出来的方格图叫 n变量卡诺图(Karnaugh map,K-map)。
二、卡诺图的画法#
1. 两变量卡诺图#
两个变量A、B有 4 个最小项,排成 2×2:
| A \ B |
0 |
1 |
| 0 |
m0 |
m1 |
| 1 |
m2 |
m3 |
左边一列标A的取值,上面一行标B的取值;每个格子的编号 = 行值拼列值(A在高位)。比如第 2 行第 2 列:AB=11,编号 3。
2. 三变量卡诺图(重点看列的顺序)#
三个变量A,B,C有 8 个最小项。通常A作行(2 行),BC作列(4 列)。关键来了:4 列不能按 00、01、10、11 排,必须按 00、01、11、10 排。
图 1:(a) 三变量、(b) 四变量卡诺图中每格对应的最小项编号;行、列都按格雷码 00→01→11→10 排列。红色、蓝色高亮的两对格子虽然隔得远,却也逻辑相邻
为什么要这样排? 我们要求"位置挨着的格子,只差一个变量"。
- 若按自然二进制 00、01、10、11 排:01 和 10 挨着,但它们两位都不同,就不相邻了,破坏了规则。
- 按 00、01、11、10 排:00→01 变 1 位,01→11 变 1 位,11→10 变 1 位,而且最后的 10 和开头的 00 也只差 1 位!
这种"相邻只差一位"的排列就是第 01 讲学过的格雷码。
3. 四变量卡诺图(最重要)#
四个变量A,B,C,D有 16 个最小项,排成 4×4:AB作行,CD作列,行和列都按 00、01、11、10 排。见图 1(b)。
怎么快速填编号:编号 = 行值(AB)拼列值(CD)。例如第 3 行(AB=11)第 4 列(CD=10)→ 1110 → 14。
记住四变量图的编号布局(考场上可以现场推,但熟记更快):
| AB \ CD |
00 |
01 |
11 |
10 |
| 00 |
0 |
1 |
3 |
2 |
| 01 |
4 |
5 |
7 |
6 |
| 11 |
12 |
13 |
15 |
14 |
| 10 |
8 |
9 |
11 |
10 |
记忆窍门:每行都是"0、1、3、2"的模式加上一个基数;行的基数依次是 0、4、12、8(也是"0、1、3、2"乘 4)。
⚠️ 易错点:
- 第 3、4 列和第 3、4 行是"11 在前、10 在后",所以第 3 行是 12、13、15、14,第 4 行是 8、9、11、10。很多人把第 3、4 行写反。
- 变量顺序要和题目一致:题目写Y(A,B,C,D),则A是最高位,不能随便换成CD作行。
4. 五变量及以上(了解)#
五变量卡诺图有 32 格,几何上的"挨着"已经不能完全表示逻辑相邻(还要看对称位置),很容易看错。所以变量多于 4 个时,卡诺图就不好用了,一般改用其他方法或计算机。考研数电以 3、4 变量为主。
三、卡诺图里的"相邻"#
大白话#
把卡诺图想象成画在一张纸上,然后把纸卷成一个筒,左右两边粘起来;再把这个筒弯成一个甜甜圈,上下两边也粘起来。在这个甜甜圈上挨着的格子,都是相邻的。
相邻的四种情况#
- 上下左右紧挨着的格子相邻。如m5与m7(只差C)、m5与m13(只差A)。
- 同一行的最左格和最右格相邻。如m4(0100)与m6(0110),只差C。
- 同一列的最上格和最下格相邻。如m3(0011)与m11(1011),只差A。
- 四个角的m0、m2、m8、m10两两"沾亲带故",可以一起组成一个 4 格组。
⚠️ 易错点:对角线上的格子不相邻! 例如m5(0101)和m15(1111)斜着挨着,但差了A、C两个变量,不能单独两个合并。
四、用卡诺图表示一个逻辑函数(填图)#
方法 1:已知∑m,直接填#
在∑m里出现的编号对应格子填 1,其他格子填 0(0 也可以不填、留空)。
方法 2:已知一般与或式,按项填(不必先展开)#
每个乘积项对应卡诺图上的一块区域:乘积项里出现的变量固定,没出现的变量任意。
例 1:画出Y=AB+BCD+ACD的卡诺图。
解:逐项找区域:
- AB:AB=10,C、D任意 → 整个第 4 行:m8、m9、m11、m10;
- BCD:B=1、CD=10,A任意 → 第 4 列与AB=01、11两行的交叉:m6、m14;
- ACD:A=0、CD=01,B任意 → 第 2 列与AB=00、01两行的交叉:m1、m5。
填好后的卡诺图:
| AB \ CD |
00 |
01 |
11 |
10 |
| 00 |
0 |
1 |
0 |
0 |
| 01 |
0 |
1 |
0 |
1 |
| 11 |
0 |
0 |
0 |
1 |
| 10 |
1 |
1 |
1 |
1 |
即Y=∑m(1,5,6,8,9,10,11,14)。
规律:乘积项缺k个变量,就占2k个格子。缺 2 个占 4 格,缺 1 个占 2 格,一个都不缺(最小项)占 1 格。
方法 3:已知真值表,"折"进卡诺图#
卡诺图其实就是真值表换了个摆法:真值表是一长条 16 行,卡诺图把这 16 行"折"成 4×4。所以从真值表填卡诺图时,只要把每一行的行号(ABCD对应的十进制数)找到卡诺图上的位置,把该行的Y值抄过去即可。注意卡诺图第 3、4 行、第 3、4 列的顺序是"11 在前、10 在后",不要按真值表的顺序直接往下抄。
反过来:由卡诺图写函数#
例 1′:某三变量函数的卡诺图中,A=0那一行的BC=01、10两格为 1,A=1那一行的BC=00、11两格为 1,其余为 0。写出它的∑m和逻辑式。
解:按"行值拼列值"读出编号:A=0行的 01、10 → m1、m2;A=1行的 00、11 → m4、m7。
Y(A,B,C)=∑m(1,2,4,7)=ABC+ABC+ABC+ABC
在图上看,这 4 个 1 像国际象棋盘一样互相"错开",没有任何两个 1 相邻,所以它已经不能再用与或式化简了。这就是三变量奇校验函数A⊕B⊕C。"棋盘格"图案是异或/同或函数的标志,以后看到要能认出来。
五、合并规则:怎么"圈"#
大白话#
相邻的 1 可以用一个圈"打包"。打包的好处:一个圈对应化简后的一个乘积项;圈越大,乘积项越短。
合并规则#
- 2 个相邻的 1 圈在一起 → 消去 1 个变量;
- 4 个排成矩形(一行、一列、2×2 方块,或利用"卷起来"形成的矩形)→ 消去 2 个变量;
- 8 个排成矩形(两行、两列……)→ 消去 3 个变量;
- 一般地:2k个相邻的 1 组成矩形 → 合并成一项,消去k个变量。
合并后的乘积项怎么读:看这个圈里的格子,哪个变量在圈内始终不变,就保留它(始终为 1 写原变量,始终为 0 写反变量);在圈内有变化的变量,就消掉。
逐行拆解:几个读圈的例子#
- 圈m5、m7(第 2 行、第 2~3 列):AB始终 01 → AB;CD从 01 变到 11,C变了、D始终 1 → D。结果ABD。
- 圈第 3 列整列m3、m7、m15、m11:CD始终 11 → CD;A、B都变了 → 消掉。结果CD。
- 圈四个角m0、m2、m8、m10:B始终 0、D始终 0 → BD;A、C都变了 → 消掉。结果BD。
⚠️ 易错点:
- 圈里格子数必须是 1、2、4、8、16。3 个、6 个不行!
- 形状必须是矩形(考虑卷起来以后),L 形、T 形不行。
- 圈内只能是 1(下一讲会讲:无关项 × 也可以圈进去),不能圈进 0。
六、卡诺图化简的步骤#
- 画图填 1:把函数填进卡诺图。
- 找必须单独处理的 1:没有任何相邻 1 的"孤立 1",单独画一个圈(它就是一个最小项,不能化简)。
- 先圈"只有一种圈法"的 1:某个 1 只能和唯一的一组邻居组成最大的圈,那这个圈必选。
- 再用尽量大的圈覆盖剩下的 1:圈越大越好;一个 1 可以被多个圈重复使用(因为X+X=X)。
- 检查多余的圈:如果某个圈里的每个 1 都已经被别的圈圈过了,这个圈就是多余的,去掉。
- 写结果:每个圈读出一个乘积项,全部相加。
选圈三原则(口诀"全、少、大"):
- 全:所有的 1 都要被圈到,一个不漏;
- 少:圈的个数尽量少(乘积项最少);
- 大:每个圈尽量大(每项因子最少)。
七、例题:由浅入深#
例 2(三变量)#
化简Y(A,B,C)=∑m(0,2,4,5,6)。
解:
第 1 步:填图(A作行,BC作列):
| A \ BC |
00 |
01 |
11 |
10 |
| 0 |
1(m0) |
0 |
0 |
1(m2) |
| 1 |
1(m4) |
1(m5) |
0 |
1(m6) |
第 2 步:找圈:
- 第 1 列和第 4 列的 4 个 1(m0、m4、m2、m6),因为左右两边相邻,可以组成一个 4 格圈。圈内C始终为 0,A、B都在变 → C。
- m5还没圈。它的邻居有m4(左)、m7(右,是 0)、m1(上,是 0)。只能和m4组成 2 格圈:A=1、B=0不变,C变 → AB。(m4被重复使用,没关系。)
第 3 步:写结果:
Y=C+AB
例 3(四变量,用到"卷起来")#
化简Y(A,B,C,D)=∑m(0,2,3,4,6,7,8,10,11,15)。
解:填图并圈出,见图 2:
图 2:例 3 的卡诺图。蓝圈是整列,绿圈利用了左右边相接,橙圈利用了四个角相接
逐个分析:
- m4和m6:m4的邻居m5、m12是 0,只剩m0和(左右相接的)m6。最大能和m0、m2、m6组成 4 格的"上两行、左右两列"圈(绿)。圈内A=0、D=0不变 → AD。
- m8和m10:m8的邻居m9、m12是 0,只剩m0(上下相接)和m10(左右相接)。四个角m0、m2、m8、m10正好都是 1,组成 4 格圈(橙)→ BD。
- m3、m7、m15、m11:整个第 3 列都是 1,4 格圈(蓝)→ CD。
所有 1 都圈到了,没有多余的圈:
Y=CD+AD+BD
例 4(四个角 + 中心)#
化简Y(A,B,C,D)=∑m(0,2,5,7,8,10,13,15)。
解:
| AB \ CD |
00 |
01 |
11 |
10 |
| 00 |
1 |
0 |
0 |
1 |
| 01 |
0 |
1 |
1 |
0 |
| 11 |
0 |
1 |
1 |
0 |
| 10 |
1 |
0 |
0 |
1 |
- 四个角m0、m2、m8、m10 → BD;
- 中间 2×2 方块m5、m7、m13、m15:B=1、D=1不变 → BD。
Y=BD+BD
这其实就是B⊙D(同或)。从这道题能看出卡诺图的威力:8 个最小项一眼就看成了 2 项。
例 5(陷阱:先圈大圈反而多余)#
化简Y(A,B,C,D)=∑m(1,5,6,7,11,12,13,15)。
解:填图后,中间有一个很显眼的 2×2 方块m5、m7、m13、m15(就是BD)。很多同学第一反应是先把它圈了——但请按步骤来,看看会发生什么:
图 3:例 5 逐个画圈的过程(动画循环播放)。四个 2 格圈都是"只有一种圈法"的必选圈;它们圈完之后,中间的BD大圈里每个 1 都已被圈过,成了多余的圈
按"先圈只有一种圈法的 1"来做:
- ① m1:邻居中只有m5是 1(m0、m3、m9都是 0)→ 必须圈m1、m5 → ACD;
- ② m6:邻居中只有m7是 1 → 圈m6、m7 → ABC;
- ③ m12:邻居中只有m13是 1 → 圈m12、m13 → ABC;
- ④ m11:邻居中只有m15是 1 → 圈m11、m15 → ACD。
此时 8 个 1 全部圈完了。⑤ 再看中间的BD圈:m5、m7、m13、m15都已经被前面的圈覆盖,它是多余的,不要!
Y=ACD+ABC+ABC+ACD
如果先圈了BD,最后会得到 5 项,虽然逻辑上也对,但不是最简。
这道题的教训:"圈要尽量大"是对每一个圈说的(能扩大就扩大),但"选哪些圈"要先保证必选圈,最后删掉多余圈。
例 6(结果不唯一)#
化简Y(A,B,C)=∑m(1,2,3,4,5,6)。
解:
| A \ BC |
00 |
01 |
11 |
10 |
| 0 |
0 |
1 |
1 |
1 |
| 1 |
1 |
1 |
0 |
1 |
6 个 1 围成一个"环",每个 1 都有两个相邻的 1,没有哪个 1 只有一种圈法。所以可以有两套圈法:
- 圈(m4,m5)、(m1,m3)、(m2,m6):Y=AB+AC+BC;
- 圈(m4,m6)、(m1,m5)、(m3,m2):Y=AC+BC+AB。
两种都是 3 项、每项 2 个因子,都是最简与或式,都对。考试写任一种即可。
八、圈 0:求反函数与最简或与式#
大白话#
卡诺图里不是 1 就是 0。把所有 1 圈起来得到Y;那把所有 0 圈起来,得到的就是Y(反函数)。当 0 比 1 少很多时,圈 0 更省事。
- 按同样规则圈 0(大小2k、矩形、尽量大、尽量少);
- 读出每个圈的乘积项,相加得Y的最简与或式;
- 需要Y时,对Y整体取反,用摩根定理展开,就得到Y的最简或与式。
例 7:已知Y(A,B,C,D)只有m5、m7、m13、m15四格为 0,其余 12 格都为 1,求Y的最简式。
解:圈 1 要圈好几个大圈;圈 0 只需一个:m5、m7、m13、m15是中间 2×2 方块,B=1、D=1不变:
Y=BD
取反:
Y=BD=B+D
用圈 1 来验证:上下两行(B=0的AB=00、10行)8 个 1 → B;左右两列(D=0的CD=00、10列)8 个 1 → D。结果一样:Y=B+D。✓
例 8:用圈 0 求Y(A,B,C)=∑m(0,2,4,5,6)(例 2 的函数)的最简或与式。
解:0 格是m1、m3、m7。
- m1、m3:A=0、C=1 → AC;
- m3、m7:B=1、C=1 → BC。
Y=AC+BC
取反并用摩根定理:
Y=AC+BC=AC⋅BC=(A+C)(B+C)
验算:展开(A+C)(B+C)=AB+AC+BC+C=AB+C(后三项被C吸收),与例 2 结果一致。✓
⚠️ 易错点:圈 0 读出来的是Y,最后一定别忘了取反!这是考场上最常见的丢分点。
九、卡诺图的其他用途#
卡诺图不只是用来化简,下面几件事它也做得又快又稳:
- 判断两个式子是否相等:把两个式子各填一张卡诺图,图案完全一样就相等。比列两张真值表省事,因为可以"按项填"。
- 求反函数:把卡诺图里的 1 和 0 互换,就是Y的卡诺图。
- 两个函数做运算:Y1⋅Y2的卡诺图 = 两张图对应格子"相与"(都为 1 才为 1);Y1+Y2 = 对应格子"相或"。
- 看出电路功能:棋盘格是异或类;整行整列是单个变量;四角是两个反变量相与……熟练后看一眼就知道函数的大概样子。
- 为后面的设计打基础:第 08 讲组合电路设计、第 17 讲同步时序电路设计,都要用卡诺图求驱动方程、输出方程;第 12 讲还会在卡诺图上判断"竞争-冒险"(两个圈相切的地方)。
例 9:用卡诺图判断Y1=AB+AC+BC与Y2=AB+AC是否相等。
解:Y1按项填:AB → m6、m7;AC → m1、m3;BC → m3、m7。填 1 的格是 1、3、6、7。Y2填 1 的格:AB → 6、7;AC → 1、3。也是 1、3、6、7。两张图一样,所以Y1=Y2,这正是上一讲消项法的公式。从图上还能看出原因:BC占的m3、m7两格早已分别被AC和AB盖住了,它是个多余的圈。
十、常见错误汇总#
- 行列顺序写成 00、01、10、11:卡诺图立刻失效。必须是格雷码 00、01、11、10。
- 圈了 3 个或 6 个格:圈的格数只能是 2 的整数次幂。
- 漏了"卷起来"的相邻:左右边、上下边、四个角都可以合并。
- 把对角线当相邻:斜着挨的格子差两个变量,不相邻。
- 只顾圈大圈,忘了删多余圈(见例 5)。
- 读圈时把变化的变量留下了:保留的是"圈内不变"的变量。
- 圈 0 后忘记取反。
- 编号填错位置:第 3 行是 12、13、15、14,第 4 行是 8、9、11、10。
速记卡#
| 项目 |
要点 |
| 行列排列 |
格雷码 00、01、11、10;变量顺序与Y(A,B,C,D)一致,高位作行 |
| 四变量编号 |
第 1 行 0 1 3 2;第 2 行 4 5 7 6;第 3 行 12 13 15 14;第 4 行 8 9 11 10 |
| 相邻 |
上下左右;最左列↔最右列;最上行↔最下行;四角;对角线不相邻 |
| 填图 |
∑m直接填;乘积项缺k个变量占2k格 |
| 圈的要求 |
2k格、矩形(可卷起来)、只圈 1 |
| 读圈 |
圈内不变的变量保留(1 原 0 反),变化的消去;2k格消k个变量 |
| 步骤 |
孤立 1 → 只有一种圈法的 1 → 大圈盖剩余 → 删多余圈 → 写结果 |
| 口诀 |
全(不漏)、少(圈数少)、大(圈要大) |
| 圈 0 |
得Y;取反 + 摩根定理 → Y的最简或与式 |
自测练习#
1. 用卡诺图化简Y(A,B,C)=∑m(1,3,5,7)。
答案与提示
1 在BC=01、11两列(两行全是 1),4 格圈,只有C不变且为 1。Y=C。
2. 用卡诺图化简Y(A,B,C)=∑m(0,1,2,3,6,7)。
答案与提示
第 1 行(A=0)全是 1 → A;第 3、4 列(BC=11、10,即B=1)两行全是 1 → B。Y=A+B。
3. 用卡诺图化简Y(A,B,C,D)=∑m(0,1,4,5,8,9,12,13)。
答案与提示
第 1、2 列(CD=00、01,即C=0)4 行全是 1,8 格圈 → C。Y=C。
4. 用卡诺图化简Y(A,B,C,D)=∑m(0,2,4,5,6,8,10,12,13,14)。
答案与提示
第 1 列和第 4 列(D=0)共 8 个 1,左右相接组成 8 格圈 → D;剩m5、m13,和m4、m12组成 2×2 圈(B=1、C=0)→ BC。Y=D+BC。
5. 用卡诺图化简Y(A,B,C,D)=∑m(0,1,2,5,8,9,10)。
答案与提示
m0,m1,m8,m9(B=0、C=0)→ BC;四角m0,m2,m8,m10 → BD;m5只能和m1圈(A=0、C=0、D=1)→ ACD。Y=BC+BD+ACD。
6. Y(A,B,C,D)=∑m(2,3,6,7,8,9,10,11,12,13,14,15)。分别用圈 1 和圈 0 求最简式。
答案与提示
圈 1:下两行(A=1)8 格 → A;第 3、4 列(C=1)8 格 → C。Y=A+C。
圈 0:0 格为m0,m1,m4,m5(A=0、C=0)→ Y=AC,取反Y=A+C。两种方法一致。
7.(华师真题风格)用卡诺图将Y(A,B,C,D)=∑m(1,3,4,5,6,7,9,11,12,13)化为最简与或式,并写出化简过程中每个圈包含的最小项。
答案与提示
- m4,m5,m7,m6(第 2 行整行,AB=01)→ AB;
- m4,m5,m12,m13(B=1、C=0)→ BC;
- m1,m3,m9,m11(第 1、4 行与第 2、3 列交叉,上下相接;B=0、D=1)→ BD。
Y=AB+BC+BD。(m12的 4 格圈只能是BC;m11的 4 格圈只能是BD;m6的 4 格圈只能是AB,所以三个圈都必选。它们圈完后所有 1 已覆盖,CD那一列虽然也全是 1,却是多余的圈,和例 5 是同一个道理。)
下一讲预告#
下一讲(第 04 讲下)给卡诺图加上"万能牌"——无关项 ×,完整解出 2026 回忆题第 5 题,并学习多输出化简和与非-与非等形式变换。
👉 点击进入下一讲:第04讲(下)|无关项、多输出函数与逻辑形式变换
评论
还没有评论。 来写第一条。