FPGA按键消抖

打印 上一主题 下一主题

主题 897|帖子 897|积分 2691

简介

按键

按键是输入设备,一般来说,按键在没有按下的时候是高电平;当按键按下的时候,为低电平。
DE2-70 User Manual
Each switch provides a high logic level (3.3 volts) when it is not pressed, and provides a low logic level (0 volts) when depressed. Since the pushbutton switches are debounced, they are appropriate for use as clock or reset inputs in a circuit.
这里介绍到了按键抖动(Button Bouncing)和按键消抖(Button Debouncing)。
按键消抖

按键消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。
上图描述的是硬件的按键消抖。可见,消抖后,一次按键,只产生了一次电平变化。
这对我们接下来利用按键意义重大。
物理消抖

简单介绍下实现上图的消抖。
电容滤波

将电容并联在按键的两端,利用电容的放电的延时特性。将产生抖动的电平通过电容吸收掉。从而达到消抖的作用。

RS触发器

利用RS触发器来吸收按键的抖动。一旦有键按下,触发器立即翻转,触电的抖动便不会再对输出产生影响。

程序消抖

按键在FPGA中必不可少,我们需要利用按键对一些变量进行累加或累减。比如频率、分数等。
未消抖

在一开始的学习中,我们可能只用到了开关(switch),编写开关控制的程序类似于将开关当作一个布尔(Boolean)变量。
但是按键与开关不同,以下面这段代码为例,期望作用是 按键按下后,LED灯状态改变
[code]module Test(    input       sys_clk,    input       rst_n,    input       key,    output  reg led);    always@(posedge sys_clk or negedge rst_n)    begin        if(rst_n == 1'b0)             led

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表