数字电路:卡诺图

假设现在有一个逻辑电路,我们知道所有输入对应的输出,该如何找到这个系统的最简逻辑表达式呢?
卡诺图就是方法之一,其要点在于,通过一张图表现出所有输入与输出之间的关系,然后通过画圈的方式找到最简的SOP(sum of product),其中,相邻的项可以被一个圈包裹,但是圈中项的数量必须是2的指数倍(1,2,4,8…),每个圈中至少要有一个未被其它圈包裹的项,最后,圈最少的画法就能对应最简SOP

1. 一些术语

现在,我们需要知晓一些描述卡诺图属性的专有术语

1.1 minterms

小项指的是一个系统中每一个可能的输出,在卡诺图中表现为每一个单元格,下图中有7个小项
在这里插入图片描述
小项在卡诺图中通常以10进制的形态存在,上图中的每一个小项的值都为1,但假如某一个组合的输出对应为111,上面就会显示为7

小项也常用来表示特定内容的布尔函数或真值表,如下图:
在这里插入图片描述
图中项1,2,3,4,5为真值

1.2 don’t cares

有时候,某些输入对应的输出是我们不需要去关注的,就会用一个X去表示他们,这些不需要关注的项就被称为无关项(don’t cares)
表达式里,无关项通常用一个独立的求和表示,如图:
在这里插入图片描述
其中第零项和第三项是无关项

1.3 implicant

蕴含项其实就是我们文章最开始提到的“圈”,每一种可能的圈就是一个蕴含项
在这里插入图片描述
上图中就有7个一次蕴含项,6个二次蕴含项和1个四次蕴含项,共计14个蕴含项

1.4 prime implicant

质蕴含项就是不能与其它蕴含项合并的蕴含项,在1.3中,我们发现四次蕴含项中有4个二次蕴含项,那么它们就不是质蕴含项
在这里插入图片描述
可以看到上图中的每一个圈都不能和其它圈合并,所以上图有共计4个质蕴含项

1.5 essential prime implicant

实质本源蕴含项中必须含有至少一个没被包含在其它蕴含项中的项,而且不能被更大的圈包裹
在这里插入图片描述
上图中有三个实质本源蕴含项,而我们找到最简SOP的方式就是找到所有的实质本源蕴含项

2. 五变量卡诺图

我们在1中看到的卡诺图代表的都是四个变量的布尔函数,那么该如何表现五变量的布尔函数呢?如果直接二维扩展,总共32个变量,似乎没办法很好地表现。既然二维不行,我们就给他升维,在四变量卡诺图上叠加一个四变量卡诺图,这样总共能够表现的项就变成了16+16=32,正好对应我们想要的五变量卡诺图。为了区分,我们称下面一层为0层,A=0,上面一层为1层,A=1,上层项的序号等于下层+16,其对应关系如下:
在这里插入图片描述

好像是跟计算机相关的东西都是从0开始算的,建议以后做什么互联网的公司都把地面那一层叫0层,别叫1层了,说不定能更好培养程序员思维

言归正传,在将所有小项都填到两层卡诺图中后,就可以开始合并了,同一层的项仍然是像之前一样合并,除此之外,上下层位于同一竖列的项也可以合并,也就是说,我们的“圈”从二维升到三维,变成“球”了,但要注意,对角线方向是不可以画球的,这就和单层时不可以画斜向的圆是一个道理

在表现时,我们会将两层卡诺图平行放置,然后用直线连接各自蕴含项的两端,表示它们在竖方向上属于一个蕴含项,如图:
在这里插入图片描述

在找到蕴含项之后,该如何又快又好地将他们转化成对应的布尔方程呢?
我总结地方法是,观察这个蕴含项与哪一位无关
比如这个蕴含项中的小项在D=1, D=0时都为1,则说明它与D无关,最终表达式不含D
在去掉所有无关项之后,我们观察这个蕴含项与有关项的关系,比如这个蕴含项只在B=1时成立,则最终表达式包含B
如果只在A=0时成立,则最终表达式包含 A ‾ \overline A A

对于五变量卡诺图,处于“圆”内的蕴含项与A无关

  • 32
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值