竞争/冒险
产生背景
信号经过逻辑门电路都需要一定的时间,由于不同路径上门的级数不同,信号经过不同路径传输的时间不同,或者门的级数相同但各个门延迟时间有差异,也会造成传输时间不同。竞争与冒险是逻辑门因输入端的竞争而导致输出产生不应有的尖峰干扰脉冲(又称过渡干扰脉冲)的现象。
上图表示的是对于A信号取反,之后再与A相与得到的波形图。由于器件的延时导致的,最后出现尖峰干扰脉冲。
什么是竞争?
在组合电路中,信号经由不同的途径达到某一会合点的时间有先有后,这种现象称为竞争。
什么是冒险?
由于竞争而在电路的输出端可能产生尖峰脉冲的现象称为冒险。
二者的行为关系
竞争不一定会产生冒险,但冒险就一定有竞争。
4种消除竞争冒险常见的方法
1)修改逻辑设计,这主要包括去除互补逻辑变量和增加冗余项。
2)输出端并联电容,这主要利用了电容的充放电特性,对毛刺滤波,对窄脉冲起到平波的作用。
3)利用格雷码每次只有一位跳变,消除了竞争冒险产生的条件。
4)利用 D 触发器对毛刺不敏感的特性。
编写代码如何避免产生竞争冒险?
在 Verilog 编程时,需要注意以下几方面,在绝大多数情况下可避免综合后仿真出现冒险问题。
1)时序电路建模时,用非阻塞赋值。
2)锁存器电路建模时,用非阻塞赋值。
3)用 always 和组合逻辑建模时,用阻塞赋值。
4)在同一个 always 块中建立时序和组合逻辑模型时,用非阻塞赋值。
5)在同一个 always 块中不要既使用阻塞赋值又使用非阻塞赋值。
6)不要在多个 always 块中为同一个变量赋值。
声明
本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!
本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!
如果觉得对你有用的话,记得收藏+评论!!!
欢迎大家批评指正,侵删!