数字电路 - 多路复用器
多路复用器是一种组合电路,最多有 2n 个数据输入、'n' 条选择线和一条输出线。根据选择线的值,这些数据输入之一将连接到输出。
由于有'n' 条选择线,因此零和一的可能组合有 2n 种。因此,每种组合只会选择一个数据输入。多路复用器也称为Mux。
4x1 多路复用器
4x1 多路复用器有四个数据输入 I3、I2、I1 和 I0,两条选择线 s1 和s0 和一个输出 Y。下图显示了 4x1 多路复用器的框图。
这 4 个输入中的一个将根据这两条选择线上的输入组合连接到输出。4x1 多路复用器的真值表如下所示。
选择线 | 输出 | |
---|---|---|
S1 | S0 | Y |
0 | 0 | I0 |
0 | 1 | I1 |
1 | 0 | I2 |
1 | 1 | I3 |
从真值表中,我们可以直接将输出 Y 的布尔函数写为
$$Y={S_{1}}'{S_{0}}'I_{0}+{S_{1}}'S_{0}I_{1}+S_{1}{S_{0}}'I_{2}+S_{1}S_{0}I_{3}$$
我们可以使用反相器、与门和或门来实现这个布尔函数。下图显示了 4x1 多路复用器的电路图。
我们可以轻松理解上述电路的操作。类似地,您可以按照相同的步骤实现 8x1 多路复用器和 16x1 多路复用器。
高阶多路复用器的实现。
现在,让我们使用低阶多路复用器实现以下两个高阶多路复用器。
- 8x1 多路复用器
- 16x1 多路复用器
8x1 多路复用器
在本节中,让我们使用 4x1 多路复用器和 2x1 多路复用器实现 8x1 多路复用器。我们知道 4x1 多路复用器有 4 个数据输入、2 条选择线和一个输出。而 8x1 多路复用器有 8 个数据输入、3 条选择线和一个输出。
因此,我们需要在第一阶段使用两个 4x1 多路复用器 来获取 8 个数据输入。由于每个 4x1 多路复用器产生一个输出,因此我们需要在第二阶段使用 2x1 多路复用器,将第一阶段的输出视为输入并产生最终输出。
假设 8x1 多路复用器有八个数据输入 I7 至 I0、三条选择线 s2、s1 和s0 和一个输出 Y。8x1 多路复用器的真值表如下所示。
选择输入 | 输出 | ||
---|---|---|---|
S2 | S1 | S0 | Y |
0 | 0 | 0 | I0 |
0 | 0 | 1 | I1 |
0 | 1 | 0 | I2 |
0 | 1 | 1 | I3 |
1 | 0 | 0 | I4 |
1 | 0 | 1 | I5 |
1 | 1 | 0 | I6 |
1 | 1 | 1 | I7 |
通过考虑上述真值表,我们可以轻松地使用低阶多路复用器实现 8x1 多路复用器。下图显示了 8x1 多路复用器的框图。
相同的选择线 s1 和 s0 应用于两个 4x1 多路复用器。上部 4x1 多路复用器的数据输入为 I7 至 I4,下部 4x1 多路复用器的数据输入为 I3 至 I0。因此,每个 4x1 多路复用器根据选择线 s1 和 s0 的值产生输出。 s0。
第一级 4x1 多路复用器的输出用作第二级 2x1 多路复用器的输入。另一条选择线 s2 应用于 2x1 多路复用器。
如果 s2 为零,则 2x1 多路复用器的输出将是 4 个输入 I3 至 I0 之一,具体取决于选择线 s1 和 s2 的值s0。
如果 s2 为 1,则 2x1 多路复用器的输出将为 4 个输入 I7 至 I4 之一,具体取决于选择线 s1 和 s0 的值。
因此,两个 4x1 多路复用器和一个 2x1 多路复用器的整体组合相当于一个 8x1 多路复用器。
16x1 多路复用器
在本节中,让我们使用 8x1 多路复用器和 2x1 多路复用器实现 16x1 多路复用器。我们知道 8x1 多路复用器有 8 个数据输入、3 条选择线和一个输出。而 16x1 多路复用器有 16 个数据输入、4 条选择线和一个输出。
因此,我们在第一阶段需要两个 8x1 多路复用器 才能获得 16 个数据输入。由于每个 8x1 多路复用器产生一个输出,因此我们需要在第二阶段使用 2x1 多路复用器,将第一阶段的输出视为输入并产生最终输出。
假设 16x1 多路复用器有 16 个数据输入 I15 至 I0、4 条选择线 s3 至 s0 和一个输出 Y。16x1 多路复用器的真值表如下所示。
选择输入 | 输出 | |||
---|---|---|---|---|
S3 | S2 | S1 | S0 | Y |
0 | 0 | 0 | 0 | I0 |
0 | 0 | 0 | 1 | I1 |
0 | 0 | 1 | 0 | I2 |
0 | 0 | 1 | 1 | I3 |
0 | 1 | 0 | 0 | I4 |
0 | 1 | 0 | 1 | I5 |
0 | 1 | 1 | 0 | I6 |
0 | 1 | 1 | 1 | I7 |
1 | 0 | 0 | 0 | I8 |
1 | 0 | 0 | 1 | I9 |
1 | 0 | 1 | 0 | I10 |
1 | 0 | 1 | 1 | I11 |
1 | 1 | 0 | 0 | I12 |
1 | 1 | 0 | 1 | I13 |
1 | 1 | 1 | 0 | I14 |
1 | 1 | 1 | 1 | I15 |
通过考虑上述真值表,我们可以轻松地使用低阶多路复用器实现 16x1 多路复用器。下图显示了 16x1 多路复用器的框图。
两个 8x1 多路复用器均应用了相同的选择线 s2、s1 和 s0。上部 8x1 多路复用器的数据输入为 I15 至 I8,下部 8x1 多路复用器的数据输入为 I7 至 I0。因此,每个 8x1 多路复用器根据选择线 s2、s1 和 s0 的值产生输出。
第一级 8x1 多路复用器的输出用作第二级 2x1 多路复用器的输入。另一条 选择线 s3 应用于 2x1 多路复用器。
如果 s3 为零,则 2x1 多路复用器的输出将是 8 个输入 Is7 至 I0 之一,具体取决于选择线 s2、s1 和 s0 的值。 s0。
如果 s3 为 1,则 2x1 多路复用器的输出将为 8 个输入 I15 至 I8 中的一个,具体取决于选择线 s2、s1 和 s0 的值。
因此,两个 8x1 多路复用器和一个 2x1 多路复用器的整体组合相当于一个 16x1 多路复用器。