通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(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)對按鍵邊沿的檢測。假設未按下時鍵值=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 移位寄存器消抖原理圖
審核編輯:湯梓紅
-
FPGA
+關注
關注
1664文章
22502瀏覽量
639134 -
原理圖
+關注
關注
1356文章
6430瀏覽量
247299 -
寄存器
+關注
關注
31文章
5619瀏覽量
130406 -
按鍵消抖
+關注
關注
2文章
28瀏覽量
10917
原文標題:在FPGA內(nèi)實現(xiàn)按鍵消抖的方法(附參考Verilog代碼)
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
技術分享:明德?lián)P按鍵消抖的原理和基于fpga的消抖設計
【Runber FPGA開發(fā)板】配套視頻教程——按鍵消抖實驗
基于FPGA的按鍵消抖電路設計
VHDL—按鍵消抖
FPGA入門系列實驗教程之如何進行按鍵消抖控制LED亮滅
如何在FPGA中實現(xiàn)按鍵消抖
基于FPGA實現(xiàn)按鍵消抖處理
FPGA內(nèi)實現(xiàn)按鍵消抖的方法
評論