最近學了FPGA 一段時間,想自己做個真實的東西,筆者也是務實求真的人,呵呵。首先就選擇了一個數字鐘,當我昨晚了計數器模塊,做按鍵校準的時候,就發現按鍵抖動的很厲害,沒有C 語言做防抖動那么簡單,因此我參考了網上很多博主的觀點,總結了自己認為最簡單,最精簡的一個寫法,如下: 進程模塊內代碼只有10行。哈哈
reg key_reg1,key_reg2,key_out;
always @( posedge clk)//CLK 50M
begin
count2<=count2+1;
if(count2==500000)
begin
key_reg1<=key1;
count2<=0;
end
key_reg2<=key_reg1;
key_out<=key_reg2&(!key_reg1);
end
意思為定義2個寄存器,存儲按鍵在2個周期內的數據,計數器是決定按鍵的采樣頻率,如果我們把按鍵的采樣頻率調高,那么 按鍵就會有2次相應,我試過吧計數器去掉,但是一直都是雙數增加,很讓我費解,在苦思冥想之際,悟出了可以通過延時,吧后面松手的一個電平跳變濾掉,哈哈!!頓時給大家分享下最簡單的防抖動,
key1 是低電平按下,當按下的時候, key_out輸出的是一個高電平。這個需要大家注意。
如有bug 希望大家拋磚
本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。