共计 1706 个字符,预计需要花费 5 分钟才能阅读完成。
优先编码器的应用场景
在数字系统中,优先编码器是一种非常实用的电路,主要用于将多个输入信号转换为二进制编码输出。它的典型应用包括:

- 中断控制系统:当多个设备同时请求中断时,优先编码器可以快速确定优先级最高的中断源
- 键盘扫描电路:识别当前被按下的键中优先级最高的一个
- 总线仲裁:多个设备竞争总线控制权时确定优先级
单芯片方案 vs 级联方案
74LS148 是经典的 8 线 - 3 线优先编码器芯片。当需要处理更多输入时,我们有两种选择:
- 使用单芯片方案
- 优点:设计简单,延迟小
-
缺点:成本高,可选芯片少
-
使用级联方案
- 优点:成本低,利用常见芯片即可实现
- 缺点:设计复杂度略高,有级联延迟
对于 16 线输入的应用,使用 2 片 74LS148 级联是最经济实用的方案。
真值表推导
16 线 - 4 线编码器的真值表需要包含所有输入组合。由于是优先编码器,当多个输入有效时,只响应优先级最高的输入。以下是关键部分的真值表:
| 输入 15-8 | 输入 7 -0 | 输出 A3-A0 |
|---|---|---|
| 1xxxxxxx | xxxxxxxx | 1111 (无有效输入) |
| 0xxxxxxx | xxxxxxxx | 1xxx (高 8 位优先) |
| 11111111 | 0xxxxxxx | 0xxx (低 8 位有效) |
注意:x 表示无关位,实际输出由最高优先级有效输入决定。
电路连接示意图
+-----+ +-----+
输入 15-8 ->| 148 | | 148 |<- 输入 7 -0
| U1 | | U2 |
+-----+ +-----+
| |
| GS1 | GS2
| _____ |
|/ \ |
| 逻辑门 |------+
|_______|
|
v
总 GS 输出
关键连接说明:
- U1 的 EI(使能端) 接地,始终有效
- U2 的 EI 连接 U1 的 GS(组选择) 信号
- 输出 A2-A0 来自两芯片的或逻辑
- A3 由 U1 的 GS 信号直接提供
时序分析
级联设计中最需要注意的是 GS 信号的传播:
- 当高 8 位有有效输入时,U1 的 GS 变低,这会禁止 U2 工作
- 只有高 8 位全部无效时,U1 的 GS 变高,U2 才开始工作
- 总 GS 输出是两芯片 GS 信号的或逻辑
这个级联机制确保了高 8 位永远比低 8 位优先级高。
Verilog 实现
门级建模
module encoder16_4(input [15:0] d,
output [3:0] code,
output gs
);
wire gs1, gs2;
wire [2:0] code1, code2;
// 高 8 位编码器
encoder8_3 u1(.d(d[15:8]), .code(code1), .gs(gs1), .ei(1'b0));
// 低 8 位编码器
encoder8_3 u2(.d(d[7:0]), .code(code2), .gs(gs2), .ei(gs1));
// 组合输出
assign code = {~gs1, code1 | code2};
assign gs = gs1 & gs2;
endmodule
行为级建模
module encoder16_4_behavioral(input [15:0] d,
output reg [3:0] code,
output reg gs
);
always @(*) begin
gs = 1;
code = 4'b1111;
// 优先级从高到低检查
for (int i=15; i>=0; i=i-1) begin
if (d[i] == 0) begin
code = 15 - i;
gs = 0;
break;
end
end
end
endmodule
生产环境注意事项
在实际电路实现时,需要注意以下几个问题:
- 消除毛刺
- 在输出端添加 RC 滤波电路
-
典型值:R=1kΩ, C=100pF
-
输入信号防抖
- 对机械开关输入添加施密特触发器
-
或者使用软件消抖算法
-
竞争冒险处理
- 关键路径添加锁存器
- 使用同步设计
- 必要时插入流水线寄存器
扩展思考
基于同样的级联原理,我们可以将设计扩展到 32 线 - 5 线编码器:
- 需要 4 片 74LS148 芯片
- 第一级用 3 片编码器处理 24 线输入
- 第二级用 1 片编码器处理第一级的 3 个 GS 信号
- 最终输出需要 5 位:1 位表示高 24 位有效,3 位表示具体组,1 位表示组内编码
这种分层级联的方法可以无限扩展,只是在延迟和复杂度上需要权衡。
总结
通过 2 片 74LS148 级联实现 16 线 - 4 线编码器,是数字电路设计中一个经典的扩展案例。掌握这种级联技术,不仅限于编码器设计,对于理解更复杂的数字系统构建也非常有帮助。希望本文从理论到实践的完整解析,能帮助初学者顺利掌握这一实用技术。
正文完
发表至: 未分类
近一天内
