摘要:本文給出了嵌入式系統(tǒng)鍵盤(pán)接口模塊的實(shí)現(xiàn)方案,并著重對(duì)鍵盤(pán)掃描與狀態(tài)判決、鍵碼輸出、鍵盤(pán)命令接收與響應(yīng)三部分的FPGA實(shí)現(xiàn)做了詳細(xì)闡述。
關(guān)鍵詞:嵌入式系統(tǒng);鍵盤(pán);FPGA
概述
隨著微電子和計(jì)算機(jī)技術(shù)和應(yīng)用不斷創(chuàng)新,軍用通信裝備或民用信息終端的通信功能和信號(hào)處理能力與日俱增,與此同時(shí),不同的通信終端對(duì)于系統(tǒng)功能、實(shí)時(shí)性、可靠性、安全性及體積重量等方面有著不同的要求,這促使嵌入式系統(tǒng)得以更廣泛地應(yīng)用。
通信終端不僅要求系統(tǒng)完成終端控制功能,同時(shí)要完成通信和數(shù)字信號(hào)處理功能。由于FPGA支持高速的并行運(yùn)算,因而高速數(shù)字信號(hào)處理通常由FPGA來(lái)完成;同時(shí)由于FPGA在時(shí)序控制方面的優(yōu)勢(shì)及軟件定義接口方面的靈活性,F(xiàn)PGA也是嵌入式處理器和系統(tǒng)外設(shè)連接橋梁。可編程器件廠商更將處理器硬核或軟核植入FPGA器件中,構(gòu)成片上可編程系統(tǒng)(sOPC)。
軍用或民用的手持、背負(fù)、車(chē)載或固定臺(tái)站等通信設(shè)備中,鍵盤(pán)都是不可或缺的輸入單元。鍵盤(pán)接口部分負(fù)責(zé)自定義鍵盤(pán)和嵌入式處理器的連接,完成鍵盤(pán)掃描、鍵碼產(chǎn)生、命令接收與響應(yīng)等功能。系統(tǒng)框圖如圖1所示。
圖1中鍵盤(pán)與接口模塊之間的連接是行列掃描信號(hào),鍵盤(pán)接口模塊與MCU之間的連接則是標(biāo)準(zhǔn)的AT/PS2接口,其中時(shí)鐘線與數(shù)據(jù)線相應(yīng)時(shí)序關(guān)系可參閱相關(guān)規(guī)范。雙向端口表明鍵盤(pán)接口模塊需要向嵌入式處理器提供正確的掃描碼,同時(shí)還需要接收處理器相關(guān)的控制指令,如碼集選擇、Typematic速率和延遲設(shè)定等。
鍵盤(pán)掃描與狀態(tài)判決
鍵盤(pán)掃描電路由按鍵和上拉的行列掃描線構(gòu)成,F(xiàn)PGA根據(jù)掃描時(shí)序?qū)π?或列)輸出低電平,同時(shí)由列(或行)讀入當(dāng)前鍵盤(pán)狀態(tài)。由于有多重按鍵的可能,在行(或列)的空閑時(shí)間由FPGA配置為高阻態(tài)。掃描電路如圖2所示。
鍵盤(pán)接口模塊正確生成鍵碼的基礎(chǔ)是對(duì)鍵按下或釋放的狀態(tài)有正確的判決。實(shí)際鍵盤(pán)在被按下或釋放時(shí),掃描信號(hào)存在不穩(wěn)定態(tài),同時(shí)即使按鍵狀態(tài)未做改變,掃描線上也可能有干擾,因此需采用多次采樣、大數(shù)判決的去抖動(dòng)方案,綜合考慮擊鍵或釋放的穩(wěn)定時(shí)間以及擊鍵保持時(shí)間,時(shí)間跨度選為27ms,采用3/2大數(shù)譯碼,相應(yīng)的掃描脈沖時(shí)序如圖3所示。
鍵盤(pán)掃描參數(shù)受嵌入式處理器命令控制,其中Typematic的速率(1/T2)和延遲參數(shù)(T1)與鍵盤(pán)掃描時(shí)序直接相關(guān),該參數(shù)由0xF3命令置人,在bit7~bit0中,bit7常為“0”,bit6、bit5記為“C”,bit4、bit3記為“B”,bit2、bitl和bit0記為“A”,有:
·Typematic速率=1/((8+A)×(2B)×0.00417)chars/sec。
·Typematic延遲=(C+1)×250ms。
·缺省參數(shù)為:Typematic速率=10.9 chars/sec20%;Typematic延遲=500mS 20%。
鍵盤(pán)接口模塊對(duì)鍵盤(pán)狀態(tài)的判決還需要正確解決多重按鍵的問(wèn)題。除“Pause”鍵外,所有按鍵在按下并保持時(shí)都會(huì)啟動(dòng)Typematic,當(dāng)有多重按鍵按下時(shí),最后一個(gè)按鍵進(jìn)入Typematic狀態(tài),并在釋放時(shí)退出,之前所有按鍵釋放都不影響當(dāng)前的Typematic狀態(tài)。定義STM為T(mén)ypematic當(dāng)前狀態(tài),F(xiàn)為STIV之前所有按鍵狀態(tài)集合,多重?fù)翩I狀態(tài)轉(zhuǎn)換圖如圖4所示。
鍵碼生成
鍵盤(pán)接口模塊在正確判決出鍵盤(pán)的按下或釋放狀態(tài)之后,需根據(jù)嵌入式處理器所設(shè)置的鍵盤(pán)掃描碼集生成相應(yīng)的鍵碼,鍵盤(pán)接口模塊響應(yīng)處理器的0xF0命令改變碼集設(shè)定或返回碼集狀態(tài)。在三種鍵盤(pán)掃描碼集中,碼集3最為簡(jiǎn)單,按鍵單字節(jié),釋放雙字節(jié)(由0xF0為前導(dǎo)),碼集2的掃描碼字節(jié)數(shù)則不盡相同,綜合擊鍵和釋放兩種情況,可能的掃描碼字節(jié)數(shù)為1,2,3,4,5,6,8,碼集2鍵碼最為復(fù)雜,但碼集2的應(yīng)用最為廣泛。
將碼集2的鍵碼分為5種類(lèi)型,對(duì)應(yīng)的Make/Break鍵碼字節(jié)數(shù)分別為l型:1/2;II型:2/3;III型:5/5;IV型:4/6;“Pause'’鍵碼歸為V型,Make鍵碼8字節(jié),Ctrl按下時(shí)5字節(jié)。圖5給出了常用碼集2的鍵碼產(chǎn)生程序流圖。
鍵盤(pán)接口模塊通過(guò)FPGA片內(nèi)的RAM存儲(chǔ)器構(gòu)成FIFO型鍵碼緩存區(qū),鍵碼及其前導(dǎo)或后綴都在鍵碼緩存區(qū)中緩存,尋址空間一股為25,鍵碼發(fā)送優(yōu)先權(quán)最低,且必須能根據(jù)相應(yīng)命令被異步清零。
處理器命令接收優(yōu)先權(quán)最高,即鍵盤(pán)接口模塊輸出鍵碼時(shí)首先檢測(cè)時(shí)鐘線和地址線的忙閑狀態(tài),僅當(dāng)兩線都為空閑狀態(tài)時(shí)輸出鍵碼。時(shí)鐘線可被嵌入式處理器用于停止輸出,即當(dāng)處理器將時(shí)鐘線下拉為低電平時(shí),鍵盤(pán)接口模塊將停止鍵碼輸出,并將當(dāng)前(校驗(yàn)位已輸出的除外)及之后的鍵碼緩存在FPGA開(kāi)辟的鍵碼緩存區(qū)中。
命令接收與響應(yīng)
鍵盤(pán)接口模塊接收到處理器命令后,需對(duì)命令譯碼,并根據(jù)具體命令向嵌入式處理器返回相應(yīng)的應(yīng)答,同時(shí)可能接收后續(xù)參數(shù)或返回響應(yīng)信息。應(yīng)答和響應(yīng)信息與鍵碼采用相同的串行方式發(fā)送,其優(yōu)先權(quán)介于命令和鍵碼之間,相應(yīng)的狀態(tài)轉(zhuǎn)換圖6所示。
為增強(qiáng)鍵盤(pán)接口模塊的可靠性,在進(jìn)入?yún)?shù)接收狀態(tài)(S4)的同時(shí)重置并啟動(dòng)一個(gè)定時(shí)器,當(dāng)定時(shí)器溢出時(shí),將退出參數(shù)接收狀態(tài)以避免因系統(tǒng)的不穩(wěn)定而進(jìn)入循環(huán)等待。
實(shí)驗(yàn)結(jié)果
以Altera公司的Cyclone EPlC6為目標(biāo)器件,在Quartus II4.0環(huán)境下對(duì)上述鍵盤(pán)接口模塊進(jìn)行了編譯與仿真,結(jié)果如圖6所示。
上述編譯結(jié)果表明鍵盤(pán)接口模塊占用很少的邏輯單元(約7%),便于移植到嵌入式系統(tǒng)中,同時(shí)可根據(jù)實(shí)際應(yīng)用對(duì)模塊進(jìn)行裁減,實(shí)際所占資源將進(jìn)一步減少。
實(shí)測(cè)結(jié)果表明鍵盤(pán)的準(zhǔn)確度和靈敏度完全達(dá)到設(shè)計(jì)要求,模塊中掃描碼集、掃描延遲、掃描間隔等參數(shù)可根據(jù)系統(tǒng)需求靈活地改變,充分滿足了嵌入式系統(tǒng)的使用需求。
參考文獻(xiàn):
1.任愛(ài)鋒等編著,基于FPGA的嵌入式系統(tǒng)設(shè)計(jì),西安電子科技大學(xué)出版社,2004.10
2.姜雪松,可編程邏輯器件和EDA設(shè)計(jì)技術(shù),張海風(fēng)編著,機(jī)械工業(yè)出版社,2006.1
3.吳繼華,王誠(chéng)編著,Altera FPGA/CPLD設(shè)計(jì)(高級(jí)篇),人民郵電出版社,2005.7
4.李伯成編著,嵌入式系統(tǒng)可靠性設(shè)計(jì),電子工業(yè)出版社,2006.1