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

news2024/11/29 2:44:41

名称: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.coloradmin.cn/o/1096253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C与C++之间相互调用的基本方法

​ 在你的C语言代码中&#xff0c;不知能否看到类似下面的代码&#xff1a; 这好像没有什么问题&#xff0c;你应该还会想&#xff1a;“嗯⋯是啊&#xff0c;我们的代码都是这样写的&#xff0c;从来没有因此碰到过什么麻烦啊&#xff5e;”。 你说的没错&#xff0c;如果你的…

load initialize 浅析

load 调用顺序&#xff1a;父类->子类->分类 &#xff08;不会覆盖&#xff09;&#xff1b;多个分类情况下&#xff0c;compile sources <谁在前&#xff0c;先执行谁。多个分类都会被执行>&#xff1b;子类覆盖load方法&#xff0c;父类覆盖了仍然会被调用&…

01-spring源码概述

文章目录 1. Spring两大主要功能2. Bean的生命周期&#xff08;部分生命周期&#xff0c;不包括销毁&#xff09;2.1 两个重要接口及Aware接口2.2 创建对象的过程2.3 Bean的scope作用域2.4 Bean的类型2.5 获得反射对象的三种方式 3. 涉及的接口汇总4. 涉及设计模式 1. Spring两…

axios post 请求发送url 键值对参数

后端post 请求要求在 url 上携带参数&#xff0c;各种百度&#xff0c;最后发现了一种可行的方式&#xff0c;用formData对象构造请求参数&#xff0c;然后用URLSearchParams 把formdata 参数转换成键值对&#xff0c;最后发送 function getList() {const formdata new FormDa…

机器学习在工业机器人领域有哪些应用?

随着人工智能和机器学习的快速发展&#xff0c;工业机器人领域也迎来了新的机遇和挑战。本文综述了机器学习在工业机器人领域的应用&#xff0c;包括机器人视觉、运动控制、路径规划、故障诊断等方面。通过对相关研究和实际应用的分析&#xff0c;总结了机器学习在工业机器人领…

【JVM】JVM类加载机制

JVM类加载机制 加载双亲委派模型 验证准备解析初始化 JVM的类加载机制,就是把类,从硬盘加载到内存中 Java程序,最开始是一个Java文件,编译成.class文件,运行Java程序,JVM就会读取.class文件,把文件的内容,放到内存中,并且构造成.class类对象 加载 这里的加载是整个类加载的一…

ubuntu静态ip地址设置

ifconfig命令显示 手动设置静态ip地址 1、ip地址 IP地址是唯一标识互联网上每个设备的地址&#xff0c;一根网线对应一个ip&#xff0c;一个计算机上可以有多个网卡&#xff0c;所以可以有多个ip地址。 私有地址的范围分别是&#xff1a; A类地址范围&#xff1a;10.0.0…

vue3后台管理框架之路由配置

pnpm install vue-router 在src新建文件夹views和router 1.1基本 路由配置 :hash 路由模式 // 对外配置路由 import Login from @/views/login/index.vue import Home from @/views/home/index.vue import Error from @/views/404/index.vue export cons

循环结构的运用

乘法口诀起源于中国&#xff0c;是古代人进行乘法、除法、开方等运算的基本法则&#xff0c;距今已经有两千多年的历史了&#xff0c;如何运用现代计算机技术快速写出九九乘法表呢&#xff1f; 循环结构可以用来重复执行一条或者多条语句&#xff0c;利用循环结构可以减少源程序…

【JAVA-Day43】Java常用类Calendar解析

Java常用类Calendar解析 Java常用类Calendar解析&#xff0c;科学处理Java日期数据摘要 &#x1f4dd;介绍java.util.Calendar类 &#x1f4c5;什么是java.util.Calendar&#xff1f;为什么需要使用它&#xff1f; Calendar类的基本用法 &#x1f4c6;如何创建一个Calendar对象…

nocos注册中心使用教程

