8-3编码器
概述
- 用途:8-3编码器是一种数字组合电路,将八条互斥的输入线转换为3位二进制码,表示哪条输入线处于活动状态。
- 符号:通常表示为一个矩形方块,具有八个输入(I0-I7)和三个输出(Y2、Y1、Y0)。
- DigiSim.io 中的角色:作为关键的数据缩减组件,实现独热信号到紧凑二进制表示的转换,以便更高效地处理和传输。

功能描述
逻辑行为
8-3编码器检测其八条输入线中哪一条处于活动状态,并产生对应于活动输入的唯一3位二进制码。在标准编码器中,任何时刻只应有一个输入处于活动状态。
真值表:
| Inputs | Outputs | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| I7 | I6 | I5 | I4 | I3 | I2 | I1 | I0 | Y2 | Y1 | Y0 |
| 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 |
注:任何时刻只应有一个输入有效(高电平)。在基本编码器中,多个输入同时有效或所有输入无效代表无效条件。
输入和输出
输入:
- I0-I7:八个1位输入,在标准编码器中通常一次仅一个处于活动状态。
输出:
- Y2:3位输出码的最高有效位(MSB)。
- Y1:3位输出码的中间位。
- Y0:3位输出码的最低有效位(LSB)。
可配置参数
- 输入激活电平:输入是高电平有效还是低电平有效。
- 输出逻辑:输出遵循正逻辑还是负逻辑。
- 优先编码:编码器是否具有处理多个活动输入的优先级逻辑。
- 有效输出信号:编码器是否产生指示有效输入条件的信号。
- 传播延迟:输入变化后输出改变所需的时间。
DigiSim.io 中的可视化表示
8-3编码器显示为一个矩形方块,左侧有八个输入引脚(I0-I7),右侧有三个输出引脚(Y2、Y1、Y0)。当连接到电路中时,该组件通过连接线的颜色变化直观地指示活动输入和对应的二进制输出。
教育价值
核心概念
- 二进制编码:演示如何将多条信号线编码为更紧凑的二进制表示。
- 数据缩减:展示如何减少表示信息所需的信号线数量。
- 码转换:说明独热(一元)码到二进制码的转换。
- 组合逻辑:介绍OR门在实用数字功能中的实际应用。
- 信号复用:引入与信号选择和通道识别相关的概念。
学习目标
- 理解数字系统如何高效地将多个信号编码为二进制形式。
- 学习输入激活与对应二进制输出码之间的关系。
- 认识无效输入条件的挑战以及如何处理它们。
- 应用编码概念设计减少布线和简化数据路径的系统。
- 理解数字系统中编码器和解码器之间的逻辑对偶性。
使用场景
- 键盘编码:将多个按键输入转换为二进制码以便处理。
- 优先中断处理:将多个中断源编码为二进制向量供处理器使用。
- 传感器输入处理:将多个传感器激活转换为紧凑的二进制数据。
- 存储体选择:编码当前活动或正在寻址的存储体。
- 输入设备选择:生成标识活动输入设备的二进制码。
- 状态编码:将状态机中的状态信号转换为紧凑的二进制表示。
- 多路复用器控制:从各个控制线生成用于控制多路复用器的选择信号。
技术说明
- 8-3编码器实现以下布尔表达式:Y0 = I1+I3+I5+I7,Y1 = I2+I3+I6+I7,Y2 = I4+I5+I6+I7。
- 基本编码器不能很好地处理多个活动输入;这种情况需要优先编码器。
- 在没有附加逻辑的情况下,输入I0的激活无法与所有输入无效的状态区分。
- 某些编码器实现包含"有效"输出,指示何时至少有一个输入处于活动状态。
- 具有优先级逻辑的编码器将输出对应于最高编号活动输入的二进制码。
- 在 DigiSim.io 中,编码器行为模拟了标准编码器的功能,为活动输入正确生成输出。
特性
- 输入配置:
- 八个输入(I0-I7),通常一次仅一个处于活动状态
- 高电平有效输入(1表示活动输入)
- 输出配置:
- 三个输出(Y2、Y1、Y0)表示3位二进制码
- Y2 是最高有效位(MSB)
- Y0 是最低有效位(LSB)
- 功能:
- 将独热输入(单一活动线)转换为二进制
- 将八条信号线缩减为三条二进制线
- 传播延迟:
- 典型 5-15ns(取决于技术)
- 通常比同等大小的解码器小
- 扇出:
- 每个输出通常驱动 10-50 个门(取决于技术)
- 逻辑电平:
- 与标准逻辑族(TTL、CMOS)兼容
- 电路复杂度:
- 中等(需要多个OR门)
- 比等效的解码器电路复杂度低
- 局限性:
- 基本编码器存在无效状态(多个活动输入)
- 简单实现中不处理全零输入
实现方法
- 使用OR门
- 每个输出位由特定输入的OR运算形成
- 每个输出的布尔表达式:
- Y0 = I1 + I3 + I5 + I7
- Y1 = I2 + I3 + I6 + I7
- Y2 = I4 + I5 + I6 + I7
graph LR
I1[I1] --> OR0[OR Gate]
I3[I3] --> OR0
I5[I5] --> OR0
I7[I7] --> OR0
OR0 --> Y0[Y0 LSB]
I2[I2] --> OR1[OR Gate]
I3 --> OR1
I6[I6] --> OR1
I7 --> OR1
OR1 --> Y1[Y1]
I4[I4] --> OR2[OR Gate]
I5 --> OR2
I6 --> OR2
I7 --> OR2
OR2 --> Y2[Y2 MSB]
编码模式:当该位位置被设置的任何输入处于活动状态时,对应的输出位为高。
优先编码器实现
- 处理多个输入同时有效的情况
- 输出最高优先级活动输入的编码
- 使用附加优先级逻辑和使能
使用多路复用器
- 可以使用多路复用器和固定输入实现
- 不太常见但在特定FPGA架构中有用
集成电路
- 可在74xx系列逻辑族中使用(例如74148)
- 通常带有优先编码能力
- 某些版本包含使能输入和有效输出标志
应用
地址编码
- 将多条选择线转换为二进制地址
- 存储体选择编码
- 处理器中的寄存器选择
输入处理
- 将多个传感器输入转换为二进制值
- 计算机系统中的键盘编码
- 用户输入选择编码
多路复用器控制
- 为更大的多路复用器系统生成选择信号
- 通信系统中的通道选择
- 数字系统中的输入源选择
中断处理
- 将多个中断源编码为二进制值
- 处理器系统中的优先中断处理
- 多设备系统中的设备识别
数据压缩
- 减少信号线的基本数据编码形式
- 将独热码转换为二进制表示
- 通信系统中更大编码方案的一部分
数字仪器
- 将多个量程选择转换为二进制控制信号
- 测试设备中的模式选择编码
- 数字显示中的显示格式选择
状态机实现
- 数字控制器中的状态转换编码
- 减少时序电路中的状态表示
- 控制单元中的命令解码
局限性
输入冲突解决
- 标准编码器在多个输入同时有效时行为未定义
- 需要优先编码才能可靠处理多个输入
全零输入条件
- 基本编码器无法区分所有输入无效和I0有效
- 可能需要额外的有效信号输出以正确操作
传播延迟变化
- 不同路径可能有不同的延迟
- 输入转换期间可能导致毛刺
噪声敏感性
- 容易受到噪声导致的错误编码
- 在噪声环境中可能需要输入滤波
输入扩展受限
- 难以级联以获得更多输入
- 超过8个输入需要附加逻辑
电路实现细节
布尔表达式
8-3编码器可以用以下布尔表达式描述:
Y0 = I1 + I3 + I5 + I7
Y1 = I2 + I3 + I6 + I7
Y2 = I4 + I5 + I6 + I7
其中:
- I0 到 I7 是输入
- Y0、Y1、Y2 是输出
- "+" 表示逻辑OR
优先编码器逻辑
对于优先编码功能,附加逻辑确保只有最高优先级的输入影响输出:
Y0 = (I1 AND NOT(I2, I4, I6)) OR (I3 AND NOT(I4, I6)) OR (I5 AND NOT(I6)) OR I7
Y1 = (I2 AND NOT(I4, I6)) OR (I3 AND NOT(I4, I6)) OR I6 OR I7
Y2 = I4 OR I5 OR I6 OR I7
有效输出逻辑
用于检测有效输入条件(至少一个输入有效):
VALID = I0 OR I1 OR I2 OR I3 OR I4 OR I5 OR I6 OR I7
相关组件
- 4-2编码器:将四个输入编码为两个输出的更简单版本
- 16-4编码器:将十六个输入编码为四个输出的更大版本
- 优先编码器:解决多个活动输入的增强型编码器
- 3-8解码器:执行反向操作,将二进制转换为独热码
- BCD编码器:将十进制输入转换为二进制编码十进制的特殊编码器
- 多路复用器:常与编码器配合,根据编码值进行数据选择
- 二进制编码器:转换为二进制表示的编码器的通称
- 键盘编码器:专用于键盘输入处理的编码器