4x4矩阵键盘设计Verilog矩阵式键盘控制,视频/代码

news/2025/2/19 16:23:55/

名称:4x4矩阵键盘设计Verilog矩阵式键盘控制

软件:Quartus

语言:Verilog

代码功能:

键盘控制电路设计,设计一个4x4矩阵式键盘控制电路,并实现按键的显示。

演示视频:4x4矩阵键盘设计Verilog矩阵式键盘控制_Verilog/VHDL资源下载

代码下载:

4x4矩阵键盘设计Verilog矩阵式键盘控制_Verilog/VHDL资源下载名称:4x4矩阵键盘设计Verilog矩阵式键盘控制(代码在文末付费下载)软件:Quartus语言:Verilog代码功能:键盘控制电路设计,设计一个4x4矩阵式键盘控制电路,并实现按键的显示。演示视频:部分代码展示module key_4x4 ( clk_500KHz,//500KHZ reset, //低电平复位L_row, //行 H_col, //列 display_licon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=192

部分代码展示

module key_4x4 
( 
clk_500KHz,//500KHZ 
reset,       //低电平复位
L_row,   //行 
H_col,   //列 
display_led8//数码管显示
); input clk_500KHz;
input reset;  
input [3:0] L_row;//行
output [3:0] H_col;//列
output [8:0] display_led8;//[7:0]:a,b,c,d,e,f,g,an0 reg [3:0] H_col=4'd0; 
reg [7:0] display_led8=8'd0; 
parameter s_L_all=3'd0;
parameter s_L_row1=3'd1;
parameter s_L_row2=3'd2;
parameter s_L_row3=3'd3;
parameter s_L_row4=3'd4;
parameter s_LH=3'd5;reg [2:0] state=s_L_all;  //状态标志 
reg key_flag=0;   //按键标志位 
reg [3:0] H_col_reg=4'd0;  //寄存扫描列值 
reg [3:0] L_row_reg=4'd0;//寄存扫描行值 
/************************************************************************ 
逐行扫描原理 
************************************************************************/ 
always @(posedge clk_500KHz or negedge reset) 
if(!reset)  
begin  
H_col<=4'b0000; 
H_col_reg<=4'b0000;   
L_row_reg<=4'b0000;  
state<=s_L_all; 
end 
else  
begin  
case (state) 
s_L_all:begin 
H_col[3:0]<=4'b0000; 
key_flag<=1'b0; 
if(L_row[3:0]!=4'b1111)  
begin  
state<=s_L_row1; 
H_col[3:0]<=4'b0111;//有键按下,扫描第一行 
end  
else  
state<=s_L_all; 
end  
s_L_row1:begin 
if(L_row[3:0]!=4'b1111)  
begin  
state<=s_LH;//判断是否是第一行 
end    
else   
begin  
state<=s_L_row2; 
H_col[3:0]<=4'b1011;  //扫描第二行 
end 
end  
s_L_row2:begin     
if(L_row[3:0]!=4'b1111)  
begin  
state<=s_LH;//判断是否是第二行

设计文档:

4x4矩阵键盘设计.doc

1.要求

2.键盘电路

其中H0~H3为FPGA输出,L0~L3为FPGA输入,采用行扫描法。

在上电默认情况下,L[3:0] =1111,因为上拉了3.3V,而默认情况下H[3:0]为低电平;一旦有某一个按键被按下,则对应L会拉低。因此可以通过对每一行H输出的控制,来检索是哪一个按键被按下了。

3.工程文件

4.程序代码

5.程序综合编译

6.RTL图

7.状态机图

8.仿真


http://www.ppmy.cn/news/1156292.html

相关文章

acwing算法基础之数据结构--单链表

目录 1 知识点2 模板 1 知识点 一般以指针实现为主&#xff0c;可以预生成N个结构体。 struct ListNode {int val;ListNode *next; };但这里以数组模拟为主。 单链表和邻接表。 双链表。 &#xff08;一&#xff09;插入操作 链表插入操作的关键步骤&#xff0c;比如在结点…

k8s-11 网络策略

添加网络策略 限制pod流量 控制的对象是具有appmyapp-v1标签的pod 此时访问svc是不通的 给测试pod添加指定标签后&#xff0c;可以访问 重启一下 限制namespace流量 给namespace添加指定标签 同时限制namespace和pod 给test命令空间中的pod添加指定标签后才能访问 限制集群…

gitlab版本库安装

gitlab版本库安装 下地址 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ https://packages.gitlab.com/gitlab/gitlab-ce此处以 gitlab-ce-14.3.0为例 安装依赖 [rootebs-139265 opt]# sudo yum install -y curl policycoreutils-python openssh-server perl […

05-React组件的组合使用

05-React组件的组合使用 1.TodoList案例 需求&#xff1a;TodoList组件化实现此功能 显示所有todo列表输入文本, 点击按钮显示到列表的首位, 并清除输入的文本 1).实现&#xff1a; 完成TodoList组件的静态页面以及拆解组件 动态初始化列表 //App.jsx export default class …

2022最新版-李宏毅机器学习深度学习课程-P23 为什么用了验证集结果还是过拟合

用了验证集还有可能会过拟合 这个片段可以从理论上证明这一点 以上整个挑选模型的过程也可以想象为一种训练。 把三个模型导出的最小损失公式看成一个集合&#xff0c;现在要做的就是在这个集合中找到某个h&#xff08;此处可以视为训练&#xff09;&#xff0c;使得在验证集…

OpenCV14-图像平滑:线性滤波和非线性滤波

OpenCV14-图像平滑&#xff1a;线性滤波和非线性滤波 1.图像滤波2.线性滤波2.1均值滤波2.2方框滤波2.3高斯滤波2.4可分离滤波 3.非线性滤波3.1中值滤波3.2双边滤波 1.图像滤波 图像滤波是指去除图像中不重要的内容&#xff0c;而使关心的内容表现得更加清晰的方法&#xff0c;…

Windows系统加密

Windows系统加密 这里类似一个简单的系统加密&#xff08;开机不插U盘&#xff0c;会在设定的时间后关机&#xff09; 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.看U盘在你电脑上的盘符 先把U盘插电脑上&#xff0c;看看U盘的盘符&#xff0c;我这里是H 2.在U…

从0开始学Java:Java基础语法

文章目录 1. 注释2. 关键字&#xff08;*Keyword*&#xff09;3. 标识符( Identifier)4. 常量&#xff08;*Constant*&#xff09;5. 输出语句6. 变量&#xff08;*Variable*&#xff09;7. 计算机如何存储数据7.1 进制7.2 计算机存储单位7.3 二进制数据存储 8. 数据类型8.1 数…