按键作为一种机械开关,在进行按键操作时,机械接触点的弹性及电压突变等原因,在机械开关合闭的时候会出现电压抖动,因此在实际的应用当中需要做一定的处理。
一般按键按下就是低电压,这种按键去抖动的关键就是获取稳定的低电压电平状态,因此,对于对于一个按键信号,可以用一个脉冲信号对其进行采样,如果连续三次采样都为低电平的话,就认为是按键被按下。其数字电路原型为下图
其实,我们在做FPGA设计之前,就应该大概知道自己的coding 在FPGA芯片上面会映射成什么电路,这样写的代码才是可靠的,有了上面的原理图,那么Verilog代码就很容易了,如下
input wire Clk ; input wire key_in ; output wire key_out ; reg key_dly1; reg key_dly2; reg key_dly3; always @(posedge Clk) begin if(Rst_n == 1'b0) begin key_dly1 <= 1'b0; key_dly2 <= 1'b0; key_dly3 <= 1'b0; end else begin key_dly1 <= key_in ; key_dly2 <= key_dly1; key_dly3 <= key_dly2; end end assign key_out = key_dly1 | key_dly2 | key_dly3;
对于复杂的电路我们也可以把他分解为每一个触发器,然后心里有个大概的硬件原理图,这样写代码才胸有成竹。
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
FPGA设计
+关注
关注
9文章
428浏览量
26502 -
触发器
+关注
关注
14文章
2000浏览量
61124 -
FPGA芯片
+关注
关注
3文章
246浏览量
39792
原文标题:按键抖动消除 verilog
文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
关于按键抖动问题的解决
电路图如下,,左侧按钮按下后给74LS192提供脉冲信号,但实物焊接时却存在按下一次按钮,192多次计数。是因为选用的按钮存在按键抖动,按下一次按钮会提供多个脉冲信号,让192多次计数吗?如果是,有什么办法能消除这种
发表于 06-25 02:31
消除按键抖动的两种方法分享
按键也是机械装置,在按下或放开的一瞬间会产生抖动,如下图: 消除方法有两种: 软件除抖和硬件除抖,其中硬件除抖是应用了电容对高频信号短路的原理。 软件除抖是检测出键闭合后执行一个延时
发表于 09-02 17:52
如何通过软件编程实现消除键盘的抖动
如何通过软件编程实现消除键盘的抖动?记文本答:由于按键是机械开关结构,所以当用手按下其中-一个键时,往往会出现所按键在闭合位置和断开位置之间发生跳几下后才会稳定到闭合状态的情况。在释放
发表于 07-22 08:24
运用外部中断函数消除按键抖动
目的实现:按键数码管数字加减,运用外部中断函数,消除按键抖动***仿真c代码#includecode unsigned char SEG[]={0XC0
发表于 03-02 06:31
按键消抖的原理和基于verilog的消抖设计
按键开关是各种电子设备不可或缺的人机接口。在实际应用中,很大一部分的按键是机械按键。在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统
发表于 02-11 01:14
•2.3w次阅读
按键弹跳消除模块的程序设计与应用
按键开关是电子设备人机交互的主要器件之一。按键大多是机械式开关结构,由于机械式开关的核心部件为弹性金属簧片,因而在开关切换的瞬间会在接触点出现来回弹跳的现象。对于灵敏度比较高的电路,这种弹跳现象引起的信号抖动会造成误动作而影响到
外部中断的按键抖动(按键消抖)
当我们写完一个外部中断程序测试时,例如按键计数和按键点亮led灯,我们可能会遇到一次按键按下松开却触发了多次外部中断,这是因为按键抖动的存在
发表于 11-22 15:36
•27次下载
单片机按键去抖动的方法
在使用按键时,我们想按一次按键,但在实际中却经常发现我们要的”一次“,实际上去并不是”一次“而可能是多次。为什么呢?这是因为,我们使用的机械按键,在我们按下时,并非只是接触一次,因为存在机械抖
FPGA如何消除时钟抖动
在FPGA(现场可编程门阵列)设计中,消除时钟抖动是一个关键任务,因为时钟抖动会直接影响系统的时序性能、稳定性和可靠性。以下将详细阐述FPGA中消除时钟
评论