新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > NIOS開發(fā)結構基礎簡介

NIOS開發(fā)結構基礎簡介

作者: 時間:2012-07-31 來源:網(wǎng)絡 收藏

本文引用地址:http://butianyuan.cn/article/190090.htm

至此,“橋”搭完。
接下來在把我們的“數(shù)碼管控制器”加入sopc builder系統(tǒng)中。
現(xiàn)在幾乎所有講nios的書都會提及自定義用戶外設,而且用的都是altera官方提供的例子PWM,本文的“數(shù)碼管控制器”就是照著它依葫蘆畫瓢改過來 的,呵呵,慚愧慚愧,之所以想改它,一是因為它用的是verilog而不是VHDL,而大多數(shù)人先接觸卻是VHDL;二來PWM的顯示效果似乎不太明顯, 改成數(shù)碼管顯示相對比較有成就感;第三,PWM的邏輯稍微有一點點復雜,我們的重點在于說明怎樣自定義外設,當然例子越簡單越好。
既然是照著PWM原樣改的,所以本文工程的結構與之保持高度一致,將其加入sopc builder的步驟也差不多,這里我就不再碼字了,各位照著書上做吧:
《SOPC嵌入式系統(tǒng)教程(周立功等著)》第8章……
再接下來,建立一個包含“數(shù)碼管控制器”的nios系統(tǒng),并編寫應用程序,實現(xiàn)從0到9計數(shù)。
貼張官方的nios設計流程圖,看起來很漂亮是吧,不愧是altera的東西,大而全而不亂。

先說最中間的SOPC Builder,它的任務是建立一個“以Nios CPU為核心,以Avalon總線為紐帶,將各種硬件設備連接起來”的nios系統(tǒng);這個系統(tǒng)要在FPGA中運行,所以必須掛靠一個Quartus II工程,用左邊的Quartus II進行分配引腳等等工作,生成硬件系統(tǒng);接著,右邊的Nios II IDE就可以在這個硬件系統(tǒng)上設計應用程序了;最后將硬件系統(tǒng)和軟件程序分別下載到FPGA芯片上,大功告成。
下面step by step
1> Quartus II 新建一個工程名,工程名DE2_SEG7。
2> Tool → SOPC Builder 打開SOPC Builder。
3> System Name: nios2_system 選VHDL。
一個包含“數(shù)碼管控制器”的最小系統(tǒng)至少由3部分組成:CPU必不可少,RAM存儲代碼,還有剛才設計的seg7_avalon。
4> 加入Nios II Processor,選Nios II/e,精簡型夠用了。
5> 加入On-Chip Memory,類型選RAM,位寬默認32 bits,Total Memory選48Kbytes,等會兒軟件要占用四十多K空間。
6> 加入seg7_avalon。
7> 將這三個組件的名稱改好看點,然后設定RAM的基地址為0x00000000,再右鍵鎖定基地址,如圖:

為什么要鎖定RAM的基地址為0呢?點選第二個選項卡,可以看到Reset Address對應著RAM,系統(tǒng)的復位肯定要從地址0開始。

8> 由于剛才人為改動了地址分配,弄亂了,讓系統(tǒng)自動再分配一次,當然被鎖定的RAM基地址是不會變的。System →Auto-Assign Base Addresses。最終系統(tǒng)組件列表如下:

注意,seg7的地址范圍是0x00010800→0x00010807,占8個地址,nios系統(tǒng)的地址按字節(jié)分配,也就是說,每個字節(jié)占用一 個地址,數(shù)碼管控制器中定義了兩個寄存器,avalon總線規(guī)定每個寄存器占32位(實際上是不是32位它就不管了,反正按最大32位分配),這樣兩個寄 存器共占去8個字節(jié),自然需要8個地址。
9> 點擊Generate生成nios系統(tǒng),回到Quartus II。
10> 新建一個頂層文件File→New→Block Diagram/Schematic File,引入nios II系統(tǒng),增加輸入輸出引腳。然后,Assignment→Import Assignment,添加引腳分配文件(在DE2光盤目錄下的DE2_tutorialsdesign_files DE2_pin_assignments.csv),改動頂層文件的引腳名稱使其與.csv文件中保持一致。

11> 編譯,查看編譯報告,可見,48K的RAM占用了芯片83%的memory bits,差不多耗光了。

12> 硬件部分已經(jīng)搞定,關掉Quartus II,打開Nios II IDE,切換到工作目錄下。
13> File→New→C/C++ Application,SOPC Builder System選擇nios2_system.ptf(就是剛才Generate Nios II系統(tǒng)生成的東東),再選模板Hello World(純屬偷懶 ),頂上的name改成seg_example,F(xiàn)inish。
14> 改動hello_world.c,代碼的功能為:先初始化數(shù)碼管,等待2秒鐘,再進行0-9的循環(huán),循環(huán)過程中穿插2秒鐘的清屏。SEG7_BASE的宏 定義在system.h中,實際上就是在SOPC Builder中的seg7_avalon的基地址0x00010800。

15> Project→Build Project,得到編譯報告,軟件占用了7K空間……

16> 下載到DE2板上,運行,數(shù)碼管不停地閃啊閃。
OK,從硬件到軟件的一條龍講完了。


上一頁 1 2 下一頁

關鍵詞: NIOS 基礎

評論


相關推薦

技術專區(qū)

關閉