先决条件 – 编码器、解码器
N 位二进制代码可用于存储编码信息的2 N 个不同元素。这就是编码器和解码器的用途。编码器将 2 N行输入转换为 N 位代码,解码器将 N 位解码为 2 N行。
1. 编码器 –
编码器是一种组合电路,它将以 2 N 条输入线形式的二进制信息转换为 N 条输出线,这些线代表输入的 N 位代码。对于简单的编码器,假设一次只有一条输入线处于活动状态。
例如,让我们考虑八进制到二进制编码器。如下图所示,一个八进制转二进制编码器需要8条输入线,生成3条输出线。
真值表——
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|
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 |
从真值表看,D0有效时输出为000; D1 有效时为 001;当 D2 处于活动状态时为 010,依此类推。
执行 –
从真值表来看,当输入八进制数字为 1、3、5 或 7 时,输出线 Z 是活动的。类似地,当输入八进制数字为 2、3、6 或 7 时,Y 为 1,输入八进制数字时 X 为 1 4、5、6 或 7。因此,布尔函数将是:
X = D4 + D5 + D6 + D7
Y = D2 +D3 + D6 + D7
Z = D1 + D3 + D5 + D7
因此,编码器可以用或门实现,如下所示:
此编码器的一个限制是在任何给定时间只能激活一个输入。如果有多个输入处于活动状态,则输出未定义。例如,如果 D6 和 D3 都处于活动状态,那么我们的输出将是 111,它是 D7 的输出。为了克服这个问题,我们使用优先编码器。
当所有输入均为 0 时,会出现另一种歧义。在这种情况下,编码器输出 000,它实际上是 D0 活动的输出。为了避免这种情况,可以在输出中添加一个额外的位,称为有效位,当所有输入为 0 时为 0,否则为 1。
优先编码器 –
优先级编码器是一种编码器电路,其中输入具有优先级。当多个输入同时处于活动状态时,具有较高优先级的输入优先,并生成与其对应的输出。
让我们以 4 到 2 优先级编码器为例。
从真值表中,我们看到当所有输入都为 0 时,我们的 V 位或有效位为零,并且不使用输出。表中的 x 表示不关心条件,即它可能是 0 或 1。这里,D3 具有最高优先级,因此,无论其他输入如何,当 D3 为高时,输出必须为 11。并且D0 的优先级最低,因此只有当 D0 为高且其他输入线为低时,输出才会为 00。同样,D2 的优先级高于 D1 和 D0,但低于 D3,因此只有当 D2 为高且 D3 为低时(D0 和 D1 无关),输出才会为 010。
真值表——
D3 | D2 | D1 | D0 | X | Y | V |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | x | x | 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 |
执行 –
可以清楚地看出,有效位为1的条件是至少有一个输入应该是高的。因此,
V = D0 + D1 + D2 + D3
对于 X:
=> X = D2 + D3
对于 Y:
=> Y = D1 D2′ + D3
因此,优先级 4-to-2 编码器可以实现如下:
2. 解码器——
解码器完成与编码器相反的工作。它是一个组合电路,将 n 行输入转换为 2 n行输出。
让我们以 3 到 8 行解码器为例。
真值表——
X | Y | Z | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
执行 –
当 X = 0、Y = 0 和 Z = 0 时,D0 为高电平。因此,
D0 = X’ Y’ Z’
相似地,
D1 = X’ Y’ Z
D2 = X’ Y Z’
D3 = X’ Y Z
D4 = X Y’ Z’
D5 = X Y’ Z
D6 = X Y Z’
D7 = X Y Z
因此,