引言
數碼管可顯示簡單的字符和數字,由于其價格低廉,、性能穩(wěn)定,、顯示清晰、亮度高,、使用電壓低,、壽命長,在工業(yè)生產,、交通運輸,、儀器儀表及家用電器等場合得到廣泛應用。然而,,開發(fā)基于NiosⅡ的嵌入式系統(tǒng)時,,Builder開發(fā)工具中沒有提供現成的數碼管顯示IP核,這使設計者工作量增加,。這里把數碼管控制器設計為一個共陰極(或共陽極)7段數碼管動態(tài)顯示IP核,,并給出此核的一個參考驅動程序。在系統(tǒng)設計中,,可根據實際需求,,把此核直接例化成1~8個共陰極(或共陽極)數碼管顯示控制器,控制1~8個共陰極(或共陽極)數碼管工作,,實現IP核重用,,減少電子設計者的工作量,從而提高設計效率,。
2 LED數碼管結構及驅動顯示方式
根據發(fā)光二極管的個數可將數碼管分成7段數碼管和8段數碼管,,8段數碼管比7段數碼管多一個用于顯示小數點的發(fā)光二極管,;根據內部連接形式可將數碼管分成共陽數碼管與共陰數碼管,圖1為數碼管的外形及其內部結構圖,。
常用的數碼管顯示驅動方式有靜態(tài)驅動與動態(tài)驅動兩種,,靜態(tài)驅動方式的主要特點是,每個數碼管都有相互獨立的數據線,,并且所有的數碼管被同時點亮,;而動態(tài)驅動方式則是所有數碼管共用一組數據線,數碼管依次被點亮,,因此,,動態(tài)驅動顯示方式每個數碼管都要有一個點亮控制輸入端口。為節(jié)省I/O端口,,此設計采用動態(tài)顯示方式,,所有數碼管動態(tài)顯示控制時序,全部由FPGA器件產生,。
3 數碼管動態(tài)顯示IP核設計
根據數碼管動態(tài)顯示方式的工作原理,,可把數碼管動態(tài)顯示控制器設計成IP核,包括任務邏輯設計,、寄存器文件設計和Avalon接口設計3部分,。
3.1 任務邏輯設計
任務邏輯實現IP核的基本功能,是IP核設計的關鍵,。任務邏輯產生數碼管動態(tài)顯示時的各種控制時序,,并根據控制時序的先后順序,讀取寄存器文件中的數據,,并送至數碼管譯碼器進行譯碼,,圖2是任務邏輯框圖。
由圖2知,,所設計的IP核主要由模N計數器,、數據選擇和生成器、8段數碼譯碼器,、數碼管位譯碼器和寄存器文件組成,。模N計數器可根據參數N,產生N個狀態(tài),,其狀態(tài)數與數碼管個數相等,,每個狀態(tài)依次分給第一個數碼管;數碼管位譯碼器的作用是根據模N計數器的值(狀態(tài))產生數碼管位選信號,。按順序依次點亮數碼管,而參數P的值表示數碼管的類型(共陽或共陰),,當P為高電平時,,控制共陰極數碼管工作,;P為低電平時,控制共陽極數碼管工作,。
數據選擇和生成器用于根據計數器的狀態(tài)選擇數據寄存器組的數據,,還可生成要顯示的數據信號,包括數字與小數點兩種,,當小數點位置寄存器的值與計數器的值相等時,,點亮小數點位;7段數碼管譯碼器對輸入的信號譯碼產生譯碼數據,,該數據的最高位是小數點數據,,低7位是字符顯示數據。
3.2 寄存器文件設計
為實現任務邏輯單元與外界數據交換,,要定義一組寄存器,,稱為寄存器文件,并為這些寄存器分配地址,。根據圖2,,在此IP核中共定義10個寄存器,表1為其功能和地址偏移量,。
3.3 數碼管動態(tài)顯示IP核Verilog HDL程序編寫
用硬件描述語言Verilog HDL編寫程序完成設計,。
4 基于Nios II的軟件驅動程序設計
把所設計的IP核加載到嵌入式系統(tǒng),打開Nios II EDS,,在Ahera提供的集成開發(fā)環(huán)境(IDE)中,,為IP核編寫驅動程序。
首先點擊new菜單建立工程應用文件,,然后選擇一個空的工程模板(Blank Project),,并在此工程模板中編寫相應程序,其驅動程序的算法流程如圖3所示,。
5 結論
數碼管是電子設計中應用較多的元器件,。用于顯示系統(tǒng)的運行狀態(tài)和簡單的字符,以便提升系統(tǒng)人機界面的效果,。為減輕設計者的工作量,,實現軟核重用,設計8段數碼管動態(tài)顯示IP核,,并給出此核的一個參考驅動顯示程序,。此核根據設計需要,可例化1~8個共陽極(或共陰極)數碼管控制器,,成功控制1~8個數碼管工作,,大大提高設計效率。測試結果表明,,此核工作可靠,、穩(wěn)定,,可直接應用于工程實踐中。