那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA實現(xiàn)按鍵消抖處理

FPGA技術實戰(zhàn) ? 來源:FPGA技術實戰(zhàn) ? 2024-10-24 14:54 ? 次閱讀

引言:按鍵在電子產品中經常用到,由于按鍵的機械特性,按鍵在閉合或松開的瞬間伴隨著一連串的抖動,這樣的抖動將直接影響設計系統(tǒng)的穩(wěn)定性。因此,必須對抖動進行處理。本文介紹如何在FPGA中實現(xiàn)按鍵消抖處理。

1. 原理概述

在機械按鍵的觸點閉合和斷開時,都會產生抖動,為了保證系統(tǒng)能正確識別按鍵的開關,就必須對按鍵的抖動進行處理。按鍵抖動如下圖所示。

wKgZoWcZ70mAC2W4AACAmfe5EFc997.png

圖1:按鍵機械抖動

wKgaomcZ70mACMGpAAB6oBD80YQ996.png

圖2:按鍵輸入在FPGA IO接口產生的抖動

抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。這是一個很重要的時間參數,在很多場合都要用到。按鍵穩(wěn)定閉合時間的長短則是由操作人員的按鍵動作決定的,一般為零點幾秒至數秒。按鍵抖動會引起一次按鍵被誤讀多次,如圖2所示。

按鍵消抖處理即:每次在按鍵閉合或松開期間,跳過這段抖動時間,再檢測按鍵的狀態(tài)。故通過簡單的延時就可實現(xiàn)按鍵的消抖動。

2.軟件代碼設計

按鍵濾波模塊key_filter.v設計采用狀態(tài)機實現(xiàn)按鍵按下和彈起檢測。

10ms延遲定時器

always @(posedge clk_i)begin //10ms 延遲定時器
    if(cnt10ms < CNT_10MS) 
        cnt10ms <= cnt10ms + 1'b1;
    else 
        cnt10ms <= 25'd0;
end

按鍵檢測狀態(tài)機:

always @(posedge clk_i)begin
    key_s_r <= key_s;
end


always?@(posedge?clk_i)begin
    if(en_10ms)begin //10ms 延遲定時器
        case(key_s)
        KEY_S0:begin
           if(!key_i) //判斷按鍵是否按下,如果按下,則轉入狀態(tài)KEY_S1
               key_s <= KEY_S1; 
        end  
        KEY_S1:begin
           if(!key_i) //10ms后,再次判斷按鍵是否按下,
               key_s <= KEY_S2; //如果按下,則轉入狀態(tài)KEY_S2
            else 
               key_s <= KEY_S0; //如果未按下,則轉回KEY_S0
        end 
        KEY_S2:begin
           if(key_i) //10ms后,判斷按鍵是否彈起,如果彈起,則轉入狀態(tài)KEY_S3
               key_s <= KEY_S3; 
        end  
        KEY_S3:begin
           if(key_i) //10ms后,再次判斷按鍵是否彈起,
              key_s <= KEY_S0; //如果彈起,則轉入狀態(tài)KEY_S0
            else   
              key_s <= KEY_S2; //如果未彈起,則轉回KEY_S2
        end
        endcase                  
    end
end
按鍵有效輸出:當狀態(tài)從KEY_S1 轉到 KEY_S2 代表依次按鈕按下 key_cap 輸出一次高電平。
assign key_cap = (key_s==KEY_S2)&&(key_s_r==KEY_S1);

3.硬件測試與驗證

硬件平臺:XC7Z035FFG676-2

Vivado軟件:2017.4

工程編譯完成后,下載bit文件到電路板,測試結果如下所示。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21796

    瀏覽量

    605973
  • 接口
    +關注

    關注

    33

    文章

    8691

    瀏覽量

    151908
  • 狀態(tài)機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27645
  • 按鍵消抖
    +關注

    關注

    2

    文章

    27

    瀏覽量

    10485

原文標題:FPGA入門基礎之按鍵消抖實驗

