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