1. 产生原因
数字电路中,信号传输与状态变换时都会有一定的延时。
- 在组合逻辑电路中,不同路径的输入信号变化传输到同一门级电路时,在时间上有先有后,这种先后形成的时间差为竞争(competition)。
- 由于竞争的存在,输出信号需要经过一段时间才能达到期望状态,过度时间内可能产生瞬间的错误输出,这种现象被称为冒险(hazard)。
- 竞争不一定有冒险,但冒险一定会有竞争。
2. 消除方法
对数字电路来说,常见的避免竞争与冒险的方法主要有 4 种。
2.1 增加滤波电容,滤除窄脉冲
这种方法需要在输出端并联一个小电容,将尖峰脉冲的幅度消弱至门电路阈值以下。
这种方法虽然简单,但是会增加输出电压的翻转时间,易破坏波形。
2.2 修改逻辑
2.3 使用时钟同步电路,利用触发器进行打拍延迟
同步电路信号的变化都发生在时钟边沿。
对于触发器的 D 输入端,只要毛刺不出现在时钟的上升沿并且不满足数据的建立和保持时间,就不会对系统造成伤害,因此可认为 D 触发器的 D 输入端对毛刺不敏感。
因此在时钟边沿驱动下,对一个组合逻辑信号进行延迟打拍,可消除竞争冒险。
延迟一拍时钟时,会一定概率的减少竞争冒险的出现。