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