竞争和冒险
在组合逻辑中,由于门的输入信号经过了不同的延时,导致到达该门的时间不一致叫竞争,产生的毛刺叫冒险,如果布尔式中有相反的信号则可能产生竞争和冒险。
由于逻辑门的延迟作用,竞争冒险现象主要由一个输入信号同时向相反的逻辑电平跳变所生的。
example
两个逻辑门,一个非门一个与门,理想情况下F的输出为0,但是实际上每个门电路从输入到输出是一定会有时间延迟的,这个时间通常叫做电路的开关延迟,而且制作工艺、门的种类,都会引起开关延迟时间的变化。
实际上,如果最后算上逻辑门延迟的话,那么F最后就会产生毛刺。信号由于不同路径传输到某一汇合点的时间有先有后的现象,就称为竞争,由于竞争引起电路输出发生瞬间错误的现象就称之为冒险。
FPGA设计中最简单的避免方法就是尽量使用时序逻辑同步输入和输出。解决方法:
1、 加滤波电容,消除毛刺的影响。
2、 加选通信号,避开毛刺。
3、增加冗余项,消除逻辑冒险。(怎么做?)
冗余项消除逻辑冒险
首先需要明确的是:只要卡诺图上有两个卡诺圈单独相切,此逻辑电路必然存在竞争冒险。
(1)、某函数的卡诺图上,只要有两个卡诺圈相切,次逻辑电路必然存在竞争冒险。
(2)、需要指出的是,对象相邻的卡诺圈不算相切,如图2所示。
(3)、将卡诺图看成一个整体,最左一列和最右一列实际上是相邻,最高一列和最低一列也是相邻。
如图3所示,两个卡诺圈处于相切状态,所以其表示的逻辑函数存在冒险。
图4所示卡诺图中,两个卡诺图也处于相切状态,所以,其表示的逻辑函数也存在冒险。
消除竞争冒险的原则是增加逻辑函数的冗余项,冗余项的加入并不改变元逻辑函数的逻辑值,但是冗余项的加入却可以有效的消除竞争和冒险。在卡诺图上,加上一个与两个相切的卡诺圈相交的一项,破坏卡诺圈的单独相切性能,加上此圈后,逻辑函数多了一个冗余项,从而消除了冒险。
本文的更新想法源自于乐鑫的一道笔试题,虽然没有问到这个,但是突然想起了这个知识点,最后和大家分享一道题:
解析:
对于选项A,卡诺图为:
对于选项B,卡诺图为:
对于选项C,卡诺图为:
故选D。