经典案例

数字电子竞争冒险

2025-12-17

我们来详细、系统地解释一下它是什么、为什么会产生、以及如何消除。

1. 什么是竞争与冒险?

竞争

在一个组合逻辑电路中,如果某一个输入变量通过两条或两条以上的路径传播到输出端,由于每条路径的门电路延时不同,导致这个变量变化到达输出端的时间有先有后,这种现象就称为 “竞争”

核心要点:

* 对象: 同一个输入变量的不同传输路径。

* 原因: 逻辑门固有的传输延迟时间(t~pd~)。

* 普遍性: 只要有多条路径,竞争就客观存在。

冒险

由于竞争的存在,在输入信号变化的瞬间,在输出端产生一个不应有的、持续时间很短的错误尖峰脉冲(或称“毛刺”)的现象,就称为 “冒险”

数字电子竞争冒险

核心要点:

* 表现: 一个短暂的、非预期的输出脉冲(正尖峰或负尖峰)。

* 关系:有竞争不一定有冒险,但有冒险就一定存在竞争。

可以把它们的关系理解为:

* 竞争原因可能性

* 冒险结果现象

2. 为什么会产生冒险?—— 根本原因分析

冒险产生的根本原因是 信号通过不同路径的延迟不同,导致在某个短暂的时刻,电路的输出状态出现了暂时的逻辑错误。

我们用一个最简单的例子来说明:

电路: 一个两输入与门 `Y = A & B`

假设: 输入 `B = A'`(即 B 是 A 的反相)。那么理论上,`Y = A & A‘ = 0`,输出应恒为0。

实际情况(考虑非门延迟):

1. 初始状态:`A=1` -> `A'=0` -> `Y = 1 & 0 = 0`

2. `A` 从 `1` 变为 `0`:

* 路径1(直接):`A` 直接连接到与门,几乎无延迟地变为 `0`。

* 路径2(经反相器):`A` 变为 `0`,但需要经过反相器的一个延迟时间 t~pd~ 后,`A'` 才从 `0` 变为 `1`。

3. 在反相器延迟的这个短暂时间内:

* `A` 已经变成了 `0`

* `A'` 还未来得及变化,仍然是 `0`

* `Y = 0 & 0 = 0`,没有异常。

* 看起来没问题?那我们再看另一个变化。

4. `A` 从 `0` 变为 `1`:

* 路径1(直接):`A` 直接变为 `1`。

* 路径2(经反相器):`A` 变为 `1`,但 `A'` 需要经过 t~pd~ 后才从 `1` 变为 `0`。

5. 在这个短暂的 t~pd~ 时间内:

* `A` 已经变成了 `1`

* `A'` 还未来得及变化,仍然是 `1`

* `Y = 1 & 1 = 1`

* 当 t~pd~ 时间过后,`A'` 变为 `0`,`Y` 恢复为 `0`。

结果: 在输出端 Y 产生了一个宽度约为 t~pd~ 的正向尖峰脉冲(即 “1” 的毛刺),而理论上 Y 应该始终为 0。这就是一次 冒险

*(这是一个简化的波形图示意,展示了在A上升沿时,由于反相器延迟,输出Y产生了一个正向毛刺)*

3. 冒险的分类

根据产生的毛刺极性,冒险可以分为两类:

1. “1”型冒险

* 表现: 输出端产生了不应有的正向尖峰脉冲。

* 产生条件: 在稳态下,输出应为 `0`,但由于竞争,在输入变化瞬间,输出暂时跳变到 `1`。

* 常见于: 与或结构的电路(例如,上面 `Y=A&A’` 的例子,本质是与结构)。

2. “0”型冒险

* 表现: 输出端产生了不应有的负向尖峰脉冲。

* 产生条件: 在稳态下,输出应为 `1`,但由于竞争,在输入变化瞬间,输出暂时跳变到 `0`。

* 常见于: 或与结构的电路(例如,`Y = A + A‘`,理论上恒为1,但在A变化时可能产生负毛刺)。

4. 如何判断和消除冒险?

**判断方法
  • 代数法**
  • 检查逻辑函数表达式,是否存在某个变量以原变量和反变量形式同时出现,并且在一定条件下表达式可以化简为 `X + X‘` 或 `X · X’` 的形式。

    z6com·尊龙(中国)时凯集团

    * 若可化为 `Y = ... + X · X‘ + ...`,则可能产生 “0”型冒险(因为 `X · X’` 在稳态时为0,但竞争可能导致其暂时为1,从而让 `Y` 暂时为1)。

    * 若可化为 `Y = ... (X + X’) ...`,则可能产生 “1”型冒险(因为 `X + X‘` 在稳态时为1,但竞争可能导致其暂时为0,从而让 `Y` 暂时为0)。

    示例: `Y = A B + A’ C`

    * 当 `B = C = 1` 时,`Y = A + A‘`。

    * 表达式化简为了 `A + A’`,所以该电路在 `B=C=1` 时,变量 A 发生变化可能产生 “0”型冒险(负毛刺)。

    消除方法

    1. 增加选通脉冲

    * 在电路达到稳定之前,用一个选通信号将输出门封锁,待输入变化完成、电路进入新的稳定状态后,再让选通信号有效,读取正确的输出。

    * 这是一种时序控制方法。

    2. 增加输出滤波电容

    * 在输出端并联一个小电容(通常几十到几百皮法)。

    * 原理: 毛刺是一个高频分量,电容可以吸收这些高频尖峰,将其滤除,使输出边沿变得平缓。

    * 优点: 简单、成本低。

    * 缺点: 增加了输出波形的上升/下降时间,降低了速度。

    3. 修改逻辑设计(增加冗余项)

    * 这是最常用和最理想的方法。

    * 原理: 在逻辑在逻辑表达式中增加额外的冗余项,以消除产生冒险的条件。

    * 方法: 使用卡诺图,将原本不相切的两个卡诺圈,用一个额外的圈连接起来。

    示例: 消除 `Y = A B + A’ C` 的冒险。

    * 画出卡诺图,有两个主蕴含项 `AB` 和 `A‘C`,它们之间是相切的。

    * 增加一个冗余项 `B C`,将这两个圈连接起来。

    * 新的逻辑函数为 `Y = A B + A’ C + B C`。

    * 验证: 当 `B=C=1` 时,无论 A 如何变化,由于冗余项 `BC` 始终为1,输出 Y 恒为1,成功消除了冒险。

    | 方面 |方面 | 关键内容 |

    | :--

  • | :--
  • |
  • | 核心概念 | 竞争:同一信号多路径传播导致的延时差异。
    冒险:因竞争而产生的输出毛刺。 |

    | 根本原因 | 逻辑门的传输延迟。 |

    | 主要类型 | “1”型冒险:产生正向毛刺。
    “0”型冒险:产生负向毛刺。 |

    | 判断方法 | 检查逻辑式是否能化为 `X + X‘`(“0”型冒险)或 `X · X’`(“1”型冒险)的形式。 |

    | 消除方法 | 1. 修改逻辑(最佳):增加冗余项。
    2. 硬件滤波:输出端并联电容。
    3. 时序控制:引入选通脉冲。 |

    理解竞争与冒险对于设计可靠、稳定的数字系统至关重要,尤其是在对时序要求严格的场合(如时钟电路、计数器、状态机等),必须采取措施消除其影响。