竞争与冒险
在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,
到达输出门的时间就有先有后,这种现象称为竞争。
同一信号经过不同路径所需时间不同正是竞争产生的原因,
如果没有传输及门延时,就没有逻辑冒险了,那么(~A)A = 0就没有毛刺了
但是 F = AB 完全按照真值表,A与B几乎同时变化的话,还是会有毛刺的
表达式出现L = (~A)A (偏0冒险) 或者 L = (~A) + A , (偏1冒险)则称出现A冒险,其他信号取特定稳定值时(比如B=1,C=0)
解决办法:a.消除互补项,(通过增加冗余)或者根据卡诺图,出现相切的圈,增加圈使其相交即可
b.输出端加滤波电容
c.加选通控制,使得输出在输入稳定后才有效
F = AB + (~A)C,当B = C = 1时,可改写为 F = (~A) + A,为1冒险,可以加上1电平,故可以加BC项,且不会影响逻辑
F = AB + (~A)C + BC
F = (A + B)((~A) + C),当B = C = 0时, F = (~A)A ,为0冒险,可以乘上(B + C),不会改变其逻辑
F = (A + B)((~A) + C)(B + C)
L = A(~C) + (~A)B + (~A)C
上述L,不会出现B冒险和C冒险
功能冒险的判断: 功能冒险是当多个输入信号同时变化的瞬间,由于变化快慢不同而引起的冒险。
F=AC+(~B)C中, 当ABC:000 -> 001 -> 011 则F:0 -> 1 -> 0 (偏0冒险)
F = A + B 当AB 01 ->00 ->10
竞争冒险的危害:使对脉冲敏感的系统出现误动作,如时钟端口、清零和置位端口对毛刺信号十分敏感,
任何一点毛刺都可能会使系统出错
但是D触发器对毛刺不敏感,除非毛刺出现在时钟上升沿,且满足建立时间和保持时间才会影响系统
通常毛刺都比较短几ns,一般不满足建立时间和保持时间才会影响系统
故用D触发器读取组合逻辑的输出信号,可以大大减少毛刺,类似于将异步电路转化为同步电路