新聞中心

        EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > NIOS開發(fā)結(jié)構(gòu)基礎(chǔ)構(gòu)思

        NIOS開發(fā)結(jié)構(gòu)基礎(chǔ)構(gòu)思

        作者: 時間:2010-06-20 來源:網(wǎng)絡(luò) 收藏

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

        先說最中間的SOPC Builder,它的任務(wù)是建立一個“以Nios CPU為核心,以Avalon總線為紐帶,將各種硬件設(shè)備連接起來”的nios系統(tǒng);這個系統(tǒng)要在FPGA中運行,所以必須掛靠一個Quartus II工程,用左邊的Quartus II進行分配引腳等等工作,生成硬件系統(tǒng);接著,右邊的Nios II IDE就可以在這個硬件系統(tǒng)上設(shè)計應(yī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存儲代碼,還有剛才設(shè)計的seg7_avalon。
        4> 加入Nios II Processor,選Nios II/e,精簡型夠用了。
        5> 加入On-Chip Memory,類型選RAM,位寬默認32 bits,Total Memory選48Kbytes,等會兒軟件要占用四十多K空間。
        6> 加入seg7_avalon。
        7> 將這三個組件的名稱改好看點,然后設(shè)定RAM的基地址為0x00000000,再右鍵鎖定基地址,如圖:

        為什么要鎖定RAM的基地址為0呢?點選第二個選項卡,可以看到Reset Address對應(yīng)著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)搞定,關(guān)掉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,從硬件到軟件的一條龍講完了。

        本文引用地址:http://www.104case.com/article/191702.htm

        上一頁 1 2 下一頁

        關(guān)鍵詞: NIOS 基礎(chǔ)

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 卢氏县| 南江县| 金门县| 读书| 桐庐县| 南木林县| 新化县| 西乌珠穆沁旗| 大连市| 嘉定区| 南阳市| 乐业县| 柳州市| 重庆市| 得荣县| 梁河县| 定结县| 马关县| 安宁市| 盐源县| 陆河县| 繁昌县| 新巴尔虎左旗| 杭锦旗| 奈曼旗| 英山县| 万荣县| 曲靖市| 宣城市| 同心县| 云浮市| 枣强县| 新津县| 肃北| 公主岭市| 龙州县| 广州市| 禄劝| 曲松县| 开远市| 芒康县|