关于FPGA的按键消抖问题

FPGA学习——按键消抖的多种实现方法 FPGA实现按键消抖包括状态机实现按键消抖 阅读详情

关于FPGA的按键消抖问题

相关的Verilog HDL代码如下:

wire key_send1_down,key_send2_down;
reg [2:0] key_send1_reg,key_send2_reg;

always @(posedge clk_9600 or negedge reset_n)
begin
	if (!reset_n)
	begin
		key_send1_reg <= 3'd0;
		key_send2_reg <= 3'd0;
	end
	else
	begin
		key_send1_reg[0] <= key_send1;
		key_send1_reg[2:1] <= key_send1_reg[1:0];
		key_send2_reg[0] <= key_send2;
		key_send2_reg[2:1] <= key_send2_reg[1:0];
	end
end

assign key_send1_down = key_send1_reg[2] && ~key_send1_reg[1];
assign key_send2_down = key_send2_reg[2] && ~key_send2_reg[1];

 

这种方法还是挺好的,只不过理解起来有点困难,在网络上有大概有两种方法,一种是类似于前面的这种方法,另一种是计数延时5~10ms来实现。相应的参考网址为:

http://wenku.baidu.com/view/aef08500b52acfc789ebc932.html

http://bbs.eeworld.com.cn/thread-106469-1-1.html

类似于前面的方法如下所示:

具体的Veilog HDL实现有:

reg [3:0] key_press;

//用于存放和读取按键的值,设置为reg可以写又可以读。key_press相当于原寄存器
always@(posedge clk or negedge rst_n)
if(!rst_n)
key_press <= 4'b1111;//复位
else 
key_press <={sw4_n,sw3_n,sw2_n,sw1_n};

reg[3:0] key_press_r; 

//每个时钟周期的上升沿将low_sw信号锁存到low_press_r中,low_press_r相当于新寄存器
always@(posedge clk or negedge rst_n)
if(!rst_n)
low_press_r <= 4'b1111;
else
key_press_r <= key_press;
wire[3:0] key_pressed = key_press_r & (~key_press);//实现检测是否有键按下,同时可以实现哪个键被按下。

最后一句代码,关键要注意两个寄存其中的时序关系。

但是这个方法,只能检测对于按下为低电平的电路,对于按下为高电平的,不能实现,因为只能在松开过程检测到有按键按下。

但是,这种方法消抖的实现还是不太好,经常就是按一次按键发送了两个甚至好几个数据。而另一种方法,就是通过计数实现延时判断的方法,这种方法目前还是不能实现。

 

实际上,前面的这种方法,消抖功能还是不太好。前面只用3位寄存器。而我猜想,如果把寄存器的位数该大一点,比如说改为4,那么,是否可以呢。这个当然目前还没有测试。

 

 

FPGA按键消抖模块 FPGA按键消抖模块 1) 说明:我们知道按键按下去和松开会产生抖动现象,这会影响到我们的操作,因此我们需要对按键进行消抖处理, 下面这个模块为按键消抖模块,三颗按键,用三个寄存器对按键进行消抖处理。 2) 端口 输入:clk,reset,key; 输出:debkey; 3) 代码 //按键去抖模块 module debkey(clk,reset,key,debkey); 阅读详情

相关推荐

FPGA按键消抖

FPGA按键消抖

weixin_46472536的博客 670

FPGA电子秤设计避坑指南:I2C通信、按键消抖与数码管多数据显示的常见问题

本文深入探讨FPGA电子秤设计中的关键技术挑战,包括I2C通信稳定性优化、按键消抖方案和数码管多数据显示逻辑。通过Verilog代码实例和工程实践,提供解决I2C丢包、按键误触发和显示混乱等问题的量产级方案,帮助开发者提升数字电子秤的可靠性和性能。

weixin_30733003的博客 470

按键原理和软硬件按键消抖动

系统的信号输入中,键盘因其结构简单而被广泛使用。因此,对键盘的输入(逻辑0或1)进行准确采样,避免错误输入是非常有必要的。理想的键盘输入特性如图1所示:按键没有按下时,输入为逻辑1,一旦按下则输入立刻变为逻辑0,松开时输入则立刻变为逻辑1。 图 1理想键盘输入特性 然而实际的键盘受制造工艺等影响,其输入特性不可能如图1完美。当按键按下时,在触点即将接触到完全接触这段时间里,键盘的通断状态很

shenlei314的专栏 4万+

FPGA-----按键消抖

按键抖动:按键抖动通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。当按下一次按键,可能在A点检测到一次低电平,在B点检测到一次高电平,在C点又检测到一次低电平。同时抖动是随机,不可测的。那么按下一次按键,抖动可能会误以为按下多次按键。所以要对按键进行消抖。

2201_75683149的博客 862

FPGA Verilog实现的按键消抖技术实战

