跳转至内容

电子学/解码器和编码器

来自维基教科书,开放世界中的开放书籍

编码器

[编辑 | 编辑源代码]

编码器是一种对数据进行操作以对其进行转换的设备,使数据获得一些新的特性。这些特性可以从长度缩减到包含纠错特性,再到使用安全措施。在最基本的层面上,编码器可用于减小数据大小。考虑以下框图

      ____
A ---|    |
B ---|    |-- X
C ---|    |-- Y
     |____|


如果在 ABCD 中,任何时候只有一个是高电平,那么我们只能有以下输入可能性:000、001、010、100。因此,我们可以以这样的方式设计编码器的内部电路,当它看到 000 时,它输出 00,当它看到 001 时,它输出 01,当它看到 010 时,它输出 10,当它看到 100 时,它输出 11


    __________
---| 000 | 00 |
---|-----|----|
---| 001 | 01 |
---|-----|----|
---| 010 | 10 |
---|-----|----|
---| 100 | 11 |
---|_____|____|


因此,我们有效地减小了数据的大小,这是通过利用输入的所有可能组合永远不会出现在输入端这一事实实现的。

编码器的内部电路可以通过使用真值表轻松推导出来


    _____________________
---| A | B | C ||| X | Y |
---| 0 | 0 | 0 ||| 0 | 0 |
---| 0 | 0 | 1 ||| 0 | 1 |
---| 0 | 1 | 0 ||| 1 | 0 | 
---| 1 | 0 | 0 ||| 1 | 1 |
---|___|___|___|||___|___|


显然 X = A + B 且 Y = A + C

因此,电路图可以是

A ----------[ OR ]----------X
    |   B---[ OR ]
    |
    |-------[ OR ]----------Y
        C---[ OR ]

此方案可以扩展到 n 个输入。

这是一个非常基本的编码器,它只能在单条线处于高电平时对数据进行操作。可能存在多条线处于高电平,在这种情况下,可以使用优先编码器,它根据优先级分配输出,即如果两条线处于高电平,例如前面的示例中的 A 和 C,那么优先编码器将根据设计者的先验决策,决定将输出分配给 C 或 A,从而赋予其更高的优先级。

在某些情况下,我们不希望优先编码,而是希望在遇到多个信号时,也为该特定组合创建一个新代码,并且仍然能够在大小上进行一些缩减。

在其他情况下,我们可能希望以允许接收器检测传输过程中可能出现的任何错误的方式修改传入代码。这些主题将在相应的主题中详细阐述。

华夏公益教科书