资讯动态

布尔代数化简与卡诺图入门

发布时间:2026/8/9 19:35:47 来源:尧图企业网站定制
06 - 布尔代数化简与卡诺图入门卡诺图是数字电路设计的瑞士军刀一图在手化简无忧。 本章学习要点理解卡诺图的结构和布局原理掌握在卡诺图上标注最小项的方法能够使用卡诺图进行逻辑函数化简理解相邻的概念及其在化简中的作用1️⃣ 为什么需要化简化简的意义 化简前 vs 化简后 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【原始表达式】 │ │ Y AB AĀB̄ ĀB │ │ │ │ ┌───────────────────────────────────────────────────┐ │ │ │ 电路示意图 │ │ │ │ │ │ │ │ A ──┐ │ │ │ │ ├──○──┐ │ │ │ │ B ──┘ ├──○──┐ │ │ │ │ │ ├──○──┐ │ │ │ │ A ──┐ │ │ │ │ │ │ │ ├──○──┤ │ ├──○──┐ │ │ │ │ B̄ ──┘ │ │ │ ├──○── Y │ │ │ │ │ │ │ │ │ │ │ │ Ā ──┐ │ │ │ │ │ │ │ │ ├──○──┐ │ │ │ │ │ │ │ │ B ──┘ ├──○──┤ │ │ │ │ │ │ └──○──┴────┴────┘ │ │ │ │ │ │ │ │ 门数量6个门 3个反相器 9个门 │ │ │ │ │ │ │ └───────────────────────────────────────────────────┘ │ │ │ │ 【化简后】 │ │ Y A B̄ │ │ │ │ ┌───────────────────────────────────────────────────┐ │ │ │ 电路示意图 │ │ │ │ │ │ │ │ A ────────────────────────────○── Y │ │ │ B̄ ──┐ │ │ │ │ ├──○── │ │ │ │ (或门) │ │ │ │ │ │ │ │ 门数量1个或门 1个反相器 2个门 │ │ │ │ │ │ │ └───────────────────────────────────────────────────┘ │ │ │ │ 【化简收益】 │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 门数量9 → 2减少 78% │ │ │ │ 成本大幅降低 │ │ │ │ 延迟路径更短响应更快 │ │ │ │ 功耗更少的门意味着更低的功耗 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘2️⃣ 卡诺图Karnaugh Map概述什么是卡诺图 卡诺图的发明 卡诺图Karnaugh Map由贝尔实验室的物理学家莫里斯·卡诺 Maurice Karnaugh于1953年发明是一种可视化逻辑函数化简工具。 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 莫里斯·卡诺 (1924-2024) │ │ 美国工程师、科学家 │ │ 卡诺图发明者 │ │ │ │ 1953年发表论文The Map Method for Synthesis of │ │ Combinational Logic Circuits │ │ │ └─────────────────────────────────────────────────────────────┘ 卡诺图的核心思想 - 将真值表的信息重新排列 - 使得相邻的最小项在几何上也是相邻的 - 利用相邻项合并消除变量2变量卡诺图 最简单的卡诺图2变量卡诺图 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【结构】 │ │ │ │ ┌─────────────────────────┐ │ │ │ │ B0 │ B1 │ │ │ │ ─────┼─────────┼─────────│ │ │ │ A0 │ m0 │ m1 │ │ │ │ ─────┼─────────┼─────────│ │ │ │ A1 │ m2 │ m3 │ │ │ └─────────────────────────┘ │ │ │ │ 【变量坐标】 │ │ │ │ ┌─────────────────────────┐ │ │ │ │ 0 │ 1 │ │ │ │ ─────┼─────────┼─────────│ │ │ │ 0 │ 0 │ 1 │ │ │ │ ─────┼─────────┼─────────│ │ │ │ 1 │ 2 │ 3 │ │ │ └─────────────────────────┘ │ │ │ │ 【注意】坐标不是二进制递增而是遵循格雷码顺序 │ │ 00 → 01 → 11 → 10 相邻码只有1位不同 │ │ │ └─────────────────────────────────────────────────────────────┘3变量卡诺图 3变量卡诺图最常用 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【结构】 │ │ │ │ ┌────────────────────────────────────┐ │ │ │ │ BC00 │ BC01 │ BC11 │ BC10 │ │ │ │ ───────┼────────┼────────┼────────┼────────┤ │ │ │ A0 │ m0 │ m1 │ m3 │ m2 │ │ │ │ ───────┼────────┼────────┼────────┼────────┤ │ │ │ A1 │ m4 │ m5 │ m7 │ m6 │ │ │ └────────────────────────────────────┘ │ │ │ │ 【变量取值】 │ │ │ │ ┌────────────────────────────────────┐ │ │ │ │ 00 │ 01 │ 11 │ 10 │ │ │ │ ───────┼────────┼────────┼────────┼────────┤ │ │ │ 0 │ 0 │ 1 │ 3 │ 2 │ │ │ │ ───────┼────────┼────────┼────────┼────────┤ │ │ │ 1 │ 4 │ 5 │ 7 │ 6 │ │ │ └────────────────────────────────────┘ │ │ │ │ 【最小项索引】 │ │ m0 ĀB̄C̄, m1 ĀB̄C, m2 ĀBC̄, m3 ĀBC │ │ m4 AB̄C̄, m5 AB̄C, m6 ABC̄, m7 ABC │ │ │ └─────────────────────────────────────────────────────────────┘4变量卡诺图 4变量卡诺图 ┌─────────────────────────────────────────────────────────────┐ │ │ │ ┌──────────────────────────────────────────────┐ │ │ │ │ CD00 │ CD01 │ CD11 │ CD10 │ │ │ │ ───────┼────────┼────────┼────────┼────────┤ │ │ │ AB00 │ m0 │ m1 │ m3 │ m2 │ │ │ │ ───────┼────────┼────────┼────────┼────────┤ │ │ │ AB01 │ m4 │ m5 │ m7 │ m6 │ │ │ │ ───────┼────────┼────────┼────────┼────────┤ │ │ │ AB11 │ m12 │ m13 │ m15 │ m14 │ │ │ │ ───────┼────────┼────────┼────────┼────────┤ │ │ │ AB10 │ m8 │ m9 │ m11 │ m10 │ │ │ └──────────────────────────────────────────────┘ │ │ │ │ 4变量卡诺图包含16个格子每个格子代表一个最小项 │ │ │ └─────────────────────────────────────────────────────────────┘3️⃣ 卡诺图的相邻概念什么是相邻 相邻的定义 两个最小项相邻当且仅当它们只有一个变量不同。 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 【几何相邻】 │ │ │ │ ┌───┬───┐ │ │ │ a │ b │ ← a和b相邻左右 │ │ └───┴───┘ │ │ │ │ ┌───┐ ┌───┐ │ │ │ c │ │ d │ ← c和d不相邻对角 │ │ └───┘ └───┘ │ │ │ │ 【循环相邻】卡诺图特殊规则 │ │ │ │ ┌───┬───┬───┐ │ │ │ A │ B │ A │ ← 最左和最右列相邻循环 │ │ └───┴───┴───┘ │ │ │ │ ┌───┐ │ │ │ C │ ←┐ │ │ ├───┤ │ ← 顶行和底行相邻循环 │ │ │ D │ ←┘ │ │ └───┘ │ │ │ │ 循环相邻是卡诺图的独特性质 │ │ │ └─────────────────────────────────────────────────────────────┘相邻示例 3变量卡诺图中m0的相邻项 ┌────────────────────────────────┐ │ │ 00 │ 01 │ 11 │ 10 │ │ ─────┼──────┼──────┼──────┼─────┤ │ 0 │ m0 │ m1 │ m3 │ m2 │ │ ─────┼──────┼──────┼──────┼─────┤ │ 1 │ m4 │ m5 │ m7 │ m6 │ └────────────────────────────────┘ m0 ĀB̄C̄ (对应 A0, B0, C0) 相邻项只有一个变量不同 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 1. m0 ↔ m1只改变C (C̄→C) │ │ ĀB̄C̄ → ĀB̄C │ │ 不同变量C │ │ │ │ 2. m0 ↔ m2只改变B (B̄→B) │ │ ĀB̄C̄ → ĀBC̄ │ │ 不同变量B │ │ │ │ 3. m0 ↔ m4只改变A (Ā→A) │ │ ĀB̄C̄ → AB̄C̄ │ │ 不同变量A │ │ │ │ 4. m0 ↔ m2 同样相邻循环 │ │ 左列m0 ↔ 右列m2 │ │ │ └─────────────────────────────────────────────────────────────┘4️⃣ 使用卡诺图化简化简步骤 卡诺图化简五步法 ┌─────────────────────────────────────────────────────────────┐ │ │ │ Step 1: 将函数填入卡诺图 │ │ ───────────────────────────────────────────── │ │ 在对应格子中填入1表示该最小项存在 │ │ │ │ Step 2: 圈1圈出相邻的1 │ │ ───────────────────────────────────────────── │ │ 1. 圈要方方正正边长必须是2ⁿ (1,2,4,8,16...) │ │ 2. 圈要尽可能大包含更多1 │ │ 3. 圈可以重叠一个1可被多个圈共用 │ │ 4. 圈要覆盖所有1 │ │ │ │ Step 3: 读取每个圈对应的乘积项 │ │ ───────────────────────────────────────────── │ │ 圈内不变的变量保留变化的变量消去 │ │ │ │ Step 4: 将所有乘积项相或 │ │ ───────────────────────────────────────────── │ │ Y 乘积项1 乘积项2 ... │ │ │ │ Step 5: 检查是否最简 │ │ ───────────────────────────────────────────── │ │ 尝试不同圈法寻找最优解 │ │ │ └─────────────────────────────────────────────────────────────┘实例12变量化简 例题用卡诺图化简 Y Σm(0,1,3) Step 1: 填卡诺图 ┌───────────────┐ │ │ B0 │ B1 │ │ ─────┼──────┼──────┤ │ A0 │ 1 │ 1 │ │ ─────┼──────┼──────┤ │ A1 │ 0 │ 1 │ └───────────────┘ Step 2: 圈1 ┌───────────────┐ │ │ 0 │ 1 │ │ ─────┼──────┼──────┤ │ 0 │ 1 │ 1 │ ← 圈1竖着的2个 │ ─────┼──────┼──────┤ │ 1 │ 0 │ 1 │ ← 圈2单独 └───────────────┘ Step 3: 读取乘积项 圈1竖着的2个 - A0 不变保持Ā - B变化消除 → 乘积项Ā 圈2单独的1 - A变化消除 - B1 不变保持B → 乘积项B Step 4: 写结果 Y Ā B ✅ 验证 m0(00): ĀB 10 1 ✓ m1(01): ĀB 11 1 ✓ m3(11): ĀB 01 1 ✓实例23变量化简 例题用卡诺图化简 Y Σm(0,1,3,4,5,6) Step 1: 填卡诺图 ┌────────────────────────────────┐ │ │ 00 │ 01 │ 11 │ 10 │ │ ─────┼──────┼──────┼──────┼─────┤ │ 0 │ 1 │ 1 │ 1 │ 0 │ │ ─────┼──────┼──────┼──────┼─────┤ │ 1 │ 1 │ 1 │ 1 │ 0 │ └────────────────────────────────┘ Step 2: 圈1 ┌────────────────────────────────┐ │ │ 00 │ 01 │ 11 │ 10 │ │ ─────┼──────┼──────┼──────┼─────┤ │ 0 │ 1 │ 1 │ 1 │ 0 │ │ ─────┼──────┼──────┼──────┼─────┤ │ 1 │ 1 │ 1 │ 1 │ 0 │ └────────────────────────────────┘ ↑ ↑ 圈1(4个) 圈2(2个) Step 3: 读取乘积项 圈14个1组成的大方块 - A变化0→1消除 - B变化0→1消除 - C0 不变保持C̄ → 乘积项C̄ 圈2最下面两个1循环相邻 - A1 不变保持A - B变化0→1消除 - C变化0→1消除 → 乘积项A Step 4: 写结果 Y C̄ A实例34变量化简 例题用卡诺图化简 Y Σm(0,2,3,4,5,6,7,8,10,11,14,15) Step 1: 填卡诺图 ┌────────────────────────────────────────────┐ │ │ CD00 │ CD01 │ CD11 │ CD10 │ │ ─────┼────────┼────────┼────────┼────────┤ │ AB00 │ 1 │ 0 │ 0 │ 1 │ │ ─────┼────────┼────────┼────────┼────────┤ │ AB01 │ 1 │ 1 │ 1 │ 1 │ │ ─────┼────────┼────────┼────────┼────────┤ │ AB11 │ 0 │ 0 │ 1 │ 1 │ │ ─────┼────────┼────────┼────────┼────────┤ │ AB10 │ 1 │ 0 │ 0 │ 1 │ └────────────────────────────────────────────┘ Step 2: 圈1 可以画出多个圈包括8格圈和4格圈 Step 3: 读取乘积项 圈1(8格)D̄ → 消除3个变量 圈2(4格)B̄C̄ → 消除2个变量 圈3(4格)B̄D → 消除2个变量 圈4(4格)C̄D̄ → 消除2个变量 Step 4: 写结果 Y D̄ B̄C̄ B̄D C̄D̄5️⃣ 卡诺图化简的技巧技巧一优先圈唯一的大圈 优先圈唯一的大圈 如果某个1只能被一个圈覆盖必须先圈它 ┌─────────────────────────────────────────┐ │ │ │ ┌────────┬────────┬────────┬────────┐ │ │ │ 1 │ 1 │ 1 │ 1 │ │ │ ├────────┼────────┼────────┼────────┤ │ │ │ 1 │ 0 │ 1 │ 1 │ │ │ └────────┴────────┴────────┴────────┘ │ │ ↑ ↑ ↑ ↑ │ │ 唯一1 必须用 必须用 唯一1 │ │ 圈覆盖 圈1 圈2 圈覆盖 │ │ │ └─────────────────────────────────────────┘技巧二利用无所谓条件 Dont Care无关项条件 某些输入组合在实际中不会出现可以标记为X 卡诺图化简时可以把X当作1或0来用哪个更有利用哪个 ┌─────────────────────────────────────────────────────────────┐ │ │ │ 示例设计BCD码的7段译码器 │ │ │ │ BCD码范围是0000~1001 │ │ 1010~1111这6个输入永远不会出现 │ │ │ │ ┌─────────────────────────────────────────┐ │ │ │ │ CD00 │ CD01 │ CD11 │ CD10 │ │ │ │ ─────┼────────┼────────┼────────┼────────┤ │ │ │ AB00 │ 1 │ 1 │ 1 │ 1 │ │ │ │ ─────┼────────┼────────┼────────┼────────┤ │ │ │ AB01 │ 1 │ 1 │ X │ X │ ← X可当1 │ │ │ ─────┼────────┼────────┼────────┼────────┤ │ │ │ AB11 │ X │ X │ X │ X │ ← X全可当1│ │ │ ─────┼────────┼────────┼────────┼────────┤ │ │ │ AB10 │ 1 │ 1 │ X │ X │ ← X可当1 │ │ └─────────────────────────────────────────┘ │ │ │ │ 把X当作1可以圈出更大的圈大大简化逻辑 │ │ │ └─────────────────────────────────────────────────────────────┘ 本章小结✅ 卡诺图化简要领 ┌─────────────────────────────────────────────────────────────┐ │ 【卡诺图结构】 │ │ - 2变量2×24格 │ │ - 3变量2×48格 │ │ - 4变量4×416格 │ │ - 坐标遵循格雷码相邻码只有1位不同 │ │ │ │ 【化简步骤】 │ │ 1. 填卡诺图1表示存在0表示不存在 │ │ 2. 圈1边长为2ⁿ (1,2,4,8...)圈尽可能大 │ │ 3. 读乘积项圈内不变保留变化消除 │ │ 4. 相或得到最终结果 │ │ │ │ 【重要技巧】 │ │ - 唯一圈优先 │ │ - 利用Dont Care条件 │ │ - 循环相邻最左↔最右顶行↔底行 │ │ - 圈可重叠 │ │ │ └─────────────────────────────────────────────────────────────┘ 延伸阅读《数字电子技术基础》- 阎石 - 第4章组合逻辑电路工具在线卡诺图计算器实践完成至少5道卡诺图化简练习

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价