Verilog是一种用于电子系统的硬件描述语言(HDL),它于1984年由Gateway Design Automation公司推出。其设计目的就是为了帮助工程师们能够以更加高效和一致的方式模拟和验证电子电路。Verilog的发展与特点可以从以下几个方面来阐述:模块化设计能力:Verilog支持模块化设计,允许工程师将复杂的设计分解为更小、更易于管理的部分。广泛的行业支持:自诞生以来,Verilog迅速被广泛接受,成为FPGA和ASIC设计的标准。仿真和综合兼容性。

weixin_26854475的博客 895

从BIN文件到可烧录程序:深入理解ADI DSP程序读取背后的原理与安全边界

本文深入探讨了ADI DSP程序从BIN文件到可烧录程序的转换原理与安全边界,详细解析了JTAG接口、仿真器工作流程及Flash存储结构。通过Visual DSP++工具,开发者可以理解程序读取的底层机制,同时强调了知识产权保护的重要性,为嵌入式开发提供了实用建议。

weixin_27956639的博客 263

基于FPGA的按键消抖

fpga实现按键消抖

qq_52548731的博客 5015

手把手教你配置RK3588的FFmpeg+RKmpp:从解码到RGA转换的完整避坑指南

本文详细介绍了在RK3588平台上配置FFmpeg+RKmpp进行硬件解码和RGA图像处理的完整流程,包括环境准备、DRM Prime解码输出实战、RGA硬件加速转换技巧以及全链路性能调优。通过具体代码示例和问题排查指南,帮助开发者高效实现视频处理流水线,显著提升性能并降低CPU占用率。

weixin_28366475的博客 473

【FPGA入门】第五篇、按键消抖

博主学习FPGA的笔记

大屁桃的博客 5726

Ubuntu20.04 高效安装企业微信的完整指南

本文提供了在Ubuntu20.04系统上高效安装企业微信的完整指南,详细介绍了通过Deepin-wine环境运行Windows版企业微信的步骤和优化技巧。内容包括系统环境检查、依赖安装、企业微信包的获取与安装、首次运行配置及常见问题解决方案,帮助开发者在Ubuntu系统中流畅使用企业微信进行办公通讯。

weixin_42568801的博客 351

Hierarchical Flow Partition(Top-down&&Bottom-up)

hierarchy flow是将设计切分成多个block,分别处理单个block,然后完成后,将它们进行拼接以完成最终的chip。一般划分为三个阶段:chip planning;physical budget就是pin assignmenthierarchy flow实现的方法有两种,一种是top-down,另一种是bottom-up,无论是哪种,都是都要通过flatten的方法分别全局范围进行优化实现。

qq_39493558的博客 3065

【FPGA】按键消抖

目录一丶按键原理二丶按键消抖三丶消抖方式1.延迟采样①任务描述②编写代码③时序图分析④仿真2.抖动稳定后采样①任务描述②编写代码③时序图分析④仿真四丶消抖场景五丶消抖应用 一丶按键原理 我们首先来看原理图 可以看到有4条输入线接到FPGA的IO口(最左边四个KEY)上,分两种情况: 1.当按键KEY1按下时,D3V3(也就是电源)通过电阻R(原理图上折线的那一段)然后再通过按键KEY1最终进入GND形成一条通路,那么这条线路的全部电压都加到了R这个电阻上,KEY1(最左边四个IO口)这个引脚就是个低电平。

wanerXR的博客 1万+

LSCM最小二乘保角参数化

LSCM最小二乘保角参数化 最小二乘思想 已知一组点的数据(x,y) x x1x_1x1​ x2x_2x2​ x3x_3x3​ … xnx_nxn​ y y1y_1y1​ y2y_2y2​ y3y_3y3​ … yny_nyn​ 可以近似为线性关系 y=ax+by=ax+by=ax+b ,目标为确定常数 aaa , bbb ; 解法:找到 aaa , bbb ,使得所有 yiy_iyi​ 与 axi+bax_i+baxi​+b 偏差的平方和 Q=∑i=1n(yi−axi−b)2 Q=\s

weixin_49732532的博客 4252

FPGA按键消抖实战:用状态机+Modelsim仿真搞定机械按键抖动问题

本文详细介绍了FPGA开发中机械按键消抖的实战方法,通过状态机设计和Modelsim仿真解决按键抖动问题。文章深入分析了抖动现象特征,对比不同消抖方法的优缺点,并提供了Verilog实现代码和仿真验证方案,帮助开发者构建稳定可靠的按键处理模块。

time3的博客 313

YOLO26 vs YOLOv12 vs YOLOv10:工业场景性能实测,速度/精度/部署难度全对比(附完整测试代码)

