竞争冒险及其消除
信号由于经由不同路径传输达到某一汇合点的时间有先有后的现象,就称之为竞争
由于竞争现象所引起的电路输出发生瞬间错误的现象,就称之为冒险
FPGA设计中最简单的避免方法是尽量使用时序逻辑同步输入输出。
消除竞争冒险的常用方法有以下三种:
- 加滤波电容,消除毛刺的影响
- 加选通信号,避开毛刺
- 增加冗余项,消除逻辑冒险
下面主要介绍增加冗余项的原理
可以先通过逻辑表达式画出卡诺图来判断是否会出现冒险现象,当卡诺图中的卡诺圈相切,则有竞争冒险
由上图,图中的圈称为卡诺圈,卡诺圈中只能包含1,2,4,8....2^n(n为非负整数)个元素,当该函数在A=B=1时,存在0型逻辑冒险。
图中红圈与蓝圈有相切的地方,被称为卡诺圈相切。
- 变量取值在卡诺圈内变化,不存在逻辑冒险;
- 变量取值在相切的卡诺圈跳变时,而这个相切部分又没有被另外的卡诺圈包围,则可能存在逻辑冒险。
可能存在冒险的情况实例
注:画卡诺图时变化顺序为00-01-11-10,每次变化一位,更多项以此类推。