卡诺图:逻辑相邻与几何相邻的统一

文章目录

    • 1.一句话记住卡诺图
    • 2.卡诺图的由来、定义和特点
    • 3.填写卡诺图(用卡诺图表示逻辑函数)
      • ⑴根据真值表填写卡诺图
      • ⑵根据最小项(或最大项)填写卡诺图
      • ⑶根据函数的与或表达式填写卡诺图
    • 4.用卡诺图化简逻辑函数
      • ⑴化简步骤
      • ⑵画圈原则
    • 综合题★★★
    • 后记:关于列表法(Q-M法)

今天是南方小年,春节渐近,提前祝大家新春快乐!

这节内容斟酌再三,今天终于成稿,主要是希望内容既全面又易于理解,可能比通用教材啰嗦,但是讲的更透。卡诺图既是一种图形化方法,也是一种有助于计算机辅助分析的逻辑化简思想,重要性不言而喻。

1.一句话记住卡诺图

卡诺图是化简逻辑函数的重要工具,是一张二维表格,相当于变形的真值表,主要特点是实现了几何相邻和逻辑相邻的统一,能帮助我们直观地表示逻辑函数并写出最简逻辑式,而判断相邻的直观方法就是对折重合。

2.卡诺图的由来、定义和特点

1953年,贝尔实验室的电信工程师莫里斯·卡诺(Maurice Karnaugh)在维奇图(一种逻辑函数的图形表示)的基础上改进发明了卡诺图,使逻辑函数的化简相较代数法变得简单且直观,从而在数字逻辑设计等领域中得到了广泛应用。

卡诺图是按照逻辑相邻性原则组成的二维表格(方格图)。它跟真值表是完全对应的,其中每个方格相当于真值表中的一行,代表一个最小项或最大项,如图1所示为二变量函数的真值表和卡诺图的对应关系。

在这里插入图片描述

图1

图1中,卡诺图左上角斜线两侧为函数 Y Y Y的输入变量符号,横边和侧边的数字为相应变量的取值,取值的排列按格雷码分布(详见图3、图4、图5),这是实现逻辑相邻(对应变量组合的取值只有一位不同)与几何相邻相统一的原因;图1中,方格中的数字表示最小项或最大项的序号(变量取值组合对应的十进制数),对一个确定的函数,方格中填写相应的函数输出值,如图2所示。

在这里插入图片描述

图2

实际使用中,一般将方格默认为最小项,因此,大部分教材直接用最小项定义卡诺图:

n {\boldsymbol{n}} n变量的全部最小项各用一个小方格表示,并使具有逻辑相邻性的最小项在几何位置上也相邻地排列起来,得到的图形称为 n {\boldsymbol{n}} n变量最小项的卡诺图

将卡诺图定义于最小项,主要是基于人们的使用习惯和应用便捷性,因为无论是真值表还是卡诺图,我们最习惯、最容易写的是与或式。但是,我们知道最小项与最大项天然互反,一一对应,逻辑相邻性和几何相邻性也是一样的,所以,如果你更习惯于使用最大项,也可以将每个方格用最大项表达,写出函数的或与式。具体来说,跟真值表一样,函数值为1的所有方格按最小项加起来就是最小项之和式,函数值为0的所有方格按最大项乘起来就是最大项之积式(这些项也可以写成最小项之和式,代表反函数),例如,对图2,有 Y = Σ m ( 1 , 2 , 3 ) Y=\Sigma m(1,2,3) Y=Σm(1,2,3),或 Y = M 0 Y=M_0 Y=M0,或 Y ‾ = m 0 \overline{Y}=m_0 Y=m0

从以上构图和定义可知, n n n变量卡诺图由 2 n 2^n 2n个方格组成,最终,任何两个位置相邻和轴对称的方格均具有逻辑相邻性,所谓轴对称就是对折重合,也就是将卡诺图横向或纵向对折,且可以对折分割后再对折,每次对折后所有重合的方格为逻辑相邻项。有的资料又将几何相邻分为位置相邻、相对相邻和相重相邻三种情况,所谓相对相邻是指每一行(或列)的两端,均在对折重合的范畴之内。

图3、图4、图5分别为用最小项表示的三变量、四变量和五变量卡诺图。

在这里插入图片描述

图3

在这里插入图片描述

图4

在这里插入图片描述
在这里插入图片描述

图5

以图5为例, m 0 m_0 m0分别与 m 1 m_1 m1 m 8 m_8 m8 m 4 m_4 m4 m 2 m_2 m2 m 16 m_{16} m16逻辑相邻。

3.填写卡诺图(用卡诺图表示逻辑函数)

⑴根据真值表填写卡诺图

