按鍵消抖的原理和基于verilog的消抖設(shè)計.doc

按鍵消抖的原理和基于verilog的消抖設(shè)計.doc

ID:27893215

大?。?69.00 KB

頁數(shù):6頁

時間:2018-12-06

按鍵消抖的原理和基于verilog的消抖設(shè)計.doc_第1頁
按鍵消抖的原理和基于verilog的消抖設(shè)計.doc_第2頁
按鍵消抖的原理和基于verilog的消抖設(shè)計.doc_第3頁
按鍵消抖的原理和基于verilog的消抖設(shè)計.doc_第4頁
按鍵消抖的原理和基于verilog的消抖設(shè)計.doc_第5頁
資源描述:

《按鍵消抖的原理和基于verilog的消抖設(shè)計.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、按鍵消抖的原理和基于verilog的消抖設(shè)計  按鍵開關(guān)是各種電子設(shè)備不可或缺的人機接口。在實際應(yīng)用中,很大一部分的按鍵是機械按鍵。在機械按鍵的觸點閉合和斷開時,都會產(chǎn)生抖動,為了保證系統(tǒng)能正確識別按鍵的開關(guān),就必須對按鍵的抖動進行處理?! ≡谙到y(tǒng)設(shè)計中,有各種各樣的消除按鍵抖動的設(shè)計方法,硬件電路和軟件設(shè)計都很成熟。不過我們這里要從另外一個角度來討論按鍵的消抖,并給出一個用verilog給出一個具體的實現(xiàn)?! ∈紫?,看一個普通的機械按鍵的觸點在閉合與斷開時的波形(用示波器抓?。??! ∠旅娴乃膹垐D都是按鍵在閉合的時候抓到的波形??梢钥吹絻蓚€明顯的趨勢:1.按鍵在幾個us之內(nèi)就可以達到

2、穩(wěn)定狀態(tài),從高電平轉(zhuǎn)換到底電平;2.在高電平轉(zhuǎn)換到低電平的過程中,觸點有非常明顯的抖動?!   ∠旅娴膬蓮垐D是按鍵在斷開的時候抓到的波形。也可以看到兩個明顯的趨勢:1.按鍵的變化趨勢比較緩慢,從低電平變?yōu)楦唠娖叫枰蟾?0~20ms的時間;2.按鍵斷開時沒有閉合時那么大的抖動    下面兩張圖是用手迅速閉合按鍵然后就斷開時,按鍵的輸出波形?!   ≡谔幚戆存I抖動的程序中,必須同時考慮消除閉合和斷開兩種情況下的抖動。所以,對于按鍵消抖的處理,必須按最差的情況來考慮。我們從上面的圖上可以看到,按鍵輸出的信號的跳變時間(上升沿和下降沿)最大是在20ms左右。按鍵一次閉合最短的時間大概是12

3、0ms左右。如果我們把按鍵的輸出做為一個時鐘域(時鐘頻率未知,但信號的slowrate是已知的,既最大20ms左右)的信號,用另外一個時鐘來采集這個按鍵的輸出,則就可以把按鍵的消抖歸結(jié)為一個最基本的CDC問題來處理。而問題的核心是如何確定采集時鐘的頻率。假設(shè)采集時鐘的周期小于20ms,那么,采集時鐘就有可能兩次采到按鍵斷開時的不確定的值,就沒有辦法避免采用CDC電路所想避免的問題。所以采集時鐘的周期必須要大于20ms。假設(shè)采集時鐘的周期大于120ms的話,就有可能采不到按鍵的閉合信號,所以采集時鐘的周期必須小于120ms。我們在這里選用周期為25ms的采集時鐘(頻率為40Hz)。下面

4、的verilog實現(xiàn)實際上是一個標準的CDC電路,直接可以用來做按鍵的消抖。moduleRMV_BJ(BJ_CLK,//采集時鐘,40HzRESET,//系統(tǒng)復(fù)位信號BUTTON_IN,//按鍵輸入信號BUTTON_OUT//消抖后的輸出信號);inputB_CLK;inputRESET;inputBUTTON_IN;outputBUTTON_OUT;regBUTTON_IN_Q,BUTTON_IN_2Q,BUTTON_IN_3Q;always@(posedgeBJ_CLKornegedgeRESET)beginif(~RESET)beginBUTTON_IN_Q<=1’b1;BUT

5、TON_IN_2Q<=1’b1;BUTTON_IN_3Q<=1’b1;endelsebeginBUTTON_IN_Q<=BUTTON_IN;BUTTON_IN_2Q<=BUTTON_IN_Q;BUTTON_IN_3Q<=BUTTON_IN_2Q;endendwireBUTTON_OUT=BUTTON_IN_2Q

6、BUTTON_IN_3Q;endmodule在實際的實現(xiàn)中,我們首先要生成一個40Hz的時鐘,然后有多少個按鍵就將上面的模塊例化多少次就可以了。比如說我們有4個按鍵,那么下面的實現(xiàn)就可以了。其中KEY_CTL[3:0]是按鍵的輸入,KEY_OUT[3:0]是按鍵的輸出。RMV

7、_BJRMV_BJ0(.BJ_CLK(BJ_CLK),.RESET(RESET),.BUTTON_IN(KEY_CTL[0]),.BUTTON_OUT(KEY_OUT[0]));RMV_BJRMV_BJ1(.BJ_CLK(BJ_CLK),.RESET(RESET),.BUTTON_IN(KEY_CTL[1]),.BUTTON_OUT(KEY_OUT[1]));RMV_BJRMV_BJ2(.BJ_CLK(BJ_CLK),.RESET(RESET),.BUTTON_IN(KEY_CTL[2]),.BUTTON_OUT(KEY_OUT[2]));RMV_BJRMV_BJ3(.BJ_CLK(

8、BJ_CLK),.RESET(RESET),.BUTTON_IN(KEY_CTL[3]),.BUTTON_OUT(KEY_OUT[3]));  下面的波形是實測出來的按鍵消抖前后的波形,紅色的為消抖前,白色的為消抖后?!   ∫⒁獾氖牵?jīng)過處理后的按鍵信號,實際上是一個時鐘域為40Hz的信號,如果我們要將按鍵送給后級電路使用,那么必須要將其轉(zhuǎn)換到后級電路的時鐘域中,轉(zhuǎn)換的方法與上面所述CDC電路相同。  另外不同的按鍵的閉合,斷開抖動時間都是有差異的,上

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。