3.4组合逻辑电路中竞争--冒险现象理想情况电路中的连线和逻辑门都没有延迟。电路的多个输入信号发生变化时都是同时瞬间完成的。实际情况信号通过逻辑门需要响应时间。信号的变化需要一定的过渡时间。多个信号发生变化时有先后快慢的差异。冒险逻辑冒险功能冒险不同的冒险,产生的原因不同,消除冒险的方法也不相同。3.4.1竞争 冒险现象及其成因静态时,AB=10和AB=01时,F都为0。竞争:在组合电路中,两个输入信号同时向相反的逻辑电平跳变(一个从1变为0,另一个从0变为1)的现象。当A从1跳变为0,B从0跳变为1,且B变化得快,在极短的时间内将出现AB=11的状态,在门电路的输出端产生了极窄的Y=1的尖峰脉冲。ABF=毛刺竞争 冒险:由于竞争而在电路输出端可能产生尖峰脉冲的现象。竞争不一定都会产生尖峰脉冲不产生毛刺静态逻辑冒险&1AFAAF在A从0变为1的过程中,F出现了毛刺。在组合电路中,若某一个输入变量变化前后电路的输出是相同的,而在输入变量变化时可能出现瞬时的错误输出,这种冒险称为静态逻辑冒险。AAF=毛刺逻辑冒险F=AB+BCACBBABBCF11tpd1tpd2tpd3ACBBABBCF111tpd1tpd2tpd3输入从111变为101。tpd2tpd1+tpd3没有毛刺tpd2tpd1+tpd3出现毛刺逻辑冒险ACBBABBCF11tpd1tpd2tpd3ACBBABBCF111tpd1tpd2tpd3由于逻辑门的传输延迟时间具有一定的离散性,在实际中两种情况都有可能出现,因此,电路存在逻辑冒险现象。逻辑冒险是由传输时延造成的检查逻辑冒险的方法稳态时输出1,输入变化瞬间输出0的冒险,称为偏1型冒险。稳态时输出0,输入变化瞬间输出1的冒险,称为偏0型冒险。方法代数法卡诺图法方法比较繁琐,适用范围广,对两级(含)以上电路都适用。注意:不能对函数进行化简。方法简单,只适用于两级电路。计算机模拟检查法实验检查法代数法检查逻辑冒险找出同时以原变量和反变量的形式出现在函数表达式中的变量。消去式中其余变量而只留下被研究的变量,若得到下列两种形式,则说明存在逻辑冒险现象。F=A+AF=A·A偏1型逻辑冒险偏0型逻辑冒险消去其余变量的方法:将这些变量适当取值(积项取1,和项取0)代入式中。代数法判断逻辑冒险举例BCBAF+=B存在原变量和反变量。消去A、C,令A=C=1。BBF+=存在偏1冒险代数法判断逻辑冒险消除逻辑冒险的方法:加冗余项F=AB+BC=AB+BC+AC冗余项不含B,A=C=1时,1++=BBF1=针对可能造成冒险的变量加冗余项不存在逻辑冒险代数法判断逻辑冒险举例例:试判断下面的函数是否存在逻辑冒险ACDABCCBADAF+++=A、B、C、D均存在原反变量,各种情况都应考虑到。A变量:其反变量可以从第一或第二项得到,首先考虑从第一项出A的反变量,那么就要令B=C=1,D=0。AAF+=存在偏1冒险加冗余项DBC再考虑从第二项出A的反变量,那么就要令B=C=0,此时F的表达式中不会出现A的原变量,所以,不存在冒险。代数法判断逻辑冒险举例ACDABCCBADAF+++=B变量:只可以从第三项得到B,令A=C=1,此时,F的表达式中不可能出现B的反变量,所以,不存在冒险。C变量:只可以从第二项得到C的反变量,令A=B=0,此时,F的表达式中不可能出现C,所以,不存在冒险。D变量:只可以从第四项得到D,令A=C=1,此时,F的表达式中不可能出现D的反变量,所以,不存在冒险。综上所述,只有在输入为B=C=1,D=0,而A变化时,存在偏1型冒险,因此只要加一个冗余项即可。DBC(2)卡诺图法F=AB+BCA010001111000011101BC输入状态变化在一个合并圈内变化时,变化量不影响相应的合并项,只有变化是从一个圈到另一个圈时,变化量才会引起两个合并项的变化,此时,才会产生冒险。在只有一个变量变化的情况下,冒险只能发生在两个相邻圈之间。卡诺图判断法:若卡诺图上存在相切的合并圈,则存在逻辑冒险。合并圈与积项一一对应(2)卡诺图法A010001111000011101BC两个合并圈之间存在不被同一个合并圈包含的相邻最小项的关系称为相切。相切意味着变量会以原变量和反变量的形式存在。若相切的合并圈圈的是1,就是偏1型逻辑冒险;圈的是0,就是偏0型逻辑冒险;消除冒险的方法:加冗余圈AC卡诺图法判断逻辑冒险举例ACDABCCBADAF+++=00011110000111101110101000110001CDAB从0110→1110存在逻辑冒险加冗余圈DBC合并圈与积项一一对应例:试判断下面的函数是否存在逻辑冒险函数的最简不一定最佳,必要的冗余,反而可使电路工作增加可靠性。卡诺图法判断逻辑冒险举例例:将下面的函数设计为无逻辑冒险的组合电路:ABDDCACABAF+++=00011110000111101111001101010100CDAB从0001→1001和0111→1111存在逻辑冒险加冗余圈DCBBCD增加两个门,获得电路的稳定性。电路图略。多级电路的逻辑冒险问题多级电路逻辑冒险的判断不能用卡诺图法,只能用代数法,并且不能对函数式进行化简。例:将下面的函数设计为无逻辑冒险的组合电路:ABCADBCBF+++=))((四级门电路消去A、C、D,令A=C=0,D=1。BBF=偏0冒险加冗余项DCA++ABCDCAADBCBF+++++=))()((功能冒险在组合电路中,若有几个输入变量同时发生变化,且变化前后电路的输出是相同的,而在输入变量变化时可能出现瞬时错误输出,这种冒险称为静态功能冒险。00011110000111100101011101001101CDAB如图所示,当输入从1101→0111时,变化前后输出都是1,但A和C两个变量不可能绝对地同时变化,总会有先后差别。若A先变,不会发生瞬时错误。若C先变,会发生瞬时错误。变量发生变化的先后是随机的,因此存在冒险现象。瞬时输出0是由电路的功能决定的功能冒险输入从Ii变到Ij时产生功能冒险的条件:2、有P个(P≥2)变量同时发生变化;1、输入变量变化前后函数值相同。即F(Ii)=F(Ij);3、由P个变量组合所构成的2P个格,既有1又有0。例3-14:判断下面卡诺图所示逻辑函数,当输入ABCD从0110→1100,1111→1010,0011→0100,1000→1101变化时,是否存在功能冒险。功能冒险00011110000111100101111010101100CDAB0110→1100不存在冒险A、C变化功能冒险00011110000111100101111010101100CDAB1111→1010存在冒险B、D变化功能冒险00011110000111100101111010101100CDAB0011→0100存在冒险B、C、D变化功能冒险00011110000111100101111010101100CDAB1000→1101不存在冒险功能冒险是函数的逻辑功能决定的,不能在设计中消除。功能冒险的消除方法方法一:加选通脉冲,此法也适用于逻辑冒险。加选通脉冲出现时间与输入信号变化的时间错开,就可以抑制任何冒险脉冲的输出。加选通脉冲后,输出由电位信号变成了脉冲信号,有脉冲输出时表示电路在这一拍输出为1。F选通脉冲CPCPFF='ABC毛刺毛刺100111功能冒险的消除方法选通脉冲加入的位置和极性的确定:与非门实现函数F=AB+CD正极性脉冲加在第二级功能冒险的消除方法或非门实现函数F=(A+B)(C+D)负极性脉冲加在第一级功能冒险的消除方法与或非门实现函数负极性脉冲加在一个与门上CDABF+=ABCDCP&1F功能冒险的消除方法方法二:在对输出波形边沿要求不高的情况下,可以在输出端接一个几十到几百皮法的滤波电容CL,滤除毛刺。在输出端加小电容可以消除毛刺。但是输出波形的前后沿将变坏,只适用于低速电路,在对波形要求较严格时,应再加整形电路。3.4.2消除竞争 冒险的方法加冗余项:只能消除逻辑冒险,而不能消除功能冒险,适用范围有限。加取样脉冲:对逻辑冒险及功能冒险都有效。目前大多数中规模集成模块都设有使能端,可以将取样信号作用于该端,待电路稳定后才使输出有效。加滤波电容:使输出信号变坏,引起波形的上升、下降时间变长,不宜在中间级使用。动态冒险在输入变化前后电路的输出不同,而在输入信号变化瞬间,输出不是变化一次而是变化三次或更高的奇数次,这种瞬间错误称为动态冒险。既有静态冒险,也有动态冒险。实际中,由于逻辑门延迟时间的惯性,动态冒险很少发生。存在动态冒险的电路也存在静态冒险。消除了静态冒险,动态冒险也自然消除。