Altifigence Academy

45 / 63 · 概念

逻辑冒险与等价表达式的局限

分析稳态等价的两个电路,如何因传播延迟而产生不同的瞬态波形。

真值表不包含时间

在下式中固定 B=C=1,无论 A 为 0 还是 1,F 都为 1。

F=AB+A‾CF=AB+\overline A C

但实际逻辑门的输出不会与输入同时变化。A 从 1 变为 0 时,若 AB 路径先降为 0,经过反相器取反 将 0 变为 1、1 变为 0 的 NOT 运算。表达式上方的横线表示对其覆盖的整个表达式应用 NOT。了解更多的 A‾C\overline A C 路径稍后才升为 1,就可能出现两项同时为 0 的区间。本应保持 1 的输出短暂出现 0,称为静态 1 冒险(static-1 hazard)。

用数值比较延迟

假设到 OR 输入端的路径延迟如下。这些数值仅用于说明原理,并不是特定工艺的数据。

事件A 转换后的时刻
AB 降为 02ns
A‾C\overline A C 升为 14ns

OR 输入处大约有 2ns 的时间两项都为 0。实际输出脉冲的宽度以及是否出现,还受 OR 门延迟和短脉冲传递特性影响。仅确认真值表真值表 完整列出所有可能输入组合及每种组合输出的表格。随时间的变化需要另行通过波形检查。了解更多八种组合正确,无法验证这种瞬态现象。

每格表示 A 改变后的 1ns。假设 AB 在 2ns 变化,NOT(A)C 在 4ns 变化。最后两行是忽略 OR 自身延迟的输入组合结果,并非实际器件测得的波形。检查 BC=1 路径是否覆盖了两项之间的空隙。

路径延迟差形成的空隙
查看波形数据
波形数据:每个字符表示一个区间,点表示保持前一状态,p 表示一个时钟周期。
信号波形总线值
time(ns)2345230 → 1 → 2 → 3 → 4 → 5
AB1.0...
NOT(A)C0...1.
OR inputs1.0.1.
with BC1.....

冗余项也可以起到时间上的作用

加入 BC 项,使 B=C=1 时无论 A 如何都能支撑输出。

Fcovered=AB+A‾C+BCF_{\mathrm{covered}}=AB+\overline A C+BC

根据布尔代数布尔代数 处理 0、1 及 AND、OR、NOT 的代数。这里的加号通常表示 OR,因此规则与整数加法不同。了解更多的共识定理,稳定输入下功能相同。但 BC 在 A 转换期间仍保持 1,因此覆盖了上述单输入转换产生的空隙。在卡诺图中,这相当于用一个共同分组覆盖相邻的两个 1。

这一讨论适用于单输入转换、两级 SOP 实现等假设,并不意味着同时解决了多个输入同时变化、多级逻辑动态冒险及模拟噪声等所有问题。

RTL 中写了该项,不代表实现会保留它

综合器知道 BC 在功能上冗余,可能将其删除。因此,不能仅凭源码加入冗余项就断定实际实现没有冒险。应选择符合要求的结构,并检查实现后的路径与时序。

同步数据通路的基本做法,是满足 setupsetup 捕获时钟边沿之前,输入数据必须保持稳定的最短时间。违反建立时间就无法保证存储结果。了解更多、hold 条件保持时间 捕获时钟边沿之后,输入数据仍必须保持稳定的最短时间。需结合上下文,将此时序要求与普通的数值保持行为区分。了解更多,使寄存器寄存器 存储多位状态的电路。本课程中的同步寄存器在时钟边沿存储指定输入。了解更多在输出充分稳定后采样。若直接将组合输出毛刺用作时钟、异步复位或外部设备触发,问题可能更严重。设计时应同时考虑信号用途与接收方式。

自己试试

在 H=A‾B+ACH=\overline A B+AC 中,B=C=1,A 从 0 变为 1。可加入哪个共识项来覆盖静态 1 冒险?加入后,稳态真值表会改变吗?

阅读解释

应加入 BC 项。A‾B+AC+BC\overline A B+AC+BC 与原式功能等价,但 BC 能覆盖转换期间两条路径都为 0 的区间。这里假定只改变一个输入;实际门结构是否保留了该项,还需单独确认。

你的选择适用于此浏览器,可随时在页脚更改。