「Verilog学习笔记」用优先编码器①实现键盘编码电路
「Verilog学习笔记」用优先编码器①实现键盘编码电路
专栏前言
本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网
分析
用此编码器实现键盘的编码电路。
注意:编码器的输出是低电平有效,而键盘编码电路输出的是正常的8421BCD码,是高电平有效。因此将编码器的输出取反就是8421编码输出的结果
S_n[0]~S_n[9]表示10个按键,分别对应编码器的10个输入端,工作状态用GS表示,当有按键按下时,GS是1,当无按键按下时,GS是0.
需要考虑的是如何将10个按键对应到编码器的9个输入端。
仅有一种情况GS为0 即Y_n的四位均为1且S_n[0]也为1 即所有按键都没按下
`timescale 1ns/1ns
module encoder_0(input [8:0] I_n ,output reg [3:0] Y_n
);always @(*)begincasex(I_n)9'b111111111 : Y_n = 4'b1111;9'b0xxxxxxxx : Y_n = 4'b0110;9'b10xxxxxxx : Y_n = 4'b0111;9'b110xxxxxx : Y_n = 4'b1000;9'b1110xxxxx : Y_n = 4'b1001;9'b11110xxxx : Y_n = 4'b1010;9'b111110xxx : Y_n = 4'b1011;9'b1111110xx : Y_n = 4'b1100;9'b11111110x : Y_n = 4'b1101;9'b111111110 : Y_n = 4'b1110;default : Y_n = 4'b1111; // 若0被按下 Y_n会赋值为默认值endcase
end endmodulemodule key_encoder(input [9:0] S_n , output wire[3:0] L ,output wire GS
);wire [3:0] Y_n ; encoder_0 u0 (.I_n (S_n[9:1]), .Y_n (Y_n) );assign L = ~Y_n ; assign GS = ~(S_n[0] & Y_n[0] & Y_n[1] & Y_n[2] & Y_n[3]) ;endmodule
最新文章
- 电脑的日常维护与故障诊断常识
- LED显示屏故障排除10种方法!
- ie未响应怎么办 浏览器IE无响应解决办法
- 智能巡检软件哪个好?中小企业如何提升工作效率与质量?
- 突破职场竞争,引领未来发展:考取《研发效能(DevOps)工程师职业技术认证》
- 2012年08月16日 Go生态洞察:优雅的代码组织之道
- 【C++初阶(七)】类和对象(下)
- C#中.NET Framework4.8 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录
- 基于springboot实现小学家校一体“作业帮”系统项目【项目源码】
- 为什么打开idea时,没有启动页面,如何解决?
- 【Mysql】next
- Java民营医院、门诊部、卫生院、连锁医院、公立医院云HIS信息管理系统源码
- css控制文本、字符换行
- 如何在thingsboard的规则链中对一个遥测属性进行求平均值
- 仿京东拼多多商品分类页
- 安全区域边界(设备和技术注解)
- DevOps系列