基于FPGA的矩陣鍵盤(pán)控制器的設(shè)計(jì)_第1頁(yè)
基于FPGA的矩陣鍵盤(pán)控制器的設(shè)計(jì)_第2頁(yè)
基于FPGA的矩陣鍵盤(pán)控制器的設(shè)計(jì)_第3頁(yè)
基于FPGA的矩陣鍵盤(pán)控制器的設(shè)計(jì)_第4頁(yè)
基于FPGA的矩陣鍵盤(pán)控制器的設(shè)計(jì)_第5頁(yè)
全文預(yù)覽已結(jié)束

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于FPGA的矩陣鍵盤(pán)控制器的設(shè)計(jì)摘要:為改變采用CPU控制矩陣鍵盤(pán)導(dǎo)致CPU資源利用下降及引腳不足的現(xiàn)狀,介紹了一種基于FPGA的矩陣鍵盤(pán)控制器的開(kāi)發(fā)。在ISE13.4開(kāi)發(fā)環(huán)境下,采用VHDL硬件語(yǔ)言開(kāi)發(fā)了一種能有效防止機(jī)械式矩陣鍵盤(pán)按鍵抖動(dòng)帶來(lái)的數(shù)據(jù)錯(cuò)誤;實(shí)現(xiàn)矩陣鍵盤(pán)的自動(dòng)掃描、編碼、存儲(chǔ)、輸出等功能;并將輸入的數(shù)據(jù)依次在8個(gè)7段數(shù)碼管上進(jìn)行顯示的矩陣鍵盤(pán)控制器。將所設(shè)計(jì)的VHDL控制器配置到開(kāi)發(fā)的硬件電路系統(tǒng)上,驗(yàn)證了各項(xiàng)功能設(shè)計(jì)的正確性。在便攜式電子設(shè)備中有著廣泛應(yīng)用的矩陣鍵盤(pán),一般利用單片機(jī)對(duì)其進(jìn)行掃描控制,大大降低了單片機(jī)處理其它信息的能力,造成資源的浪費(fèi)。利用FPGA強(qiáng)大的邏輯處理能力及豐富的引腳,本文設(shè)計(jì)了基于FPGA的矩陣鍵盤(pán)控制器,主要包括矩陣鍵盤(pán)抗抖動(dòng)模塊、掃描模塊、譯碼模塊、存儲(chǔ)模塊以及數(shù)碼管顯示模塊,同時(shí)將矩陣鍵盤(pán)輸入的數(shù)據(jù)通過(guò)7段數(shù)碼管進(jìn)行顯示。1矩陣鍵盤(pán)控制器及顯示電路設(shè)計(jì)思路為完成便攜式設(shè)備的人機(jī)交互,利用4×4矩陣鍵盤(pán)設(shè)計(jì)了基于FPGA的矩陣鍵盤(pán)控制器及顯示電路,如圖1所示。系統(tǒng)主要由FPGA、矩陣鍵盤(pán)、138譯碼芯片以及數(shù)碼管等組成,主要完成一個(gè)8位數(shù)的輸入,對(duì)所輸入的8位數(shù)進(jìn)行存儲(chǔ)供后續(xù)使用,利用數(shù)碼管的顯示功能來(lái)確認(rèn)所輸入的數(shù)據(jù)是否準(zhǔn)確,降低輸入誤差。由圖1可看出,本系統(tǒng)軟件部分主要實(shí)現(xiàn)矩陣鍵盤(pán)行列掃描控制、輸入抗抖動(dòng)、按鍵譯碼、按鍵存儲(chǔ)以及數(shù)碼管顯示等功能。(1)矩陣鍵盤(pán)行列掃描控制模塊:產(chǎn)生周期性的掃描信號(hào),根據(jù)掃描輸入信號(hào)進(jìn)行判斷是否有按鍵被按下,若有按鍵被按下則立刻進(jìn)行按鍵判斷和編碼,并將按鍵存儲(chǔ)到內(nèi)部寄存器。(2)彈跳消除電路:機(jī)械開(kāi)關(guān)結(jié)構(gòu)的矩陣鍵盤(pán),按鍵被按下時(shí),接觸點(diǎn)會(huì)出現(xiàn)來(lái)回彈跳的信號(hào)。信號(hào)彈跳時(shí)間內(nèi)程序無(wú)法有效的判斷按鍵值,從而影響到輸入的正確性,降低設(shè)備的性能。(3)按鍵譯碼電路:掃描回復(fù)信號(hào)(按鍵輸入給FPGA的信號(hào))在FPGA內(nèi)部無(wú)法直接作為后續(xù)使用信號(hào),必須定義中間信號(hào),用以區(qū)分不同按鍵的功能,對(duì)按鍵進(jìn)行譯碼。(4)按鍵存儲(chǔ)電路:前一次按鍵的輸入數(shù)據(jù)將被下一次掃描產(chǎn)生的新按鍵數(shù)據(jù)覆蓋,因此需要一個(gè)移位寄存器來(lái)保存整個(gè)按鍵的輸入。(5)數(shù)碼管顯示電路:為完成8位數(shù)據(jù)的輸入顯示,需要對(duì)每個(gè)數(shù)碼管進(jìn)行掃描控制,并根據(jù)按鍵值對(duì)數(shù)碼管進(jìn)行譯碼顯示。