文章出處:【微信號:FPGA技術實戰(zhàn),微信公眾號:FPGA技術實戰(zhàn)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    按鍵電路的實現(xiàn)方式

    按鍵通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也
    的頭像 發(fā)表于 08-29 11:25 ?4737次閱讀

    fpga教程之——按鍵

    電平,這次對按鍵進行操作則是對FPGA進行輸入了。  2. 按鍵  2.1 按鍵輸入原理  
    發(fā)表于 02-27 11:49

    按鍵

    請問大家的按鍵是用什么方法解決的,如普通的按鍵如何
    發(fā)表于 09-26 22:17

    FPGA按鍵的方法

    FPGA按鍵的方法
    發(fā)表于 05-01 16:12

    技術分享:明德?lián)P按鍵的原理和基于fpga設計

    高頻抖動略去。需要注意的是,軟件需要占據一定的系統(tǒng)資源。盡管硬件和軟件
    發(fā)表于 08-02 10:38

    【Runber FPGA開發(fā)板】配套視頻教程——按鍵實驗

    本視頻是Runber FPGA開發(fā)板的配套視頻課程,主要介紹按鍵的方法和FPGA如何實現(xiàn)
    發(fā)表于 04-13 10:35

    MCU按鍵問題

    按鍵問題機械按鍵是必須的,1、延時
    發(fā)表于 11-04 06:37

    STM32單片機按鍵FPGA按鍵的相關資料分享

    寫在前面:STM32單片機按鍵FPGA按鍵
    發(fā)表于 01-18 06:39

    按鍵都有哪些處理方式?

    按鍵都有哪些處理方式除了硬件電路用軟件怎么實現(xiàn)
    發(fā)表于 11-01 07:06

    基于FPGA按鍵電路設計

    采用了VHDL語言編程的設計方法,通過FPGA實現(xiàn)按鍵的硬件電路。論述了基于計數器、RS觸發(fā)器和狀態(tài)機3種方法來
    發(fā)表于 12-05 14:13 ?224次下載

    VHDL—按鍵

    按鍵檢測需要,一般有硬件和軟件兩種方式。硬件就是加去抖動電路,這樣從根本上解決按鍵抖動問題。除了用專用電路以外,用可編程FPGA或者CP
    發(fā)表于 11-11 17:17 ?2次下載

    vhdl按鍵程序(七種方式實現(xiàn)按鍵

    按鍵通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也
    發(fā)表于 01-29 16:04 ?5.7w次閱讀
    vhdl<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>程序(七種方式<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>)

    按鍵的軟件和硬件方法

    采用鍋仔片式按鍵測量波形。按鍵按下與抬起的部分都出現(xiàn)抖動,大致時間10ms左右。為了防止按鍵誤按或者重復識別,必須要按鍵
    的頭像 發(fā)表于 03-01 10:53 ?1.4w次閱讀
    <b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>的軟件和硬件方法

    FPGA實現(xiàn)按鍵的方法

    通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,為了不產生這種現(xiàn)象而作的措施就是按鍵
    的頭像 發(fā)表于 09-05 10:43 ?1287次閱讀
    <b class='flag-5'>FPGA</b>內<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>的方法

    如何在FPGA實現(xiàn)按鍵

    FPGA(現(xiàn)場可編程門陣列)中實現(xiàn)按鍵是一個重要的設計環(huán)節(jié),特別是在處理用戶輸入時,由于物
    的頭像 發(fā)表于 08-19 18:15 ?2221次閱讀
    金宝博188滚球| 百家乐博彩策略论坛| 百家乐官网科学打法| 战神国际| 利记现金| 轮盘赌技巧| 镇江市| 沅陵县| 百家乐官网技巧发布| 仙桃市| 百家乐官网管理启发书| 百家乐官网赢的秘籍在哪| 百家乐官网五子棋| 尊龙百家乐官网娱乐场开户注册 | 乳山市| 百家乐官网最佳投注法下载| 澳门百家乐官网群官网 | 百家乐网络游戏信誉怎么样 | 百家乐官网筹码素材| 赌博百家乐官网玩法| 三亚百家乐官网的玩法技巧和规则 | 澳门玩百家乐官网赢1000万| 百家乐官网sxcbd| 百家乐游戏平台排名| 真人百家乐赌城| 大发888boaicai| 超级大赢家| 百家乐官网上分器定位器| 百家乐官网输一押二| 德州百家乐官网扑克桌| 百家乐赌博大揭密| 大发888娱乐成| 百家乐试玩| 德州扑克比赛规则| 百家乐官网怎么投注| 爱婴百家乐官网的玩法技巧和规则| 百家乐娱乐城棋牌| 金杯百家乐官网的玩法技巧和规则 | 阿玛尼百家乐的玩法技巧和规则| 大发888娱乐城在线存款| 789棋牌游戏|