0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA学习系列:11. 按键消抖设计

FPGA学习交流 2018-06-07 13:51 次阅读

设计背景:

在我们的工程设计中我们会或多或少的用到开关,开关分为好多种,不管是哪一种开关在按下还是抬起都会有轻微的抖动,为了使我们的设计更加准确化,今天我们将学习按键消抖。

设计原理:

本次的设计是一个消抖的设计,在我们用的按键中,按下时低电平,抬起时高地平,可是在现实中按键的瞬间高低电平的变化并不是我们想的那样,而是下面的情况。

image.png



我们称按下到s的时候称为前抖,s到抬起后称为后抖,在正常的情况下就是上面电平变化波形,那么我们为了消除不必要的波形,我们就应该在s区域来判断按键是否按下也就是低电平,同理我们抬起的时候也要间隔一段时间后来确定按下,一般我们间隔的时间设置为 10ms ---- 20ms之间都可以,所以说消抖就是把现实中按下抬起的抖动消除,生成我们理想的高低高的波形。

设计架构图:

image.png 

设计状态转移图image.png 

设计代码:

设计模块

0modulekey_xiaodou(clk,rst_n,key,key_x);

1

2 inputclk; //输入输出

3 inputrst_n;

4 inputkey;

5

6 outputregkey_x;

7 //parameter T10ms = 500_000; //设计一个10ms的计数参数

8 parameterT10ms =50;

9

10 parameters0 =2'b00;//4个状态

11 parameters1 =2'b01;

12 parameters2 =2'b10;

13 parameters3 =2'b11;

14 reg[18:0]count;

15 reg[1:0]state;

16 always@(posedgeclk ornegedgerst_n)

17 if(!rst_n)

18 begin

19 count <=19'b0;

20 state <=2'b0;

21 key_x <=1'b1;

22 end

23 else

24 begin

25 case(state)

26 s0:begin

27 if(key)//判断是否按键按下

28 begin

29 count <=1'b0;

30 key_x <=1'b1;

31 end

32 else

33 begin

34 if(count <T10ms -1)//按下就计数10ms

35 begin

36 count <=count +1'b1;

37 key_x <=1'b1;

38 end

39 else

40 begin//计数到了后给输出赋值为 0

41 key_x <=1'b0;

42 state <=s1;

43 end

44 end

45 end

46 s1:begin

47 if(~key)//判断是否按键抬起

48 begin

49 count <=1'b0;

50 key_x <=1'b0;

51 end

52 else

53 begin

54 if(count <T10ms -1)//抬起就计数10ms

55 begin

56 count <=count +1'b1;

57 key_x <=1'b0;

58 end

59 else

60 begin

61 key_x <=1'b1;//计数到了后给输 出赋值为1

62 state <=s0;

63 end

64 end

65 end

66 default:state <=0;

67 endcase

68 end

69endmodule

测试模块

0`timescale1ns/1ps

1

2 modulexiaodou_tb();

3

4

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21670

    浏览量

    601882
收藏 人收藏

    评论

    相关推荐

    基于FPGA实现按键处理

    引言: 按键在电子产品中经常用到,由于按键的机械特性,按键在闭合或松开的瞬间伴随着一连串的抖动,这样的抖动将直接影响设计系统的稳定性。因此,必须对抖动进行处理。本文介绍如何在FPGA
    的头像 发表于 10-24 14:54 166次阅读
    基于<b class='flag-5'>FPGA</b>实现<b class='flag-5'>按键</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>处理

    两种常见的硬件实现方式

    由于机械按键在操作过程中会产生抖动现象,这种抖动信号如果不加以处理,就可能导致单片机等电子设备误判按键状态,从而引发错误操作。本文将详细介绍两种常见的硬件实现方式:RS触发器和电容
    的头像 发表于 09-25 16:54 828次阅读
    两种常见的硬件<b class='flag-5'>消</b><b class='flag-5'>抖</b>实现方式

    为什么按键那么重要

    和错误操作。因此,进行按键处理显得尤为重要。 按键抖动的产生是由于机械触点的弹性特性所决定的。当按键被按下或释放时,触点并不会立即稳定地
    的头像 发表于 09-25 16:50 418次阅读
    为什么<b class='flag-5'>按键</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>那么重要

    如何在FPGA中实现按键

    FPGA(现场可编程门阵列)中实现按键是一个重要的设计环节,特别是在处理用户输入时,由于物理按键的机械特性和电气特性,
    的头像 发表于 08-19 18:15 1419次阅读

    【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第二章)按键实验例程

    灯、按键、拨码开关等。 二:实验目的 对按键PB0进行按键 三:实验原理 机械式弹片
    发表于 04-28 17:57

    怎么做按键

    大家是怎么做按键的 我是用一定时器做20ms定时,定时到在中断里设专门标志(20ms是否到,初始化为0),在主循环里当按键按下时在判断此标志,为0,就开启定时中断,而后返回主流程,
    发表于 04-28 07:39

    stm8触摸感应按键是怎样扫描的?

    stm8触摸感应 按键是怎样扫描,和怎样
    发表于 04-01 06:17

    stm32外部中断存在自身内部的吗?

    请问stm32外部中断存在自身内部的吗? 若存在请问如何配置
    发表于 03-11 06:15

    为什么要进行按键按键抖动的原理 按键的方法

    按键通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也
    的头像 发表于 02-17 17:07 1.7w次阅读
    为什么要进行<b class='flag-5'>按键</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>?<b class='flag-5'>按键</b>抖动的原理 <b class='flag-5'>按键</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>的方法

    单片机按键的原理和方法详解

    通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键
    的头像 发表于 12-22 10:06 8473次阅读
    单片机<b class='flag-5'>按键</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>的原理和方法详解

    【每周一练】盘古1K开发板 练习二:按键控制LED灯实验

    对输入信号进行如下处理: 对按键信号做处理,的延时在20ms; 对检测到的按键信号进行计
    发表于 12-21 22:45

    【每周一练】+盘古1K开发板+2. 按键控制RGB led

    :led_rgb<=`UD 12\'b1111_1111_1111; endcase end 3 实验效果 下载代码,实现效果见视频 4 学习总结 通过该实验,学习按键
    发表于 12-17 11:33

    【每周一练】盘古1K开发板 练习二:按键控制RGB灯

    实验目的 掌握按键原理,实现按键控制RDB灯颜色更换 实验要求 设计 8 种彩灯效果,选择一个按键作为控制输入,按下一次换一种显示效果
    发表于 12-10 16:43

    【每周一练】盘古1K开发板 练习二:按键控制彩灯实验

    ;lt;1>内部需要对按键信号做处理; <2>按键触发计数器( 计数值输出) 改变继而调整彩灯的状态; 按键
    发表于 12-09 14:55

    复位电路具体长什么样子呢?

    复位信号在使用前一般需要进行处理,也称为复位滤毛刺。复位的抖动可能会导致芯片产生多次复位动作,给系统带来不确定性和误差。
    的头像 发表于 12-04 14:53 1218次阅读
    复位<b class='flag-5'>消</b><b class='flag-5'>抖</b>电路具体长什么样子呢?