基于FPGA的74ls148设计
1 74ls148简介
74ls148是8线-3线优先编码器,将 8 条数据线(0-7)进行 3 线(4-2-1)二进制(八进制)优先编码,即对最高位数据线进行译码。利用选通端(EI)和输出选通端(EO)可进行八进制扩展。
2 74ls148管脚图和逻辑图
管脚介绍
0-7 编码输入端(低电平有效)
EI 选通输入端(低电平有效)
A0、A1、A2 三位二进制编码输出信号即编码输出端(低电平有效)
GS 片优先编码输出端即宽展端(低电平有效)
EO 选通输出端,即使能输出端
3 74ls148真值表
4 74ls148工作原理
该编码器有8个信号输入端,3个二进制码输出端。此外,电路还设置了输入使能端EI,输出使能端EO和优先编码工作状态标志GS。当EI=0时,编码器工作;而当EI=1时,则不论8个输入端为何种状态,3个输出端均为高电平,且优先标志端和输出使能端均为高电平,编码器处于非工作状态。这种情况被称为输入低电平有效,输出也为低电来有效的情况。当EI为0,且至少有一个输入端有编码请求信号(逻辑0)时,优先编码工作状态标志GS为0。表明编码器处于工作状态,否则为1。
5 74ls148的Verilog设计
1 module ttl_74148( 2 input wire D0,D1,D2,D3,D4,D5,D6,D7, //输入信号,低电平有效 3 input wire EI, //输入使能 4 output reg A0,A1,A2, //输出信号, 5 output reg GS, //优先编码工作状态标志,0表示工作状态 6 output reg EO //输出使能 7 ); 8 9 always@(*)begin 10 if(EI) 11 begin {A2,A1,A0} = 3'b111; GS = 1'b1; EO = 1'b1; end 12 else if({D7,D6,D5,D4,D3,D2,D1,D0} == 8'b1111_1111) 13 begin {A2,A1,A0} = 3'b111; GS = 1'b1; EO = 1'b0; end 14 else if(!D7) 15 begin {A2,A1,A0} = 3'b000; GS = 1'b0; EO = 1'b1; end 16 else if(!D6) 17 begin {A2,A1,A0} = 3'b001; GS = 1'b0; EO = 1'b1; end 18 else if(!D5) 19 begin {A2,A1,A0} = 3'b010; GS = 1'b0; EO = 1'b1; end 20 else if(!D4) 21 begin {A2,A1,A0} = 3'b011; GS = 1'b0; EO = 1'b1; end 22 else if(!D3) 23 begin {A2,A1,A0} = 3'b100; GS = 1'b0; EO = 1'b1; end 24 else if(!D2) 25 begin {A2,A1,A0} = 3'b101; GS = 1'b0; EO = 1'b1; end 26 else if(!D1) 27 begin {A2,A1,A0} = 3'b110; GS = 1'b0; EO = 1'b1; end 28 else 29 begin {A2,A1,A0} = 3'b111; GS = 1'b0; EO = 1'b1; end 30 end 31 32 endmodule
6 波形仿真测试结果
参考资料:
(1)优先编码器74ls148引脚图及功能介绍(工作原理,逻辑图及应用电路) - 电子常识 - 电子发烧友网 (elecfans.com);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律