基于FPGA的按键消抖
按键工作原理

当KEY1按下时,整条电路就会导通,这个时候KEY1就是低电平;
当KEY1松开时,整条电路就会断开,这个时候KEY1就是高定平;
我们可以通过判断KEY1的高低电平来判断按键是否被按下。
为什么按键消抖
由于机械按键的物理特性缘故,按键在按下的过程中,会出现一段时间的抖动,同时在放开按键的过程中也出现一段时间的抖动,这就导致在判断时候可能检测为多次的按键按下,一般我们认为检测到一次按键为低电平,就可以认为按键被按下了,所以我们在使用按键时必须进行消抖,以保证按键被按下时只检测到一次低电平。
图1是未消消抖,可以看到按键在按下和松开是会存在抖动,一般是在20ms左右,如果在这个抖动区间对按键进行判断就会出现多次按下的结果,影响实际应用。

图2是按键消抖后的结果,我们判断到抖动后,做一个固定的时间延迟,延迟之后对按键进行对应的采样判断即可。

按键框计图 
key_debouncer模块实现计数功能:当按键输入有变化时,计时器清零,否则就累加,直到加到一个预定值(例如 10ms),就认为按键稳定,输出按键值,这样就得到以后没有抖动的按键值。
edge_detect:对输出的稳定按键值做上升沿或者下降沿判断就可以了。
系统程序框架

本实验是通过按键来控制流水灯的变化,每当按键按下一次,流水灯就变化一次。

视频讲解可以关注B站账号

