数字逻辑中的编码器与解码器

N位二进制代码可以用来存储 2N 个不同的编码信息元素。这正是编码器和解码器的用武之地。

编码器 将 2N 条输入线转换为 N 位代码,而 解码器 则将 N 位代码解码为 2N 条输出线。
1. 编码器 –

编码器是一种组合逻辑电路,它将 2N 条输入线形式的二进制信息转换为 N 条输出线,这些输出线代表输入的 N 位代码。对于简单的编码器,我们假设在任意时刻只有一条输入线处于激活状态。让我们以 八进制转二进制 编码器 为例。如下图所示,一个八进制转二进制编码器接收 8 条输入线并生成 3 条输出线。

!image

真值表 –

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;而当输入八进制数字为 4、5、6 或 7 时,X 为 1。因此,布尔函数如下所示:

X = D4 + D5 + D6 + D7
Y = D2 +D3 + D6 + D7
Z = D1 + D3 + D5 + D7

因此,我们可以使用或门 来实现该编码器,如下所示:

!image

这种编码器的一个局限性是,在任意给定时间只能有一个输入处于激活状态。如果有多个输入同时激活,输出将是未定义的。例如,如果 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:

!image

=> X = D2 + D3

对于 Y:

!image

=> Y = D1 D2’ + D3

因此,4线到2线优先编码器可以实现如下:

!image

2. 解码器 –

解码器是一种组合逻辑电路,它执行编码器的反向操作,将 n 条输入线转换为 2ⁿ 条输出线,并且对于每种输入组合,只有一个输出处于激活状态。

让我们以 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’

Sim

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/43622.html
点赞
0.00 平均评分 (0% 分数) - 0