摘 要: 對FPGA設(shè)計中使用按鍵的常見方式進行歸納概括,提出單鍵復(fù)鍵兩類共5種典型的按鍵模式:琴鍵,、脈沖,、乒乓,、連發(fā)和長鍵模式,,并對每種按鍵模式進行了分析與設(shè)計,同時給出了設(shè)計綜合的仿真結(jié)果,。
關(guān)鍵詞: FPGA,;按鍵模式;抖動,;單鍵,;復(fù)鍵
?
在FPGA系統(tǒng)設(shè)計中,按鍵是最常見的人機交互接口部件,。在沒有微控制器參與的情況下,,F(xiàn)PGA系統(tǒng)中按鍵的功能相對較弱,通??梢詫存I抖動和按鍵處理結(jié)合起來統(tǒng)一考慮,。關(guān)于按鍵的機械抖動問題,在以文獻[1]和文獻[2]為代表的一類文章中均有討論,;關(guān)于矩陣形式的鍵盤掃描問題,,在以文獻[3]和文獻[4]為代表的一類文章中有論述。值得關(guān)注的是,,在文獻[3]中提到過對按鍵處理“能表示長時間按鍵的操作”的要求,;在文獻[4]中也涉及到“單擊和連擊”兩種擊鍵情況。不論是文獻[3]的按鍵操作,,還是文獻[4]的擊鍵操作,,都可歸結(jié)為按鍵模式問題。目前針對FPGA按鍵模式討論的文章很少,,因此本文專門探討FPGA的按鍵模式,。
1 FPGA按鍵模式的分類
常見的按鍵模式分為單鍵模式和復(fù)鍵模式兩類。所謂單鍵類,,就是一次按鍵最多只能輸出一個有效鍵,;而復(fù)鍵類,則指一次按鍵可以輸出多個有效鍵,,通常通過按鍵時間的長短來區(qū)別多個有效鍵,。
單鍵類一般有三種按鍵模式:琴鍵模式、脈沖模式,、乒乓模式,。在琴鍵模式下,按下鍵時輸出有效電平,,釋放鍵時輸出無效電平,。在脈沖模式下,每按下一次鍵只輸出一個特定寬度的有效脈沖,,其寬度常與時鐘寬度相同,,可以直接用做計數(shù)脈沖,。在乒乓模式下,每按下一次鍵,,鍵輸出電平翻轉(zhuǎn)一次,。
復(fù)鍵類按鍵一般有連發(fā)模式和長鍵模式。復(fù)鍵類按鍵在按鍵持續(xù)時間未達到長按閾值時,,輸出效果與單鍵類按鍵模式相同,。與單鍵類按鍵模式的不同之處在于對持續(xù)按鍵的不同處理方式。連發(fā)模式是指持續(xù)按鍵一定時間以上,,以一定頻率重復(fù)輸出有效鍵值,。長鍵模式則是指持續(xù)按鍵達到一定時間以上,輸出另外一種不同的有效鍵值,。為方便對比,,將幾種按鍵模式的分類情況列在表1中。
?
2 單鍵類按鍵模式的設(shè)計
2.1 琴鍵模式的設(shè)計
琴鍵模式是所有按鍵模式中相對最簡單的一種,,只要考慮到按鍵的去抖問題就可以了,。機械按鍵的抖動是由于觸點的彈性作用在開關(guān)切換的瞬間出現(xiàn)來回彈跳的不穩(wěn)定現(xiàn)象,通常抖動的時間為10ms~20ms,。在FPGA設(shè)計中,,比較簡單的去抖方法就是用50Hz的頻率采樣按鍵,將20ms以內(nèi)的按鍵抖動濾掉,。在這種消抖方式下,,去抖電路非常簡單,用D觸發(fā)器即可方便實現(xiàn),。其寄存器傳輸級(RTL)原理圖如圖1所示,。
?
不失一般性,假設(shè)按鍵輸出高電平有效(下同),,經(jīng)QuartusⅡ7.2功能仿真,,得到其仿真波形如圖2所示。從波形圖可以看出,,當(dāng)鍵KeyIn按下時,,在時鐘信號Clock_50Hz的上升沿到達后,輸出信號KeyOut持續(xù)為高電平,,直到釋鍵后輸出才變?yōu)榈碗娖健eyIn比較密集的脈沖代表按鍵或釋鍵的抖動,,從輸出信號KeyOut的波形可以看出按鍵與釋鍵過程的抖動均已去掉,,處理后鍵值輸出的電平變化均與時鐘信號的上升沿同步。
2.2 脈沖模式的設(shè)計
與琴鍵模式相比,,脈沖模式的不同之處就是對其按鍵輸出有效電平限定了一個寬度,,通常取時鐘寬度,,即為一個時鐘寬度的脈沖。在琴鍵模式輸出的基礎(chǔ)上,,再增加一個數(shù)字的微分環(huán)節(jié),,就可以獲得較窄寬度的脈沖。假設(shè)以正脈沖表示有效脈沖輸出(下同),,其RTL原理圖如圖3所示,。圖3左邊的D觸發(fā)器KeyTemp起到延遲的作用,它與KeyOut~0一并實現(xiàn)微分效果,,檢測出上跳沿,。圖3右邊的觸發(fā)器KeyOut~reg0則完成去抖功能。
仿真后的輸出波形如圖4所示,。從脈沖模式的仿真波形圖中可以看出,,完成一次按鍵動作(包括按鍵和釋鍵),獲得一個時鐘寬度的正脈沖,。為體現(xiàn)按鍵的靈敏性,,正脈沖的輸出盡量靠近按鍵動作,通常在檢測到跳沿時即輸出正脈沖,,正如圖4中KeyOut所示信號,。
2.3 乒乓模式的設(shè)計
在單鍵類按鍵模式中,乒乓模式與其他兩種模式的區(qū)別在于它的輸出并非是一次特定的有效脈沖,,而是帶有輸出電平記憶功能,,結(jié)果與原輸出電平相關(guān),將原來的電平翻轉(zhuǎn),,即高電平變?yōu)榈碗娖?,或者低電平變?yōu)楦唠娖剑看伟存I輸出電平翻轉(zhuǎn)一次,。乒乓模式的電路只需在有效跳沿檢測的基礎(chǔ)上,,再跟上一個T’觸發(fā)器做一個電平翻轉(zhuǎn)即可,其RTL原理圖如圖5所示,。圖5右邊的D觸發(fā)器KeyOut~reg0構(gòu)成T′觸發(fā)器的翻轉(zhuǎn)功能,,同時兼去抖作用。
?
乒乓模式電路仿真后的輸出波形如圖6所示,。從乒乓模式的仿真波形圖中可以看出,,完成一次按鍵動作(包括按鍵和釋鍵),輸出信號KeyOut的電平翻轉(zhuǎn)一次,。
3 復(fù)鍵類按鍵模式的設(shè)計
3.1 連發(fā)模式的設(shè)計
連發(fā)模式的按鍵過程分為兩個階段,。兩個階段的劃分以預(yù)先設(shè)定的按鍵時間tTH為閾值,當(dāng)按鍵持續(xù)時間小于tTH時,,輸出處于單鍵值階段,,可以為琴鍵模式的有效電平,,也可以為脈沖模式的有效脈沖。當(dāng)按鍵持續(xù)時間大于tTH時,,通常輸出一個一定頻率的脈沖序列,,直到釋放按鍵為止。連發(fā)模式的設(shè)計較單鍵類模式復(fù)雜,,通常用硬件描述語言完成,。其設(shè)計的控制核心可以用一個有限狀態(tài)機(FSM)表述,如圖7所示,。該FSM包括“空閑”,、“單鍵”和“連發(fā)”三個狀態(tài)??臻e態(tài)是初始狀態(tài),,沒有鍵按下時總是處于空閑態(tài)。單鍵態(tài)表示有鍵按下,,但是按鍵持續(xù)時間不到tTH,。當(dāng)鍵持續(xù)按下時間超過tTH時,系統(tǒng)處于連發(fā)態(tài),。在空閑態(tài),,系統(tǒng)輸出低電平;在單鍵態(tài),,系統(tǒng)輸出一個正脈沖(也可以根據(jù)要求輸出有效電平),;在連發(fā)態(tài),系統(tǒng)輸出一個特定頻率的脈沖序列,。
?
連發(fā)態(tài)下序列的輸出頻率是依據(jù)自己的應(yīng)用要求設(shè)定的,。閾值tTH的大小表征人按鍵時間的長短界限,通常選1~3s,,比較符合人的按鍵習(xí)慣,。為方便仿真,假設(shè)閾值tTH=1s,,1s內(nèi)輸出一個時鐘周期寬度的正脈沖,,1s后以10Hz的頻率輸出寬度為時鐘周期的正脈沖序列。按照有限狀態(tài)機采用Verilog硬件描述語言進行設(shè)計(設(shè)計代碼略去),,設(shè)計綜合后的仿真輸出波形如圖8所示,。圖8中的信號KeyIn模擬出兩次按鍵過程,前兩個“黑塊”分別代表一次按鍵及釋鍵過程,,由于按鍵持續(xù)時間短,,系統(tǒng)只輸出一個正脈沖信號。第二次按鍵動作從第3個“黑塊”處開始,,并一直持續(xù)按下不放,,可以從KeyOut信號波形上看出,先輸出一個正脈沖,,等待1s后,,開始輸出頻率為10Hz的脈沖序列。
3.2 長鍵模式的設(shè)計
長鍵模式的按鍵過程與連發(fā)模式基本相同,,其狀態(tài)轉(zhuǎn)換示意圖如圖9所示,。比較圖9與圖7,差別僅在于圖7的連發(fā)態(tài)換成了圖9的長鍵態(tài),,用以區(qū)別兩者在此時不同的狀態(tài)輸出,。
長鍵模式的仿真波形如圖10所示。為有效表示長鍵模式在長鍵態(tài)時的輸出,,引入第二個輸出信號KeyOutL,。當(dāng)按鍵處于單鍵態(tài)時,KeyOut輸出為高電平(也可以是有效脈沖),,否則為低電平,。當(dāng)按鍵處于長鍵態(tài)時,KeyOutL輸出為高電平(也可以是有效脈沖),,否則為低電平,。
?
按鍵是最不可缺少的人機交互設(shè)備之一。按鍵的去抖與模式處理是最基本的兩個按鍵處理問題,。在FPGA系統(tǒng)的設(shè)計背景下,,按鍵的兩個基本問題常放在一起考慮,但是目前國內(nèi)的文獻資料對這種情況的論述很少,。
本文針對FPGA設(shè)計中使用按鍵的常見方式進行歸納概括,,提出單鍵復(fù)鍵兩類共5種典型的按鍵模式,并對每種按鍵模式進行了分析與設(shè)計,,同時給出了QuartusII7.2下的功能仿真結(jié)果,。這幾種典型的按鍵模式在一般的嵌入式系統(tǒng)設(shè)計中也是值得借鑒與參考的。
參考文獻
[1] 谷長龍,,李小英.基于FPGA器件的消除按鍵抖動方法研究[J].吉林化工學(xué)院學(xué)報,,2006,23(3):53-55.
[2] 方龍,,肖獻保,,李威.關(guān)于消除按鍵機械抖動的研究[J].廣西輕工業(yè),2008(1):92,,105.
[3] 王志輝,,林水生.基于FPGA的鍵盤掃描模塊的設(shè)計與實現(xiàn)[J].國外電子元器件,2006(5):67-69.
[4] 張志利,侯傳勛,,蔡偉,,等.全功能硬件掃描鍵盤控制器IP核的實現(xiàn)[J].電子技術(shù)應(yīng)用,2006,,33(10).