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

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

3天内不再提示

FPGA应用篇要诀和技巧(一):FPGA去抖的那些事

工程师职场癌 2017-09-19 18:18 次阅读

代码如下:

3.png

4.png

程序分析:

去抖

去抖可分位硬件去抖和软件去抖,顾名思义硬件去抖就是通过硬件来达到去抖的目的,一般是用施密特触发器来实现,需要消耗硬件资源,在一些成本限制的时候,往往采用软件去抖。

软件去抖原理:一般按键的抖动频率是几十khz(故状态转移间隔为ms级,程序中我们采用20ms)整体思路是跳过这一段抖动,我们设计的去抖状态机如下:

假如按键按下时为低电平,idle为初始状态,当检测到有按键按下时即key_pre==0,进入delay1状态(注意:状态从idle到delay1需要20ms,相等于跳过抖动),若此时key_pre仍为0,则我们认为是按键按下,则进入下一状态,否则回到idle认为时抖动,到此为按下去抖。在press状态下,若检测到按键抬起即key_pre==1,则进入delay2状态,否则仍在press状态(防止有长时间按下),在delay2状态,若key_pre仍为1,则认为按键以抬起,则进入下一状态taiqi,至此完成抬起去抖,可以产生去抖后的信号

程序关键点:

第一:delay信号的产生

delay信号的高电平时间,只是一个主时钟的宽度,所以当delay==1时,状态转移alw块只会触发一次,而不是多次。

第二:去抖后信号key_out的产生(输出高电平表示按下)。

程序中我们采用

assign key_out=(state==taiqi && delay==1)?1'b1:1'b0;

有人认为当状态到taiqi是直接就可输出,为什么还要有delay==1这个条件呢?我们先看一下这两种仿真结果:

加上delay==1

6.png  

从图中我们可以明显看出,未加delay==1,key_out为1有很宽的脉宽,在以clk_50M为敏感信号是,会造成多次触发,而加上delay==1,key_out的宽度只为一个clk_50M主时钟宽度,达到去抖效果。

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

    关注

    1602

    文章

    21309

    浏览量

    593128
收藏 人收藏

    评论

    相关推荐

    fpga教程之——按键消

    电平,这次对按键进行操作则是对FPGA进行输入了。  2. 按键消  2.1 按键输入原理  首先,我们得打开EE_FPGA的硬件手册,找到按键部分的原理图。  如下图所示,这会大家就可以
    发表于 02-27 11:49

    FPGA设计实例】用FPGA实现开关按键

    本帖最后由 eehome 于 2013-1-5 10:10 编辑 本节将重点讲解,用FPGA实现按键的方法,在以往的按键中,大
    发表于 03-19 14:48

    FPGA完整教程基础版和高级版(免费)

    因为附件过大无法上传,大家自己新浪爱问下载吧名称叫:Altera FPGA CPLD设计(基础)和Altera FPGA CPLD设计(高级
    发表于 04-12 23:09

    【黑金原创教程连载】FPGA那些事儿-驱动I,每周更新

    从今天开始,我们将连载《FPGA那些事儿-驱动I》,每周更新次。 这篇连载文档,我们已经发布了三 【黑金原创教程】【
    发表于 06-09 13:58

    成为Xilinx FPGA设计专家(基础)

    本帖最后由 jfzhangjin 于 2015-1-8 10:48 编辑 之前也直在做关于Xilinx FPGA各个方面的文章,但是总体而言就显得有些杂,总希望能有人能整理下便于查阅;另外
    发表于 11-03 17:15

    成为Xilinx FPGA设计专家(基础)

    对大家有所帮助,当然更加希望Xilinx? FPGA工程师/爱好者能跟我们起来探讨学习!《成为Xilinx FPGA设计专家》这本电子书,计划分为3大部分:基础、提升
    发表于 11-05 13:56

    FPGA按键消的方法

    FPGA按键消的方法
    发表于 05-01 16:12

    大西瓜FPGA--FPGA设计高级--设计技巧

    查的内容之FPGA设计技巧,主要分为基础和进阶,基础主要是数字电路设计的基础知识,只有掌握了基础的数字电路设计基础,才能深刻理解和掌握进阶设计技巧,进阶的设计技巧都是基础数字电路设计的复杂变形,最后
    发表于 02-26 09:40

    fpga按键

    /*2017.3.11 zcin xidianreset低电平复位key_pre直接接去前的按键按下为低key_out为后的按键 输出高表示按下。*/module debounce(input
    发表于 03-12 21:52

    深入剖析FPGA

    是,会造成多次触发,而加上delay==1,key_out的宽度只为个clk_50M主时钟宽度,达到效果。给大家推荐个微信公众号 名字 FP
    发表于 04-04 15:41

    至芯昭哥带你学FPGAFPGA_100天之旅_按键消

    至芯昭哥带你学FPGAFPGA_100天之旅_按键消
    发表于 08-16 10:29

    FPGA那些事儿-驱动I

    FPGA那些事儿-驱动I
    发表于 09-28 13:58

    FPGA学习指南合集:Verilog HDL那些事儿(建模,时序,整合

    Verilog HDL那些事儿建模:在众多的Verilog HDL 参考书,隐隐约约会会出现这样的个“建模”。建模在Verilog HDL的世界里是个重要的基础,很多初学Veri
    发表于 04-20 15:45

    FPGA学习与开发板的那些

    。今天让我们来好好聊聊,学FPGA是不是定要买开发板。1、学习FPGA需要开发板,但有开发板≠学会FPGAFPGA要不要买开发板的问题不
    发表于 12-15 16:41

    STM32单片机按键消FPGA按键消的相关资料分享

    写在前面:STM32单片机按键消FPGA按键消大全按键:由上图可以看出理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间
    发表于 01-18 06:39