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
    +关注

    关注

    1630

    文章

    21759

    浏览量

    604301
收藏 人收藏

    评论

    相关推荐

    米尔-紫光PG2L100H国产FPGA开发板试用】按键功能测试报告

    一、准备工作 硬件准备 PG2L100H FPGA开发板 USB Type-C数据线 12V电源适配器 Windows 10电脑 软件环境 PDS开发环境 官方按键示例工程 按键资源说明 用户
    发表于 12-06 11:04

    FPGA加速深度学习模型的案例

    FPGA(现场可编程门阵列)加速深度学习模型是当前硬件加速领域的一个热门研究方向。以下是一些FPGA加速深度学习模型的案例: 一、基于FPGA
    的头像 发表于 10-25 09:22 260次阅读

    基于FPGA实现按键处理

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

    为什么按键那么重要

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

    如何在FPGA中实现按键

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

    【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第三章)键控流水灯实验例程

    信号有:流水灯控制信号; 内部功能处理: &lt;1&gt;内部需要对按键信号做处理; &lt;2&gt;按键触发计数器(计数值输出
    发表于 04-29 16:06

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

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

    怎么做按键

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

    【紫光同创盘古PGX-MINI-4K教程】——(盘古PGX-MINI-4K开发板/PGC4KD-6ILPG144第三章)键控彩灯实验例程

    ;内部需要对按键信号做处理; &lt;2&gt;按键触发计数器(计数值输出)改变继而调整彩灯的状态; 按键
    发表于 04-24 18:15

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

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

    【紫光同创盘古PGX-Lite 7K教程】——(盘古PGX-Lite 7K开发板/PGC7KD-6IMBG256第三章)​键控彩灯实验例程

    ;gt;内部需要对按键信号做处理;&lt;2&gt;按键触发计数器(计数值输出)改变继而调整彩灯的状态;按键
    发表于 03-27 17:58

    fpga学习需要具备哪些课程

    FPGA(Field Programmable Gate Array)学习需要具备一系列的课程知识和实践技能
    的头像 发表于 03-14 15:51 1233次阅读

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

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

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

    按键通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也
    的头像 发表于 02-17 17:07 1.8w次阅读
    为什么要进行<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>的方法