上文图2即是一例,再举一个三变量的例子,逻辑函数 F ( A , B , C ) F(A,B,C) F(A,B,C)的真值表如表1所示,将每一行的函数值填入三变量卡诺图对应的最小项方格中,得卡诺图如图6所示。
在这里插入图片描述

在这里插入图片描述

图6

⑵根据最小项(或最大项)填写卡诺图

将函数化为最小项(或最大项)表达式,再将相应的最小项方格填1。

例如函数 F = Σ m ( 1 , 4 , 5 , 6 , 7 ) F=\Sigma m(1,4,5,6,7) F=Σm(1,4,5,6,7),只需在卡诺图的 m 1 m_1 m1 m 4 m_4 m4 m 5 m_5 m5 m 6 m_6 m6 m 7 m_7 m7方格中填写1,其余填0,如图6所示。同理,若 F = ∏ M ( 0 , 2 , 3 ) F=\mathrm{∏}M(0,2,3) F=M(0,2,3),则将卡诺图 m 0 m_0 m0 m 2 m_2 m2 m 3 m_3 m3方格填0,其余填1,同图6。

⑶根据函数的与或表达式填写卡诺图

对任何“与或式”函数,只需要将每一个乘积项对应的所有方格填写1即可。对乘积项中的各变量因子,原变量取1,反变量取0,找到相应的行和列并取交集,就是该乘积项对应的方格。例如,分别求 F 1 = A + B ‾ C F_1=A+\overline{B}C F1=A+BC F 2 = A ‾ C F_2=\overline{A}C F2=AC的卡诺图,方法如下:

①参考图3和图6,设 A A A为行, B C BC BC为列。 F 1 F_1 F1第一个乘积项为 A A A,找到 A = 1 A=1 A=1,即第二行,全部填1,如图7所示。

在这里插入图片描述

图7

F 1 F_1 F1第二个乘积项为 B ‾ C \overline{B}C BC,所以找到 B C = 01 BC=01 BC=01的列,全部填1,剩余的方格填0,如图8所示,此即为 F 1 F_1 F1的卡诺图。

在这里插入图片描述

图8

F 2 F_2 F2只有一个乘积项 A ‾ C \overline{A}C AC,找到 A = 0 A=0 A=0的行和 C = 1 C=1 C=1的两列,二者交集所在方格填1,其余填0,得 F 2 F_2 F2的卡诺图如图9所示。

在这里插入图片描述

图9

4.用卡诺图化简逻辑函数

卡诺图化简的依据:两个相邻最小项可以合并为一个乘积项并消去一个变量因子。

因此,对卡诺图中具有相邻性的项不断合并,可得到函数的最简逻辑式。相邻项合并时,消去取值发生变化的变量因子,保留公共因子, 2 i 2^{\boldsymbol{i}} 2i个相邻项,可消去 i \boldsymbol{i} i个变量因子

⑴化简步骤

①画卡诺图;

②圈“1”(求原函数)或者圈“0”(求反函数),合并最小项;

③将每个圈对应的乘积项相加,得最简与或式。

⑵画圈原则

①相邻单元的个数是 2 i 2^i 2i个,并成矩形时,可合并。

②每个圈中所含“1”的个数要尽可能多。

③画圈的个数要尽可能少。

④“1”方格可重复圈定,但每个圈内须有新的“1”。

综合题★★★

题1 用卡诺图化简下列函数:
Y = A B C + A B D + A C ˉ D + C ˉ ⋅ D ˉ + A B ˉ C + A ˉ C D ˉ Y=ABC+ABD+A\bar{C}D+\bar{C}\cdot \bar{D}+A\bar{B}C+\bar{A}C\bar{D} Y=ABC+ABD+ACˉD+CˉDˉ+ABˉC+AˉCDˉ
解析:首先用卡诺图表示该函数,如图10所示。
在这里插入图片描述

图10

圈“1”,如图11所示,得最简逻辑式为
Y = A + D ˉ Y=A+\bar{D} Y=A+Dˉ

在这里插入图片描述

图11

也可圈“0”,如图12所示,合并最大项结果同上(不推荐),或合并最小项得反函数为
Y ‾ = A ‾ D \overline{Y}=\overline{A}D Y=AD

在这里插入图片描述

图12

题2 化简下列函数为最简与或式:
F ( A , B , C , D ) = ∏ M ( 3 , 4 , 6 , 7 , 11 , 12 , 13 , 14 , 15 ) F(A,B,C,D)=\mathrm{∏}M(3,4,6,7,11,12,13,14,15) F(A,B,C,D)=M(3,4,6,7,11,12,13,14,15)

解析:题目给的是最大项之积式,在卡诺图中将最大项序号对应的方格填0,其余填1,得该函数的卡诺图如图13所示。

在这里插入图片描述