2矩陣鍵盤(pán)控制器及顯示的VHDL設(shè)計(jì)2.1矩陣鍵盤(pán)防抖設(shè)計(jì)矩陣鍵盤(pán)抗抖動(dòng)電路主要有計(jì)數(shù)器、移位寄存器、D型觸發(fā)器延時(shí)和采樣型防抖微分電路四種方

法[2]。本文采用的去抖方法是:將鍵盤(pán)輸入信號(hào)作為電路輸入信號(hào),在時(shí)鐘信號(hào)作用下,輸入信號(hào)經(jīng)過(guò)兩級(jí)D觸發(fā)器延時(shí)后再使用RS觸發(fā)器進(jìn)行處理。抖動(dòng)消除電路所使用的脈沖信號(hào)頻率必須比其它電路使用的脈沖信號(hào)頻率更高,通常將掃描電路的工作頻率定在24Hz左右,而將彈跳電路的工作頻率定在128Hz左右[3]。根據(jù)以上設(shè)計(jì)思想,采用VHDL硬件語(yǔ)言編寫(xiě)了鍵盤(pán)抗抖動(dòng)模塊,抗抖動(dòng)模塊經(jīng)綜合后其RTL電路圖如圖2所示。

2.2時(shí)鐘電路電路時(shí)鐘電路主要產(chǎn)生系統(tǒng)所需要的時(shí)鐘信號(hào),由FPGA時(shí)鐘分頻得到系統(tǒng)工作時(shí)鐘,然后采用計(jì)數(shù)器分頻方法得到所需要的彈跳消除時(shí)鐘信號(hào)、鍵盤(pán)掃描信號(hào)以及數(shù)碼管顯示時(shí)鐘信號(hào)。鍵盤(pán)掃描電路用來(lái)產(chǎn)生鍵盤(pán)掃描信號(hào),根據(jù)矩陣鍵盤(pán)工作原理,需要產(chǎn)生從第一列到第四列的周期性?huà)呙栊盘?hào)。采用VHDL硬件語(yǔ)言設(shè)計(jì)掃描模塊,具體程序如下。

