摘 要 卡诺图是数字电子技术中常用的基本工具,除了用于化简外,它还有许多应用,作者通过多年的教学进行了总结,并通过例子进行了详细论述。
关键词 勘察科学技术期刊,卡诺图,设计,应用
0引言
卡诺图是美国工程师Karnaugh在上世纪50年代首先提出来的,主要应用于数字逻辑函数的化简。在卡诺图中,将n个变量的全部最小项各用一个小方块来表示,并且使那些具有逻辑相邻关系的最小项在几何位置上也相邻或相对排列,通过观察其几何关系就可以确定如何合并最小项,将复杂的化简难题变成了简单直观的几何问题。
1用卡诺图化简逻辑函数
用卡诺图化简逻辑函数实质上是用配项的方法。在用小规模集成门电路(SSI)设计组合逻辑电路时,为保证设计结果最简,必须先将逻辑函数化成最简式(一般为最简与或式)。化简的方法有公式法和卡诺图法,应用公式法时能否化成最简取决于化简者对公式的熟练程度,尤其在变量数达到四、五个时比较难掌握。但是,需要怎样选择最小项进行合并才是合理的却并不容易看出来,如果采用卡诺图却可以将这一难题简单化解,在卡诺图中每一个小方块对应一个最小项,将逻辑函数用卡诺图表示出来实际上就是配项的方法。由于卡诺图是平面几何图形,具有直观的优点,所以能方便的确定合并最小项的方法,并保证化简结果最简。
2用卡诺图将逻辑函数化为最小项表达式
在进行逻辑设计时并不是都要将逻辑函数写成最简式,相反,在许多情况下,需要用中规模(MSI)、大规模(LSI)器件完成设计时,不仅不能写成最简式,而必须写成最小项(或最大项)表达式。如果按传统的方法通过配项去写是很麻烦的,能否利用卡诺图直接写出逻辑函数的最小项表达式呢?初学者在填卡诺图时都是先将逻辑函数配项成最小项表达式后才填入卡诺图中,在熟悉了以后可以不用配项而直接将逻辑函数填入卡诺图中。下面以四变量函数为例举例说明。
例一:
如图一所示:对于乘积项A B C对应于卡诺图中AB取值为00的一行与C取值为0的两列(D取1或0均可)的交叉处对应的两个最小项m0和m1;对于ACD则对应于A取0的两行与CD 取11的列交叉所对应的最小项m3和m7;对于AC D则对应于A取1的两行与CD取00的列交叉所对应的最小项m8和m12。
3用卡诺图判断有无竞争――冒险现象
在阎石先生的《数字电子技术基础》中介绍了这样一种情况,就是当输入变量每次只有一个改变状态时,如果逻辑式在一定条件下可以化成Y=A+A或 Y=A*A的形式,就可判定存在竞争――冒险现象。例如对于例一,当A=0,B=0,D=1时原式变为Y=C+C,存在竞争――冒险,当B=C=D=0时原式变为Y=A+A也存在竞争――冒险,可以通过添加冗余项A B D 和B C D 来消除。
如图一所示,先将逻辑函数填入卡诺图中,式中的每个乘积项对应用一个矩形框圈起来(类似化简时的做法),然后观察,如果某两个矩形框存在有逻辑相邻项,则一定存在竞争――冒险现象,发生竞争――冒险的条件就是这两个相邻项对应乘积项的取值。如图二所示,上例中框A B C和框ACD 有相邻项,将相邻的最小项合并得所对应的乘积项为A BD,即说明当满足条件A=0,B=0,D=1时存在竞争――冒险,该乘积项A BD即为所需添加的冗余项;同样,框A B C和框AC D也有相邻项,合并得乘积项B C D,即说明当满足条件B=C=D=0时存在竞争――冒险,该乘积项也即为所需添加的冗余项。最后添加了冗余项以后的表达式应该为:
Y=A B C + A CD + A C D +A B D + B C D。
4对时序逻辑电路自启动的判断
在时序逻辑电路的设计中,自启动设计是一个重要环节,如果等到电路设计出来后经检验发现不能自启动,这时再去修改逻辑设计是很麻烦的。借助卡诺图可以在设计过程中发现电路能否自启动并可以指导修改设计。
例二:设计一个七进制计数器,状态转换图如图三,要求能自启动。
由状态转换图可得它的次态卡诺图如图四,如果按常规方法合并最小项,从卡诺图可以看出,无关项XXX在化简中不被使用(被视作000),即状态000的次态仍是000,电路不能自启动,如果将无关项定义为有效循环中的任意一个状态即可实现自启动,比如定义为001,则状态000的次态是001,电路能够自启动。
5在用数据选择器设计组合逻辑电路中的应用
在用具有n位地址的数据选择器设计n+1变量逻辑函数时,应用卡诺图可以轻松实现。我们知道,具有n位地址的数据选择器可以设计成任意n变量或n+1变量组合逻辑函数,教科书中都是把所求函数的表达式化为最小项表达式然后和数据选择器的表达式进行对比而得,这种做法在设计成n变量逻辑函数时还比较方便,但在设计成n+1变量函数时需要先配项再变形才能进行比较,其实利用卡诺图可以比较简单地完成。
例三:用八选一数据选择器CC1452设计四变量逻辑函数Z=ABCD+ A B D + B CD + A B,八选一数据选择器的表达式为Y = m0D0 + m1D1 + …… + m7D7 。按常规方法把原式配项后写成Z=A B C *D + A B C*0 + A B C *1 + A B C *1 + A B C *1 + ABC *D + ABC *0 + ABC*D,令地址端A2 = A,A1 = B,A0 = C,对比两式可知应令数据端D0 = D7 = D,D5 = D ,D1 = D6 = 0,D2 = D3 = D4 = 1,则Y = Z即为所求。
可以看出,这样做比较麻烦,如果用卡诺图则简便得多。如图五所示,将原式填入卡诺图中,也可以将卡诺图变换成右边所示的表格(让表中的最小项按自然二进制数从小到大排列),表中数据端D0D7的取值原则是:每一行对应的最小项方框中如果没有填入1则对应数据端取0,如果填入有两个1则对应数据端取1,如果只填入一个1,则填左边取反变量,填在右边取原变量。
以上是我的一点见解,望以此抛砖引玉,请各位同行批评指正。
参考文献
[1] 阎石.数字电子技术基础(第五版)[M].北京:高等教育出版社,2006.5.
[2] 康华光.电子技术基础 数字部分(第五版)[M].北京:高等教育出版社,2000.6.