竞争与冒险
一、竞争与冒险
1、产生原因
根本原因在于信号传输与状态变换的延时问题,两根导线的信号到达同一门级电路的变化不可能完全同步,这一时间差就称为竞争。由于具有时间差,可能就会出现非理想输出,经过一小段时间输出才能平稳下来达到理想输出,这段非理想输出就是冒险。
竞争不一定有冒险,冒险一定有竞争。
举例:与门的两个输入端延时不同,输出就可能发生错误
2、判断方法
代数法
将其他元素固定为1,对某一元素进行逻辑化简。若逻辑化简后,表达式为A+A或AA
,则存在竞争与冒险。
卡诺图法
若相切的两个圈相切处没有圈,则可能出现竞争与冒险
计算机辅助分析+实验
3、消除方法
增加滤波电容,滤除窄带脉冲
具体操作是在输出端并联小电容,将尖峰脉冲幅度削弱到门电路阈值以下。但此操作会增加输出电压翻转时间。
增加冗余
对相切处的卡诺图加圈,增加冗余项
触发器打拍
因为对于触发器来说,它只在时钟上升沿进行采样,只要毛刺不刚好出现在时钟上升沿并且不满足建立时间和保持时间,触发器就采不到毛刺。
打两拍比较保险。
采用格雷码计数器
普通计数器,从5计到6真正的触发器变化可能是4‘b101 -> 4'b111 ->4'b110,如果刚好有assign cout =(count[3:0]==3'd7)就会出现短暂脉冲。如果采用格雷码计数器,因为相邻数之间单bit变化,就可以有效避免竞争冒险。
但由于一般计数器都是时钟同步的,所以因为触发器毛刺不敏感特性,所以普通二进制编码也影响不大。
另外格雷码可以用在高速时钟下减少信号翻转降低功耗的场景。