15 / 63 · 概念
从真值表到 MUX 与 Shannon 展开
从选择逻辑推导公式,用 MUX 分解任意逻辑函数。
课时内容可免费阅读,选课后可保存学习进度。
从选择规则推导表达式
若要求 sel=0 时输出 a、sel=1 时输出 b,就将每个输入与对应选择条件相与,再用 OR 合并。
代入 只剩 a,代入 只剩 b。a 与 b 相同时,改变 sel 不改变输出,因此寻找选择信号错误时,必须包含两数据输入不同的情况。
蓝色路径表示所选输入。把 a、b 设为不同值后切换 sel。如果两者相同,仅凭输出就难以区分选择线是否接错。
y = sel ? b : a
MUX 是分解逻辑函数的通用方法
对于任意布尔函数 F,将 s 分别固定为 0、1 所得子函数记为 。
这就是 Shannon 展开。利用 s ? F1 : F0,可将任意函数分为两部分。例如在 中,以 a 为选择信号,则 、,因此可用 MUX多路选择器 根据选择信号,把多个输入之一连接到输出的组合电路。必须规定选择位与输入编号的对应关系。与反相取反 将 0 变为 1、1 变为 0 的 NOT 运算。表达式上方的横线表示对其覆盖的整个表达式应用 NOT。了解更多构造 XOR。
4-to-1 选择与优先级
用两个选择位从四个输入中选择一个,可由两级 2-to-1 MUX 构成。相比之下,if (req0) ... else if (req1) ... 在多个请求同时为 1 时优先选择前面的请求。地址选择与优先级选择解决的是不同问题,不能混为一谈。
assign y = sel[1] ? (sel[0] ? d3 : d2)
: (sel[0] ? d1 : d0);理想平衡树中,若输入数为 ,则选择路径为 m 级。物理延迟不仅取决于级数,还受输入到达时间、负载和布线影响。函数分解提供实现候选,并不是保证最优延迟的证明。
自己试试
将 表示成以 a 为选择信号的 MUX。两个数据输入分别是什么?
阅读解释
时 , 时 ,因此为 assign f = a ? b : c;。先计算子函数,避免交换选择值 0 和 1 对应的数据输入。