国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的按鍵消抖電路設(shè)計(jì)方法的研究

2011-06-05 11:02楊曉慧
電子設(shè)計(jì)工程 2011年22期
關(guān)鍵詞:狀態(tài)機(jī)觸發(fā)器計(jì)數(shù)器

于 晶, 楊曉慧, 黃 勇

(1.長(zhǎng)春理工大學(xué) 吉林 長(zhǎng)春 130000;2.吉林博安消防設(shè)備有限公司 吉林 長(zhǎng)春 130000)

通常所用的按鍵都為機(jī)械觸點(diǎn)開關(guān),由于機(jī)械觸點(diǎn)存在彈性作用,當(dāng)按下按鍵或松開按鍵時(shí),都不可避免地要在觸點(diǎn)閉合及斷開的瞬間產(chǎn)生一連串的鍵抖動(dòng)。其在按鍵閉合和斷開時(shí)產(chǎn)生了多個(gè)邊沿,如果不濾除抖動(dòng)的話,則在讀取信號(hào)的邊沿,會(huì)引起按鍵被誤讀多次,這樣就會(huì)導(dǎo)致電路的誤動(dòng)作。為了保證按鍵電路只有一次正確的響應(yīng),則按鍵消抖電路的使用是必不可少的。

1 按鍵消抖的方法分析

按鍵消抖一般采用硬件和軟件消抖兩種方法。硬件消抖是利用電路濾波的原理實(shí)現(xiàn),可用RS觸發(fā)器作為常用的消抖電路[1],但對(duì)于按鍵較多且從節(jié)省硬件資源和易于修改的角度考慮,常采用軟件的方法來(lái)實(shí)現(xiàn)硬件電路[2]。文中利用Altera公司的可編程邏輯器件FPGA,通過(guò)VHDL語(yǔ)言編程實(shí)現(xiàn)按鍵消抖硬件電路的功能。采用軟件延時(shí)和對(duì)按鍵信號(hào)進(jìn)行處理的方法設(shè)計(jì)了3種性能可靠的按鍵消抖電路。

2 按鍵消抖電路的幾種設(shè)計(jì)方法

一般人按鍵的時(shí)間大于100 ms,抖動(dòng)時(shí)間一般為5~10 ms。按這種常規(guī)處理,一般認(rèn)為接收到的按鍵信號(hào)持續(xù)時(shí)間如果小于40 ms則其為抖動(dòng)信號(hào),如果時(shí)間大于40 ms則為正確的按鍵信號(hào)。即讓計(jì)數(shù)器的模值和計(jì)數(shù)時(shí)鐘周期的乘積略大于40 ms即可。這樣就可以把按下的時(shí)間小于40 ms的抖動(dòng)信號(hào)濾掉[3]。文中的晶振頻率采用80 MHz。

2.1 基于計(jì)數(shù)器的按鍵消抖電路

應(yīng)用計(jì)數(shù)器實(shí)現(xiàn),即采用延時(shí)的方法。先正確設(shè)定計(jì)數(shù)的時(shí)鐘脈沖。當(dāng)判斷到有脈沖發(fā)生并且為上升沿時(shí)計(jì)數(shù)器開始計(jì)數(shù),等計(jì)數(shù)器計(jì)滿后將按鍵的狀態(tài)輸出。其VHDL代碼如下,仿真波形如圖1所示。

圖1 基于計(jì)數(shù)器的按鍵消抖電路的仿真波形Fig.1 Simulation waveform of key-jitter circuit base on counter

2.2 基于RS觸發(fā)器的按鍵消抖電路

在設(shè)計(jì)中用時(shí)鐘信號(hào)進(jìn)行采樣,對(duì)按鍵輸入信號(hào),當(dāng)兩次采樣信號(hào)相同時(shí),判定已經(jīng)穩(wěn)定的按下或放開了按鍵。觸發(fā)器相應(yīng)被置成0態(tài)或1態(tài)。如兩次采樣結(jié)果不相同,則觸發(fā)器維持原輸出信號(hào)不變。由于直接由觸發(fā)器輸出的信號(hào)時(shí)間寬度可能過(guò)長(zhǎng),所以在觸發(fā)器后再接一級(jí)同步化電路,保證每次輸出的信號(hào)只占有一個(gè)時(shí)鐘周期的寬度。應(yīng)用這種方法濾除抖動(dòng),關(guān)鍵是確定采樣時(shí)鐘的頻率。保證兩次采樣的時(shí)間間隔能大于按鍵的抖動(dòng)時(shí)間,且小于正常按鍵時(shí)的按鍵穩(wěn)定閉合時(shí)間。其VHDL代碼如下,仿真波形如圖2所示。

圖2 基于RS觸發(fā)器的按鍵消抖電路的仿真波形Fig.2 Simulation waveform of key-jitter circuit base on RS flip-flop

2.3 基于狀態(tài)機(jī)的按鍵消抖電路

