基于VHDL語(yǔ)言的按鍵消抖電路設(shè)計(jì)及仿真
2.2 按鍵消抖電路設(shè)計(jì)
該控制電路采用VHDL語(yǔ)言的有限狀態(tài)機(jī)的設(shè)計(jì)方法來(lái)描述和實(shí)現(xiàn),其狀態(tài)轉(zhuǎn)換圖如圖2所示。本文引用地址:http://www.ex-cimer.com/article/181118.htm
電路的復(fù)位信號(hào)Reset有效時(shí),電路進(jìn)入復(fù)位狀態(tài)S0,在S0狀態(tài)下時(shí)鐘信號(hào)CLK以一定的頻率采樣按鍵輸入信號(hào)Key_in,如果采樣到Key_in=‘1’則停留在S0狀態(tài),并繼續(xù)采樣按鍵輸入信號(hào)的狀態(tài),一旦采樣到輸入信號(hào)是低電平,即Key_in=‘0’,則轉(zhuǎn)入S1延時(shí)狀態(tài),進(jìn)行消抖延時(shí),當(dāng)延時(shí)結(jié)束時(shí)Delay_end=‘1’,則轉(zhuǎn)入在S2狀態(tài),在此狀態(tài)下時(shí)鐘信號(hào)CLK以一定頻率采樣按鍵輸入Key_in的狀態(tài),如果采樣到Key_in為高電平即Key_in=‘1’則轉(zhuǎn)回狀態(tài)S0,表示按鍵仍處在抖動(dòng)狀態(tài),如果采樣到Key_in=‘O’,則轉(zhuǎn)入狀態(tài)S3;狀態(tài)S3,S4的轉(zhuǎn)換過(guò)程和條件跟S2相同,在S4狀態(tài)下,如果Key_in=‘0’則轉(zhuǎn)入S5狀態(tài),當(dāng)?shù)竭_(dá)狀態(tài)S5時(shí).表示經(jīng)過(guò)S2,S3,S4三個(gè)連續(xù)狀態(tài)檢測(cè)按鍵輸入Key_in的狀態(tài)都為‘0’,則認(rèn)為按鍵處在穩(wěn)定狀態(tài),并在S5輸出按鍵確認(rèn)信號(hào)Key_confirm=‘1’。同時(shí)在狀態(tài)S5下時(shí)鐘信號(hào)CLK檢測(cè)按鍵輸入狀態(tài),當(dāng)檢測(cè)到按鍵輸入Key_in=‘0’,表示按鍵仍未釋放,則停留在S5繼續(xù)檢測(cè)按鍵輸入信號(hào)狀態(tài),如果檢測(cè)到Key_in=‘1’,表示按鍵已經(jīng)釋放,則轉(zhuǎn)回狀態(tài)S0,等待下一次按鍵操作。
3 按鍵消抖電路的仿真分析
消抖電路的仿真圖如圖3所示。當(dāng)復(fù)位信號(hào)Reset=‘0’時(shí),狀態(tài)機(jī)Key處在S0狀態(tài),同時(shí)以CLK的時(shí)鐘頻率采樣按鍵輸入信號(hào)Din的狀態(tài),當(dāng)CLK第一次采樣到Din為低電平時(shí),此時(shí)可能發(fā)生了按鍵操作,隨即狀態(tài)機(jī)Key進(jìn)入S1消抖延時(shí)狀態(tài),當(dāng)延時(shí)結(jié)束時(shí)delay_end=‘1’(延時(shí)結(jié)束信號(hào)),跟接著狀態(tài)機(jī)KEY的S2,S3,S4連續(xù)三個(gè)狀態(tài)對(duì)按鍵輸入信號(hào)Din進(jìn)行采樣,當(dāng)三個(gè)狀態(tài)下采樣到Din信號(hào)都是低電平,則轉(zhuǎn)入S5狀態(tài),并產(chǎn)生按鍵確認(rèn)信號(hào)Key_confirm=‘1’,同時(shí)在S5狀態(tài)下等待按鍵釋放,在此狀態(tài)下當(dāng)CLK時(shí)鐘信號(hào)檢測(cè)到Din為高電平時(shí)轉(zhuǎn)回狀態(tài)S0。因按鍵釋放瞬間也會(huì)發(fā)生抖動(dòng),所以由波形圖可以看出,當(dāng)按鍵釋放瞬間由狀態(tài)S5轉(zhuǎn)回狀態(tài)S0,在S0狀態(tài)下,因按鍵抖動(dòng)CLK時(shí)鐘又檢測(cè)到Din為低電平,隨即轉(zhuǎn)入S1進(jìn)行消抖延時(shí),經(jīng)過(guò)S1的消抖延時(shí)后,按鍵已經(jīng)穩(wěn)定,Din為穩(wěn)定的高電平,所以在狀態(tài)S2檢測(cè)到Din為高電平,則轉(zhuǎn)入S0狀態(tài),到此時(shí)完成一次按鍵的操作,等待下一次按鍵操作,如果沒(méi)有按鍵操作,即按鍵沒(méi)按下,則一直保持在狀態(tài)S0。
4 結(jié) 語(yǔ)
采用有限狀態(tài)機(jī)方法設(shè)計(jì)按鍵消抖電路,再根據(jù)按鍵的特性設(shè)定合適的延時(shí)時(shí)間(一般10 ms)后,通過(guò)仿真分析及實(shí)驗(yàn)驗(yàn)證,能夠起到很好的消抖效果,而且性能穩(wěn)定,能確保每一次按鍵操作,產(chǎn)生一次按鍵確認(rèn),可廣泛應(yīng)用于可編程邏輯器件的鍵盤(pán)掃描設(shè)計(jì)中。
評(píng)論