基于NiosⅡ軟核處理器的七段數(shù)碼管動(dòng)態(tài)顯示設(shè)計(jì)
sopc(system on programmable chip)技術(shù)是美國altera公司于2000年最早提出的,并同時(shí)推出了相應(yīng)的開發(fā)軟件quartus ii。sopc是基于fpga解決方案的soc(system on chip),構(gòu)成sopc的方案也有多種。第一種是基于fpga嵌入ip硬核的sopc系統(tǒng),即在fpga中事先植入嵌入式系統(tǒng)處理器,目前最常用的嵌入式處理器大多采用了含有arm的32位知識(shí)產(chǎn)權(quán)處理器核的器件。第二種是基于fpga嵌入ip軟核的sopc系統(tǒng),目前最有代表性的軟核處理器分別是altera公司的nios ii核,以及xilinx公司的microblaze核。第三種是基于hardcopy技術(shù)的sopc系統(tǒng),hardcopy就是利用原有的fpga開發(fā)工具,將成功實(shí)現(xiàn)于fpga器件上的sopc系統(tǒng)通過特定的技術(shù)直接向asic轉(zhuǎn)化。1 基于altera公司niosⅱ軟核處理器的sopc系統(tǒng) altera公司nios ii軟核是目前使用最為廣泛的一種軟核處理器。值得一提的是,利用matlab和altera公司的dsp builder,用戶可以為nios ii軟核處理器設(shè)計(jì)各類dsp硬件加速器,并以指令的方式加入nios ii的指令集,從而可以構(gòu)建自己的dsp處理器系統(tǒng)。1.1 基于niosⅱ軟核處理器的sopc系統(tǒng)結(jié)構(gòu) 一個(gè)基本的基于niosⅱ軟核的sopc系統(tǒng),除niosⅱ核、定時(shí)器和片上存儲(chǔ)器以外,還需要在fpga器件中添加一些接口元件。這些元件一方面通過片上的avolon總線與niosⅱ軟核相連,另外一方面又提供了外設(shè)與niosⅱ軟核通信的接口界面。 altera公司quartusⅱ軟件中的sopc builder工具提供了許多常用的外設(shè)接口元件,如uart接口元件、pio接口元件等,通過這些接口元件可以連接諸如rs232、led、數(shù)碼管和按鍵等輸入輸出設(shè)備。在相對(duì)復(fù)雜的系統(tǒng)設(shè)計(jì)當(dāng)中,還可以通過avalon三態(tài)總線橋外接大容最的sram和flash,以提供更大的程序和數(shù)據(jù)存儲(chǔ)空間。從圖1中,還可以注意到,通過使用系統(tǒng)提供的用戶自定制外設(shè)接口元件的功能,用戶可以在系統(tǒng)中添加一個(gè)符合avalon總線規(guī)范的外設(shè)接口元件,以連接用戶特定功能的外部設(shè)備。1.2 自定制avalon用戶外設(shè)接口元件簡(jiǎn)介 對(duì)于自定制的avalon外設(shè)接口元件按照avalon總線操作的不同可以分為兩類:avalon slave外設(shè)接口元件型的自定制的avalon slave外設(shè)接口元件框圖。從圖2中可以看到寄存器的定義是自定制外設(shè)接口元件很重要的一部分,必須根據(jù)設(shè)計(jì)的需要確定寄存器的個(gè)數(shù)和種類。圖2中的avalon slave接口提供了自定制外設(shè)接口元件與niosⅱ處理器之間數(shù)據(jù)交換的界面,其接口信號(hào)類型也必須根據(jù)設(shè)計(jì)的需要合理地進(jìn)行選擇。常用的avalon slave接口信號(hào)類型有:clk,chipselect,address,write,writedata,byteenable,reset等。圖2中的任務(wù)邏輯具體說明了自定制外設(shè)接口的功能,并給出了與外設(shè)連接的接口信號(hào)?! ∽远ㄖ芶valon slave外設(shè)接口元件的方法:可以利用sopc builder提供的元件編輯器在圖形用戶界面下將用硬件描述語言(verilog或vhdl)描述的用戶邏輯封裝成一個(gè)sopc builder元件。相應(yīng)的硬件描述語言文件給出了自定制外設(shè)接口元件的內(nèi)部寄存器結(jié)構(gòu),使用到的avalon slave接口信號(hào)和自定制外設(shè)接口的邏輯功能。一旦定制成功后,用戶自定制的外設(shè)接口就可以象sopcbuilder中其他元件一樣被調(diào)用。2 基于niosⅱ軟核處理器的七段數(shù)碼管動(dòng)態(tài)顯示設(shè)計(jì) 數(shù)字系統(tǒng)設(shè)計(jì)中,用數(shù)碼管顯示數(shù)據(jù)結(jié)果是常用的一種方法。利用altera的sopc builder工具進(jìn)行nios ⅱ系統(tǒng)設(shè)計(jì)時(shí),并沒有提供專門的數(shù)碼管顯示接口元件,但可以使用pio元件驅(qū)動(dòng)數(shù)碼管顯示,不足之處是占用器件引腳數(shù)目過多。本文當(dāng)中以自定制avalon slave外設(shè)接口元件的方式,給出了一種基于niosⅱ軟核的七段數(shù)碼管動(dòng)態(tài)顯示設(shè)計(jì)方案。該設(shè)計(jì)可以用來驅(qū)動(dòng)1~8個(gè)共陰極(或共陽極)數(shù)碼管的顯示,可以根據(jù)需要選擇小數(shù)點(diǎn)顯示的位置,每個(gè)數(shù)碼管可以顯示0~f之間的十六進(jìn)制字符。 自定制的數(shù)碼管動(dòng)態(tài)顯示接口元件邏輯結(jié)構(gòu)圖,其中定義了2個(gè)寄存器display_data_reg和controlreg。display_data_reg是個(gè)一個(gè)32位二進(jìn)制的數(shù)據(jù)寄存器,其數(shù)據(jù)每4位可以譯碼得到1個(gè)數(shù)碼管的七段顯示所需的字符碼,因此,display_data_reg同時(shí)最多可以給出8個(gè)數(shù)碼管所需要的顯示數(shù)據(jù)。control_reg是一個(gè)8位二進(jìn)制的控制寄存器,但只定義了0~2位和第4位的含義。0~2位的數(shù)據(jù)給出了小數(shù)點(diǎn)顯示的位置,數(shù)值范圍在“000”~“111”之間,對(duì)應(yīng)著8個(gè)數(shù)碼管最低位到最高位的小數(shù)點(diǎn)的位置。第4位是數(shù)碼管顯示的啟動(dòng)停止位,當(dāng)該數(shù)據(jù)位為1時(shí),可使自定制接口元件所驅(qū)動(dòng)的數(shù)碼管正常顯示結(jié)果;當(dāng)該數(shù)據(jù)位為0時(shí),停止顯示,所有被驅(qū)動(dòng)的數(shù)碼管熄滅。 參數(shù)n定義了循環(huán)加法計(jì)數(shù)器的模數(shù),同時(shí)也決定了驅(qū)動(dòng)數(shù)碼管顯示的個(gè)數(shù),其取值范圍在1~8之間。clkdisplay是循環(huán)加法計(jì)數(shù)器的時(shí)鐘輸入,他決定了計(jì)數(shù)器的計(jì)數(shù)頻率,同時(shí)也決定了數(shù)碼管顯示的動(dòng)態(tài)掃描頻率。參數(shù)pos用于決定驅(qū)動(dòng)數(shù)碼管的類型,其值可設(shè)定為0或1。當(dāng)其值為0時(shí),seg_out字符碼輸出高電平有效,bit_contro