摘要:介紹一種基于FPGA(Field Programmable Gate Array)現(xiàn)場可編程門陣列的可鍵盤控制的計數(shù),,顯示電路的實現(xiàn)方法。應(yīng)用VHDL語言(高速集成電路硬件描述語言)完成了3x4矩陣開關(guān)的掃描電路,,可預(yù)置數(shù)的BCD碼計數(shù)電路及4位數(shù)碼管動態(tài)掃描電路的描述,。通過原理圖輸入方式完成了系統(tǒng)功能的設(shè)計,。電路結(jié)構(gòu)簡單,便于擴展,,可靠性高,,且可移植性強,容易實現(xiàn),。該電路已成功應(yīng)用于測試某脈沖電容質(zhì)量試驗的控制電路中,。
關(guān)鍵詞:FPGA;鍵盤掃描,;計數(shù),;動態(tài)顯示
FPGA做為現(xiàn)代電子設(shè)計技術(shù)的核心器件,成為目前硬件設(shè)計研究的重點,。在工業(yè)控制中,,計數(shù)顯示基本電路在儀器儀表中得到了廣泛應(yīng)用,而如何根據(jù)需要靈活的設(shè)置計數(shù)范圍,,是一個較為復(fù)雜的問題,。本文應(yīng)用EDA技術(shù)通過對鍵盤的控制,實現(xiàn)了從0~9999范圍內(nèi)預(yù)置數(shù)可變的計數(shù)顯示電路設(shè)計,。與傳統(tǒng)的應(yīng)用單片機控制鍵盤掃描的設(shè)計方法相比,,具有集成度高,穩(wěn)定度高,,抗噪聲能力強,,容錯率低等優(yōu)點。
1 系統(tǒng)設(shè)計原理及電路圖
圖1為基于FPGA的預(yù)置數(shù)可控計數(shù)顯示頂層設(shè)計電路原理圖,,共由3部分組成:鍵盤掃描控制電路key_board,;BCD碼計數(shù)電路CNT;4位數(shù)碼管動態(tài)掃描顯示電路scan_LED,。首先,,由鍵盤掃描電路完成對鍵盤的掃描和鍵值的譯碼,當計數(shù)電路置數(shù)端LOAD為上升沿時,,將鍵盤掃描電路讀取的數(shù)據(jù)經(jīng)P3-P0并行置入到計數(shù)器中做為其計數(shù)范圍,,計數(shù)器的輸出通過動態(tài)掃描譯碼模塊驅(qū)動4位數(shù)碼管顯示。
2 VHDL語言的實現(xiàn)
該設(shè)計采用層次化設(shè)計方法,,首先采用VHDL語言完成了對各子模塊電路的描述,然后分別將其生成符號元件,,通過原理圖編輯完成了系統(tǒng)的設(shè)計,。
2.1 鍵盤掃描電路
2.1.1 行列式鍵盤工作原理
圖2為3x4行列式鍵盤原理圖,行線是KEY_HANG[2..0],,列線是KEY_LIE[3..0],,形成12個交叉點,,每個交叉點連接一個按鍵。12個按鍵分別對應(yīng)數(shù)字0~9和清零鍵A,,確定鍵B,。當沒有按鍵按下時,所有交叉點斷開,,由于列線的上拉電阻作用,,使其保持高電平。如果行線KEY_HANG[2..0]被設(shè)置為低電平,,當有按鍵按下時,,該鍵所在的行線和列線被按鍵短路,那么相應(yīng)得列線就變?yōu)榈碗娖健?/p>
2.1.2 鍵盤掃描電路工作原理
圖3為鍵盤掃描原理圖,。CLK_40K為鍵盤掃描工作時鐘,,連續(xù)讀取數(shù)據(jù)輸入端KEY_LIE[3..0]的信息;CLK_2K為鍵值控制工作時鐘信號,,無鍵按下時控制電路循環(huán)掃描輸出,;P3,P2,,P1,,P0為鍵盤譯碼輸出BCD碼形式;START端為數(shù)據(jù)輸出標志信號,,當P3-P0輸出時,,START端輸出一個脈沖。工作時,,由行信號輸出端KEY_HANG[2..0]循環(huán)輸出“110”,,“101”,“011”,。當沒有按鍵按下時,,掃描電路列信號輸入端檢測到“1111”。當有按鍵按下時,,例如按下1鍵,,此時行信號KEY_HANG[2..0]輸出“011”,由圖2可知,。列信號輸入端將檢測到“0111”,,在掃描譯碼時,可根據(jù)行信號輸出和列信號輸入數(shù)據(jù)同時判斷“0110111”對應(yīng)數(shù)據(jù)為1,。
2.1.3 鍵盤掃描電路VEIDL實現(xiàn)
鍵盤掃描電路主要有判斷按鍵有無按下,,鍵值識別和去抖動處理等功能。其中去抖處理主要為了避免外界振動引起按鍵誤動,,以及保證按鍵每穩(wěn)定閉合一次,,系統(tǒng)僅對其響應(yīng)一次,。采用不同的鍵盤其機械抖動時間各異,本文設(shè)置去抖時間為20 ms,。圖4為鍵盤掃描電路VHDL描述流程圖,。以下是去抖動程序關(guān)鍵代碼:
2.2 可預(yù)置數(shù)BCD碼計數(shù)電路
圖5為可預(yù)置數(shù)BCD碼計數(shù)電路。置數(shù)端LOAD為高電平時,,將通過鍵盤設(shè)置的數(shù)并行置入到D3~D0,。然后對輸入的脈沖直接進行BCD碼減法計數(shù),由Q3~Q0輸出,。計數(shù)結(jié)束,,ENDCNT端輸出一個脈沖。
部分源程序如下所示:
2.3 4位數(shù)碼管動態(tài)掃描顯示電路
段式LED顯示器的控制方式分為靜態(tài)顯示控制和動態(tài)顯示控制兩種,。本電路設(shè)計采用動態(tài)掃描方式,,具有占用資源少,電路結(jié)構(gòu)簡單等優(yōu)點,。電路如圖6所示,。外接4位共陰數(shù)碼管,其中每個數(shù)碼管的7段a,、b,、c、d,、e,、f、g都分別連在一起,,4位數(shù)碼管分別由BT[3..0] 4位選通信號來選擇,。被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉,,與此同時,,在段信號輸入端口加上希望在該對應(yīng)數(shù)碼管顯示的數(shù)據(jù)。隨著選通信號的循環(huán)掃描,,段碼的分別輸出,,利用數(shù)碼管的余暉效應(yīng),即可顯示4位數(shù)據(jù),。
3 仿真結(jié)果
將設(shè)計好的電路經(jīng)過編譯,、引腳配置、下載到FPGA芯片EP1C12Q240,。采用QUATUSⅡ6.0軟件自帶的嵌入式邏輯分析儀對目標芯片內(nèi)部信號各節(jié)點進行觀察分析,,如圖7所示。實驗中已將預(yù)置數(shù)1234置入計數(shù)器中,通過圖7可以看到此時位選信號選通第2位數(shù)碼管,,顯示數(shù)據(jù)3。
4 結(jié)束語
完成了基于FPGA,,應(yīng)用VHDL文本輸入和原理圖混合輸入法,,實現(xiàn)預(yù)置數(shù)靈活設(shè)置的計數(shù)顯示電路。該電路設(shè)計解決了可預(yù)置數(shù)計數(shù)器從外部設(shè)備置數(shù)難的問題,,以及在電路內(nèi)部直接實現(xiàn)BCD碼計數(shù),,方便,可靠,,電路簡單,,尤其該系統(tǒng)在較惡劣環(huán)境情況下依然可以穩(wěn)定工作。