卡诺图在组合逻辑电路竞争冒险中的应用.doc
文本预览下载声明
卡诺图在组合逻辑电路竞争冒险中的应用
匡晚成 ,肖洪祥
( 桂林工学院 电子与计算机系 ,广西 桂林 541004 )
摘 要:卡诺图是组合逻辑电路设计和分析最常用和有效的数学工具,排列多变量的卡诺图则不是易事。格雷码相邻码之间只有一位不同,这与卡诺图的循环邻接有相同之处。本文介绍二进制码转化为格雷码和利用格雷码的规律快速排列多变量卡诺图的方法,叙述了卡诺图在组合逻辑电路竞争冒险中的应用。
关键词:格雷码;卡诺图;竞争冒险;
中图分类号:TN791 文献标志码:A
1 引 言
在数字电子技术中,卡诺图无论是在逻辑函数的设计和化简中,还是在组合逻辑电路竞争冒险现象的分析中都占有重要的地位。它是数字电路分析和设计常用的工具,并且具有循环邻接的特点。正是这个特点,使得它可以很方便的化简多变量的逻辑函数。要化简多变量的逻辑函数,通常必须排出多变量的卡诺图。尽管可采用“折叠展开”的法则或者查表法进行排列[1],但这些方法排列和记忆比较困难。因此,设计人员急需一种简捷易行的排列卡诺图的方法。本文论述了以格雷码规律排列卡诺图的方法,并举例说明用卡诺图在组合逻辑电路竞争冒险中的应用。
2 卡诺图的排列方法
2.1 二进制码与格雷码的转换
格雷码是二进制代码表示的一种无权码,在数字系统中有着广泛的应用。其特点是任意两相邻代码之间只有一位数不同,其余各位均相同; 现常用于模拟—数字转换和转角—数字转换。它有许多种,典型的格雷码是一种具有反射特性和循环特性的单步自补码。
二进制码是一种可以直接用于计算,并能被计算机直接识别的是一种代码。在工程应用中,需将格雷码转换为二进制码;但由于相邻的两组格雷码之间的只有一位不同,这正好和卡诺图循环邻接特点一致,因此需要将二进制代码转换为格雷码,以便快速排列多变量卡诺图。
转换方法如下:
设N位二进制码: B = Bn-1 …Bi-1 Bi. …B1 B0
其对应的N位格雷码: G = Gn-1 …Gi-1 Gi. …G1 G0
最高位不变 Gn-1 = Bn-1 Gi = XOR (Bi+1, Bi ) , i从0到 n-2。
根据以上方法,我们按照十进制的大小顺序将四位的二进制数转换为相应的格雷码,其转换结
果见如下表1。该公式只适应于二进制位数不是很长的情况下,当位数超过6位时,计算特烦琐而
且易于出错,给电路设计者带来了极大的不方便。因此对位数较长的二进制数,建议用软件法实现。
作者简介:匡晚成(1980 —),男( 汉 族 ),湖南双峰人,硕士研究生。研究方向:数字信号处理
十进制数
二进制编码
格雷码
B3 B2 B1 B0
G3 G
0
0 0 0 0
0 0 0 0
1
0 0 0 1
0 0 0 1
2
0 0 1 0
0 0 1 1
3
0 0 1 1
0 0 1 0
4
0 1 0 0
0 1 1 0
5
0 1 0 1
0 1 1 1
6
0 1 1 0
0 1 0 1
7
0 1 1 1
0 1 0 0
8
1 0 0 0
1 1 0 0
9
1 0 0 1
1 0 0 0
表1 二进制码和格雷码的对应关系对照表我们用C语言编制了一个码制转换程序,
表1 二进制码和格雷码的对应关系对照表
此程序实现码制转换的主要代码:
int XOR(int a,int b)
{ if(a!=b)return 1;
else return 0;
}
void Bin2Gray(int Bin[],int Gray[],int Len)
{ int i;
Gray[Len-1]=Bin[Len-1];
for(i=Len-2;i=0;i--){
Gray[i]=XOR(Bin[i+1],Bin[i]);
}
}
2.2 根据格雷码排列卡诺图
四变量以下的卡诺图排列比较简单,只需掌握两位格雷码就可以;但是五变量以上的卡诺图排列比较复杂,则必须掌握三位以上的格雷码顺序。排序的方法就是按十进制的大小将二进制码转换为格雷码,格雷码的顺序就是卡诺图中的最小项。
具体排列卡诺图时,通常将逻辑函数的输入变量分为两组,高位组放在卡诺图的行项,低位组放在列项。格雷码的0和1分别代表非变量和原变量,各输入变量组合按上述方法求出的格雷码顺序排列,行与列的交叉就是逻辑函数的最
显示全部