数字电路 - 多路复用器
多路复用器是一个组合电路,最多具有 2 n 个数据输入、“n”条选择线和单输出线。这些数据输入之一将根据选择线的值连接到输出。
由于有“n”条选择线,因此将有 2 n种可能的 0 和 1 组合。因此,每种组合只会选择一个数据输入。多路复用器也称为Mux。
4x1 多路复用器
4x1 多路复用器有四个数据输入 I 3、 I 2、 I 1和 I 0,两条选择线 s 1和 s 0以及一个输出 Y。 4x1 多路复用器的框图如下图所示。
 
这 4 个输入之一将根据这两条选择线上存在的输入组合连接到输出。4x1 多路复用器的真值表如下所示。
| 选择线 | 输出 | |
|---|---|---|
| S 1 | 0 _ | 是 | 
| 0 | 0 | 我0 | 
| 0 | 1 | 我1 | 
| 1 | 0 | 我2 | 
| 1 | 1 | 我3 | 
从真值表中,我们可以直接编写输出的布尔函数,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 个选择线和 1 个输出。而 8x1 多路复用器有 8 个数据输入、3 个选择线和 1 个输出。
因此,我们在第一阶段需要两个4x1 多路复用器才能获得 8 个数据输入。由于每个 4x1 多路复用器产生一个输出,因此我们在第二级需要一个2x1 多路复用器,将第一级的输出视为输入并产生最终输出。
令8x1 多路复用器具有八个数据输入I 7至I 0、三条选择线s 2、s 1 & s0 以及一个输出Y。8x1 多路复用器的真值表如下所示。
| 选择输入 | 输出 | ||
|---|---|---|---|
| S 2 | S 1 | 0 _ | 是 | 
| 0 | 0 | 0 | 我0 | 
| 0 | 0 | 1 | 我1 | 
| 0 | 1 | 0 | 我2 | 
| 0 | 1 | 1 | 我3 | 
| 1 | 0 | 0 | 我4 | 
| 1 | 0 | 1 | 我5 | 
| 1 | 1 | 0 | 我6 | 
| 1 | 1 | 1 | 我7 | 
通过考虑上面的真值表,我们可以使用低阶多路复用器轻松实现 8x1 多路复用器。8x1 多路复用器的框图如下图所示。
 
相同的选择线 s 1和 s 0应用于两个 4x1 多路复用器。上部4x1多路复用器的数据输入是I 7至I 4,下部4x1多路复用器的数据输入是I 3至I 0。因此,每个 4x1 多路复用器都会根据选择线 s 1和 s 0的值产生输出。
第一级 4x1 多路复用器的输出用作第二级中存在的 2x1 多路复用器的输入。另一条选择线 s 2应用于 2x1 多路复用器。
- 如果s 2为零,则2x1多路复用器的输出将是基于选择线s 1和s 0的值的4个输入I 3至I 0之一。 
- 如果s 2为1,则2x1多路复用器的输出将是基于选择线s 1和s 0的值的4个输入I 7至I 4之一。 
因此,两个 4x1 多路复用器和一个 2x1 多路复用器的整体组合相当于一个 8x1 多路复用器。
16x1 多路复用器
在本节中,让我们使用 8x1 多路复用器和 2x1 多路复用器来实现 16x1 多路复用器。我们知道8x1多路复用器有8个数据输入、3个选择线和1个输出。而 16x1 多路复用器有 16 个数据输入、4 个选择线和 1 个输出。
因此,我们在第一阶段需要两个8x1 多路复用器才能获得 16 个数据输入。由于每个 8x1 多路复用器产生一个输出,因此我们在第二级需要一个 2x1 多路复用器,将第一级的输出视为输入并产生最终输出。
设16x1多路复用器具有16个数据输入I 15至I 0、4条选择线s 3至s 0以及1个输出Y。16x1多路复用器的真值表如下所示。
| 选择输入 | 输出 | |||
|---|---|---|---|---|
| S 3 | S 2 | S 1 | 0 _ | 是 | 
| 0 | 0 | 0 | 0 | 我0 | 
| 0 | 0 | 0 | 1 | 我1 | 
| 0 | 0 | 1 | 0 | 我2 | 
| 0 | 0 | 1 | 1 | 我3 | 
| 0 | 1 | 0 | 0 | 我4 | 
| 0 | 1 | 0 | 1 | 我5 | 
| 0 | 1 | 1 | 0 | 我6 | 
| 0 | 1 | 1 | 1 | 我7 | 
| 1 | 0 | 0 | 0 | 我8 | 
| 1 | 0 | 0 | 1 | 我9 | 
| 1 | 0 | 1 | 0 | 我10 | 
| 1 | 0 | 1 | 1 | 我11 | 
| 1 | 1 | 0 | 0 | 我12 | 
| 1 | 1 | 0 | 1 | 我13 | 
| 1 | 1 | 1 | 0 | 我14 | 
| 1 | 1 | 1 | 1 | 我15 | 
通过考虑上面的真值表,我们可以使用低阶多路复用器轻松实现 16x1 多路复用器。16x1 多路复用器的框图如下图所示。
 
相同的选择线 s 2、s 1和 s 0应用于两个 8x1 多路复用器。上部8x1 多路复用器的数据输入是I 15至I 8,下部8x1 多路复用器的数据输入是I 7至I 0。因此,每个 8x1 多路复用器都会根据选择线 s 2、 s 1和 s 0的值产生输出。
第一级 8x1 多路复用器的输出用作第二级中存在的 2x1 多路复用器的输入。另一条选择线 s 3应用于 2x1 多路复用器。
- 如果s 3为零,则2x1多路复用器的输出将是基于选择线s 2、s 1和s 0的值的8个输入Is 7至I 0之一。 
- 如果s 3为1,则2x1多路复用器的输出将是基于选择线s 2、s 1和s 0的值的8个输入I 15至I 8之一。 
因此,两个 8x1 多路复用器和一个 2x1 多路复用器的总体组合相当于一个 16x1 多路复用器。
