45 / 63 · 概念
逻辑冒险与等价表达式的局限
分析稳态等价的两个电路,如何因传播延迟而产生不同的瞬态波形。
课时内容可免费阅读,选课后可保存学习进度。
真值表不包含时间
在下式中固定 B=C=1,无论 A 为 0 还是 1,F 都为 1。
但实际逻辑门的输出不会与输入同时变化。A 从 1 变为 0 时,若 AB 路径先降为 0,经过反相器取反 将 0 变为 1、1 变为 0 的 NOT 运算。表达式上方的横线表示对其覆盖的整个表达式应用 NOT。了解更多的 路径稍后才升为 1,就可能出现两项同时为 0 的区间。本应保持 1 的输出短暂出现 0,称为静态 1 冒险(static-1 hazard)。
用数值比较延迟
假设到 OR 输入端的路径延迟如下。这些数值仅用于说明原理,并不是特定工艺的数据。
| 事件 | A 转换后的时刻 |
|---|---|
| AB 降为 0 | 2ns |
| 升为 1 | 4ns |
OR 输入处大约有 2ns 的时间两项都为 0。实际输出脉冲的宽度以及是否出现,还受 OR 门延迟和短脉冲传递特性影响。仅确认真值表真值表 完整列出所有可能输入组合及每种组合输出的表格。随时间的变化需要另行通过波形检查。了解更多八种组合正确,无法验证这种瞬态现象。
每格表示 A 改变后的 1ns。假设 AB 在 2ns 变化,NOT(A)C 在 4ns 变化。最后两行是忽略 OR 自身延迟的输入组合结果,并非实际器件测得的波形。检查 BC=1 路径是否覆盖了两项之间的空隙。
查看波形数据
| 信号 | 波形 | 总线值 |
|---|---|---|
| time(ns) | 234523 | 0 → 1 → 2 → 3 → 4 → 5 |
| AB | 1.0... | |
| NOT(A)C | 0...1. | |
| OR inputs | 1.0.1. | |
| with BC | 1..... |
冗余项也可以起到时间上的作用
加入 BC 项,使 B=C=1 时无论 A 如何都能支撑输出。
根据布尔代数布尔代数 处理 0、1 及 AND、OR、NOT 的代数。这里的加号通常表示 OR,因此规则与整数加法不同。了解更多的共识定理,稳定输入下功能相同。但 BC 在 A 转换期间仍保持 1,因此覆盖了上述单输入转换产生的空隙。在卡诺图中,这相当于用一个共同分组覆盖相邻的两个 1。
这一讨论适用于单输入转换、两级 SOP 实现等假设,并不意味着同时解决了多个输入同时变化、多级逻辑动态冒险及模拟噪声等所有问题。
RTL 中写了该项,不代表实现会保留它
综合器知道 BC 在功能上冗余,可能将其删除。因此,不能仅凭源码加入冗余项就断定实际实现没有冒险。应选择符合要求的结构,并检查实现后的路径与时序。
同步数据通路的基本做法,是满足 setupsetup 捕获时钟边沿之前,输入数据必须保持稳定的最短时间。违反建立时间就无法保证存储结果。了解更多、hold 条件保持时间 捕获时钟边沿之后,输入数据仍必须保持稳定的最短时间。需结合上下文,将此时序要求与普通的数值保持行为区分。了解更多,使寄存器寄存器 存储多位状态的电路。本课程中的同步寄存器在时钟边沿存储指定输入。了解更多在输出充分稳定后采样。若直接将组合输出毛刺用作时钟、异步复位或外部设备触发,问题可能更严重。设计时应同时考虑信号用途与接收方式。
自己试试
在 中,B=C=1,A 从 0 变为 1。可加入哪个共识项来覆盖静态 1 冒险?加入后,稳态真值表会改变吗?
阅读解释
应加入 BC 项。 与原式功能等价,但 BC 能覆盖转换期间两条路径都为 0 的区间。这里假定只改变一个输入;实际门结构是否保留了该项,还需单独确认。