12.1 本节导论
在组合逻辑电路的分析与设计中,我们通常基于逻辑代数的理想模型,认为信号的变化是瞬时完成的。然而,在真实的物理电路中,信号通过门电路时存在固有的传输延迟。当输入信号发生变化,且变化路径存在多条时,这些延迟的差异可能导致电路在瞬态过程中产生非预期的、短暂的错误输出,这种现象称为竞争-冒险(Race Hazard)。
竞争-冒险是数字电路,特别是高速电路中一个至关重要且必须面对的现实问题。它可能导致后续时序电路(如触发器)误触发,造成系统功能错误。本节将系统阐述竞争-冒险现象的本质、成因、判断方法以及消除措施,为设计稳定可靠的数字系统奠定基础。
12.2 竞争‑冒险现象及其成因
12.2.1 竞争
在组合逻辑电路中,如果某一个输入变量通过两条或两条以上的路径到达输出端,由于每条路径上的门电路延迟时间不同,导致该变量变化到达输出端的时间有先有后,这种现象称为竞争。
- 本质:
是信号传输路径延迟差异导致的“赛跑”现象 - 普遍性:只要
存在信号多路径传输或多信号同时跳变,就会存在竞争,是组合逻辑电路的固有现象;
12.2.2 冒险
在组合逻辑电路中,由于输入信号存在传输延迟(导致竞争现象),当输入信号发生电平跳变时,电路输出端出现了不符合正常逻辑关系的短暂尖峰脉冲(毛刺),且该尖峰脉冲并非电路正常逻辑功能所需,这种现象称为冒险(Hazard)
- 本质:是竞争
可能引发的一种不良后果。 - 非必然性:
有竞争不一定有冒险,只有当竞争导致逻辑门输入端暂时不满足预设逻辑关系时,才会产生冒险; - 外在表现:输出端的
尖峰脉冲(宽度通常为 ns 级,由器件延迟决定),可能导致后续时序电路(触发器、计数器等)误动作; - 核心限定:毛刺必须是 “
错误的”(违背正常逻辑输出),若竞争仅导致输出波形延迟,未偏离逻辑结果,则不属于冒险
12.2.3 竞争 - 冒险
竞争 - 冒险是指:组合逻辑电路中,由信号传输延迟引发的竞争现象,在输入信号电平跳变时,导致输出端出现不符合正常逻辑关系的短暂尖峰脉冲(毛刺)的现象
- 竞争≠冒险(前者是前提,后者是特殊结果),尖峰脉冲≠冒险(仅
错误的尖峰脉冲才对应冒险)- 有竞争不一定产生冒险:如果竞争的结果没有导致输出产生毛刺,则竞争是无害的
- 冒险必然由竞争引起:冒险是竞争的一种有害表现形式
可以类比为:竞争是“因”,冒险是“果”。设计者的目标是
消除或抑制由竞争引起的冒险
12.2.2 冒险产生的根本原因
1. 核心根源:传输延迟的存在
- 数字逻辑器件(TTL/CMOS 门电路)存在固有传输延迟(几 ns~ 几十 ns),电路连线的分布电容、分布电感也会带来传输延迟,这是信号传输时间差的本质来源。
2. 直接诱因:输入信号的电平跳变
- 竞争始终存在,但只有当输入信号发生 0→1 或 1→0 的跳变时,竞争的影响才会凸显,进而可能导致输出逻辑暂时失效,产生毛刺。
3. 逻辑条件:电路逻辑结构存在 “隐患”
- 如逻辑表达式中
存在同一变量的原码与反码(X 与X‾\overline{X}X),或卡诺图中存在 “相邻最小项分属不同圈组且无公共圈覆盖”,这些逻辑结构为冒险的产生提供了条件
12.2.3 冒险分类
冒险可以从输出毛刺的极性和产生原因两个维度进行分类。
一、按输出毛刺极性分类
偏1冒险(Static-1 Hazard)
- 定义:电路正常逻辑输出应为 1,但因竞争,输出端短暂出现0 电平尖峰脉冲,随后快速恢复为 1 电平;
- 产生条件:当输入变量变化,导致输出函数的两个本应覆盖变化的“1”项之间出现瞬间的覆盖缺口。
- 电路表现:常见于“与或”结构中。
偏0冒险(Static-0 Hazard)
- 定义:电路正常逻辑输出应为 0,但因竞争,输出端短暂出现 1 电平尖峰脉冲,随后快速恢复为 0 电平;
- 产生条件:当输入变量变化,导致输出函数的两个本应覆盖变化的“0”项(在或与表达式中)之间出现瞬间的覆盖缺口。
- 电路表现:常见于“或与”结构中。
二、按产生原因分类
1. 逻辑冒险(又称静态冒险)
- 当多个输入信号中某一个发生变化时,由于此信号在电路中经过的途径不同,使得到达电路某个门的多个输入信号之间产生时间差引起的竞争。
逻辑冒险的产生与电路的逻辑结构直接相关,与输入信号的跳变方式无关。
输入特性:仅由单个输入变量的跳变引发(多变量同时跳变不是逻辑冒险的诱因)
逻辑特性:冒险的存在由电路逻辑结构决定,只要逻辑结构不变,无论其他变量取何固定值,满足条件时必然存在冒险;
输出特性:电路的正常逻辑输出应为固定电平(0 或 1),冒险表现为短暂的反向毛刺(即偏 1 冒险、偏 0 冒险),毛刺消失后输出恢复原固定电平(“静态” 即指输出的稳态值固定)
可消除性:通过优化逻辑结构(如增加冗余项),可以从根本上消除逻辑冒险。
具体来说:电路的最简逻辑表达式中存在 “同一变量的原码与反码(X与X‾\overline{X}X)分属不同与项 / 或项”,或卡诺图中存在 “相邻最小项分属不同圈组且无公共圈覆盖” 的逻辑隐患,当单个输入变量发生电平跳变时,就会因信号传输延迟(单信号多路径竞争)引发冒险,这是逻辑冒险的本质根源
2. 功能冒险(又称动态冒险)
- 当逻辑电路的多个输入变量同时变化时,由于这几个变量变化的快慢不同,传递到某个门的输入端存在时间差而引起的竞争。
功能冒险的产生与电路的逻辑结构无关,仅与多个输入信号的同时跳变方式相关。
输入特性:仅由两个及以上输入变量的同时跳变引发(单个变量跳变不会产生功能冒险);
逻辑特性:与电路逻辑结构无关,即使电路逻辑结构无隐患(无逻辑冒险),只要多变量跳变顺序不符合理想同步,就可能产生功能冒险;
输出特性:电路的正常逻辑输出应为 “从一个电平跳变到另一个电平”(动态变化),冒险表现为输出在稳态跳变过程中出现 1 次及以上的多余毛刺(如正常应从 0→1,实际出现 0→1→0→1 的波动),毛刺消失后输出达到最终稳态电平(“动态” 即指输出本身处于稳态跳变过程);
不可消除性:由于实际电路中无法做到多个输入信号绝对同步跳变(必然存在传输延迟差异),功能冒险无法通过优化逻辑结构消除,仅能通过抑制措施(如滤波电容、选通脉冲、禁止脉冲)削弱其影响
具体来说:当两个及以上输入变量同时发生电平跳变时,由于各变量的传输延迟不同(多信号同步跳变竞争),导致输入信号的跳变顺序出现 “错乱”(实际是异步跳变),使得电路输出在 “从一个稳态电平跳变到另一个稳态电平” 的过程中,出现短暂的多余毛刺,这是功能冒险的本质根源
12.3 竞争‑冒险的判断方法
12.3.1 代数法
代数法是通过分析逻辑函数表达式来判断是否存在逻辑冒险的经典方法。
- 核心思路:通过分析逻辑表达式结构,判断是否存在产生冒险的逻辑条件,步骤如下:
- 写出电路的最简与或表达式;
- 观察是否存在
同一变量的原码与反码**(X 与 $\overline{X}$),**且分属不同与项; - 固定其他所有变量的取值,使包含 X 与X‾\overline{X}X的与项均为 1(偏 1 冒险)或均为 0(偏 0 冒险);
- 若此时表达式可简化为Y=X+X‾Y=X+\overline{X}Y=X+X(偏 1 冒险条件)或Y=X⋅X‾Y=X\cdot\overline{X}Y=X⋅X(偏 0 冒险条件),则电路存在对应冒险。
- 示例:判断Y=A⋅B+A‾⋅CY=A\cdot B+\overline{A}\cdot CY=A⋅B+A⋅C是否存在冒险:
- 表达式中存在变量A与A‾A与\overline{A}A与A,分属两个与项;
- 固定 B=1、C=1,表达式简化为Y=A+A‾Y=A+\overline{A}Y=A+A,满足偏 1 冒险条件;
- 结论:当 B=1、C=1 且 A 发生跳变时,电路存在偏 1 冒险。
12.3.2 卡诺图法
卡诺图法是一种直观的图形化方法,用于判断和消除逻辑冒险。它通过观察卡诺图中相邻但不相交的“1”圈(对于与或式)或“0”圈(对于或与式)来识别冒险
- 核心思路:通过卡诺图圈组分布,直观判断是否存在 “逻辑隐患”,步骤如下:
- 根据逻辑表达式绘制卡诺图,按最简与或式完成圈组(每个圈对应一个与项);
- 观察卡诺图中是否存在相邻最小项(仅一位变量不同)分属不同圈组,且无公共圈覆盖(即 “
相邻不共圈”)【卡诺圈相切】; - 若存在上述情况,说明电路存在冒险(相邻最小项对应输入信号跳变,不同圈组对应不同传输路径,无公共圈则引发冒险)。
- 示例:判断Y=A⋅B+A‾⋅CY=A\cdot B+\overline{A}\cdot CY=A⋅B+A⋅C是否存在冒险:
- 绘制真值表【分析输出为 1 的输入组合绘制真值表】
- 列出最小项表达式【分析输出为 1 的输入组合写最小项表达式】:Y=m1+m3+m6+m7Y=m_1+m_3+m_6+m_7Y=m1+m3+m6+m7
- 绘制卡诺图【分析输出为 1 的输入组合绘制卡诺图】
- 分析画圈结果:观察到最小项m3与m7m_3与m_7m3与m7相邻,分属不同圈组且无公共圈;
- 结论:电路存在偏 1 冒险
- 绘制真值表【分析输出为 1 的输入组合绘制真值表】
12.3.3 计算机仿真、实验检测
对于复杂电路,理论分析可能不够直观或繁琐,此时可以借助计算机仿真和实际实验进行检测。
1. 计算机仿真(EDA 工具)
使用电子设计自动化(EDA)软件(如 ModelSim、Multisim、LTspice、Logisim 等)进行仿真,是检测竞争-冒险最有效的方法之一。
- 步骤:
- 绘制电路图或编写硬件描述语言(HDL)代码。
- 为输入信号设置测试向量(Test Vectors),特别是让可能引起冒险的变量发生跳变。
- 运行瞬态分析(Transient Analysis),观察输出波形。
- 优势:可以精确模拟门延迟参数,可视化毛刺,并能处理大规模电路。
2. 实验检测(示波器观察)
在物理电路板上,可以通过示波器直接观察输出信号是否存在毛刺。
- 方法:
- 构建待测电路。
- 使用信号发生器产生输入信号,有意识地让可能产生冒险的输入组合发生跳变。
- 用示波器探头连接电路输出端,将示波器触发模式设置为“边沿触发”并适当调整时基,捕捉可能出现的短暂毛刺。
- 挑战:毛刺可能非常窄(纳秒级),需要高带宽示波器才能可靠捕获。
总结:理论分析(代数法、卡诺图法)用于理解和设计阶段的预防,而仿真和实验则是验证设计、发现实际问题的必要手段。
即使是用计算机辅助分析手段检查过的电路,往往也还需要经过实验的方法检验,方能最后确定电路是否存在竞争-冒险现象。因为在用计算机软件模拟数字电路时,只能采用标准化的典型参数,有时还要做一些近似,所以得到的模拟结果有时和实际电路的工作状态会有出入。因此可以认为,只有实验检查的结果才是最终的结论
12.4 冒险的消除与抑制措施
识别出冒险后,需要采取措施来消除或抑制其影响,确保电路稳定工作。主要方法如下:
1. 增加冗余项(逻辑冒险)
- 原理:在最简逻辑表达式中增加多余的与项(冗余项),不改变电路正常逻辑功能,仅用于覆盖卡诺图中 “相邻不共圈” 的最小项,消除竞争隐患;
- 特点:操作简单,稳定性高,优先选用,适用于可预先分析的电路。
- 优点:从根本上消除由逻辑化简引起的冒险。
- 缺点:增加了电路复杂度(多用门电路)
- 示例:针对Y=A⋅B+A‾⋅CY=A\cdot B+\overline{A}\cdot CY=A⋅B+A⋅C,增加冗余项B⋅CB \cdot CB⋅C,表达式变为:Y=A⋅B+A‾⋅C+B⋅CY=A\cdot B+\overline{A}\cdot C+ B \cdot CY=A⋅B+A⋅C+B⋅C,当 B=1、C=1 时,Y=A+A‾+1=1Y=A+\overline{A}+1=1Y=A+A+1=1,无毛刺产生,成功消除偏 1 冒险
2. 引入选通脉冲(时序控制,适用于同步数字系统)
- 原理:在电路输出端增加选通控制端,引入同步选通脉冲(使能脉冲),仅当选通脉冲有效时,电路输出逻辑结果;在输入信号跳变、毛刺产生的时间段内,选通脉冲无效,电路输出处于高阻态或固定电平,避免毛刺传输到后续电路;
- 特点:消除冒险效果好,不影响电路传输速度,但需要额外的同步信号,适用于单片机、FPGA 等同步数字系统。
- 优点:简单有效,适用于周期性工作的系统。
- 缺点:引入了时序控制,输出不再是组合逻辑的即时响应。
3. 接入滤波电容(硬件抑制,简易便捷)
- 原理:冒险的毛刺是高频短暂脉冲,在电路输出端并联一个小容量滤波电容(几十 pF~ 几百 pF,如 100pF),利用电容充放电特性滤除高频毛刺,使输出波形平滑
- 特点:无需修改逻辑电路,操作简单,但会使输出波形的上升沿 / 下降沿变缓,降低电路传输速度,适用于对速度要求不高的场景。
- 优点:硬件实现简单,成本低。
- 缺点:会降低电路的工作速度(增加RC延迟),且对宽毛刺效果有限。
4. 使用可靠性编码
- 原理:对于功能冒险(多变量同时变化),通过改变输入编码方式(如采用格雷码),确保每次状态变化时只有一位改变,从而避免多变量竞争。
- 应用:常用于计数器、状态机等电路的输出作为下一级组合逻辑的输入时。
5. 采用同步时序电路
- 根本性策略:在组合逻辑的输出端接入边沿触发的触发器(D触发器),仅在时钟有效沿采样输出。只要毛刺不出现在时钟沿附近,就不会被捕获。
- 优点:是现代数字系统消除冒险影响最主流、最可靠的方法。
- 注意:需满足触发器的建立时间和保持时间要求。
6. 修改电路结构(根本解决,适用于高稳定性需求场景)
- 原理:通过重新设计电路,使同一输入信号的所有传输路径延迟尽可能一致(
从根源消除竞争);或采用译码器、数据选择器等专用集成电路替代分立门电路,减少竞争可能性; - 特点:从根本上消除冒险,稳定性极高,但电路设计复杂度增加,适用于对可靠性要求严苛的核心电路
选择哪种措施需根据电路速度、成本、复杂度等要求进行权衡。
12.5 本节小结
本节系统阐述了组合逻辑电路中的竞争-冒险现象。竞争源于信号多路径传输的延迟差异,而冒险则是竞争可能引发的有害结果——输出端出现短暂的错误毛刺。冒险按极性可分为偏1冒险与偏0冒险,按成因可分为逻辑冒险(单变量变化引起,可消除)和功能冒险(多变量变化引起,难消除)。
判断冒险可采用代数法(分析表达式结构)和卡诺图法(观察圈组相切),复杂电路则需借助计算机仿真与实验检测进行验证。
消除与抑制冒险的主要措施包括:增加冗余项(消除逻辑冒险)、引入选通脉冲、接入滤波电容、使用可靠性编码(如格雷码)以及采用同步时序电路(最根本有效)。设计者需根据速度、成本与复杂度要求,选择合适的方法以确保电路稳定可靠。