1 引言
数字电路的基本门电路有与门、或门、非门,它们是构成各种复杂组合逻辑电路的基本逻辑单元。其逻辑功能为:与门“有0出0,全1出1”,或门“有1出1,全0出0”,非门“0非为1,1非为0”。他们的逻辑功能,只有在输入和输出状态稳定时才存在。在没有考虑信号通过导线和逻辑门的传输延迟时间的理想情况下,门电路的输入与输出为稳定状态。实际上,由于信号在传输过程中改变状态都要经历一段极短的过渡时间,或者信号传输路径不同而使信号到达输出端有先有后,从而在数字电路中,任何一个门电路只要有两个输入信号同时向相反方向变化,其输出端就可能产生干扰脉冲,这种现象称为竞争~冒险。可见,门电路存在延迟时间是组合逻辑电路产生竞争冒险现象的根本原因。它通常发生在输入状态变换之际,是一种边缘的错误输出。当负载电路对尖峰脉冲敏感时,这种现象使得负载电路将发生误动作,这对各种电子产品和电子系统的后果是很严重的,竞争冒险现象直接影响电路工作的稳定性、可靠性,甚至会导致整个数字系统的误动作和逻辑紊乱。因此,在设计时就必须采取各种措施加以消除和避免。如何解决竞争冒险问题就成为数字电路设计中的关键环节。
在组合逻辑电路中,如果由于竞争冒险而产生干扰脉冲,势必会对敏感负载产生不良影响,甚至导致误操作。如干扰脉冲可以使寄存器产生误操作,丢失储存的数据,还可以使计数器产生错误计数等。
2 竞争冒险分类
根据冒险的情形可分为静态冒险和动态冒险。
(1)静态冒险。如果一个组合电路输入有变化时,输出不应发生变化的情况下,出现一次瞬间的错误变化就叫做静态冒险。“1”冒险(偏“0”冒险)是由一个变量的原变量和反变量同时加到与门输入端造成的。“0”冒险(偏“1”冒险)是由一个变量的原变量和反变量同时加到一个或门输入端造成的。
(2)动态冒险。动态冒险是指当输入有变化时,输出应有变化,但输出在变化的过程中出现短暂的错误。
3 竞争冒险产生的原因
(1)门电路的传输延迟时间有差异。在门电路中,信号从一个电平向相反方向跳变时,并不是突变的。由于上升(或下降)时间的存在,可能产生竞争冒险。在TTL系列的集成电路中,一般门电路的延迟时间在15ns左右;在4000系列集成电路中,一般门电路的延迟时间为100ns左右;
(2)输入信号经过的传输路径或门不同,造成到达输出级的时间有先有后,使同一个输入信号的变化通过多条途径传输,并再次在某个门电路汇合(收敛)时,变化先后导致输出产生的额外“毛刺”。
4 竞争冒险的判断
在组合逻辑电路中,如果竞争冒险是由单个输入变量改变状态引起的,可以很容易地用代数法和卡诺图法来确定。
4.1 代数法
代数法是通过函数表达式的结构来判断是否具有产生竞争冒险的条件。其具体方法是:
(1)检查函数表达式中是否存在具备竞争条件的变量,即是否有某个变量X同时以原变量和反变量的形式出现在函数表达式中。
(2)若有,则消去函数表达式中的其他变量,即将这些变量的各种取值组合依次代入函数式中,从而将它们从函数表达式中消去,只留下被研究的变量X。
(3)若表达式在一定条件下能简化成:X+X或X·X的形式,则电路可能产生竞争冒险。否则,不产生竞争冒险。
单输入变量的较大规模电路,最直观的方法就是逐级列出电路的真值表,并找出哪些门的输入信号会发生竞争。然后判断是否会在电路的输出端产生干扰脉冲。这种方法虽然简单,但局限性太大,因为多数情况下都有两个以上输入变量同时改变状态的可能性。如果输入变量的数目很多,而且电路系统也很复杂,就更难从逻辑函数式上简单地找出所有产生竞争冒险现象的情况。
4.2 卡诺图法
卡诺图法是判断电路是否存在竞争冒险的另一种方法,具体方法是:
(1)首先做出函数卡诺图,并画出与函数表达式中各“与”项对应的卡诺图。
(2)检查有无几何相邻的乘积项,若没有,则无竞争冒险,反之则有。
这种方法适合输入变量为多变量的情况。
4.3 仿真模拟法
用计算机辅助分析(CAA)的手段来分析组合逻辑电路,通过在计算机上运行数字电路的模拟程序,能够迅速地判断出电路是否会出现竞争冒险现象而输出尖峰脉冲。
4.4 实验法
用实验来检查电路的输出端是否有因为竞争冒险现象而产生的尖峰脉冲。这时加在输入端的信号波形应包含输入变量的所有可能发生的状态变化。
以上几种方法虽然提供了检查各种电路竞争冒险的途径,但即使用计算机辅助分析手段检查过的电路,往往也还需要经过实验的方法检验,才能最终确定电路是否存在竞争冒险现象。因为在用计算机软件模拟数字电路时,只能采用标准化的典型参数,有时还要做一些近似,所以,得到的模拟结果有时和实际电路的工作状态会有差异。因此,只有实验法才是最准确的方法。
5 竞争冒险的消除
在有竞争冒险存在的情况下,而负载又是对脉冲敏感的电路,那么就应设法消除。消除竞争冒险常用方法有:增加冗余项、接入滤波电容和引入封锁脉冲或选通脉冲等。
5.1 增加冗余项消除竞争冒险
增加冗余项的方法是通过在函数表达式中“加”上多余的“与”项或“乘”上多余的“或”项,使原函数不可能在某种条件下化成X+X或X·X的形式,从而消除可能产生的竞争冒险,冗余项的选择可用代数法或卡诺图法。
用增加冗余项的方法修改逻辑设计,可以消除一些竞争冒险现象。但是,这种方法的适用范围是有限的。增加冗余项,需增加额外电路,但增加了电路可靠性,如果运用得当,可以收到最理想的效果。
5.2 输出端并联电容器消除竞争冒险
竞争冒险所产生的干扰脉冲一般很窄。逻辑电路在较慢速度下工作时,可以在输出端并接一个不大的滤波电容。并用门电路的输出电阻和电容器构成低通滤波电路,对很窄的尖峰脉冲(其频率很高)起到了平波的作用。这时在输出端便不会出现逻辑错误。
接人滤波电容的方法简单易行,但输出电压波形随之变化,故只适用于对输出波形前后沿无严格要求的场合。
5.3 引入封锁脉冲消除竞争冒险
封锁脉冲是在输入信号发生竞争的时间内,引入一个脉冲将可能产生尖峰干扰脉冲的门封锁住,从而消除竞争冒险。封锁脉冲应在输入信号转换前到来,转换结束后消失。
5.4 加选通脉冲消除竞争冒险
选通脉冲是当电路输出端达到新的稳定状态之后,引人选通脉冲,从而使输出信号是正确的逻辑信号而不包含干扰脉冲。
引入封锁脉冲或者选通脉冲的方法比较简单,而且不增加器件数目。但这种方法有一个局限性,就是必须找到一个合适的封锁脉冲或选通脉冲。
5.5 用格雷码替代二进制代码消除竞争冒险,确保每一时刻只有一个代码变化
5.6 其它消除方法
可在电路输入端加入所有可能发生的状态变化的波形,观察输出端是否有尖峰脉冲。亦可通过在计算机上运行数字电路的模拟程序,迅速查出电路是否由于竞争冒险而输出尖峰脉冲。
这些方法对消除组合逻辑电路的竞争冒险现象是行之有效的。实际工作中可以根据不同情况选择合理的方法,可以取得满意的效果。
6 结语
文章简要叙述了组合逻辑电路的竞争冒险现象,竞争冒险的分类、产生的原因、判断及消除方法。