2.3矩陣鍵盤(pán)譯碼電路矩陣鍵盤(pán)所產(chǎn)生的掃描回復(fù)信號(hào)(按鍵輸入給FPGA的信號(hào)),是無(wú)法直接在FPGA內(nèi)部作為信號(hào)進(jìn)行使用,在使用前需要根據(jù)定義的不同功能將掃描回復(fù)信號(hào)譯碼為可供FPGA識(shí)別的BCD編碼,完成矩陣鍵盤(pán)輸入的譯碼,同時(shí)區(qū)分不同按鍵的功能。譯碼電路的主要功能是:判斷是否有鍵按下,然后根據(jù)掃描的信號(hào)確認(rèn)所按下的鍵是數(shù)字鍵還是功能鍵,將所按下的鍵編寫(xiě)成BCD碼。表1為所用鍵盤(pán)輸入信號(hào)與按鍵位置之間的關(guān)系。2.4存儲(chǔ)及顯示電路每次掃描會(huì)產(chǎn)生新的按鍵輸入,可能會(huì)覆蓋前面的數(shù)據(jù),所以需要一個(gè)按鍵存儲(chǔ)器電路,將整個(gè)鍵盤(pán)掃面完畢后的結(jié)果記錄下來(lái)。按鍵存儲(chǔ)電路由移位寄存器電路組成。本設(shè)計(jì)采用串行輸入、串行輸出移位寄存器作為按鍵存儲(chǔ)電路。設(shè)計(jì)思路:八進(jìn)制計(jì)數(shù)器cnt按合適的頻率進(jìn)行計(jì)數(shù);每記一個(gè)數(shù),便給位選信號(hào)segweixh賦一個(gè)不同的值,通過(guò)I/O口將segweixh的值輸出給138譯碼器;當(dāng)位選信號(hào)segweixh變化時(shí),按一定的算法將鍵盤(pán)輸入信號(hào)的四位賦值給內(nèi)部寄存器datebuf;process(datebuf)過(guò)程是數(shù)碼管顯示譯碼階段,主要完成對(duì)輸入信號(hào)的譯碼工作。(限于篇幅,程序略)3實(shí)驗(yàn)結(jié)果分析(1)掃描電路仿真分析:圖3所示為分頻和鍵盤(pán)掃描仿真圖,圖中clk為頻率為50MHz的FPGA時(shí)鐘信號(hào);clk_1kHz為經(jīng)過(guò)50000分頻得到的1kHz的鍵盤(pán)掃描工作時(shí)鐘信號(hào);在程序內(nèi)部分頻器的作用下對(duì)鍵盤(pán)進(jìn)行掃描,clk_scan為鍵盤(pán)掃描信號(hào),由圖3可以看出仿真結(jié)果和理論要求一致。(2)數(shù)碼管顯示電路仿真分析:圖4所示為數(shù)碼管顯示仿真波形,圖中clk為頻率為50Mhz的FPGA

時(shí)鐘信號(hào);clk_1khz為經(jīng)過(guò)50000分頻得到的1khz的數(shù)碼管顯示工作時(shí)鐘信號(hào);矩陣鍵盤(pán)輸入數(shù)據(jù)存放在移位寄存器datain_x中,假設(shè)輸入數(shù)據(jù)為“00000001001000110100010101100111”,對(duì)應(yīng)的顯示數(shù)碼為0、1、2、3、4、5、6、7;led_out為138位選信號(hào),由仿真結(jié)果看得其與理論值一致;segma_out為數(shù)碼管顯示斷碼,由圖4可得,在led_out為“000”、“001”、“010”、“011”、“100”、“101”、“110”、“111”時(shí)分別顯示“11111010”、“00100010”、“10111001”、“10101011”、“01100011”、“11001011”、“11011011”、“10100010”,即0、1、2、3、4、5、6、7與輸入的數(shù)據(jù)一致。4結(jié)語(yǔ)本設(shè)計(jì)的矩陣鍵盤(pán)控制器及其顯示電路在ISE13.4開(kāi)發(fā)環(huán)境下進(jìn)行仿真驗(yàn)證后,下載到采用138譯碼芯片、矩陣鍵盤(pán)、FPGA及4位數(shù)碼管建立開(kāi)發(fā)的硬件系統(tǒng)中進(jìn)行了硬件驗(yàn)證,該硬件采用Xilinx系列spartan-xc3s500E芯片作為核心

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論