数字电路 - 编码器
编码器 是一种执行解码器逆操作的组合电路。它最多有 2n 条输入线和'n'条输出线。它将产生一个与输入等同的二进制代码,该代码为高电平有效。因此,编码器用'n'位对 2n 条输入线进行编码。在编码器中表示使能信号是可选的。
4 对 2 编码器
假设 4 对 2 编码器有四个输入 Y3、Y2、Y1 和 Y0 以及两个输出 A1 和 A0。下图显示了 4 对 2 编码器的框图。
在任何时候,这 4 个输入中只有一个可以为"1",以便在输出端获得相应的二进制代码。下图显示了 4 对 2 编码器的真值表。
输入 | 输出 | ||||
---|---|---|---|---|---|
Y3 | Y2 | Y1 | Y0 | A1 | A0 |
0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | 1 |
从真值表,我们可以将每个输出的布尔函数写为
$$A_{1}=Y_{3}+Y_{2}$$
$$A_{0}=Y_{3}+Y_{1}$$
我们可以通过使用两个输入或门来实现上述两个布尔函数。4 对 2 编码器的电路图如下图所示。
上述电路图包含两个或门。这些或门用两位对四个输入进行编码
八进制到二进制编码器
八进制到二进制编码器有八个输入,Y7 到 Y0 和三个输出 A2、A1 和 A0。八进制到二进制编码器只不过是 8 到 3 的编码器。八进制到二进制编码器的框图如下图所示。
在任何时候,这八个输入中只有一个可以为"1",才能获得相应的二进制代码。八进制到二进制编码器的真值表如下所示。
输入 | 输出 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 | A2 | A1 | A0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
从真值表,我们可以将每个输出的布尔函数写为
$$A_{2}=Y_{7}+Y_{6}+Y_{5}+Y_{4}$$
$$A_{1}=Y_{7}+Y_{6}+Y_{3}+Y_{2}$$
$$A_{0}=Y_{7}+Y_{5}+Y_{3}+Y_{1}$$
我们可以通过使用四个输入或门来实现上述布尔函数。八进制转二进制编码器的电路图如下图所示。
上述电路图包含三个 4 输入或门。这些或门用三位对八个输入进行编码。
编码器的缺点
以下是普通编码器的缺点。
当编码器的所有输出都等于零时,就会出现歧义。因为,当只有最低有效输入为 1 或所有输入都为零时,它可能是与输入相对应的代码。
如果多个输入为高电平有效,则编码器产生的输出可能不是正确的代码。例如,如果 Y3 和 Y6 均为"1",则编码器在输出端产生 111。这既不是 Y3 为"1"时对应的等效代码,也不是 Y6 为"1"时对应的等效代码。
因此,为了克服这些困难,我们应该为编码器的每个输入分配优先级。然后,编码器的输出将是与具有更高优先级的有效高输入相对应的(二进制)代码。这种编码器称为优先级编码器。
优先级编码器
4 到 2 优先级编码器有四个输入 Y3、Y2、Y1 和 Y0 以及两个输出 A1 和A0。这里,输入 Y3 具有最高优先级,而输入 Y0 具有最低优先级。在这种情况下,即使多个输入同时为"1",输出也将是与具有更高优先级的输入相对应的(二进制)代码。
我们考虑了另一个输出 V,以便知道输出处可用的代码是否有效。
如果编码器的至少一个输入为"1",则输出处可用的代码是有效的。在这种情况下,输出 V 将等于 1。
如果编码器的所有输入均为"0",则输出处可用的代码不是有效的。在这种情况下,输出 V 将等于 0。
4 对 2 优先级编码器的真值表如下所示。
Inputs | Outputs | |||||
---|---|---|---|---|---|---|
Y3 | Y2 | Y1 | Y0 | A1 | A0 | V |
0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | x | 0 | 1 | 1 |
0 | 1 | x | x | 1 | 0 | 1 |
1 | x | x | x | 1 | 1 | 1 |
使用4 个变量 K-map 来获取每个输出的简化表达式。
简化的布尔函数为
$$A_{1}=Y_{3}+Y_{2}$$
$A_{0}=Y_{3}+{Y_{2}}'Y_{1}$
类似地,我们将得到输出 V 的布尔函数为
$$V=Y_{3}+Y_{2}+Y_{1}+Y_{0}$$
我们可以使用逻辑门实现上述布尔函数。下图显示了 4 到 2 优先级编码器的电路图。
上述电路图包含两个 2 输入或门、一个 4 输入或门、一个 2 输入与门和一个反相器。此处,与门和反相器组合用于在输出端产生有效代码,即使多个输入同时等于"1"。因此,该电路根据分配给每个输入的优先级用两位对四个输入进行编码。