相关文章:
基于FPGA的按键消抖
按键工作原理 当KEY1按下时,整条电路就会导通,这个时候KEY1就是低电平; 当KEY1松开时,整条电路就会断开,这个时候KEY1就是高定平; 我们可以通过判断KEY1的高低电平来判断按键是否被按下。 为什么按键消…...
1.网络编程-网络协议
目录 网络编程是什么 网络编程三要素 OSI七层网络模型 TCP/IP五层模型 SSL/TLS 是哪层协议 网络编程是什么 网络编程是计算机科学中的一个重要领域,它涉及到编写能够在网络环境中进行通信的程序。网络编程的核心目标是使不同的设备能够通过网络交换信息&#…...
代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(2)
校准曲线图表示的是预测值和实际值的差距,作为预测模型的重要部分,目前很多函数能绘制校准曲线。 一般分为两种,一种是通过Hosmer-Lemeshow检验,把P值分为10等分,求出每等分的预测值和实际值的差距 另外一种是calibrat…...
金融数据_Scikit-Learn决策树(DecisionTreeClassifier)实例
金融数据_Scikit-Learn决策树(DecisionTreeClassifier)实例 逻辑回归: 逻辑回归常被用于二分类问题, 比如涨跌预测。你可以将涨跌标记为类别, 然后使用逻辑回归进行训练。 决策树和随机森林: 决策树和随机森林是用于分类问题的强大模型。它们能够处理非线性关系, 并且对于特征…...
bash的login shell与non-login shell,以及各自的初始化过程
识别login shell与non-login shell login shell 可能是以-开头的 [almalinuxVM-AlmaLinux8-tmpl-wanlinwang ~]$ echo $0 -bash # "-" is the first character. Therefore, this is a login shell.或者以--login启动的bash [almalinuxVM-AlmaLinux8-tmpl-wanlinw…...
为什么苹果 Mac 电脑需要使用清理软件?
尽管 Apple Mac 电脑因其卓越的性能、简洁高效的 macOS 操作系统及独特的美学设计备受全球用户青睐,但任何电子设备在长期使用后都难以避免面临系统资源日渐累积的问题。其中一个重要维护需求在于,随着使用时间的增长,Mac电脑可能会由于系统垃…...
33. UE5 RPG使用增强输入激活GameplayAbility(三)
在前面的文章,我们实现了使用GameplayTag和InputAction的对应绑定的数据,并且添加到了增强输入映射的上下文中,实现了通过按键打印对应的GameplayTag,这只是我们基础需要制作的。目的主要是为了实现在GameplayAblity上面设置对应的…...
speech to text 库FastASR交叉编译arm target的配置
FastASR是一个比较方便的SPEECH TO TEXT的AI库。开源。下面介绍下其在交叉编译到ARM target时候的交叉编译的cmake配置: cmake_minimum_required(VERSION 3.10)project(FastASR)SET(CMAKE_C_COMPILER "/home/xxx/buildroot/output/platform_name/host/bin/aar…...
WPS快速将插入Excle数据插入Word
前置条件: 一张有标题、数据的excle表格word中的表格与excle表格标题对应或包含电脑已经安装WPS软件 第一步、根据word模板设计excle模板,标头对应 第二步、word上面选【引用】--【邮件】,选打开数据源,找到excle文件,…...
Springboot 集成Rabbitmq之延时队列
1.首先确保已经引入了Spring AMQP和RabbitMQ的相关依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2. 创建一个普通队列并设置TTL&#x…...
【云开发笔记NO.22】运用云原生产品打造技术中台
一、云原生产品与技术中台的结合点 云原生产品以其容器化、微服务化、自动化等特性,为技术中台的建设提供了强大的技术支持。容器化技术使得应用可以更容易地进行部署和管理,提高了应用的可移植性和弹性。微服务架构则让应用更加模块化,便于…...
C++进阶(五) 哈希
1. unordered系列关联式容器 1.1 unordered_map 1.2 unordered_map的接口说明 2. 底层结构 2.1 哈希概念 2.2 哈希冲突 2.3 哈希函数 2.4 哈希冲突解决 2.4.1 闭散列 2.4.2 开散列 3. 模拟实现 3.1 unordered_set 3.2 unordered_map 4.哈希的应用 4.1 位图 4.1.…...
【算法基础】基于异或的排序、基于异或的经典面试题
文章目录 1. 传统交换2. 异或与异或的规律3. 基于异或的排序4. 需要注意的地方5. 经典面试题15.1 题目5.2 思路5.3 实现 6. 经典面试题26.1 题目6.2 思路6.3 实现 1. 传统交换 传统交换方法如下: def swap(i, j):tmp ii jj tmp通过开辟一个额外的变量空间&…...
HTML2:列表和表格
列表 有序列表 ordered list ol 无序列表 unordered list ul 定义列表 definition list dl 1,有序列表 每条列表前自带一个序号 2,无序列表 每条列表前自带一个小圆点 3,定义列表 注意:dl中放的不是li列表而是dt列表和dd表项 dt代表术语标题 dd代表术语内容 一个…...
用于无人机小型化设计的高精度温补晶振
用于无人机小型化设计的高精度温补晶振:TG2016SMN和TG2520SMN。无人机的发展可以说是非常的迅速,在安防,农业,交通,电力,直播等领域经常能看到无人机大显身手。无人机的应用场最是非常的广泛,功能更强&…...
轨迹规划 | 图解最优控制LQR算法(附ROS C++/Python/Matlab仿真)
目录 0 专栏介绍1 最优控制理论2 线性二次型问题3 LQR的价值迭代推导4 基于差速模型的LQR控制5 仿真实现5.1 ROS C实现5.2 Python实现5.3 Matlab实现 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全…...
工业视觉检测
目录 我对工业视觉检测的了解 一、关键组成部分 二、应用场景 三、技术挑战 我对工业视觉检测的了解 工业视觉检测是利用机器视觉技术对产品质量进行自动化检查的过程,它在制造业中扮演着至关重要的角色,用于确保产品质量、提高生产效率、减少人工成…...
wheeltec轮趣ROS教育机器人的网络连接
一、术语解析 宿主机:宿主机是指物理主机,比如用于开发测试的笔记本电脑和台式机电脑。 虚拟机:虚拟机是指安装在宿主机的VMware,推荐在宿主机上安装虚拟机,官方提供虚拟机的镜像以及配套的开发环境。 ROS主机&…...
【Linux ARM 裸机】开发环境搭建
1、Ubuntu 和 Windows 文件互传 使用过程中,要频繁进行 Ubuntu 和 Windows 的文件互传,需要使用 FTP 服务; 1.1、开启 Ubuntu 下的 FTP 服务 //安装 FTP 服务 sudo apt-get install vsftpd //修改配置文件 sudo vi /etc/vsftpd.conf//重启…...
怎么保证缓存与数据库的最终一致性?
目录 零.读数据的标准操作 一.Cache aside Patten--旁路模式 二.Read/Write Through Pattern--读写穿透 三.Write Back Pattern--写回 四.运用canal监听mysql的binlog实现缓存同步 零.读数据的标准操作 这里想说的是不管哪种模式读操作都是一样的,这是一种统一…...
3步实现BERT模型轻量化部署与性能优化:基于Torch-Pruning的结构化剪枝指南
3步实现BERT模型轻量化部署与性能优化:基于Torch-Pruning的结构化剪枝指南 【免费下载链接】Torch-Pruning [CVPR 2023] Towards Any Structural Pruning; LLMs / Diffusion / Transformers / YOLOv8 / CNNs 项目地址: https://gitcode.com/gh_mirrors/to/Torch-P…...
Bilibili-Evolved性能优化实战:突破60fps流畅播放全解析
Bilibili-Evolved性能优化实战:突破60fps流畅播放全解析 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved Bilibili-Evolved作为强大的哔哩哔哩增强脚本,通过深度优化浏…...
Amlogic S9XXX设备系统改造完全指南:从入门到进阶
Amlogic S9XXX设备系统改造完全指南:从入门到进阶 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk35…...
3个关键场景与4步操作:深入解析RevokeMsgPatcher防撤回工具的技术实现与应用实践
3个关键场景与4步操作:深入解析RevokeMsgPatcher防撤回工具的技术实现与应用实践 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目…...
从零实践:个人电脑上运行26M小参数GPT的预训练、微调与推理全流程指南
1. 为什么选择26M小参数GPT 在个人电脑上训练大语言模型听起来像天方夜谭,但26M参数的GPT模型让这成为可能。这个参数规模比主流的数十亿参数模型小了上千倍,但保留了GPT的核心架构和训练流程。我实测下来,在消费级显卡(如RTX 306…...
2026年,市面上正规SSL证书品牌众多,哪家才是真正专业之选?
在当今数字化时代,网络安全至关重要,SSL证书作为保障网站安全的关键工具,其重要性不言而喻。2026年,市面上正规的SSL证书品牌众多,企业在选择时往往会感到困惑。本文将为大家分析如何选择专业的SSL证书品牌,…...
事件驱动RTOS EventOS的创新设计与应用实践
1. 事件驱动型RTOS的创新设计 在嵌入式系统开发领域,实时操作系统(RTOS)一直是关键基础设施。传统RTOS如FreeRTOS、uC/OS等大多采用基于时间片轮转的任务调度机制,而EventOS则开创性地采用了事件驱动架构,这在资源受限的嵌入式环境中具有独特…...
信号处理学习笔记5:卡尔曼滤波理论
卡尔曼滤波,用直白的话来讲, 就是有多个不确定的结果,经过分析、推理和计算,获得相对准确的结果。 它的核心特点是: 能够预测数据的未来趋势\({x}_{k}^{ }\) 结合当前数据进行修正,使预测更加准确 可以处理…...
大模型岗位大盘点!小白也能快速上手的5大方向,速来抄作业!
作者参加春招宣讲会后,对大模型岗位产生兴趣,但因自身条件感到迷茫。文章详细盘点了大模型相关岗位,包括核心算法、应用算法、系统与基建、数据与评测、工程开发、产品与运营六大类,并分析了各岗位的职责与要求。作者建议小白可从…...
用Verilog在FPGA上实现一个真实的十字路口红绿灯(附完整代码与仿真)
从零构建FPGA十字路口交通灯控制系统:Verilog实战指南 十字路口交通灯控制是数字逻辑设计的经典案例,也是FPGA初学者从理论迈向实践的重要一步。本文将带你完整实现一个基于Xilinx Basys3开发板的交通灯控制系统,涵盖状态机设计、时序约束、仿…...
