第6卷第3期 湖 北 职 业 技 术 学 院 学 报 No. 3 Vol. 6 2003年9月 Journal of Hubei Vocational-Technical College Sep. 2003
[文章编号] 1671-8178-2003(03)-0067-04
浅析卡诺图的降维
万学斌
(湖北职业技术学院,湖北 孝感 432000)
[摘 要] 文章提出了一种多变量逻辑函数化简的卡诺图法----降维卡诺图法,从而有效扩展了卡诺图化简的适用范围。
[关键词] 卡诺变量;降维变量;卡诺图;降维卡诺图
[中图分类号] TP331.2 [文献标识码] A
在数字逻辑电路中,化简逻辑函数是分析和设计数字逻辑电路的重要理论基础和基本技能。我们知道,逻辑化简有两种方法:一种是代数法化简;另一种是卡诺图化简。前者化简过程技巧性强,结果是否为最简还不太容易确定,而后一种方法却克服了前者的不足,使化简变得更加可操作,更重要的是它还可以化简具有随意项的逻辑函数,这是代数法化简无能为力的,但是卡诺图法化简受逻辑变量个数限制,当逻辑变量个数多于5时,卡诺图化简就显得有些麻烦,如果使用引入变量的卡诺图化
[1]
简,就会使多变量函数化简变得简单,下面介绍引入变量的卡诺图化简问题。
一 卡诺化简的依据和概念
卡诺图法化简是利用格雷码表,直观地反映逻辑函数最小项之间逻辑相邻关系的方格图,它不仅是表达逻辑函数的一种方式,而且也是化简逻辑函数的一种工具。在卡诺图上把逻辑相邻项安排在几何相邻位置,使相邻项能简化为一个与项,同时也使逻辑变量个数减少。当变量个数多于五个时,卡诺化简就显得有些麻烦,可以使用引入变量的卡诺图化简,这样一来就使得卡诺图中的变量数n和逻
[收稿日期] 2003―06―18 [作者简介] 万学斌(1963-),男,湖北孝感人,湖北职业技术学院计算机科学与技术系讲师,主要研究电工、电子、数字逻辑电路。
·67·
辑变量数m不再相等(m>n),为讨论方便,定义以下概念:
1、引入变量的卡诺图称为降维卡诺图。 2、k=m-n为卡诺图降维阶数,k为降维变量数,m为逻辑变量数,n为卡诺变量数。
3、k=1为一阶降维卡诺图,k≥2为高阶降维卡诺图。
当k=0时,每一个小方格代表一个最小项,小方格中只能是1(表示该最小项存在)和0(表示该最小项不存在)或者是随意项。
当k≠0,使得降维卡诺图面积表示只有原卡诺
k
图表面积的1/2,它的每个小方格实际上是原卡诺
k
图2个最小项的集合。为此,小方格的填写就有四种可能的情形:
k
⑴、填写1,表示函数包含有2个最小项,即该最小项中只包含有卡诺变量而不包含降维变量。
⑵、填写0,表示一个最小项也不包含,即卡诺变量和降维变量都不包含。
k
⑶、填写降维变量函数,表示 2最小项中的部分最小项之和。
⑷、填写随意项。
万学斌:浅析卡诺图的降维
二 用降维卡诺图表示与或函数 1、卡诺图快速填写方法
用卡诺图表示逻辑函数即填写卡诺图,初学者往往是把一般与或表达式首先转换为最小项与或表达式,然后填图。其实,卡诺图的填写是十分简单的,只需要把已知的逻辑变量值代入逻辑函数表达式,求出逻辑函数值,填入卡诺图对应的小方格即可。然而这种方法的运算量大,操作不易,我们在学习了卡诺图化简后,卡诺图的填写就可以利用卡诺图化简思想来快速填写了。也就是说,卡诺图化简可以把一个卡诺圈简写为一个与项,而快速法填写卡诺图就可以将一个与项展开为一个卡诺圈。不过在快速填写卡诺图时,我们掩去了卡诺圈,这是因为我们不是在进行卡诺化简,而是在填写逻辑函数的卡诺图,用卡诺图在表达逻辑函数,为卡诺图化简作准备。
例1:填写F=A+BC+ABC的卡诺图 解:函数F的卡诺图为图一,此处为了表达清楚,把每个与项对应的卡诺圈都没有掩去。 BC A OO O1 11 1O O O O 1 O 1 1 1 1 1 图1 F的卡诺图
A?ABC?ABC?ABC?ABC BC?ABC?ABCABC=ABC
也就是说,下面四个1对应于A,A也可散开为下面的四个1;BC对应11列的两个1;ABC对应着1行11列的卡诺圈。在卡诺化简时应该掩去所有卡诺圈。掌握了卡诺图的快速填写方法,将会为以后卡诺化简有很大的帮助。
2、与或函数降维卡诺图的填写
多变量与或函数中的一个与项如何填入降维卡诺图?根据卡诺图化简依据和卡诺图快速填写方法就有以下三种情况(与或函数中不含随意项的问题)。
⑴、当逻辑函数的与项中只含有卡诺变量时,
·
68· 则如同一般卡诺图填写方法,按上例填写,则在与项对应的卡诺圈中小方格为1。
⑵、当逻辑函数的与项中既含有卡诺变量,又含有降维变量时,则在与项对应的卡诺圈中所有小方格填写降维变量的与项。
⑶、当逻辑函数的与项只有降维变量时,则在卡诺图中所有小方格中填写降维变量与项。
把与或函数的每个与项按上述规则填入降维卡诺图就得到了该函数的原始降维卡诺图,经过简单的逻辑代数运算就得到了该函数的降维卡诺图。
例2:填写
F?AB?ABD?D?BC一阶降维卡诺图 解:取D为降维变量,A、B、C为卡诺变量,则有三变量的一阶降维卡诺图为图2。
AB=∑m(6,7),BC=∑m(3,7) (情形1) ABD=∑m(0,1)·D (情形2) D=∑m(0,1,2,3,4,5,6,7)·D (情形3) BC A OO O1 11 1O O D+D D+D 1+D D (0) (1) (3) (2) 1 D D 1+1+D 1+D (4) (5) (7) (6) 图2 填写F的原始降维卡诺图
图2运算后即为F的降维卡诺图3。 BC A OO O1 11 1O O 1 1 1 D 1 D D 1 1 图3 F的一阶降维卡诺图
三 用降维卡诺图化简逻辑函数
在不包含随意项的逻辑函数降维卡诺图中,只含有0、1、降维变量项,根据卡诺化简的依据,用降维卡诺图化简逻辑函数原则如下:
1、首先对降维卡诺图中的“1”的小方格,按卡诺图化简的一般原则化简,即在覆盖函数中的所有最小项的前提下,卡诺圈的个数达到最少,每个
卡诺圈的面积达到最大[2]
。得到的与项只有卡诺变量,而不含降维变量。
2、然后对降维卡诺图中降维变量的小方格进行合并,合并原则也和对“1”的合并原则相似,不过
湖北职业技术学院学报 2003年第3期 第6卷第3期 这时 “1” 的小方格可视为含有任意项的方格,得到卡诺变量的与项必须再与上降维变量项。
例3:以例2为例化简一阶降维函数F 解:根据降维卡诺图4,据化简原则, BC A OO O1 11 1O O 1 1 1 D 1 D D 1 1 图4 F的化简
由图4得:F?AB?AB?D?BC
此题化简也可以把m1和m3合并为AC,则: F?AB?AB?D?AC
例4:用二阶降维卡诺图化简逻辑函数 F?AB?ABD?D?BC
解:选取A、B为卡诺变量,C、D为降维变量,则F的二阶降维卡诺图为图5。
AB=∑m(3)
ABD=∑m(0)·D BC=∑m(1,3)·C
D=∑m(0,1,2,3)·D B A O 1 O D+D D+C (0) (1) 1 D 1+D+C (2) (3) 图5 填写F的二阶降维卡诺图
图5运算后为图6, B A O 1 O 1 C+ D 1 D 1 图6 F二阶降维卡诺图
由图6化简得:F?AB?AB?D?BC
化简后的结果与前面讲的一阶降维卡诺图法
化简的结果完全相同,实际上也可用四变量卡诺图化简来验证例3和例4结果,从而证明降维卡诺图法的正确性。
四 含有随意项的降维卡诺图的化简[3]
逻辑函数中随意项是指逻辑变量组合不会出现,逻辑函数值随意;或者逻辑变量组合出现后,逻辑函
数值随意。随意项逻辑函数值可视为0或者1[1]
。
为了把随意项和确定项区分开来,随意项函数值填入卡诺图小方格时用括号括起来,由于其逻辑函数值可为1或为0,因而在合并时视逻辑化简的需要选定,充分地利用好随意项,以便把逻辑函数化简到最简形式。其填写原则和化简原则与不含随意项的情况相似,首先化简小方格中的“1”项,然后化简含降维变量的项。这里仅举一例,不再赘述。
例5:用一阶降维卡诺图法化简具有随意项的逻辑函数F(A、B、C、D)=∑m(0,1,5,7,8,11,14)+∑d(3,4,9,15)
解:选取A为降维变量,B、C、D为卡诺变量,则:
F=A·∑m(0,1,5,7)+ A·∑m(0,3,6)+ A·∑d(3,4)+A·∑d(1,7)
对应一阶降维卡诺图为图7,图7运算后的卡诺图为图8。
CD B OO O1 11 1O O A+A A+(A) A+(A) O 1 (A) A A+(A) A 图7 填写F的原始一阶卡诺图
CD B OO O1 11 1O O 1 1(A) 1(A) 0 1 (A) A 1(A) A 图8 F的一阶降维卡诺图
据图8化简有:
F?AD?BC?ABC?CD或F?AD?BC?ABC?BD
·69·