全功能硬件掃描鍵盤(pán)控制器IP核的實(shí)現
IP(Intellectual Property),即常說(shuō)的知識產(chǎn)權。在PLD領(lǐng)域中,IP核是指將數字系統中常用但比較復雜的一些功能塊設計成參數可調并以HDL源文件或加密網(wǎng)表形式存在的可供其他用戶(hù)直接調用的軟件模塊。由于已經(jīng)過(guò)嚴格的測試和優(yōu)化,使用IP核可以顯著(zhù)減小設計和調試時(shí)間,提高開(kāi)發(fā)效率,降低產(chǎn)品成本。本文以一款結構經(jīng)參數化的全功能硬件掃描鍵盤(pán)控制器的開(kāi)發(fā)為例,闡述IP核設計的一般方法與步驟。
本文引用地址:http://dyxdggzs.com/article/81962.htm1 設計的意義與可行性
鍵盤(pán)是計算機系統中最常用的人機交互輸入設備。在嵌入式系統中,用R+L條口線(xiàn)實(shí)現R×L個(gè)按鍵的掃描鍵盤(pán)的應用最為廣泛。與線(xiàn)性鍵盤(pán)相比,掃描鍵盤(pán)中 I/O口線(xiàn)的利用效率有了較大的提高,在一定程度上緩解了I/O引腳短缺的問(wèn)題,但其傳統實(shí)現方案的缺點(diǎn)是需要MPU的相應掃描控制程序來(lái)配合。為了響應輸入,系統實(shí)質(zhì)上工作于一種循環(huán)查詢(xún)模式,不但占用了較多的MPU處理時(shí)間,也增加了系統的功耗。在一些處理任務(wù)量大、對功耗又極為敏感的系統中,這是不能接受的。
一方面,通用鍵盤(pán)接口芯片(如8279、HD7279A)功耗較大,使用靈活性差;另一方面,可編程邏輯器件在規模、速度和功耗等性能方面已遠超出通用邏輯芯片。所以越來(lái)越多的大型數字系統采用CPLD/FPGA構建,且系統中可編程邏輯器件的硬件資源通常都有一定剩余,這使得在不增加成本的基礎上,實(shí)現一款硬件掃描鍵盤(pán)控制器成為可能。在智能多芯電纜檢測儀的研制過(guò)程中,一款這樣的全功能硬件掃描鍵盤(pán)控制器便得以成功實(shí)現。下面詳細介紹其工作原理和實(shí)現過(guò)程。
2 工作原理及功能要求
2.1 掃描鍵盤(pán)工作原理
以4×4 掃描鍵盤(pán)為例,工作原理如圖1所示,其中P0~P3為輸出口,P4~P7為輸入口。無(wú)按鍵按下時(shí),輸入口被上拉為高電平。輸出口以一定頻率循環(huán)輸出 0111、1011、1101、1110。通過(guò)讀輸入口的狀態(tài),便可判斷擊鍵情況。如輸出0111時(shí),輸入口的16種狀態(tài)與擊鍵的對應關(guān)系如表1所示。單列線(xiàn)的掃描頻率(記為Fs)一般應界于50~400Hz之間。
2.2 按鍵的去抖動(dòng)問(wèn)題
由于觸點(diǎn)的彈性作用,機械按鍵在閉合和斷開(kāi)瞬間會(huì )產(chǎn)生抖動(dòng),實(shí)際電壓波形如圖2所示。其中T1、T2、TS分別為前沿抖動(dòng)時(shí)間、后沿抖動(dòng)時(shí)間和按鍵穩定時(shí)間。T1、T2取決于觸點(diǎn)的機械特性,一般為5~12ms;TS則主要取決于擊鍵速度的快慢和按鍵按下時(shí)間的長(cháng)短。統計研究表明,以正常速度擊鍵時(shí),T1、T2、TS之和一般不小于12ms。
按鍵抖動(dòng)引起的最大問(wèn)題是一次擊鍵被誤識別為多次擊鍵,因此應避免在抖動(dòng)期T1、T2內對輸入行線(xiàn)狀態(tài)進(jìn)行采樣。去抖動(dòng)電路的設計是硬件掃描鍵盤(pán)控制器設計中的關(guān)鍵之一。
2.3 全功能鍵盤(pán)控制器的功能要求
在鍵盤(pán)使用過(guò)程中,實(shí)際擊鍵情況有兩種:?jiǎn)螕艉瓦B擊。單擊時(shí)用戶(hù)希望通過(guò)短時(shí)間擊鍵只產(chǎn)生一個(gè)有效鍵值;連擊時(shí)用戶(hù)長(cháng)時(shí)間按下按鍵,希望持續快速產(chǎn)生多個(gè)有效鍵值。為方便使用,鍵盤(pán)設計應區分快速單擊和持續連擊:兩者都用來(lái)快速產(chǎn)生多個(gè)鍵值,區別在于擊鍵的動(dòng)作和使用的場(chǎng)合。前者要求每次單擊后釋放按鍵,常用于參數小范圍內的精調;而后者則要求按鍵長(cháng)時(shí)間保持在按下?tīng)顟B(tài),以實(shí)現參數大范圍內的快速調節。
連擊過(guò)程如圖2所示,其中tJ為去抖時(shí)間,即從擊鍵起到產(chǎn)生第一個(gè)有效鍵值的最小時(shí)間間隔,tF和tS分別為首次重復延時(shí)和持續連擊時(shí)間間隔。三者的取值要求參見(jiàn)表2。
除上述要求外,全功能掃描鍵盤(pán)控制器還要求能識別多鍵同擊的情況。出于簡(jiǎn)化設計的目的,本設計僅考慮同列按鍵的多鍵同擊問(wèn)題。解決此問(wèn)題的辦法是使R×L掃描鍵盤(pán)(R為輸入行線(xiàn)數,L為掃描列線(xiàn)數)可以識別的等效按鍵數從R×L增加到(以4×4為例,從16個(gè)增加為60個(gè))。
3 IP核的實(shí)現
3.1 硬件實(shí)現
全功能硬件掃描鍵盤(pán)控制器由3個(gè)計數器(分頻計數器、延時(shí)計數器和掃描計數器)、2個(gè)標志寄存器(連擊標志寄存器和中斷標志寄存器)、1個(gè)鍵值鎖存器和相應組合邏輯電路組成。其結構框圖如圖3所示。圖中,對外提供5組(或個(gè))信號引腳:clk和DB通常與CPLD/FPGA中的其他模塊公用,前者用于同步時(shí)鐘信號的輸入,后者用于鍵值的輸出;INT、Row和Line是鍵盤(pán)控制器的專(zhuān)用引腳,分別用于中斷輸出、掃描列線(xiàn)輸出和上拉行線(xiàn)輸入。其中行線(xiàn)的上拉電阻既可以選用外部電阻,也可以使用IOE(Input Output Element)中可編程選擇的自帶上拉電阻。
考慮到CPLD/FPGA器件的硬件資源特點(diǎn)和HDL(Hardware Description Language)的編程原則,掃描鍵盤(pán)控制器整體上采用同步設計方案,所有觸發(fā)器均由輸入時(shí)鐘信號clk(頻率為Fclk)驅動(dòng)。由 于輸入頻率較高,通常需要對其進(jìn)行分頻處理(分頻系數為N)。本設計沒(méi)有直接采用傳統意義上的分頻計數器,而是用分頻計數器(位數為Ndiv)的輸出,控制其他觸發(fā)器的時(shí)鐘允許信號(可理解為只有當分頻計數器計數至N-1時(shí),其他觸發(fā)器的時(shí)鐘信號才有效,見(jiàn)圖3)來(lái)實(shí)現等效分頻(等效分頻頻率為 Fd)。與前者相比,此方法有以下優(yōu)點(diǎn):①實(shí)現了分頻系數以1為增量的連續可調(前者可實(shí)現的分頻系數通常為2的n次冪);②在消耗相同硬件資源的情況下,最大分頻系數提高了1倍;③避免了在同一設計中出現多個(gè)全局時(shí)鐘信號,為高效的器件適配和布局布線(xiàn)提供了保證。當無(wú)需鍵盤(pán)輸入時(shí),只要關(guān)斷clk信號,掃描鍵盤(pán)控制電路便進(jìn)入低功耗模式。圖3中符號“||”所代表的節點(diǎn)的信號便是用于等效分頻的內部信號,它是由分頻計數器的輸出經(jīng)過(guò)組合邏輯電路產(chǎn)生的。
掃描計數器(位數為Nscan)和譯碼器用于列線(xiàn)的自動(dòng)掃描。無(wú)按鍵時(shí),掃描計數器以頻率Fd計數,計數值經(jīng)譯碼輸出使列線(xiàn)處于自動(dòng)掃描狀態(tài);有擊鍵時(shí),掃描計數器立即停止計數,直到所有按鍵被釋放。當log2 L為小數,即計數器可表示的狀態(tài)數大于列線(xiàn)數時(shí),譯碼器為部分譯碼,掃描計數器計至(L-1)時(shí)需要被同步復位。
按鍵檢測電路用于擊鍵的檢測,是用組合邏輯電路實(shí)現的。無(wú)擊鍵時(shí),它異步復位延時(shí)計數器和連擊標志寄存器;有按鍵按下時(shí),它使掃描計數器停止計數。
延時(shí)計數器(位數為Ndelay)和連擊標志寄存器與相應組合邏輯電路配合,完成去抖和鍵值鎖存控制,是本設計的關(guān)鍵。首先根據表3確定去抖計數值M、連擊首次延時(shí)計數值P和持續連擊間隔計數值Q。有按鍵按下時(shí),相應異步復位信號無(wú)效,延時(shí)計數器開(kāi)始計數(前沿抖動(dòng)可能導致計數器被再次復位)。計數至(M-1)時(shí)掃描鍵值(掃描計數器輸出 +鍵盤(pán)行線(xiàn)輸入)被同步鎖存,同時(shí)置位中斷標志寄存器;若按鍵仍處于按下?tīng)顟B(tài),繼續計數到(P-1)后,在等效分頻時(shí)鐘的下一上升沿,置位連擊標志寄存器和中斷標志寄存器、鎖存掃描鍵值,并復位延時(shí)計數器;待重新計數至(Q-1)后,再次同步置位中斷標志寄存器、鎖存掃描鍵值、復位延時(shí)計數器。重復上述步驟三,連續產(chǎn)生鍵值直到所有按鍵被釋放。
鍵值鎖存器(位數為Nkey)用于掃描鍵值的暫存;中斷標志對應于INT引腳輸出,既可供MPU查詢(xún)也可用于向MPU提出中斷請求。當然,通過(guò)DB總線(xiàn)讀相應內部標志也可以判斷是否有新的鍵值產(chǎn)生。為使鍵盤(pán)能夠及時(shí)響應新的輸入,本設計提供兩種鍵值鎖存器和中斷標志復位機制:一是MPU讀取鍵值后,可用軟件方法立即復位;二是待分頻計數器再次計數至(C-1)時(shí),自動(dòng)實(shí)現兩者的同步復位,其中C為INT信號持續有效的輸入時(shí)鐘周期數。
3.2 結構的參數化
參數化是IP核設計過(guò)程中的重要一步,本設計使用到的參數可分為兩類(lèi):一類(lèi)是外在參數,直接由用戶(hù)根據實(shí)際需要指定,包括Fclk、Fs、R、L、C、tJ、tF、tS;另一類(lèi)是對用戶(hù)透明的內部參數,由直接參數派生而來(lái),多用于描述設計實(shí)體的規模和特性,包括N、Fd、M、P、Q、Ndiv、Nscan、Ndelay、Nkey。內部參數的確定方法及參數間的相互關(guān)系如表3所示。
按照圖3所描述的結構與信號流向以及表3給出的參數確定方法,借助適當的HDL(本設計采用VHDL)語(yǔ)句,將設計準確地描述出來(lái),便完成了掃描鍵盤(pán)控制器軟IP核的初步制作。
3.3 實(shí)例化及仿真
在智能多芯電纜檢測儀的研制過(guò)程中,取掃描鍵盤(pán)參數如下:Fclk=32768Hz(clk信號由MSP430的輔助時(shí)鐘提供),Fs=256Hz,C=31,R=L=4,tJ=16ms、tF=600ms、tS=200ms。選擇MAX EPM7512AETC144作為目標器件,本設計在A(yíng)ltera Quartus II 5.0 sp1集成開(kāi)發(fā)環(huán)境中順利通過(guò)了綜合、仿真和適配。由于鍵盤(pán)控制器屬低速電路,設置綜合參數為面積優(yōu)先(這里指綜合器可以適當降低最高實(shí)現工作頻率,以減小PLD器件的硬件資源消耗),適配結果僅消耗30邏輯宏單元(Macro Cell),clk引腳允許輸入的最大時(shí)鐘頻率為68MHz。使用實(shí)踐表明:所實(shí)現的掃描鍵盤(pán)控制器使用方便、工作可靠。
上文實(shí)際參數的綜合結果在時(shí)序仿真時(shí)需要耗費很長(cháng)的時(shí)間,圖4給出了對應于Fclk=4000Hz、Fs=250Hz、C=3、R=L=4、tJ=4ms、tF=6ms、tS=3ms的示意仿真波形。其中,按鍵抖動(dòng)是用寬度為1ms的隨機信號模擬的。
經(jīng)仿真和實(shí)踐驗證設計的正確性之后,編寫(xiě)配套說(shuō)明書(shū),對設計文件作最后的封裝,至此便完成了全功能硬件掃描鍵盤(pán)控制器IP核的全部開(kāi)發(fā)過(guò)程。
4 需要特別說(shuō)明的兩個(gè)問(wèn)題
(1)設計中直接使用了組合邏輯電路的輸出來(lái)異步復位延時(shí)計數器 和連擊標志寄存器,這有可能因為時(shí)序競爭而導致設計失敗,在本IP核的實(shí)例化過(guò)程中,Quartus II軟件的設計輔助工具(Design Assistant)會(huì )給出嚴重警告信息。當然,就CPLD/FPGA的開(kāi)發(fā)原則來(lái)說(shuō),這種情況是應當極力避免的。但在本設計中,非但不會(huì )導致設計失敗,相反正是巧妙地利用了這一點(diǎn),既可靠地解決了按鍵去抖問(wèn)題,又極大地簡(jiǎn)化了硬件的設計。首先,相對于硬件電路的反應速度(ns級)而言,可以認為多個(gè)按鍵被同時(shí)按下的情況是基本不存在的。顯然,當組合邏輯電路的多個(gè)輸入端每一時(shí)刻僅有一個(gè)信號發(fā)生改變時(shí),不會(huì )導致時(shí)序競爭。其次,即使出現時(shí)序競爭導致延時(shí)計數器被復位,由于它多因按鍵的抖動(dòng)引起,此時(shí)的復位操作正是去抖所需要的,也即本設計對此處的時(shí)序競爭是不敏感的。
(2)借助于IP核的使用特點(diǎn)和CPLD/FPGA器件的在系統編程(ISP)特性,在保證硬件掃描鍵盤(pán)控制器使用靈活性和通用性的基礎上,避免了在設計中引入可編程的控制寄存器,從而進(jìn)一步簡(jiǎn)化了設計,減小了硬件資源消耗。
與基于MPU的傳統掃描鍵盤(pán)實(shí)現方案相比,硬件掃描鍵盤(pán)控制器工作時(shí)無(wú)需掃描程序配合,減輕了MPU負擔,降低了系統功耗,同時(shí)也有效地緩解了I/O引腳短缺的問(wèn)題。IP核的實(shí)現,大大增加了本設計的通用性、可移植性和可重復利用性;巧妙的設計,保證了例化后占用非常少的硬件資源。從而為在不增加硬件成本的基礎上,簡(jiǎn)化大型系統的軟硬件設計流程、縮短產(chǎn)品開(kāi)發(fā)時(shí)間提供了一條新途徑。
此外,更為重要的是,本文以一款結構經(jīng)參數化的全功能硬件掃描鍵盤(pán)控制器的設計為例,從一般意義上闡述了IP核的設計方法、設計步驟與設計途徑。文中給出的參數數據和用到的設計原則、設計方法與設計技巧對同類(lèi)設計乃至大型設計都有很好的參考和借鑒意義。
參考文獻
1 吳繼華,王 誠.Altera FPGA/CPLD 設計(高級篇)[M].北京:人民郵電出版社,2005
2 Quartus II Version 5.0 Handbook[EB/OL]. www.altera.com. Altera Corporation, 2005
3 MAX 7000A Programmable Logic Device Data Sheet[EB/OL].www.altera.com. Altera Corporation,2003
評論