图13

在卡诺图中圈“1”,如图14所示,得最简与或式为
F ( A , B , C , D ) = B ˉ ⋅ C ˉ + B ˉ ⋅ D ˉ + A ˉ ⋅ C ˉ ⋅ D ˉ F(A,B,C,D)=\bar{B}\cdot \bar{C}+\bar{B}\cdot \bar{D}+\bar{A}\cdot \bar{C}\cdot \bar{D} F(A,B,C,D)=BˉCˉ+BˉDˉ+AˉCˉDˉ

在这里插入图片描述

图14

题3 将题2中的函数化简为最简或与式:

解析:卡诺图同题2(图13),求或与式,所以圈“0”,如图15所示,然后写出反函数的最简与或式,再通过反演定理或摩根定理转换得原函数的最简或与式。(也可通过最大项合并直接写出最简或与式,除非对最大项特别熟练,否则不推荐。)
在这里插入图片描述

图15

由图15的合并结果,得
F ˉ = A B + B D ˉ + C D \bar{F}=AB+B\bar{D}+CD Fˉ=AB+BDˉ+CD

F = ( A ˉ + B ˉ ) ( B ˉ + D ) ( C ˉ + D ˉ ) F=(\bar{A}+\bar{B})(\bar{B}+D)(\bar{C}+\bar{D}) F=(Aˉ+Bˉ)(Bˉ+D)(Cˉ+Dˉ)

后记:关于列表法(Q-M法)

卡诺图对于六变量以上的复杂多变量逻辑函数显得无能为力,但是人们借助于卡诺图化简思想实现了多变量函数的计算机自动优化处理,Q-M法就是一种可通过计算机编程实现的系统化简法,也称为列表法或表格法,若专业从事集成电路底层设计,应予掌握,详情可查阅有关教材或资料。

更多内容,欢迎关注下方公众号!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449502.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何部署Node.js服务并实现无公网ip远程访问本地项目【内网穿透】

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

面试150 位1的个数 位运算

Problem: 191. 位1的个数 文章目录 思路复杂度Code 思路 👨‍🏫 参考 复杂度 Code public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n){int res 0;while (n ! 0){res 1;n & n - 1;// 把最后…

十分钟上手vue!

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。 一 vue.js的导入及使用 vue安装…

NLP入门系列—Attention 机制

NLP入门系列—Attention 机制 Attention 正在被越来越广泛的得到应用。尤其是 [BERT]火爆了之后。 Attention 到底有什么特别之处?他的原理和本质是什么?Attention都有哪些类型?本文将详细讲解Attention的方方面面。 Attention 的本质是什…

电气防火限流式保护器在可燃性粉尘危险场所的应用

摘要:文章阐述了可燃性粉尘的特点及可燃性粉尘环境粉尘爆炸的危害性,结合国家现行的电气产品规范的要求,通过一个提取车间内部粉尘爆炸危险区域的电气设计实例,系统阐述了可燃性粉尘危险环境的分区原则、电气设备选型、线路短路灭…

计算huggingface模型占用硬盘空间的实战代码

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

在 Windows 10 上使用 Visual Studio 2022 进行 C++ 桌面开发

工具下载链接:https://pan.quark.cn/s/c70b23901ccb 环境介绍 在今天的快速发展的软件开发行业中,选择合适的开发环境是非常关键的一步。对于C开发人员来说,Visual Studio 2022(VS2022)是一个强大的集成开发环境&…

nba2k24 灌篮高手Q版流川枫面补

nba2k24 灌篮高手Q版流川枫面补 此面补nba2k23-nba2k24通用 下载地址: https://www.changyouzuhao.cn/9979.html

二叉树(1)

1 树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&a…

【C语言】大小写字母的相互转化:多种方法解析及原理说明

在 C 语言编程中,我们经常需要进行大小写字母的相互转化。这种转化可以用于实现字符串的大小写转换、字符的大小写比较等操作。本篇博客将介绍多种方法来实现大小写字母的相互转化,并说明其原理和使用场景。 目录 方法一:标准库函数 方法二…

开源软件:引领技术创新、商业模式与安全的融合

序 在信息技术日新月异的今天,开源软件以其独特的魅力和影响力,正逐渐成为软件产业的新常态。开源软件的低成本、高度可协作性和透明度等特点,不仅吸引了无数企业和个人用户的青睐,更为软件行业带来了前所未有的繁荣景象。 一、…

代码随想录 Leetcode93. 复原 IP 地址

题目&#xff1a; 代码(首刷看解析 2024年2月3日&#xff09;&#xff1a; class Solution { public:vector<string> res;bool Enligible(string& s, int left, int right) {if (left > right) return false;if (s[left] 0 && left ! right) return fal…