最近學(xué)了FPGA 一段時(shí)間,,想自己做個(gè)真實(shí)的東西,筆者也是務(wù)實(shí)求真的人,,呵呵,。首先就選擇了一個(gè)數(shù)字鐘,當(dāng)我昨晚了計(jì)數(shù)器模塊,,做按鍵校準(zhǔn)的時(shí)候,,就發(fā)現(xiàn)按鍵抖動(dòng)的很厲害,沒有C 語(yǔ)言做防抖動(dòng)那么簡(jiǎn)單,,因此我參考了網(wǎng)上很多博主的觀點(diǎn),,總結(jié)了自己認(rèn)為最簡(jiǎn)單,最精簡(jiǎn)的一個(gè)寫法,,如下: 進(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 希望大家拋磚