<abbr id="kc8ii"><menu id="kc8ii"></menu></abbr>
  • <input id="kc8ii"><tbody id="kc8ii"></tbody></input><table id="kc8ii"><source id="kc8ii"></source></table><kbd id="kc8ii"></kbd>
    <center id="kc8ii"><table id="kc8ii"></table></center>
  • <input id="kc8ii"></input>
    <abbr id="kc8ii"></abbr>
  • <abbr id="kc8ii"></abbr>
  • <center id="kc8ii"><table id="kc8ii"></table></center>
    <abbr id="kc8ii"></abbr>
    你的位置:首頁 > 互連技術(shù) > 正文

    技巧分享:如何在FPGA內(nèi)實現(xiàn)按鍵消抖?

    發(fā)布時間:2015-01-08 責任編輯:sherryyu

    【導讀】在FPGA內(nèi)實現(xiàn)按鍵消抖的方法多種多樣,但是最簡單的是采用移位寄存器的方法進行消抖。因為移位寄存器的方法不需要對時鐘進行分頻,也不需要進行延時等復雜操作。本文就為大家講解這種在FPGA內(nèi)實現(xiàn)按鍵消抖的方法。
     
    抖動的產(chǎn)生
     
    通常的按鍵所用開關(guān)為機械彈性開關(guān),當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,為了不產(chǎn)生這種現(xiàn)象而作的措施就是按鍵消抖。
     
    抖動時間
     
    抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。這是一個很重要的時間參數(shù),在很多場合都要用到按鍵穩(wěn)定閉合時間的長短則是由操作人員的按鍵動作決定的,一般為零點幾秒至數(shù)秒。鍵抖動會引起一次按鍵被誤讀多次。為確保FPGA對鍵的一次閉合僅作一次處理,必須去除鍵抖動。在鍵閉合穩(wěn)定時讀取鍵的狀態(tài),并且必須判別到鍵釋放穩(wěn)定后再作處理。
    按鍵抖動
    圖1 按鍵抖動
     
    FPGA內(nèi)實現(xiàn)消抖的方法
     
    在FPGA內(nèi)實現(xiàn)按鍵消抖的方法多種多樣,但是最簡單的是采用移位寄存器的方法進行消抖。因為移位寄存器的方法不需要對時鐘進行分頻,也不需要進行延時等復雜操作,即可實現(xiàn)對按鍵邊沿的檢測。假設(shè)未按下時鍵值=1.
     
    1、在無鍵按下時,移位寄存器samp[7:0]始終采集到高電平,即samp[7:0]=8''b1111_1111;
     
    2、當鍵按下時,samp[7:0]將采集到低電平,數(shù)據(jù)的變化方式為samp[7:0]=8''b1111_1110-->8''b1111_1100-->8''b1111_1000--> ........——>8''b0000_0000;samp[7:0]=8''b1111_1110即為按鍵下降沿。
     
    3、當松開按鍵時,samp[7:0]將重新采集到高電平,數(shù)據(jù)變化方式為samp[7:0]=8''b0000_0001-->8''b0000_0011--> ........-->8''b1111_1111;當samp[7:0]=8''b0111_1111時,即為按鍵上升沿。
    移位寄存器消抖原理圖
    圖2 移位寄存器消抖原理圖
    [page]

    參考Verilog代碼
     
    //模塊名:EdgeDetect,邊沿檢測
     
    //button:按鍵,無鍵按下時為高電平//clk:10M時鐘
     
    //rst:復位按鈕,低電平有效
     
    //rise:檢測到上升沿,高電平有效,寬度為1個clk
     
    //fall:檢測到下降沿,高電平有效,寬度為1個clk
     
    module EdgeDetect(
     
    input clk,
     
    input rst,
     
    input button,
     
    output reg rise,
     
    output reg fall
     
    );
     
    reg[7:0] samp;//移位寄存器采集button鍵值
     
    //移位寄存器采集button信息
     
    always@(posedge clk or negedge rst)
     
    begin
     
    if(!rst)
     
    samp<=8''b1111_1111;
     
    else
     
    samp<={samp[7:1],button};
     
    end
     
    //產(chǎn)生上升沿信息
     
    always@(posedge clk or negedge rst)
     
    begin
     
    if(!rst)
     
    rise<=1''b0;
     
    else if(samp==8''b1111_1110)
     
    rise<=1''b1;
     
    else
     
    rise<=1''b0;
     
    end
     
    //產(chǎn)生下降沿信息
     
    always@(posedge clk or negedge rst)
     
    begin
     
    if(!rst)
     
    fall<=1''b0;
     
    else if(samp==8''b0111_1111)
     
    fall<=1''b1;
     
    else
     
    fall<=1''b0;
     
    end
     
    endmodule
     
    要采購移位寄存器么,點這里了解一下價格!
    特別推薦
    技術(shù)文章更多>>
    技術(shù)白皮書下載更多>>
    熱門搜索
    ?

    關(guān)閉

    ?

    關(guān)閉

    亚洲欧洲中文日韩av乱码| 熟妇人妻中文字幕| 亚洲精品无码久久久| 最近2019中文字幕免费直播| 亚洲精品无码永久中文字幕| 午夜成人无码福利免费视频| 最近免费字幕中文大全| 久久精品无码av| 成人午夜福利免费无码视频| 久久久久久无码Av成人影院| 99高清中文字幕在线| 亚洲Av永久无码精品三区在线| 中文无码人妻有码人妻中文字幕| 国产成年无码久久久免费| 亚洲一区无码精品色| 亚洲国产精品无码久久SM| 亚洲中文精品久久久久久不卡| 久クク成人精品中文字幕| 久久无码AV中文出轨人妻| 中文字幕无码人妻AAA片| 日韩亚洲AV无码一区二区不卡| 久久中文骚妇内射| 岛国av无码免费无禁网| 国产AV无码专区亚洲AWWW| 国产在线精品一区二区中文| 毛片免费全部无码播放| 亚洲自偷自偷偷色无码中文 | 曰韩中文字幕在线中文字幕三级有码| 亚洲va中文字幕无码久久| 亚欧成人中文字幕一区| 国产精品99无码一区二区| 亚洲日产无码中文字幕| 人妻中文久久久久| 熟妇人妻中文av无码| 国产精品无码素人福利不卡| 亚洲Av无码专区国产乱码DVD| 午夜无码中文字幕在线播放| 亚洲中文字幕无码专区| 人妻无码αv中文字幕久久| 亚洲熟妇无码另类久久久| 中文字幕毛片|