7 / 63 · 概念
布尔代数、等价变换与实现成本
利用德摩根定律和提取公因式变换电路,区分逻辑等价与时序特性。
课时内容可免费阅读,选课后可保存学习进度。
等价表达式对所有输入产生相同输出
简化组合电路的目标不只是缩短表达式。必须在保持功能的同时考虑逻辑级数、扇入、扇出和实际库单元。首先将布尔代数布尔代数 处理 0、1 及 AND、OR、NOT 的代数。这里的加号通常表示 OR,因此规则与整数加法不同。中的 与乘法记号分别理解为 OR 和 AND。
第二个表达式可以分类验证: 时两边都为 1, 时两边都为 。使用熟记的恒等式后,仍应能够解释其含义。
利用德摩根定律读懂 NAND、NOR 结构
例如 等价于 。前者可画成两个 AND 加一个 OR,后者可画成一个 OR 加一个 AND。不过,输入到达时间或负载不同,门数较少的结构并不一定更快。
共识定理也很有用。
在 时,若 为 0,则 已为 1;若为 1,则 已为 1,因此 对稳态功能是冗余项。但删除它可能改变转换瞬间的冒险特性。后面的延迟课程会讨论这一差别。
每一列表示一种 ABC 输入组合,而不是时间推进。请检查两个输出是否在所有列都相同。门数与路径可以不同,但对于稳定的 0/1 输入,功能相同。
查看波形数据
| 信号 | 波形 | 总线值 |
|---|---|---|
| ABC | 23452345 | 000 → 001 → 010 → 011 → 100 → 101 → 110 → 111 |
| AB+AC | 0....1.. | |
| A(B+C) | 0....1.. |
等价性验证的标准
将变换前后分别记为 y_ref 与 y_opt;对于较小的输入空间,比较全部输入。不能因为通过一两个实例测试就断定等价。
assign y_ref = (a & b) | (a & c);
assign y_opt = a & (b | c);
assign mismatch = y_ref ^ y_opt;在八种 0/1 输入组合中,mismatch 必须始终为 0。包含 X/Z 的四态仿真以及时序电路的等价性,还需要附加条件。明确说明已证明的范围,是设计评审的基本习惯。
自己试试
简化 ,并写出需要验证的输入组合数。
阅读解释
前两项为 ,所以 。只有两个变量,需检查四种组合。表达式等价并不意味着两种实现的传播延迟相同。
✓ 已学习