最近學(xué)了FPGA 一段時(shí)間,想自己做個(gè)真實(shí)的東西,筆者也是務(wù)實(shí)求真的人,呵呵。首先就選擇了一個(gè)數(shù)字鐘,當(dāng)我昨晚了計(jì)數(shù)器模塊,做按鍵校準(zhǔn)的時(shí)候,就發(fā)現(xiàn)按鍵抖動(dòng)的很厲害,沒(méi)有C 語(yǔ)言做防抖動(dòng)那么簡(jiǎn)單,因此我參考了網(wǎng)上很多博主的觀點(diǎn),總結(jié)了自己認(rèn)為最簡(jiǎn)單,最精簡(jiǎn)的一個(gè)寫(xiě)法,如下: 進(jìn)程模塊內(nèi)代碼只有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個(gè)寄存器,存儲(chǔ)按鍵在2個(gè)周期內(nèi)的數(shù)據(jù),計(jì)數(shù)器是決定按鍵的采樣頻率,如果我們把按鍵的采樣頻率調(diào)高,那么 按鍵就會(huì)有2次相應(yīng),我試過(guò)吧計(jì)數(shù)器去掉,但是一直都是雙數(shù)增加,很讓我費(fèi)解,在苦思冥想之際,悟出了可以通過(guò)延時(shí),吧后面松手的一個(gè)電平跳變?yōu)V掉,哈哈!!頓時(shí)給大家分享下最簡(jiǎn)單的防抖動(dòng),
key1 是低電平按下,當(dāng)按下的時(shí)候, key_out輸出的是一個(gè)高電平。這個(gè)需要大家注意。
如有bug 希望大家拋磚