基于CPLD的鍵盤控制器設(shè)計
0 引 言
由于CPLD的可再編程性質(zhì),可以將同一裝置用于不同的鍵盤和產(chǎn)品,而收到高產(chǎn)量、低成本的效果,同時也節(jié)約了單片機(jī)的資源以做它用??稍倬幊痰奶攸c輔之簡便易用的設(shè)計工具,使設(shè)計可以進(jìn)行晚期更改,提高了產(chǎn)品設(shè)計的靈活性,降低了風(fēng)險。在單片機(jī)應(yīng)用系統(tǒng)中,利用鍵盤接口輸入數(shù)據(jù),是實現(xiàn)現(xiàn)場實時調(diào)試、數(shù)據(jù)調(diào)整和各種參數(shù)設(shè)置最常用的方法。單片機(jī)的外圍鍵盤擴(kuò)展電路有多種實現(xiàn)方式,例如直接利用單片機(jī)的I/O接口,或者采用8255A接口芯片,就可以實現(xiàn)外圍鍵盤的擴(kuò)展功能。但是,在這些方法中,鍵盤擴(kuò)展電路需要占用單片機(jī)的資源對按鍵進(jìn)行監(jiān)控和處理,這對要求高實時性處理的單片機(jī)系統(tǒng)是不容易實現(xiàn)的。為了解決這一問題,可以使用專用鍵盤接口芯片來擴(kuò)展鍵盤子系統(tǒng)。但是這類專用鍵盤接口芯片在使用靈活性方面尚有欠缺,尤其當(dāng)用戶需要實現(xiàn)某些特定功能時,其缺點更為明顯。針對上述問題,在此提出一種基于Lattice公司LC4128V的4×4鍵盤接口芯片設(shè)計。采用的軟件開發(fā)環(huán)境是IspLEVER。
l 開發(fā)環(huán)境介紹
IspLEVER是Lattice公司最新推出的一套EDA軟件。設(shè)計輸入可采用原理圖、硬件描述語言、混合輸入3種方式,它能對所設(shè)計的數(shù)字電子系統(tǒng)進(jìn)行功能仿真和時序仿真。編譯器是此軟件的核心,能進(jìn)行邏輯優(yōu)化,將邏輯映射到器件中去,自動完成布局與布線,并生成編程所需要的熔絲圖文件。軟件中的Constraints Editor工具允許經(jīng)由一個圖形用戶接口選擇I/O設(shè)置和引腳分配。lspLEVER軟件提供給開發(fā)者一個簡單而有力的工具,用于設(shè)計所有Lattice可編程邏輯產(chǎn)品。
2 鍵盤控制器設(shè)計
2.1 基于LC4128V的4×4鍵盤控制器設(shè)計
圖1給出基于Lattice公司的可編程邏輯器件LC4128V的4×4鍵盤控制器(KEYPADcTL)設(shè)計。
根據(jù)鍵盤的掃描原理,鍵盤控制器的輸出引腳R1~R4(行掃描線)依次循環(huán)輸出低電平,并將相應(yīng)的鍵盤行置低。當(dāng)有按鍵按下時,相應(yīng)的輸入c1~c4(列回復(fù)線)也被置低。然后根據(jù)行和列的低電平對應(yīng)關(guān)系就可以通過編碼確定按下的鍵值。輸出K0~K3就是最終等待單片機(jī)讀取的鍵值。INT輸出單片機(jī)的中斷信號,通知單片機(jī)來讀取鍵值。CLK是控制器的時鐘信號,cLR是控制器的清零復(fù)位信號。
2.2 內(nèi)部原理圖及其主要部分的工作原理
鍵盤控制器內(nèi)部由鍵盤掃描電路、編碼器電路、鍵盤去抖動電路、分頻器電路、計數(shù)器電路和鍵值鎖存器組成,如圖2所示。
(1)鍵盤掃描電路是一個能自啟動到所需要狀態(tài)的狀態(tài)機(jī),當(dāng)系統(tǒng)上電并同時輸入一個有效的復(fù)位清零信號CLR后,掃描電路輸出端R1~R4(L1~L4)則依次按照設(shè)計要求循環(huán)輸出以下掃描電平1110,1101,1011,0111。L1~L4作為編碼器的輸入,通過與列回復(fù)線(C1~C4)的對應(yīng)關(guān)系參與編碼。然而R1~R4是將L1~L4加上高電平使能三態(tài)門輸出的鍵盤行掃描線。將行掃描線加上三態(tài)門輸出,是為了防止當(dāng)一列上的2個或更多按鍵被同時按下時,將使LC4128V的引腳高低電平短接,如果這種情況發(fā)生,不但影響鍵盤控制器的準(zhǔn)確性,更嚴(yán)重的是會燒壞可編程邏輯器件LC4128V,所以該控制器通過三態(tài)門輸出行掃描線。三態(tài)門的使能信號就是其通過的信號取反,這樣輸出的高電平將為高阻狀態(tài)。通過對鍵盤的行線分別接個上拉電阻便可得到與L1~L4一樣的輸出信號。
通過這樣的處理既滿足設(shè)計的需要,又起到對器件保護(hù)的作用。EN是掃描電路的使能輸入端,高電平有效。它通過去抖動后的列回復(fù)線相與得到。當(dāng)有按鍵按下時,相應(yīng)的列線將被置低。相與的結(jié)果為低,這使掃描電路停止掃描,等待控制器對掃描結(jié)果進(jìn)行處理,得到相應(yīng)的鍵值送入鍵值鎖存器,等待單片機(jī)讀取。這樣做的好處是可防止控制器漏掉按鍵的讀取。根據(jù)調(diào)試得知,鍵盤掃描時鐘信號最好是去抖電路時鐘的四分頻以上。所以CLK是通過對去抖電路的時鐘進(jìn)行分頻得到的。圖3給出實現(xiàn)掃描電路的具體原理圖。
(2)該設(shè)計中采用4×4的鍵盤,有16個按鍵狀態(tài),再加上一個沒有鍵按下的狀態(tài)共有17個狀態(tài),而4位二進(jìn)制數(shù)只能表示16個狀態(tài)。為了解決這個問題,將R4和L4或非后再與計數(shù)器產(chǎn)生的中斷信號相或,產(chǎn)生一個單片機(jī)中斷。當(dāng)按下最后一個鍵時,鍵盤控制器便產(chǎn)生1個中斷,讓單片機(jī)來讀取這個按鍵值0000(在沒有鍵按下時也是這個狀態(tài)),從而區(qū)分了無按鍵狀態(tài)和最后一個按鍵按下的狀態(tài)。這樣在編碼的時候只需考慮前15個鍵的狀態(tài)信息。最終可用4位二進(jìn)制數(shù)表示所有按鍵狀態(tài)。圖4給出實現(xiàn)編碼器的具體原理圖。
(3)鍵盤去抖動電路主要由2個DQ觸發(fā)器和1個基本RS觸發(fā)器組成。當(dāng)有鍵按下時,理想情況下相應(yīng)的列線應(yīng)該是一直保持低電平。
但是實際應(yīng)用中不可避免地產(chǎn)生抖動,此時列回復(fù)線將發(fā)生長短不等的高電平跳躍現(xiàn)象。鍵盤去抖電路就是去除這樣抖動的高電平對按鍵鍵值檢測帶來的干擾。為了消除這樣的干擾,去抖電路采用兩級延時策略。
只要抖動的高電平持續(xù)時間在去抖電路的2個時鐘周期之內(nèi),這種抖動是不會被引進(jìn)編碼電路的。鍵盤去抖電路的具體原理圖實現(xiàn)如圖5所示。
3 仿真實驗及分析
3.1 掃描電路的輸出仿真波形
鍵盤控制器掃描電路的輸出仿真波形如圖6所示。在圖6中掃描電路的輸出端依次循環(huán)輸出低電平來掃描鍵盤的每一行,圖中L1~L4是沒有加三態(tài)門的掃描器輸出,其作為編碼電路的輸入,R1~R4是加三態(tài)門的輸出波形,從圖3中可以看出當(dāng)L1~L4的輸出是高電平時,R1~R4的輸出狀態(tài)是高阻。
當(dāng)同一列上的2個按鍵同時按下時,就可以避免在可編程邏輯器件LC4128V的兩個引腳上發(fā)生高低電平短接的非法情況。
3.2 編碼器的仿真波形
編碼器的仿真波形如圖7所示。
在圖7中,當(dāng)鍵盤的第一行掃描電平為低時,根據(jù)4×4鍵盤的掃描原理,只有當(dāng)?shù)谝涣械牡谝粋€鍵被按下時,C1才能為低。相應(yīng)的編碼電路輸出K3K2K1KO值為0001。只有當(dāng)?shù)诙械牡谝粋€鍵被按下時,C2才能為低,此時K3K2K1K0值為0010。同理,當(dāng)C3,C4分別為低時,K3K2K1K0值依次為0011,0100。依此方式編碼便可得到前15個按鍵的鍵值,而第16個按鍵的鍵值就要通過R4和L4相或非后產(chǎn)生單片機(jī)中斷信號,通知單片機(jī)來讀取它的鍵值0000。
3.3去抖動電路的仿真波形
去抖動電路的仿真波形如圖8所示。
在圖8中,當(dāng)按鍵過程中發(fā)生抖動時,經(jīng)過去抖動電路處理,DELYOUTl一直保持低電平??梢?,抖動對鍵值的讀取并不產(chǎn)生影響。
3.4 鍵盤控制器的整體仿真波形
鍵盤控制器的整體仿真波形如圖9所示。
圖9是當(dāng)鍵盤行掃描信號把鍵盤的第二行置低,并且第一列的第二個鍵被按下時鍵盤控制器的輸入/輸出波形。從圖9中可以看出,控制器檢測的鍵值為0101(這個按鍵的編碼值),這個值并不是在檢測到有鍵按下時就立即被鎖存到鍵值鎖存器中的,而是經(jīng)過一段時間的延遲后,鍵盤控制器向單片機(jī)發(fā)出讀取這個鍵值的中斷信號(INT),與此同時才給鎖存器一個鎖存信號來鎖存這個值。這樣做不但可以防止按鍵誤操作,而且也能處理按鍵被長時間按下的情況。
4 結(jié) 語
IspMACH 4000系列的LC4128V強大的在系統(tǒng)編程能力,在IspLEVER系列工具軟件的強力支持下,可以在很短的時間內(nèi)實現(xiàn)嵌入式系統(tǒng)的接口設(shè)計,而且能夠使嵌入式產(chǎn)品更具有靈活性。現(xiàn)實表明,可編程邏輯器件的發(fā)展和廣泛應(yīng)用,正在使計算機(jī)及其應(yīng)用系統(tǒng)的設(shè)計產(chǎn)生革命性的變化。
該設(shè)計的鍵盤控制器已應(yīng)用于某實際的嵌入式產(chǎn)品中,大大增加了產(chǎn)品的升級空間和節(jié)省了單片機(jī)的資源,并且收到了非常好的效果。