目录
本文结合了原锆石科技文档资料(截取其中部分图表),并参考了康华光《 电子技术基础 数字部分》(第六版)。
1.组合逻辑电路的分析方法
首先给出组合逻辑电路的一般分析方法,如图1.1所示。
图1.1 组合逻辑电路的一般分析方法
以下图的组合逻辑电路为例。
图1.2 组合逻辑电路图
(1)根据电路图写出逻辑表达式。由于现实中的电路图可能比较复杂,可以采取级联的分时分别写出各子模块的逻辑表达式。分别写出P1、P2、P3、P4的表达式。
得到最终的表达式:
(2)根据逻辑表达式写出真值表。
表1.1 真值表
(3)根据真值表分析电路的功能。如表1.1所示,当且仅当此电路当输入变量A、B、C全为0或全为1时,L输出为1;否则,L输出为0。
2.公式化简和卡诺图化简
2.1公式化简的基本定律和规则
表2.1.1是公式化简的九条基本定律。
表2.1.1 公式化简的九条基本定律
逻辑代数除了上面的九条基本定律,还有三条重要的规则。分别是:代入规则、反演规则和对偶规则。
(1)所谓代入规则就是每个模块的输出都可以作其他模块的输入。已知等式,有函数
,将
代入前式中的
,得到
。
(2)反演规则就是逻辑表达式中的运算符、常量和变量作如下变换:、
、
、
。例如,
,则
。
(3)对偶规则。设是一个逻辑表达式,若把
中的“与、或互换,0、1互换”,那么就得到一个新的逻辑表达式,这就是
的对偶式,记作
。例如,
,则
。变换时需注意保持原式中"先括号、然后与、然后或"的运算顺序。可以发现,公式化简的九条基本定律右边一列都可以由左边等式作对偶得到。将该规则概括为:当某个逻辑表达式相等,则它们的对偶式也相当。
除了上述的九条基本定律和三条重要规则,还有一些公式化简的方法:
(1)并项法:利用公式,将两项合并成一项,并消去一个变量。例如,
(2)吸收法:利用公式,消去多余的项
。根据代入规则,
、
可以是任何一个复杂的逻辑式。例如,
(3)消去法:利用公式,消去多余的因子。例如,
(4)配项法:先利用,增加必要的乘积项,再用并项或吸收的办法使项数减少。例如,
2.2逻辑函数的卡诺图化简法
关于卡诺图的引出以及卡诺图化简的依据这里不再赘述(感兴趣的可以参考电子技术书籍),这里仅讨论卡诺图化简的一般步骤和实例。
在给出卡诺图化简得方法前,首先给出卡诺图的表示方法及其化简形式(以四变量为例)。
将上述两幅卡诺图的表示方法对比可以发现,0000代表(表示次序依次为00,01,11,10,不要颠倒)。
卡诺图化简的一般步骤如下:
(1)将逻辑函数写成最小项表达式;
(2)按最小项表达式填卡诺图(包含在式中的填1,其余填0);
(3)圈出为1的相邻最小项,每个圈必须包含个;
(4)将所有包围圈对应的乘积项相加(每个包围圈的乘积项为变量的相同部分)。
注:在已知真值表的情况下,可将上述步骤的(1)(2)合并为一步。
这里重点对画圈的原则进行说明:
(1)包围圈内的方格数必定是个;
(2)相邻方格包括上下底相邻,左右边相邻和四个角两两相邻;
(3)同一个方格可以被不同的包围圈重复包围,但新增包围圈中一定要有新的方格(已有圈中的子集不可重新划定为圈,例如已圈定的4个方格大小的圈中的两个方格不可圈定为新圈);
(4)包围圈内的方格要尽可能多(也就是说包围圈的数目要尽量少),这决定了采用卡诺图化简后的表达式是否最简。
例1 用卡诺图法化简下列逻辑函数,求的最简与-或表达式。
解:
(1)根据逻辑函数画出卡诺图
(2)找出1的相邻最小项,圈出包围圈,合并最小项,得到最简与-或表达式
得到这两个乘积项的过程,这里再赘述一下(以中间的四格圈为例)。AB部分01和11中‘1’为共同元素,对应着B;CD部分01和11中‘1’为共同元素,对应着D,得到项。因此只需要先按行找他们的共同元素,再按列找共同元素。
例2 化简下列逻辑函数。
解:
(1)由画出卡诺图
(2) 卡诺图化简(这里由于1比较多,提供第二种思路)
法一(圈1) :
法二(圈0):,从而
2.3具有无关项的化简
除了上述这些具有确定逻辑表达式的卡诺图化简,在实际工作中,逻辑变量意味着特殊的现实意义,因此某些变量的取值组合并不会出现,也就是函数值可以是任意的(可以是0,也可以是1),变量取这些值所对应的最小项称为无关项或任意项。这点在由真值表进行卡诺图化简中体现得尤为明显。
注:引入无关项的目的主要是为了化简原有的函数表达式,切勿画蛇添足,将额外的无关项圈出来(也就是说,例如把本来只可以圈画4个方格,引入无关项后可以圈画8个方格,但是不要单独将无关项直接圈画起来)
例:要求设计一个逻辑电路,能够判断1位十进制数是奇书还是偶数,当十进制为奇数时,电路输出为1;当十进制数为偶数时,电路输出为0。
解:
(1)写出真值表。用8421 BCD码表示十进制数,输入变量用A、B、C、D表示。1表示对应的十进制数为奇数,0表示对应的十进制数为0
注:下面出现的无关项是由于8421 BCD码只有十个数,表中的后六种组合式无关的。
(2)根据真值表,填写四变量卡诺图
(3)画包围圈,利用无关项,将最小项、
、
对应的方格视为1,可以得到最大的包围圈,由此得到逻辑表达式
3.竞争与冒险
3.1产生竞争-冒险的原因
前面进行组合逻辑电路的分析与设计时,都没有考虑逻辑门的延迟时间对电路产生的影响(把门电路看成是理想门电路),并且认为电路的输入和输出均处于稳定的逻辑电平。实际上,信号经过逻辑门电路都需要一定的时间。由于不同路径上门的级数不同,信号经过不同路径传输的时间不同。或者门的级数相同,而各个门延迟时间的差异,也会造成传输时间的不同。因此,电路在信号电平变化瞬间,可能与稳态下的逻辑功能不一致,产生错误输出,这种现象就是电路中的竞争-冒险。
根据其产生的原因不同,又可分为逻辑竞争、逻辑冒险和功能竞争、功能冒险。
3.2逻辑竞争与逻辑冒险
会导致"1型冒险",
会导致"0型冒险"。
竞争就是在一个组合电路中,当某一个变量经过两个以上的路径到达输出端时,由于每条路径上的延迟时间不同,到达终点的时间有先后,这一现象被称为竞争,这里的竞争又可以称之为逻辑竞争。如下图所示:
输入端A的一端经过G1门,延迟了一个时间后到达G2门;而另一端直接连接在了G2门的输入端。因此,可以说同一个信号A,经过两条不同的路径分别到达G2门,并且由于它经过的两个路径的延迟时间不同,这两个信号到达输入端有先后关系,这样的现象称之为逻辑竞争。
冒险,就是在具有竞争现象的组合电路中,当某个变量发生变化时(0到1,1到0),如果真指标所描述的逻辑关系或者功能受到短暂的破坏,在输出端出现一个本不该有的尖脉冲(毛刺),这一现象称为逻辑冒险。逻辑冒险是一个错误的输出。
由上图的电路图写出表达式,,然后再根据表达式写出真值表,如下图所示:
从真值表可知,输出变量恒等于0,如下是其对应的理想波形图:
然而,由于实际电路中门电路有延迟时间,将延迟时间记作,根据延迟时间
画出实际状态的波形图,如下图所示:
从上图可以看出,信号经过一个G1非门,由于非门有一个延迟时间
,所以
不是另可变为0,而是经过一个延迟时间后才变为0。按照与逻辑功能,当
=1,
=0时,
才等于1,但是
不会直接立刻输出1,因为
与
还要经过G2与门才会输出1。因此,这个电路的输出端
也经过了一个延迟时间
后才输出1(输出是由
与经过非门得到的
相与之后再经过一个非门的延迟时间后得到的,并且默认与门、非门延迟时间一致)。
在实际状态波形图中,出现这种短暂变为1的波形,相当于在电路中产生了一个尖脉冲,是不符合逻辑表达式要求的,是一个错误的波形。因此,将这种出现错误波形的现象称为逻辑冒险(逻辑冒险是由逻辑竞争导致的)。又因为产生的是一个正的尖脉冲,所以通常称这种逻辑冒险为"1型冒险"。在波形的后部分,当
变为0以后,
不是立刻变为1,它要经过一个延迟时间
后才会变成1,尽管在后面三条虚线内也出现了逻辑竞争,但是并没有出现逻辑冒险。由此说明,逻辑竞争并一定会导致逻辑冒险。
"0型冒险"仅依次给出电路图、真值表和波形图,不再详细分析,如下图所示:
3.3逻辑冒险的识别与消除
想要识别一个电路中是否存在逻辑冒险,通过有两种方法判别,一种是代数法,另一种是卡诺图法。
3.3.1代数法
代数法是根据电路图写出其逻辑表达式,在该逻辑表达式中某些逻辑变量取特定值0或1时,如果逻辑表达式能转换成,则该电路存在"1型冒险";如果逻辑表达式能转换成
,则该电路存在"0型冒险"。
以下图中的"0型冒险"为例:
由电路图可知,该电路的逻辑表达式为。在该逻辑表达式中,若输入变量
,则有
,因此可以断定该电路中存为"0型冒险"(识别"0型冒险"就是看能不能找到一个变量与其反变量进行"或操作","1型冒险"就是看能不能找到一个变量与其反变量进行"与操作")。
3.3.2卡诺图法
卡诺图法是根据逻辑表达式画出卡诺图,在该卡诺图中,若输入变量在卡诺图圈内改变时,输出不会有冒险现象;若输入变量是在相邻卡诺圈内的相邻处发生变化,并且是从一个卡诺图进入另一个卡诺圈,则可能产生逻辑冒险现象。
以为例进行说明,直接给出如下的卡诺图:
从卡诺图可以看出,当、
,
由0→1时,此时的变化是在卡诺圈内变化,所以不会发生冒险。同理,当
时,也是在卡诺圈内变化,因此不会出现冒险。但是,当
,
由0→1时,相当于输出变量
、
、
从110变化到111,此时的变化是从一个卡诺圈进入另一个卡诺圈,所以该电路存在冒险现象。
3.3.3逻辑冒险的消除
逻辑冒险可以通过电路的重新设计来消除,若在函数表达式中增加冗余项(相当于在卡诺图中增加多余的卡诺圈),既不改变函数的逻辑功能,又可消除逻辑冒险,缺点是电路复杂度提高。以上述出现逻辑冒险的函数表达式为例,前面已经分析过,当
时,
出现逻辑冒险,因此只需要在原表达式中增加一个乘积项
,表达式变为
,
将不再产生冒险。由于在添加乘积项就,表达式不再是最简式,因此增加的乘积项也叫冗余项。通过卡诺图消除逻辑冒险的方法如下(增加卡诺圈):
3.4功能竞争与功能冒险
前面描述的逻辑竞争中输入变量只有1个,当多个变量经过两个以上的路径到达输出端时,同样会产生竞争,将这种竞争称为功能竞争,在具有功能竞争的组合电路中,也同样会产生冒险,将这种冒险称为功能冒险。
对于与门,若稳态=1,
=0或
=0,
=时1,输出
恒为0。但是在信号的传输过程中,由于传输时间的不同,造成在时间
内,出现了一个错误的波形,将这种错误波形的现象称为功能冒险。又因为产生的是一个正的尖脉冲,所以称这种功能冒险为"1型冒险"。"0型冒险"类似,如下图:
注:逻辑竞争和功能竞争更多只是概念上的差别,逻辑冒险是由于同一个信号经过不同路径造成的,功能冒险是由于多个信号经过两个路径并最终形成的,本质上是一样的。
3.5功能冒险的识别与消除
3.5.1功能冒险的识别
功能冒险的识别通常采用卡诺图来进行判别,以下图为例:
根据卡诺图,可以知道时,
;若
由
→
,即
由
→
且
由
→
(在这个过程中
和
未发生变化),则变化后函数
的为稳定值也为1,由于输入变量
、
实际上不可能同时变化,他们的变化总是有先有后的,若
先变,则变化途径为
→
→
,相应的输出
变化为
→
→
(图中红色箭头1变化过程),此时没有发生冒险现象;但当
先变时,
的变化途径为
→
→
,相应的输出
变化为
→
→
(图中红色箭头2变化过程),因此出现了"0型冒险"(功能冒险产生于多变量发生变化,也就是它们不是左右、上下相邻关系)。
电路具有下列三个特点,则其输出可能产生功能冒险:
(1)有两个以上变量同时发生变化(如果仅有一个输出变量发生变化,则无功能冒险);
(2)变化前后,输出稳态值不变;
(3)在由n(n≥2)个变量发生变化的个方格中,既要有0,又要有1(如果对应
个变量取值组合的输出值全为1或全为0,电路时不会产生功能冒险的)。
3.5.2功能冒险的消除
功能冒险时由于在输入n个变量同时变化时,它们的实际变化在时间上有先有后引起的,因此改变电路的逻辑设计并不能消除功能冒险。对待功能冒险常用的方法是增加选通信号或者在输出端并联放置滤波电容(电容能对窄脉冲起到平波的作用,消除输出端出现的逻辑错误,但同时也使输出波形上升或下降沿变得缓慢)。