1.下载和安装 进入到官网下载就好了 解压 启动 2.新建提供者模块 2.1新建提供者模块cloudalibaba-provider-payment9001 2.1.1在父项目中新加入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-depend…

<图像处理> 图像插值算法

图像插值算法 图像插值在图像处理中常用于调整图像尺寸或变形&#xff0c;其目标是根据给定像素点周围像素点的信息来预测该像素点的值。 常见的图像插值算法可以分为两类&#xff1a;自适应和非自适应。自适应的方法可以根据插值内容的特点来进行调整&#xff0c;而非自适应…

港科大提出适用于夜间场景语义分割的无监督域自适应新方法

跟大家分享港科大提出的无监督域自适应夜间场景语义分割方法&#xff0c;该方法对夜间的动态目标和小目标做了针对性的优化。 论文标题&#xff1a;Towards Dynamic and Small Objects Refinement for Unsupervised Domain Adaptative Nighttime Semantic Segmentation机构&…

UGUI交互组件ScrollBar

一.ScrollBar的结构 对象说明Scrollbar挂有Image和Scrollbar组件的主体对象Sliding Area表示滑动范围Handle滑块 二.Scrollbar的属性 属性说明Handle Rect控制柄对象的引用Direction拖动控制柄时滚动条值增加的方向Value滚动条的当前值&#xff0c;范围为 0.0 到 1.0Suze控制柄…

【Python搜索算法】深度优先搜索(DFS)算法原理详解与应用,示例+代码

目录 1 基本原理 2 DFS算法流程 3 时间复杂度 4 空间复杂度 5 DFS算法应用案例&#xff1a; 5.1 解决路径查找问题 5.2 解决图的连通性问题 5.3 拓扑排序 5.4 在树结构中进行深度遍历 深度优先搜索&#xff08;DFS&#xff09;是一种重要的图遍历算法&#xff0c;用…

容性耦合和距离的关系

容性耦合和距离的关系 在电路板设计中&#xff0c;耦合是指两个或多个电路元件之间的相互作用&#xff0c;这种相互作用会影响到电路的性能。而容性耦合是指通过电场进行耦合的一种方式&#xff0c;它可以通过电容器的作用使得信号在电路板中传递&#xff0c;但同时也会带来一些…

HBuilder创建uniapp默认项目导入uview(胎教)

1&#xff1a;更新HBuilder 建议更新 2&#xff1a;更新插件 我本人在没有更新插件的情况下报错了&#xff0c;找到了**这个大佬**解决问题&#xff0c;所以建议更新插件 先卸载uni-app&#xff08;Vue2&#xff09;编译 再重新安装 uni-app&#xff08;Vue2&#xff09;…

RabbitMQ从0到1完整学习笔记二:《高级篇》

目录 1. 发送者的可靠性 1.1.生产者连接重试机制 1.2.生产者确认机制&#xff08;发布确认&#xff09; 1.3.实现生产者确认 1.3.1.开启生产者确认 1.3.2.定义ReturnCallback 1.3.3.定义ConfirmCallback 拓展&#xff1a; confirm 模式细节处理 2.MQ的可靠性 2.1.数据持久化 2.…

论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash

论文阅读&#xff1a;Seeing in Extra Darkness Using a Deep-Red Flash 今天介绍的这篇文章是 2021 年 ICCV 的一篇 oral 文章&#xff0c;主要是为了解决极暗光下的成像问题&#xff0c;通过一个深红的闪光灯补光。实现了暗光下很好的成像效果&#xff0c;整篇文章基本没有任…

Hadoop3教程(十一):MapReduce的详细工作流程

文章目录 &#xff08;94&#xff09;MR工作流程Map阶段Reduce阶段 参考文献 &#xff08;94&#xff09;MR工作流程 本小节将展示一下整个MapReduce的全工作流程。 Map阶段 首先是Map阶段&#xff1a; 首先&#xff0c;我们有一个待处理文本文件的集合&#xff1b; 客户端…