本文主要是介绍恶补FPGA知识——竞争与冒险,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、竞争与冒险
竞争:信号由于不同的路径传输到达某一汇合点的时间有先有后的现象。(当一个门的输入有两个或两个以上的变量发生改变时,由于这些变量是经过不同路径产生的,使得他们的状态改变的时刻有先有后,这种时差引起的现象称为竞争。)
冒险:由于竞争现象引起的电路输出发生瞬间错误(产生干扰脉冲)的现象。
2、判断电路是否存在竞争冒险现象
代数法:只要输出函数中出现互补信号,就有可能出现竞争与冒险的可能
产生负向尖峰脉冲:
产生正向尖峰脉冲:
卡诺图法:观察卡诺图中是否有两个圈相切但不相交的情况,如有则存在竞争冒险的现象。
实际中:实际上逻辑电路级数多、输入变量多、判断竞争冒险非常复杂,广泛采用仿真和实际测量逻辑电路来观察是否存在竞争冒险的现象。
3、消除竞争与冒险的方法
当组合电路的某一部分存在竞争与冒险现象时,可能危及电路整体正常工作。因此必须消除竞争与冒险,以提高电路的可靠性。
①接入滤波电容:在逻辑电路较慢的速度下工作,为了消除竞争与冒险,可以在输出端并联一个电容(4-20pf),这时输出端不会出现逻辑错误,该方法只能用于对波形和延迟时间要求不严格的情况。
注:电容通高频阻低频,毛刺相当于高平信号,对地短路了
这种方法简单易行,缺点是导致了输出波形的边沿破坏,只适用于低速逻辑电路中。
②引入选通信号:在输入信号变化并有可能出现竞争冒险,选用一个选通信号将输出门封锁,等到所有输入信号都变为稳态后,再去掉封锁输出信号。这样就避免了电路输出端出现瞬时尖峰脉冲。
缺点:脉冲宽度和产生的时间有严格的要求。
③更改逻辑设计(利用卡诺图增加冗余项):适当利用逻辑表达式中增加一些冗余项,增加冗余项不改变逻辑功能,但是可以消除互补信号产生的竞争冒险现象。
注意:
①在数字逻辑设计中,并不是最简的逻辑表达式在设计组合逻辑上一定是最优的。
②每个门从输入到输出都有一定的时间延迟,这个时间通常叫做电路的开关延迟。制作工艺、门的种类甚至制造时微小的工艺偏差都会引起这个开关延迟的变化。
③任何组合电路都可以进行冒险分析。然而,一个设计良好的同步数字系统的结构中,其多数电路不需要做冒险分析。在同步系统中,组合电路的所有输入都是在特定时刻发生变化的,其输出只有达到稳态后才会被“看到”。一般来说,只在异步时序电路中需要进行冒险的分析和消除,如反馈时序电路。理解冒险现象对于设计可靠的电路时非常重要的。
这篇关于恶补FPGA知识——竞争与冒险的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!