YOLO26:工业场景全能型选手,无NMS+无DFL设计让部署和推理都省心,小目标精度优势明显,CPU推理速度提升43%,适合大多数生产线场景YOLOv12:中大型目标检测专家,Area Attention在复杂背景下表现出色,适合汽车、家电等大型零部件检测YOLOv10:速度狂魔,GPU上性能领先,轻量化版本适合边缘部署,但小目标精度略逊,适合对实时性要求极高的分拣线场景。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 623

C#实战大华智能安防系统:从SDK封装到视频流与智能报警的全链路落地

本文将介绍C#集成大华SDK开发安防系统的实战经验,重点解决多路视频预览卡顿和报警延迟问题。文章通过三层架构设计(SDK封装层、业务服务层、应用层)实现解耦,详细分析线程安全封装、高效解码显示和智能事件联动等核心技术。针对16路摄像头同时预览时CPU占用率过高的问题,提出使用子码流拉流与异步解码的优化方案,并总结8个常见开发陷阱的解决方案。文中还提供了大华智能安防系统的完整架构图,展示从设备层到应用层的交互流程,特别强调业务服务层中视频流服务和智能报警服务的核心功能设计。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 430

关于FPGA设计中的机械按键消抖问题

关于FPGA设计中的机械按键消抖问题

李亚琦的博客 561

基于 C# 实现 RTSP 摄像头监控分屏系统:从流媒体获取到多画面显示

通过本文的讲解,我们介绍了如何在 C# 中实现 RTSP 摄像头监控分屏系统。我们使用了FFmpeg和VLC两种不同的方法来获取和解码 RTSP 流,并通过PictureBox控件和控件实现了分屏布局。两种解码方案都非常强大,可以根据实际需求选择最适合的方案。通过这种方式,您可以轻松地在 C# 中集成 RTSP 流,并将多个摄像头的视频流实时显示在同一屏幕上,进行监控和分析。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2307

九、按键消抖

按键是常见的电子元器件,在电子设计中应用广泛。在FPGA的实验工程中,我们可以使用按键作为系统复位信号或者控制信号的外部输入。目前按键种类繁多,常见的有自锁按键、薄膜按键等。我们开发板上的按键也是按键的一种,其特点是接触电阻小,手感好,按键按下或谈起时有清脆响声,但由于其构造和原理,在按键闭合及断开的瞬间均伴有一连串的。本文章将根据机械按键的构造与原理设计并实现模块。以开发板上的物理按键作为输入信号,使用设计的按键消抖模块对输入的按键信号进行消抖处理,输出能够正常使用的按键出发信号。

m0_68276272的博客 2408

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Verilog实现一种奇怪的按键消抖

自创的一种按键消抖的方式,如有雷同,纯属巧合。

2403_85227564的博客 1153

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

FPGA之按键消抖

按键消抖 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。 消抖原理 抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。在开始的抖动时间内,按键会不断地断开闭合,这就会导致电路认为我们在不断的按下按键,对实验造成很大的影响。 消抖的常用方法为延时消抖。延时消抖是指在按下按键5-10ms后,等按键不再抖动后进

梅菜扣肉 1372

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

FPGA初级项目6——利用状态机实行按键消抖

利用状态机实行按键消抖项目,附有详细原理与源代码

m0_67400176的博客 1206

边沿检测、按键消抖的Verilog实现

边沿检测、按键消抖的Verilog实现 边沿检测和按键消抖是FPGA设计中比较经常用到的小模块,本篇介绍一下这两个部分的简单实现。 1.边沿检测 边沿检测技术在项目应用中,非常广泛。如要有效捕获信号跳变沿,边沿检测技术的应用是必不可少的。其中有如下几个方面 (1)将时钟边沿使能转换为边沿检测使能,使时钟同步化。 (2)捕获信号的突变(UART,SPI 等信号使能突变) (3)逻辑分析仪中信号的边沿检测。 (4)按键消抖中也可以使用 就如上图所示,边沿检测就是清楚边沿0和1的变化顺序,时间一般都是从左往右进

qq_38318540的博客 4474

FPGA自学之路4(按键消抖)

自学之路

weixin_42040007的博客 568

FPGA-按键消抖

FPGA按键消抖

qq_45956475的博客 386

FPAG:按键消抖

本文介绍了机械按键抖动特性及两种消抖方法。机械按键在操作时会产生几毫秒到几十毫秒的电压波动,导致信号跳变。消抖方法包括:1) 软件消抖-利用FPGA计数器,在20ms稳定期后确认按键状态;2)硬件消抖-采用多级触发器过滤抖动信号。文中提供了Verilog实现代码,包括按键消抖模块(key_debounce.v)和核心消抖逻辑(ax_debounce.v),通过计数器管理和触发器同步实现稳定信号输出。

qq_43441284的博客 1297
上一篇: 日志记录(2012.5)
下一篇: 关于FPGA的时钟分频问题
小熊诺诺
博客等级 码龄15年 28粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值