http://hi.baidu.com/hieda/blog/item/a4e2f826a8295c138b82a142.html
1. 什么是竞争冒险?
2. 竞争冒险产生的原因?
3. 如何判断有竞争冒险?
4. 如何消除竞争冒险?
===============================================================================
1. 什么是竞争冒险?
信号在通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,成为“竞争”;往往导致出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。
如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在“冒险”。冒险是由变量的竞争引起的。冒险又分为逻辑冒险和功能冒险。
简言之:在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争,竞争产生冒险。
2. 竞争冒险产生的原因?
(1)根本原因:延迟
(2)详细分析:
竞争冒险的产生受到四个要素的制约,即:时间延迟、过渡时间、逻辑关系和延迟信号相位。
[1]时间延迟,即信号在传输中受路径、器件等因素影响,输入端信号间出现的时间差异
[2]过渡时间,即脉冲信号状态不会发生突变,必须经历一段极短的过渡时间
[3]逻辑关系,即逻辑函数式
[4]延迟信号相位,即延迟信号状态间的相位关系,涵盖延迟信号同相位和延迟信号反相位两个方面。 延迟信号状态变化相同的则是延迟信号同相位,反之则是反相位。
时间延迟和过渡时间要素是竞争冒险的产生原因,逻辑关系和延迟信号相位要素是竞争冒险的产生机制。由原因和机制,构成竞争冒险的产生条件。当电路满足产生条件时,则一定产生毛刺。
3. 如何判断有竞争冒险?
3.1 逻辑冒险的判断方法有两种:
1). 代数法:
在逻辑函数表达式中,若某个变量同时以原变量和反变量两种形式出现,例如:逻辑函数在一定条件下可简化为Y=A+A反或Y=A*A反就具备了竞争条件。去掉其余变量(也就是将其余变量取固定值0或1),留下有竞争能力的变量,
如果表达式为F=A+A~(用A~表示A的反变量,以下同),就会产生0型冒险(F应该为1而实际却为0);如果表达式为F=AA~,就会产生1型冒险。
例:表达式 F=AB+CB~,当A=C=1时,F=B+B~,在B发生跳变时,可能出现0型冒险。
2). 卡诺图法:将函数填入卡诺图,按照函数表达式的形式圈好卡诺圈。
A\BC| 00 01 11 10
-----------------------
0 | 0 0 0 1
1 | 0 1 1 1
F=AC+BC~的卡诺图(将101和111的1圈一起,010和110的1圈一起)
通过观察发现,这两个卡诺圈相切。则函数在相切处两值间跳变时发生逻辑冒险。(前提是这两个卡诺圈没有被其他卡诺圈包围)
3.2 功能冒险的判断:
功能冒险是当多个输入信号同时变化的瞬间,由于变化快慢不同而引起的冒险。
卡诺图法:依然用上面的卡诺图,按同样函数圈好。举例F=AC+BC~中,ABC从111变为010时,A和C两个变量同时发生了跳变,若A先变化,则ABC的取值出现了过渡态011,由卡诺图可以知道此时函数输出F为0,然而ABC在变化的前后的稳定状态输出值为1,此时就出现了0型冒险。这种由过渡态引起的冒险是由于电路的功能所致,因此成为功能冒险。
3.3 综合逻辑冒险和功能冒险:
例 :F=CD+BD~+AC~,自己画及圈卡诺图,可以发现信号ABCD从0100变化到1101可能存在0型功能冒险,不存在逻辑冒险。从0111变化到1110不存在功能冒险,而可能存在逻辑冒险。
3.4 总结判断竞争-冒险的方法:
1、逻辑函数在一定条件下可简化为Y=A+A反或Y=A*A反;
2、真值表卡诺图法;
3、计算机辅助分析。
4. 如何消除竞争冒险?
消除竞争-冒险的方法:
1、引入封锁脉冲;
2、引入选通脉冲;
3、修改逻辑设计,增加冗余乘积项;
4、接入滤波电容。
顺便提一句:时序逻辑中的竞争冒险可以用D触发器,格雷码计数器,同步电路等优秀的设计方案消除。