電路的復(fù)位信號(hào)Rst_I有效時(shí),電路[4-6]進(jìn)入復(fù)位狀態(tài)s0,在s0狀態(tài)下時(shí)鐘信號(hào)CLK以80 MHz的頻率采樣按鍵輸入信號(hào)key_I,如果采樣到 key_I=‘0’則停留在s0狀態(tài),并繼續(xù)采樣按鍵輸入信號(hào)的狀態(tài),一旦采樣到輸入信號(hào)是高電平,即key_I=‘1’,則轉(zhuǎn)入s1延時(shí)狀態(tài),進(jìn)行消抖延時(shí)。當(dāng)延時(shí)結(jié)束時(shí),則轉(zhuǎn)入s2狀態(tài),在此狀態(tài)下時(shí)鐘信號(hào)CLK以一定頻率采樣按鍵輸入key_I的狀態(tài),如果采樣到key_I為高電平,即key_I=‘1’表示經(jīng)過(guò)消抖延時(shí)之后,按鍵仍然為按下狀態(tài),則停留在s2狀態(tài)繼續(xù)檢測(cè)按鍵輸入信號(hào)狀態(tài),等待按鍵釋放,同時(shí)key_I=‘1’表示此次按鍵為有效按鍵,此時(shí)輸出按鍵確認(rèn)信號(hào),即 key_confirm=‘1’;如果采樣到 key_I為低電平即Key_in=‘0’表示按鍵已經(jīng)釋放,則轉(zhuǎn)回狀態(tài)s0,因?yàn)楫?dāng)按鍵釋放時(shí)也會(huì)有抖動(dòng),所以當(dāng)采樣到輸入信號(hào)為高電平,即key_I=‘1’時(shí),再次轉(zhuǎn)入s1進(jìn)行消抖延時(shí),當(dāng)延時(shí)結(jié)束時(shí),則轉(zhuǎn)入s2狀態(tài)判斷此時(shí)按鍵的狀態(tài),當(dāng)采樣到輸入信號(hào)為低電平時(shí),回到s0狀態(tài),此時(shí)完成一次按鍵按下和釋放的操作。其狀態(tài)機(jī)的狀態(tài)圖和仿真波形如圖3、4所示。

圖3 狀態(tài)機(jī)Fig.3 State machine

圖4 基于狀態(tài)機(jī)的按鍵消抖電路仿真波形Fig.4 Simulation waveform of key-jitter circuit based on state machine

為便于在仿真圖中可以清晰的看出消抖延時(shí)的效果,程序中采用較短延時(shí)時(shí)間,在實(shí)際應(yīng)用中,延時(shí)部分的計(jì)數(shù)值可以根據(jù)具體的時(shí)鐘頻率以及所需要延時(shí)的時(shí)間進(jìn)行修改,VHDL程序如下:

3 結(jié) 論

仿真結(jié)果表明,以上3種按鍵消抖的方法都能很有效的起到消抖的作用,然而經(jīng)過(guò)實(shí)際工程應(yīng)用之后發(fā)現(xiàn),基于有限狀態(tài)機(jī)的方法最能有效的對(duì)按鍵進(jìn)行消抖處理,并且性能穩(wěn)定,確保每一次按鍵操作能夠準(zhǔn)確輸出按鍵確認(rèn)信號(hào)。

[1]曾旖,奚大順,李向陽(yáng).按鍵開關(guān)的抖動(dòng)與消除方法[J].電子世界,2005(9):55-56.ZENG Yi,XI Da-shun,LI Xiang-yang.Jitter of key switch and eliminate method[J].Electron World,2005(9):55-56.

[2]許德成.基于FPGA的按鍵消抖動(dòng)設(shè)計(jì)[J].吉林師范大學(xué)學(xué)報(bào):自然科學(xué)版,2009(4):154-156.XU De-cheng.Shaking release design on the keys of FPGA[J].Journal of Jilin Normal University:Natural Science Edition, 2009(4):154-156.

[3]谷長(zhǎng)龍,李小英.基于FPGA器件的消除按鍵抖動(dòng)方法研究[J].吉林化工學(xué)院學(xué)報(bào),2006(3):53-55.GU Chang-long,LI Xiao-ying.Methods of eliminating the jitter of keys based on FPGA devices[J].Journal of Jilin Institure of Chemical Technology, 2006(3):53-55.

[4]侯繼紅.基于VHDL語(yǔ)言的按鍵消抖電路設(shè)計(jì)及仿真[J].現(xiàn)代電子技術(shù),2009(23):201-205.HOU Ji-hong.Design and simulation of key-jitter elimination circuit based on VHDL[J].Modern Electron Technology,2009(23):201-205.

[5]魯傳明,甕嘉民.基于VHDL的防抖型矩陣式鍵盤設(shè)計(jì)[J].河南工程學(xué)院學(xué)報(bào):自然科學(xué)版,2009(1):58-62.LU Chuan-ming,WENG Jia-min.Design of eliminate bounce and matrix keyboard based on VHDL[J].Journal of Henan Nature of Engineer NG:Natural Science Edition,2009 (1):58-62.

[6]邢自茹,史明健.FPGA開發(fā)中按鍵消抖與單脈沖發(fā)生器電路[J].現(xiàn)代電子技術(shù),2009(21):171-172.XING Zi-ru,SHI Ming-jian.Elimination buffeting of keystroke and single pulse generator circuit in FPGA development process[J].Modern Electron Technology,2009(21):171-172.

猜你喜歡
狀態(tài)機(jī)觸發(fā)器計(jì)數(shù)器
煤氣與熱力(2022年2期)2022-03-09
基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
使用觸發(fā)器,強(qiáng)化安全性
計(jì)數(shù)器競(jìng)爭(zhēng)冒險(xiǎn)及其處理的仿真分析
雙口RAM讀寫正確性自動(dòng)測(cè)試的有限狀態(tài)機(jī)控制器設(shè)計(jì)方法
三值絕熱多米諾可逆計(jì)數(shù)器設(shè)計(jì)
基于單片機(jī)的仰臥起坐計(jì)數(shù)器
幾種常見觸發(fā)器工作方式的討論
對(duì)觸發(fā)器邏輯功能轉(zhuǎn)換的分析
觸發(fā)器邏輯功能轉(zhuǎn)換的兩種方法