查看: 2543|回复: 2

【软件篇】FPGA 按键防抖动,最精简的写法只有10行

[复制链接]
  • TA的每日心情

    2013-8-6 23:08
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-1-15 21:58:07 | 显示全部楼层 |阅读模式
    分享到:
           最近学了FPGA 一段时间,想自己做个真实的东西,笔者也是务实求真的人,呵呵。首先就选择了一个数字钟,当我昨晚了计数器模块,做按键校准的时候,就发现按键抖动的很厉害,没有C 语言做防抖动那么简单,因此我参考了网上很多博主的观点,总结了自己认为最简单,最精简的一个写法,如下: 进程模块内代码只有10行。哈哈

    reg key_reg1,key_reg2,key_out;
    always @( posedge clk)//CLK 50M
        begin
        count2<=count2+1;
        if(count2==500000)
        begin
            key_reg1<=key1;
            count2<=0;
        end
        key_reg2<=key_reg1;
        key_out<=key_reg2&(!key_reg1);
    end


          意思为定义2个寄存器,存储按键在2个周期内的数据,计数器是决定按键的采样频率,如果我们把按键的采样频率调高,那么 按键就会有2次相应,我试过吧计数器去掉,但是一直都是双数增加,很让我费解,在苦思冥想之际,悟出了可以通过延时,吧后面松手的一个电平跳变滤掉,哈哈!!顿时给大家分享下最简单的防抖动,
    key1 是低电平按下,当按下的时候,  key_out输出的是一个高电平。这个需要大家注意。

    如有bug 希望大家抛砖

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-1-15 22:10:54 | 显示全部楼层
    文章须分三部分1.秀靓照2.讲故事3.共分享{:soso_e181:},楼主再完善完善哦!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-8-6 23:08
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-1-16 23:09:58 | 显示全部楼层
    经典代码写法,真心没有靓照,哎!!!!!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    手机版|小黑屋|与非网

    GMT+8, 2025-1-22 18:09 , Processed in 0.148766 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.