卡诺图最简化SOP/POS表达式
卡诺图最简化SOP/POS表达式及扩展
- 一. 卡诺图(Karnaugh Map)
- 二. 原理分析
- 1. 化简SOP(矩形框选法)
- (1). 三元卡诺图化简
- (2). 四元卡诺图化简
- (3). 四元卡诺图化简常见错误情况
- 2. 化简POS
- 3. 由SOP/POS表达式得到POS/SOP最小项表达式
注:文章内容基于 Thomas L. Floyd-Digital Fundamentals-Prentice Hall (2014)
结合笔者学习经验给出最适分析思路和扩展方法
一. 卡诺图(Karnaugh Map)
通俗易懂的来讲,卡诺图是一种方格图,其行和列遵循固定的规则分布(对所有变量:相邻方格之间一定且仅改变一个变量的值)
- 标准卡诺图
三元卡诺图1.1
四元卡诺图1.2
- 非标准卡诺图
三元卡诺图1.3
四元卡诺图1.4
标准卡诺图
与非标准卡诺图
之间的区别:
(1). 标准卡诺图
在满足分布规则
的前提下遵循最低位
变量进行0-1顺序变化
(2). 非标准卡诺图
则非,但仍遵循卡诺图分布规则
实际上无论是标准或非标准卡诺图,在求解化简过程中结果是一样的
但写作标准式是避免化简出错的主要手段
卡诺图的行列显示了输入变量的所有可能情况,并在卡诺图中填入变量的实际输入情况,用以简化输入表达式
注:
卡诺图一般用于讨论3-4变量的输入情况
一般情况下,不超过5个变量
当超过5变量时,使用卡诺图化简表达式显得冗长复杂,则会使用其他方法化简,卡诺图化简提供了一种表达式化简的可视化思路
二. 原理分析
卡诺图最主要用于获取最小项表达式
也就是我们常说的化简表达式
常见用于简化逻辑函数的规范范式SOP/POS表达式
关于SOP/POS表达式
的详见说明请参考:
逻辑函数规范范式——SOP/POS表达式
(1). 填入卡诺图
1如下给出填入卡诺图步骤
①. 先由给出SOP/POS表达式写出其标准式
②. 将对应SOP输出值置1/POS输出值置0,给出对应表达式的真值表
③. 将真值表对应填入卡诺图中
SOP/POS标准化方法
参考如下详解:
SOP/POS标准化方法
当然,需要注意的是,如果刚开始给你的表达式并不复杂
即使对应四变量,也可以通过布尔代数公式将其化简至最简式
就没有必要再通过卡诺图复杂化化简过程了
(2). 通过卡诺图化简
1. 化简SOP(矩形框选法)
如下给出通过卡诺图化简步骤
①. 将SOP标准式对应真值表全部填入卡诺图中
(卡诺图对应位置填1,及卡诺图中显示为1的地方为对应输出值为1的所有可能情况)
(而对于某个方格内同时对应的四个变量作为输入,表示这种输入通过SOP表达式的输出为1)
②. 将卡诺图中的1依照矩形框取方法1逐一划分区域
③. 将划分区域写成表达式形式并相加写成SOP表达式
所得表达式即为最简/最小项SOP表达式
这里分析一下为什么使用矩形框取方法可以实现化简
- 首先化简的原理就是找
变化量
,消去变化量
(或者可以理解为变化量在输入输出过程中不起作用,也成为无关变量) - 每有一个矩形区域就构成
SOP表达式
中的一项 - 为什么两个矩形区域之间不连接就不能化简?这就要根据卡诺图分布的原则来说明了
卡诺图分布原则保证了相邻区域之间有且只有一个变量的值发生改变,发生改变的变量即为无关变量
这表明无论该变量取0或是1,其输出值都为1,故为无关项
而当两区域不全相邻,即两区域不能构成一个矩形区域,在卡诺图中就无法找到两区域间的无关量,故不能将两项表达式化简成一项
(1). 三元卡诺图化简
以下图为例
三元卡诺图2.1
通过框选方法得到图
三元卡诺图2.2
依据圈出矩形框来判断所圈矩形框的最小项表达式:
①. 观察所圈矩形框中“1”的个数,确定该矩形框对应最小项的变量个数
②. 根据不变量写出表达式
(1) 蓝色矩形框:框中“1”的个数为4,确定该项变量为1,找不变量,在这一过程中C=0C=0C=0保持不变,则将不变量作为该项式的变量——C‾\overline{C}C(若不变量满足C=1C=1C=1保持不变,则该项式变量——CCC)
(2) 红色矩形框:框中“1”的个数为4,确定该项变量为1,找不变量,在这一过程中A=0A=0A=0保持不变,则将不变量作为该项式的变量——A‾\overline{A}A(若不变量满足A=1A=1A=1保持不变,则该项式变量——AAA)
(3) 黄色矩形框:框中“1”的个数为2,确定该项变量为2,找不变量,在这一过程中AB=10AB=10AB=10保持不变,则将不变量作为该项式的变量——AB‾A\overline{B}AB
(4) 三项相加得到最终表达式为C‾\overline{C}C+A‾\overline{A}A+AB‾A\overline{B}AB
图中圈出三个矩形框,表示所得表达式中最小项式的个数为三,其中每一个矩形框代表一个最小项式
所圈出的矩形框包含“1”的个数与可消去变量或最小项项式变量的关系为
Mi=N−log2miM_{i}=N-\log_{2}{{m_{i}}}Mi=N−log2mi
定义:
N表示总变量数;
mi表示第i个矩形框内“1”的个数;
Mi表示第i个矩形框对应最小项的变量个数
(2). 四元卡诺图化简
对于三元卡诺图,由于三变量所能产生的最多情况个数为8种,不存在较为复杂的空间排布规律
但对于四元卡诺图,可能会出现较为复杂的空间排布规律,此情况下,框选的范围就不再只是狭义上的矩形框范围了,该定义扩展到物理范围上
通过如下图给出
四元卡诺图2.3
实际圈出过程为:
四元卡诺图2.4
可以发现,左右两侧并不相邻的部分被圈入同一个矩形框种
对于这种情况,看似不相邻,实则是相邻的,因为左右两列始终满足相邻条件
:两个方格之间只有一个变量发生改变,而对于左右两侧共四组每一组都满足相邻条件
,实际上无论是上下两侧还是左右两侧,都满足相邻条件
,即称之为物理相邻
可以使用镜像法
来分析物理上的相邻,即可作如下图
(镜像法为个人证明所得方法,并不推荐使用于考试或程序设计当中)
四元卡诺图2.5
前面讲过,对于不规范的卡诺图,化简方式仍然成立且完全相同:标准/非标准卡诺图解析
所以,仍然使用前面的化简方法,对上图化简为
(1) 灰色矩形框:框中“1”的个数为8,确定该项变量为1,找不变量,在这一过程中D=0D=0D=0保持不变,则将不变量作为该项式的变量——D‾\overline{D}D
(2) 棕色矩形框:框中“1”的个数为4,确定该项变量为2,找不变量,在这一过程中BC=10BC=10BC=10保持不变,则将不变量作为该项式的变量——BC‾B\overline{C}BC
(3) 黄色矩形框:框中“1”的个数为2,确定该项变量为3,找不变量,在这一过程中ABC=101ABC=101ABC=101保持不变,则将不变量作为该项式的变量——AB‾CA\overline{B}CABC
(4) 三项相加得到最终表达式为D‾\overline{D}D+BC‾B\overline{C}BC+AB‾CA\overline{B}CABC
(3). 四元卡诺图化简常见错误情况
对较复杂卡诺图的化简可能会遇到的两种问题:
- 漏化简
- 化简方式始终是唯一的,因为化简遵循
最大选取原则
,化简出现多种可能说明化简错误
给出如下卡诺图
四元卡诺图2.6
首先四角上的四个方格是成对相邻的,例如左上角0000分别与左下角1000和右上角0010相邻,同理对另外三个角也满足相邻条件,即此四角可以被圈入为一个矩形框
那么对于该卡诺图
化简方式应该为
四元卡诺图2.7
仍然依据上述化简方式
(1) 灰色矩形框:框中“1”的个数为4,确定该项变量为2,找不变量,在这一过程中BD=00BD=00BD=00保持不变,则将不变量作为该项式的变量——B‾D‾\overline{B}\overline{D}BD
(2) 紫色矩形框:框中“1”的个数为4,确定该项变量为2,找不变量,在这一过程中CD=10CD=10CD=10保持不变,则将不变量作为该项式的变量——CD‾C\overline{D}CD
(3) 两项相加得到最终表达式为B‾D‾\overline{B}\overline{D}BD+CD‾C\overline{D}CD
2. 化简POS
如下给出通过卡诺图化简步骤
①. 将POS标准式对应真值表全部填入卡诺图中
(卡诺图对应位置填0,及卡诺图中显示为0的地方为对应输出值为0的所有可能情况)
(而对于某个方格内同时对应的四个变量作为输入,表示这种输入通过POS表达式的输出为0)
②. 将卡诺图中的0依照矩形框取方法1逐一划分区域
③. 将划分区域写成表达式形式并相乘写成POS表达式
所得表达式即为最简/最小项POS表达式
实际上,其方法与SOP表达式
化简的方式完全一致,唯一区别在于表达式的化简原理略有不同,区别在用于确定不同表达式的唯一输入输出值
故,对应于POS表达式
的卡诺图,需要将对应表达式所在卡诺图位置置0,并依据给出唯一输入真值为0给出最小项表达式
以下图为例
四元卡诺图2.8
经矩形框选得到:
四元卡诺图2.9
分析给出其POS对应的最小项表达式:
(1) 绿色矩形框:框中“1”的个数为4,确定该项变量为2,找不变量,在这一过程中CD=01CD=01CD=01保持不变,则将不变量作为该项式的变量——C+D‾C+\overline{D}C+D(若不变量满足C=0C=0C=0保持不变,则该项式变量——CCC/若不变量满足C=1C=1C=1保持不变,则该项式变量——C‾\overline{C}C,这一原则是根据SOP/POS标准化过程给出的)
(2) 深蓝色矩形框:框中“1”的个数为4,确定该项变量为2,找不变量,在这一过程中AD=11AD=11AD=11保持不变,则将不变量作为该项式的变量——A‾+D‾\overline{A}+\overline{D}A+D
(3) 玫瑰色矩形框:框中“1”的个数为1,确定该项变量为4,找不变量,在这一过程中ABCD=0110ABCD=0110ABCD=0110保持不变,则将不变量作为该项式的变量——A+B‾+C‾+DA+\overline{B}+\overline{C}+DA+B+C+D
(4) 三项相乘得到最终表达式为(C+D‾C+\overline{D}C+D)(A‾+D‾\overline{A}+\overline{D}A+D)(A+B‾+C‾+DA+\overline{B}+\overline{C}+DA+B+C+D)
3. 由SOP/POS表达式得到POS/SOP最小项表达式
和真值表对应互补关系
一样:
SOP/POS相互转化
卡诺图也有着“非1即0”的互补关系
:
通过SOP/POS
给出的表达式对应卡诺图中全部的1/0之外的全部空余区域,全部为给出表达式置位的补码
四元卡诺图3.1
并根据给出的全卡诺图求需要的最小项式
即可
希望能够帮到迷途之中的你,知识有限,如有学术错误请及时指正,感谢大家的阅读
(^^)/▽ ▽\(^^)
矩形框取方法表示通过矩形框框取卡诺图中的1;
需要遵循如下几个原则:
(1). 以每一个1/0表示一个正方形区域,框取构成必须为矩形图案
(2). 框取的1/0的数量必须为2n2^{n}2n(n≤\le≤m,m为总变量的个数)
(3). 框取范围内不能有空(即只能框取1或只能框取0,框取范围内不能出现不同项)
或可表示为框取邻近的值
(4). 最大选取(化简)原则:框取全部在条件内的值0/1
(5). 矩形框取方法适用于物理范围的矩形而非图上的矩形,即真值满足临近条件的方格都可以用矩形框选 ↩︎ ↩︎
卡诺图最简化SOP/POS表达式相关推荐
- 逻辑函数规范范式——SOP/POS表达式
SOP/POS基础及相互转换 一. SOP/POS介绍 1. The Sum-of-Products(SOP)Form 2.The Product-of-Sums(POS)Form 二. SOP/PO ...
- 布尔函数_布尔函数的POS和SOP形式表示
布尔函数 There are four ways in which a Boolean function can be expressed which are as follows, 布尔函数可以通过 ...
- [深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询
此文章非原创,转载自诗人江湖老,原文地址 在Git上下载源码 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找.过滤等等常见的任务的时候 ...
- 分布式映射与集中式映射_K映射上的表达式映射和组包围
分布式映射与集中式映射 In the previous article (Karnaugh Map 2, 3 and 4- variable) we have already discussed th ...
- FPGA:逻辑函数的卡诺图化简法
文章目录 最小项与最小项表达式 最小项的定义 最小项的性质 逻辑函数的最小项表达式 卡诺图化简法 用卡诺图表示逻辑函数 卡诺图的引出 两变量卡诺图 三变量卡诺图 四变量卡诺图 已知逻辑函数真值表,画卡 ...
- 前缀 中缀 后缀表达式2
对于未经训练的用户来说,计算机科学领域中数学表达式求值的传统方法即不顺手又难以使用:软件工程师 Nikola.Stepan 旨在改变这些传统方法.他的 applet W3Eval 对表达式求值与您用纸 ...
- Lambda表达式(简单解析)
Lambda表达式 Lambda表达式其实是JDK8的一个新特性.所谓Lambda表达式指的是应用在单一抽象方法接口环境下的一种简化定义形式,可以用于解决匿名内部类中定义复杂的问题. 我们先来看一段代 ...
- Swift 闭包表达式
闭包是功能性自包含模块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的 blocks 以及其他一些编程语言中的 lambdas 比较相似. 闭包的形式主要有三 ...
- 【C语言入门教程】2.7 表达式
表达式由运算符.常量及变量构成,C语言的表达式基本遵循一般代数规则.有几种运算法则是 C 语言表达式特有的. 2.7.1 表达式中的类型转换 同一表达式中的不同类型常量及变量在运算时需要变量为同一数据 ...
最新文章
- 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇
- python爬虫音乐数据加入mysql_Python爬虫数据并存入MySQL数据库,实现可视化。
- (摘要)100个伟大的商业理念:理念34:企业社会责任
- html 查询表单,如何让我的HTML表单查询适用于所有表单元素?
- 一文读懂图卷积GCN
- 2020年推荐系统工程师炼丹手册
- visual studio中导入opencv的项目
- 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
- 20172302『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结
- 【LeetCode-SQL每日一练】—— 620. 有趣的电影
- vscode 调试 C++/JavaScript
- MySQL默认库可以删_个人总结:Sql(一:创建删除修改库表||附:mysql数据类型及默认值)...
- 关于博主 | 联系博主
- python入门必备10个坑_python中的基础坑
- SQLPro Studio mac如何链接MYSQL?
- 6月29 Electron的第一课
- 小白进阶——Mike21(一)
- 【181128】VC++ MFC编写桌面放大镜工具源代码
- 北京思想聚合科技有限公司
- MacBook更换开机登录界面壁纸
热门文章
- 【面试题】package有什么作用
- 从产品角度,快速接盘新系统的一些经验及方法提炼
- 阈值法进行边缘检测matlab
- ios13全选手势_iOS13操作新手势:使用iPhone编辑文本更方便
- Android传感器介绍及指南针的实现
- java实习面试复盘(22年广州番禺)
- 1024分辨率《圣徒/天神魔煞/猎魔教士》BD中字无水印
- [Swift通天遁地]八、媒体与动画-(13)CoreText框架实现图文混排
- JQuery插件Validation的使用-遁地龙卷风
- 什么是令牌桶(Token Bucket)?