按鍵消抖電路設計

2021-10-09 11:24:34 字數 1114 閱讀 2821

用verilog實現按鍵抖動消除電路,抖動小於15ms,輸入時鐘 12mhz

設計思路:

使用計數器,計算按鍵時間,如果大於15ms,則認為是有效訊號,若小於15ms,則認為是無效訊號

12mhz 1 clk =83ns 15ms/83ns =180722 = 0x2c1f2

module rebounce(

input clk,

input rst_n,

input key_in,

output key_out);

reg key_out;

reg key_in_dly;

reg [19:

0] cnt;

wire change;

parameter jitter =

20'h2c1f2;

// 檢測key訊號變化,使用原訊號+dly

always @(posedge clk or negedge rst_n)

if(!rst_n) key_in_dly <=0;

else key_in_dly <= key_in;

assign change =

(key_in & !key_in_dly)

|(!key_in & key_in_dly)

;// 當沒有變化時,計數器才工作,否則復位重新計數

always @(posedge clk or negedge rst_n)

if(!rst_n) cnt <=

20'h0;

else

if(change) cnt <=

20'h0;

else cnt <= cnt +1;

// 輸出判斷

always @(posedge clk or negedge rst_n)

// key_out =

1 為 未按下

if(!rst_n) key_out <=1;

else

if(cnt ==

20'h2c1f2 -

1) key_out <= key_in;

else key_out <= key_out;

endmodule

按鍵消抖電路原理

按鍵消抖電路原理 fpga開發中按鍵消抖與單脈衝發生器電路 為了使按鍵消抖電路模組簡潔,移植性好,在此用計數器的方式實現按鍵消抖的功能。計數器模值n根據抖動訊號的脈衝寬度和取樣脈衝訊號clk的週期大小決定。計數模值n 延時 脈衝訊號取樣週期。一般按鍵抖動時間為5 10 ms,甚至更長。筆者用的開發板...

FPGA Verilog按鍵消抖

硬體 鋯石a4開發板,altera ep4ce10f17c8 語言 verilog hdl 原理 機械式按鍵大概有20ms的抖動,所以檢測到按鍵變化後等20ms再判斷一次,如果鍵值相同才視為有效 頂級模組按鍵切換led顯示 module key led,key,clock,reset input c...

FPGA 按鍵消抖

今天簡單的說說按鍵消抖,原理特別好理解,其實就是延時,做一定時間的延時後取值一次,就能夠得到特定的消抖後的狀態了。為什麼要消抖?見圖 我們可以看到,但按鍵按下的那一刻,存在一段時間的抖動,同時在釋放按鍵的一段時間裡也是存在抖動的,這就可能導致狀態在識別的時候可能檢測為多次的按鍵,因為執行過程中普通的...