



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 基于CPLD 的矩陣鍵盤掃描模塊設(shè)計 基于CPLD 的矩陣鍵盤掃描模塊設(shè)計 類別:EDA/PLD 摘要: 為了在不增加CPU 工作負擔的前提下,實現(xiàn)標準鍵盤和矩陣鍵盤雙鍵盤同時工作,提出了一種基于復(fù)雜可編邏輯器件(CPLD)的矩陣鍵盤掃描方案,實現(xiàn)了在矩陣鍵盤狀態(tài)控制下CPLD 自動完成鍵盤掃描、編碼、輸出的功能,CPU 通過定時器中斷服務(wù)程序定時查詢矩陣鍵盤狀態(tài),并將按鍵值直接送入鍵盤
2、緩沖區(qū),供其他程序使用。 給出了CPLD 部分模塊的VHDL 語言實現(xiàn)和仿真波形。在矩陣鍵盤的掃描、編碼、輸出完全不需CPU 控制的前提下,實現(xiàn)標準鍵盤和矩陣鍵盤雙鍵盤同時使用。 在基于PC104 的便攜式野外測試設(shè)備的設(shè)計中,鍵盤是常用的輸入設(shè)備。對于便攜式設(shè)備野外工作時,一般使用小型(4×4)矩陣鍵盤就能滿足設(shè)備的信息輸入需要; 室內(nèi)調(diào)試時, 使用標準PS2 鍵盤更方便、靈活。一般的做法是保留PC104 的鍵盤接口用于接標準鍵盤, 利用擴展I/O接口完成小矩陣鍵盤的掃描和輸入。這樣做雖然可以實現(xiàn)設(shè)備雙鍵盤同時工作的功能, 卻需耗費大量的CPU 處理時間掃描矩陣鍵盤, 造成CPU
3、處理其他信息的能力下降。而本文設(shè)計的基于CPLD 的矩陣鍵盤掃描模塊能夠很好地解決上述問題。 1 矩陣鍵盤掃描原理 圖1 給出了4×4 矩陣鍵盤的電路圖, 在圖1 中KX3.0為掃描碼輸入,KY3.0為掃描碼輸出。鍵盤掃描開始時,首先置KX3.0=“0000”;鍵盤掃描碼寄存器和鍵盤掃描碼緩存器Kreg15.0和Kscan15.0置成“1111111111111111” ( 全1為沒有鍵按下,有鍵按下時至少有一位為0),一旦有鍵按下,KY3.0輸出不全為“0”的掃描碼觸發(fā)鍵盤掃描功能開始鍵盤掃描,掃描開始后,依次將KX3、KX2、KX1、KX0 置“0”,分別將對應(yīng)的4 組KY3.0
4、輸入值保存于Kscan15.12、Kscan11.8 、Kscan7.4 、Kscan3.0中,而后比較Kscan 和Kreg 的大小,如果Kscan 小于Kreg,將Kscan 保存于Kreg 中,重復(fù)上述掃描過程直到Kscan15.0各位輸出全為“1”時,說明按下的鍵全部抬起,Kreg15.0中的每一個為“0”的位對應(yīng)一個按下的鍵,保留掃描過程中的Kreg 最小值就可以處理組合鍵。 根據(jù)記錄的Kreg 值可以判斷是哪個或哪幾個鍵按下, 據(jù)此編碼按鍵值后輸出。將KX3.0置為“0000”,等待下一次按鍵發(fā)生。 圖1 4×4 矩陣鍵盤電路圖。 2 基于CPLD 的4×4 矩
5、陣鍵盤掃描模塊設(shè)計 根據(jù)上述掃描原理和工作流程,如果以PC104 CPU 實現(xiàn)上述矩陣鍵盤的掃描過程, 那么在有鍵按下后,CPU 必須不停地掃描矩陣鍵盤電路,在此期間不能進行其他工作,降低了CPU 工作效率,且CPU 連續(xù)高速運轉(zhuǎn)增加系統(tǒng)功耗。 本文的目的就是在不需要CPU 參與的條件下以CPLD完成矩陣鍵盤按鍵事件觸發(fā)、按鍵的掃描定位以及按鍵的編碼和鍵值輸出工作,CPU 只需要定時查詢有無鍵按下并讀走按下鍵的按鍵值送入鍵盤緩沖區(qū)。這樣就使CPU 從繁重的矩陣鍵盤掃描工作中解脫出來。根據(jù)上述鍵盤掃描工作原理,基于CPLD 的4×4 矩陣鍵盤掃描模塊功能框圖如圖2 所示。 圖2 4
6、215;4 矩陣鍵盤掃描模塊CPLD 實現(xiàn)框圖。 圖中, 模塊KeyTri 在時鐘信號CLK 的控制下實現(xiàn)按鍵事件觸發(fā)和矩陣鍵盤掃描時序產(chǎn)生功能; 模塊keycode 在時鐘信號CLK 和掃描時序碼SCode 的控制下完成輸出鍵盤掃描碼KX,同時記錄16 位鍵盤掃描數(shù)據(jù)等工作,并在所有鍵抬起后對按下的鍵編碼完成輸出功能;模塊nread 實現(xiàn)按鍵碼的暫存、按鍵狀態(tài)的置位和清除以及矩陣鍵盤的使能;模塊PCPORT 完成矩陣鍵盤與CPU 的接口; 模塊OSC 與CreatClock 產(chǎn)生控制鍵盤掃描模塊工作的3 KHz 時鐘信號CLK。 2.1 鍵盤掃描觸發(fā)模塊(KeyTri)的功能與時序仿真 鍵盤
7、掃描過程中,掃描信號不停變化,以判斷鍵盤按鍵的按下和抬起。高速變化的鍵盤掃描信號不僅使系統(tǒng)功耗增加,而且還會對其他敏感電路造成干擾。因此在本設(shè)計中將鍵盤掃描模式設(shè)計成鍵按下觸發(fā)掃描方式,只有當鍵盤有鍵按下后,才觸發(fā)鍵盤掃描電路產(chǎn)生掃描鍵盤時序,所有鍵都放開后,停止對鍵盤的掃描,使電路處于相對靜止狀態(tài),以減少對其他電路的干擾。 鍵盤按下時會有抖動,在按鍵抖動時掃描鍵盤,可能會使鍵盤掃描電路產(chǎn)生誤判,因此在鍵盤按下與開始掃描之間應(yīng)加入一段延時,延時結(jié)束后按鍵仍處于按下狀態(tài),才允許開始鍵盤掃描,這樣做可以最大限度地避免掃描電路的誤判和漏判。 鍵盤掃描觸發(fā)模塊實現(xiàn)的功能為: 在KX=“0000” 的狀
8、態(tài)下,如果有任意一個鍵被按下,KY 必然不全為1,觸發(fā)延時功能開始延時,延時結(jié)束后,如果KY 仍不全為1,說明該按鍵事件有效, 啟動掃描時序產(chǎn)生1HBH 的4 位循環(huán)掃描時序碼,控制后續(xù)的鍵盤掃描電路對鍵盤掃描,當ReSet 變低時,立即將掃描時序碼置為0H,停止本次鍵盤掃描并等待下一次鍵盤按下事件到來。鍵盤掃描觸發(fā)模塊的VHDL 語言實現(xiàn)如下: 鍵盤掃描觸發(fā)模塊的時序仿真如圖3 所示。 圖3 鍵盤掃描觸發(fā)模塊的時序仿真。 在圖3 中,和之間的時間為去鍵盤抖動延時,為了方便仿真,此處把延時時間設(shè)定為4 個周期,實際使用時,應(yīng)保持在2030 ms 左右。 2.2 鍵盤掃描與編碼輸出模塊(keyc
9、ode)的功能與時序仿真 所謂鍵盤掃描,就是在鍵盤的KX 端依次送入掃描碼,以便定位被按下的鍵。鍵盤編碼是對鍵盤掃描值譯碼得到按下鍵的按鍵值。 該模塊完成的功能為: 在掃描時序控制碼SCode 3.0和CLK 的下降沿控制下依次輸出4 組掃描碼“0111”、“1011”、“1101”、“1110”掃描整個鍵盤,同時記錄鍵盤的掃描值,將記錄的4 組掃描值組合成一組16 位的鍵盤掃描值Kscan 15.0,如果Kscan15.0 小于Kreg15.0, 將Kscan15.0 保存于Kreg15.0中,當所有鍵放開后,對Kreg15.0譯碼產(chǎn)生按鍵編碼并輸出。有一個鍵按下,16 位的鍵盤掃描值中有且
10、只有一位為0,多鍵組合按下時,鍵盤掃描值中就會有多個位為0,因此在鍵盤掃描過程中,記錄最小的鍵盤掃描值,使得掃描模塊不僅能夠處理單鍵,而且可以處理多鍵組合。具體工作過程說明如下: 當SCode 3.0=0 時,KX=“0000”, 置16 位鍵盤掃描值Kscan15.0和Kreg15.0為全1,此時無論哪一個鍵按下,都可使KY 不全為1,從而觸發(fā)掃描模塊工作;當SCode3.0=1 或2 時,KX=“0111”,此時圖1 中K12K15 有按下的鍵時, KY 對應(yīng)位為0,其他位為1,記錄KY到鍵盤掃描碼寄存器的Kreg15.12;當SCode3.0=3 或4 時,KX=“1011”,此時圖1
11、中K08K11 有按下的鍵時, KY 對應(yīng)位為0,其他位為1,記錄KY到鍵盤掃描碼寄存器的Kreg11.8;當SCode3.0=5 或6 時,KX=“1101”,此時圖1 中K04K07 有按下的鍵時, KY 對應(yīng)位為0,其他位為1,記錄KY到鍵盤掃描碼寄存器的Kreg7.4;當SCode3.0=7 或8 時,KX=“1110”,此時圖1 中K00K03 有按下的鍵時, KY 對應(yīng)位為0,其他位為1,記錄KY到鍵盤掃描碼寄存器的Kreg3.0;當SCode3.0=9 和10 時,如果Kscan15.0各位不全為“1” 且Kscan15.0< Kreg15.0, 將Kscan15.0 保存
12、到Kreg15.0;否則對Kreg15.0譯碼產(chǎn)生按鍵編碼并輸出;當SCode3.0=11 且記錄Kscan15.0各位為全“1”時,產(chǎn)生鍵盤復(fù)位信號ReSet,結(jié)束本次鍵盤掃描。 鍵盤掃描與編碼輸出模塊的核心模塊VHDL 語言實現(xiàn)如下: 鍵盤掃描與編碼輸出模塊的時序仿真圖如圖4 所示。 圖4 鍵盤掃描與編碼模塊的時序仿真。 2.3 鍵盤編碼輸出模塊(nread)的功能與時序仿真 在該模塊中,KeyData 的最高位KeyData(7)為鍵盤緩存狀態(tài)指示位,當KeyData(7)=0時,表示鍵盤緩存中沒有按鍵碼;當KeyData(7)=1時,表示鍵盤緩存中有按鍵碼等待CPU 讀取。KeyDat
13、a6.0為按下鍵的編碼。ReSet 的下降沿用于將KeyVal6.0存入KeyData6.0,同時將KeyData(7)置成1。enKeyOut 用于使能矩陣鍵盤輸出,當enKeyOut=1時,允許矩陣鍵盤輸出按鍵碼;當enKeyOut=0時,禁止矩陣鍵盤輸出按鍵碼。ClrKey 用于清除鍵盤緩存狀態(tài)指示位KeyData(7),當ClrKey=0時,置KeyData(7)為0。 鍵盤編碼輸出模塊的VHDL 語言實現(xiàn)如下: 鍵盤編碼輸出模塊的時序仿真圖如圖5 所示。 圖5 鍵盤編碼輸出模塊的時序仿真。 2.4 接口模塊(PCPORT)的功能與時序仿真 該模塊用于實現(xiàn)CPU 讀入鍵盤碼以及矩陣鍵盤
14、控制信號的輸出。開始時,CPU 首先應(yīng)通過該模塊送出OSCEn=1 信號, 使振蕩器模塊(OSC) 和時鐘產(chǎn)生模塊(CreatClock)開始工作,產(chǎn)生驅(qū)動掃描模塊工作的時鐘信號F3kHz;接下來送出鍵盤禁止信號enKeyOut=0;禁止矩陣鍵盤在穩(wěn)定工作前隨機輸出按鍵值; 其次送出清除鍵盤緩存狀態(tài)指示位的ClrKey 信號; 最后再送出鍵盤使能信號enKeyOut=1,開始模塊掃描鍵盤工作。接口模塊的時序仿真圖如圖6 所示。 圖6 接口模塊的時序仿真。 2.5 其他模塊的功能 振蕩器模塊(OSC) 為利用Altera 公司的IP 核產(chǎn)生的MAXII 系列CPLD 內(nèi)帶的振蕩器, 用于在使能信
15、號的控制下產(chǎn)生3.3 MHz 的時鐘輸出。 時鐘產(chǎn)生模塊(CreatClock),用于將3.3 MHz 的時鐘分頻產(chǎn)生3 KHz 的鍵盤掃描時鐘,驅(qū)動整個鍵盤掃描模塊工作。 3 控制軟件的設(shè)計 本文軟件設(shè)計的基本思想是:CPU 利用定時中斷查詢矩陣鍵盤狀態(tài)并讀入矩陣鍵盤的按鍵碼,如果按鍵碼為需要立即響應(yīng)的特殊功能鍵(如熱啟動鍵),即在中斷服務(wù)程序中作出處理,否則直接送入與標準鍵盤共用的鍵盤緩沖區(qū),在鍵盤緩沖區(qū)與標準鍵盤送來的按鍵碼一起排隊等待CPU 響應(yīng)處理,從而實現(xiàn)雙鍵盤同時工作。在向鍵盤緩沖區(qū)寫入按鍵值時,必須使用DOS 軟中斷,否則會由于中斷優(yōu)先級的原因而使新寫入的按鍵碼得不到響應(yīng)。 矩
16、陣鍵盤的控制軟件采用C 語言編制,利用PC104 的定時器中斷定時查詢矩陣鍵盤, 如果有鍵值, 將其存入PC104 的鍵盤緩沖區(qū),等待PC104 使用??刂瞥绦虻脑创a如下: 4 測試結(jié)果 本文所述的鍵盤掃描模塊已經(jīng)在多功能電法接收機中使用,在使用過程中對矩陣鍵盤的響應(yīng)時間、準確度、CPU 處理時間占用、以及雙鍵盤同時工作性能等指標進行了測試分析,結(jié)果如下: 1)矩陣鍵盤響應(yīng)時間和準確度測試,理論上計算矩陣鍵盤的最短響應(yīng)時間為T=t1+t2+t3+t4=55.9 ms(其中,t1為防抖動延時時間30 ms; t2鍵盤掃描最短用時, 共掃描2 次用22 個F3 kHz 時鐘周期6.6 ms; t3
17、為鍵盤值暫存時間,3 個F3kHz 時鐘周期1 ms; t4為查詢鍵盤中斷間隔18.3 ms), 考慮到操作鍵盤的速度, 測試方法為全部16 個鍵以3 次/s 的速度連續(xù)按6 次,間隔5 s 換一個鍵,將鍵值輸出到顯示器觀察輸入情況,測試結(jié)果為:總按鍵數(shù):96;顯示按鍵數(shù):96;漏判按鍵數(shù):0;錯判按鍵數(shù):0;準確率:100%。 2)矩陣鍵盤占用CPU 時間分析,通過對矩陣鍵盤按鍵值的讀入程序分析可知, 當允許矩陣鍵盤輸出且有鍵按下時,每次中斷服務(wù)程序需要額外執(zhí)行8 條語句, 大約用時4 s;當允許矩陣鍵盤輸出且沒有鍵按下時,每次中斷服務(wù)程序需要額外執(zhí)行3 條語句,大約用時1.5 s;與CPU 完成矩陣鍵盤掃描工作(假設(shè)從鍵按下到釋放一般用時300 ms)相比,一次按鍵讀入CPU 占用時間節(jié)省99.998%。 3)雙鍵盤同時工作測試,測試方法將矩陣鍵盤和標準鍵盤同時接入系統(tǒng), 按1 次/s 的速度交替按兩鍵盤的按鍵100個,在顯示器上觀察按鍵輸出情況,得出雙鍵盤工作可靠性數(shù)據(jù)如下: 總按鍵數(shù):200;顯示按鍵數(shù)200;漏判按鍵數(shù):0;錯判按鍵數(shù):0;準確率:100%。因此,該模塊可以實現(xiàn)雙鍵盤同時工作。 5 結(jié)論 該模塊經(jīng)過測試和使用,得出如下結(jié)論:1)基于CPLD 的矩陣鍵
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國數(shù)顯量具產(chǎn)銷需求分析及投資發(fā)展前景預(yù)測研究報告
- 湖北省襄陽三中2025年高考英語二模試卷含解析
- 職業(yè)技術(shù)學院2024級計算機網(wǎng)絡(luò)技術(shù)專業(yè)人才培養(yǎng)方案
- 廣東省廣州市2025屆高三下學期綜合測試(二)(二模)數(shù)學試題 含解析
- 上海市金山區(qū)2024-2025學年八年級下學期中化學試題(原卷版+解析版)
- 生態(tài)環(huán)境監(jiān)測中的遙感與GIS技術(shù)考核試卷
- 電氣安裝石油與開采設(shè)備考核試卷
- 管道配件生產(chǎn)的自動化技術(shù)考核試卷
- 船舶改裝施工過程中的質(zhì)量安全管理協(xié)同考核試卷
- 納米材料在海水淡化處理中的應(yīng)用考核試卷
- 2025年山東鐵投集團招聘筆試參考題庫含答案解析
- 煙草行業(yè)信息化總體技術(shù)架構(gòu)設(shè)計與實施方案
- 2025年國家電投公開招聘管理單位筆試遴選500模擬題附帶答案詳解
- 陜西省商洛市新高考綜合改革政策培訓(xùn)課件
- 鐵礦石采購合同三篇
- 電工電子學知到智慧樹章節(jié)測試課后答案2024年秋湖南大學
- 國開數(shù)據(jù)庫運維網(wǎng)考復(fù)習題及答案
- 【MOOC】能源與氣候變化應(yīng)對法-西南政法大學 中國大學慕課MOOC答案
- 陜西延長石油集團有限責任公司行測筆試題庫2024
- 【MOOC】計算機網(wǎng)絡(luò)-南京農(nóng)業(yè)大學 中國大學慕課MOOC答案
- 《出口單證實務(wù)》課件
評論
0/150
提交評論