目录
一、什么是竞争与冒险
1.定义
在输入没有变化的情况下,组合逻辑电路的输出也可能发生转变,这种非预期的瞬态变化成为“毛刺”。毛刺是由电路的结构、延迟、以及可能导致毛刺产生的输入信号引起的。
竞争是门电路两个输入信号同时向相反的逻辑电平跳变(一个从1变为0,另一个从0变为1)的现象。
冒险就是可能产生毛刺输出的电路。
- 毛刺——输出状态
- 冒险——电路
2.冒险分类
(1)静态冒险和动态冒险
-
静态冒险
静态冒险是指电路的输出在某种输入作用下,不应当发生变化时却发生了变化。
静态冒险是由不同扇出路径上的不同时延造成的。
-
动态冒险
动态冒险是指原本期望输入变化仅会造成输出变化一次,但实际上却导致了输出在达到最终的期望值之前发生了多次变化。这种冒险是多条路径汇聚后所导致的多个静态冒险的结果。
(2)静态1冒险和静态0冒险
-
1冒险
1冒险是指输出的初始值为1,当本不使输出变化的输入变化后,输出会出现短暂的0,之后又回到1的情况。
-
0冒险
0冒险是指输出的初始值为0,当本不使输出变化的输入变化后,输出会出现短暂的1,之后又回到0的情况。
下面以一个1冒险的电路为例:
上述电路的最简表达式为:
F=AC+BC′F=AC+BC' F=AC+BC′
其中C'表示C的反向值。
由于非门的存在,C到达上面的与门会比经过非门到达下面与门的时间早,因此就会出现F0为0的时候F1也为0,这样就会使最终的输出F变为0,之后等C=0经过非门到达下面的与门后,F又会回到1。
二、静态冒险的消除
1.增加选通信号
在电路中引入一个选通脉冲,脉冲的高电平(正脉冲)出现在电路到达稳定状态以后,这时正常的输出信号也将变成脉冲信号,且宽度与选通脉冲相同。
缺点:需要得到一个与输入信号同步的选通脉冲,对其宽度和作用的时间也有严格要求。
2.增加滤波电容
在输出端并联一个很小的电容,当出现短暂的不应该有的毛刺时,会对电容进行充电使脉冲幅度降低(从频率角度可以将其当作低通滤波)。
3.卡诺图法
在数字逻辑设计中,并不是说最简的逻辑表达式在设计组合逻辑时一定是最优的,化简后得到的电路也可能会存在冒险。
首先给出方法:增加冗余项,将边界覆盖掉。
我们以上述的例子进行介绍:
F=AC+BC′F=AC+BC' F=AC+BC′
首先画出对应的卡诺图:
我们可以发现,当C从1变为0的时候,其实就是图中箭头的部分,当跨越这个边界时就会发生冒险。
那如何消除这个冒险?我们可以增加一个冗余项:
- 从卡诺图上看就是将这个边界包裹起来
- 从表达式上看就是增加一个和C无关的项保证函数的成立
我们将卡诺图作如上图右边的改变,增加一个冗余项,对应的函数表达式变为:
F=AC+BC′+ABF=AC+BC'+AB F=AC+BC′+AB
电路结构变成:
这样即使当C从1变为0,经过两个扇出路径的延时不同,依然可以有AB保证F为1。
三、动态冒险的消除
上面说过,动态冒险是多条路径汇聚后所导致的多个静态冒险的结果。下面是一个典型的动态冒险电路:
以下图的例子为例进行说明:
对应的波形图为:
我们可以发现F_dynamic在输入C发生变化后发生了两次变化,我们可以通过消除静态冒险的方法消除,增加一个冗余项,使得F_static不受其影响,电路结构如下:
仿真结果如下: