精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

基于FPGA實現按鍵消抖處理

FPGA技術實戰 ? 來源:FPGA技術實戰 ? 2024-10-24 14:54 ? 次閱讀

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

1. 原理概述

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

wKgZoWcZ70mAC2W4AACAmfe5EFc997.png

圖1:按鍵機械抖動

wKgaomcZ70mACMGpAAB6oBD80YQ996.png

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

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

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

2.軟件代碼設計

按鍵濾波模塊key_filter.v設計采用狀態機實現按鍵按下和彈起檢測。

10ms延遲定時器

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

按鍵檢測狀態機:

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) //判斷按鍵是否按下,如果按下,則轉入狀態KEY_S1
               key_s <= KEY_S1; 
        end  
        KEY_S1:begin
           if(!key_i) //10ms后,再次判斷按鍵是否按下,
               key_s <= KEY_S2; //如果按下,則轉入狀態KEY_S2
            else 
               key_s <= KEY_S0; //如果未按下,則轉回KEY_S0
        end 
        KEY_S2:begin
           if(key_i) //10ms后,判斷按鍵是否彈起,如果彈起,則轉入狀態KEY_S3
               key_s <= KEY_S3; 
        end  
        KEY_S3:begin
           if(key_i) //10ms后,再次判斷按鍵是否彈起,
              key_s <= KEY_S0; //如果彈起,則轉入狀態KEY_S0
            else   
              key_s <= KEY_S2; //如果未彈起,則轉回KEY_S2
        end
        endcase                  
    end
end
按鍵有效輸出:當狀態從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文件到電路板,測試結果如下所示。

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

    關注

    1626

    文章

    21678

    瀏覽量

    602020
  • 接口
    +關注

    關注

    33

    文章

    8526

    瀏覽量

    150862
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27486
  • 按鍵消抖
    +關注

    關注

    2

    文章

    27

    瀏覽量

    10442

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

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

收藏 人收藏

    評論

    相關推薦

    按鍵電路的實現方式

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

    fpga教程之——按鍵

    電平,這次對按鍵進行操作則是對FPGA進行輸入了?! ?. 按鍵  2.1 按鍵輸入原理  
    發表于 02-27 11:49

    按鍵

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

    FPGA按鍵的方法

    FPGA按鍵的方法
    發表于 05-01 16:12

    技術分享:明德揚按鍵的原理和基于fpga設計

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

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

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

    MCU按鍵問題

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

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

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

    按鍵都有哪些處理方式?

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

    基于FPGA按鍵電路設計

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

    VHDL—按鍵

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

    vhdl按鍵程序(七種方式實現按鍵

    按鍵通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也
    發表于 01-29 16:04 ?5.6w次閱讀
    vhdl<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>)

    按鍵的軟件和硬件方法

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

    FPGA實現按鍵的方法

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

    如何在FPGA實現按鍵

    FPGA(現場可編程門陣列)中實現按鍵是一個重要的設計環節,特別是在處理用戶輸入時,由于物
    的頭像 發表于 08-19 18:15 ?1474次閱讀