<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          NIosII軟處理器快速入門

          作者: 時(shí)間:2017-06-06 來源:網(wǎng)絡(luò) 收藏
          Nios簡(jiǎn)單介紹:

          Nios II是一個(gè)用戶可配置的通用RISC嵌入式處理器。在這兒,我引用了Altera公司關(guān)于NiosII的官方介紹:

          Altera推出的Nios? II系列嵌入式處理器擴(kuò)展了目前世界上最流行的軟核嵌入式處理器的性能,
          把Nios II嵌入到Altera的所有FPGA中,例如StratixII、Stratix、CycloneII,Cyclone、APEX,ACEX和HardCopy系列器件中,用戶可以獲得超過200 DMIPS的性能,用戶可以從三種處理器以及超過60個(gè)的IP核中選擇所需要的,Nios II系統(tǒng)為用戶提供了最基本的多功能性,設(shè)計(jì)師可以以此來創(chuàng)建一個(gè)最適合他們需求的嵌入式系統(tǒng)。
          Nios II處理器的優(yōu)點(diǎn)和特性

          使用Nios II處理器的用戶可以根據(jù)他們的需要來調(diào)整嵌入式系統(tǒng)的特性、性能以及成本,快速使得產(chǎn)品推向市場(chǎng),擴(kuò)展產(chǎn)品的生命周期,并且避免處理器的更新?lián)Q代。

          提高系統(tǒng)性能

          * 一系列的處理器核可供選擇,其中包括了超過200 DMIPS性能的核
          * 實(shí)現(xiàn)任何數(shù)量的處理器或?qū)⒉煌奶幚砥骱私M和在一起
          * 增加了已有的處理器,在FPGA中添加一個(gè)或更多的Nios II軟核處理器

          更低的系統(tǒng)成本

          * 通過將處理器、外設(shè)、存儲(chǔ)器和I/O接口集成到一個(gè)單一的FPGA中,從而降低了系統(tǒng)成本、復(fù)雜性和功耗
          * 通過將Nios II處理器嵌入到低成本的FPGA中只需花費(fèi)35美分或者更低(編者:對(duì)大多數(shù)用戶而言,NiosII所占邏輯資源的成本大約是10-20元人民幣,具體取決于所選FPGA的類型和NiosII的配置)

          應(yīng)對(duì)產(chǎn)品的生命周期

          * 提供易用的設(shè)計(jì)工具從而快速將產(chǎn)品推向市場(chǎng)。
          * 提供永久的,免費(fèi)的許可從而使基于Nios II處理器的產(chǎn)品避免了處理器的更新?lián)Q代而帶來的損失。

          功能強(qiáng)大、易用的開發(fā)工具

          * 通過使用Nios II集成開發(fā)環(huán)境(IDE),從而加速了軟件的開發(fā)
          * 利用Altera的強(qiáng)大的SOPC Builder系統(tǒng)開發(fā)工具和Quartus II設(shè)計(jì)軟件可以在幾分鐘內(nèi)設(shè)計(jì)一個(gè)系統(tǒng)

          使用完全功能的開發(fā)包

          * 使用易用的Nios II 開發(fā)包開始一個(gè)設(shè)計(jì)
          * 使用易用的Nios II開發(fā)包開始設(shè)計(jì)
          * 可以選擇具有低成本特性的Cyclone FPGA開發(fā)套件,或高性能的Stratix FPGA開發(fā)套件

           

          稍微了解一下NiosII后,我們就來開始設(shè)計(jì)、應(yīng)用它吧!

          下面我們就設(shè)計(jì)一個(gè)最簡(jiǎn)單的NiosII系統(tǒng),使用NiosII去控制一個(gè)LED燈,通過這個(gè)例子我們可以了解整個(gè)介紹NiosII的設(shè)計(jì)流程

          第一節(jié):EDA軟件的安裝。

          許多朋友在配置EDA環(huán)境的時(shí)候,就遇到了更多問題,我現(xiàn)在總結(jié)一下:

          1。安裝QuartusII4.2

          2。安裝NiosII IDE 用于軟件開發(fā)

          3。安裝ModelSim6.0。 用于系統(tǒng)仿真

          如下是ModelSim下的安裝說明:

          1.Install, Select Full product instllation. When asked for security key, select no. When you
          see License Wizard dialog, select close because license wizard dont know our license's format.
          2.Use our keygen to generate license.dat, copy it to c:flexlm directory.
          3.set enviroment string: LM_LICENSE_FILE = c:flexlmlicense.dat
          4.Start Modelsim and have fun.

          仍有許多人表示搞不定,通常是因?yàn)榈谌接袉栴},可以如下設(shè)置:

          在W2K下,在開始 -〉系統(tǒng) -〉設(shè)置 -〉 系統(tǒng) -〉 高級(jí) -〉 環(huán)境變量 -〉系統(tǒng)變量中設(shè)置
          變量名為 LM_LICENSE_FILE ,值為 你的存放license.dat的路徑 + 文件名,比如 c:flexlmlicense.dat,
          (在unix/linux下,在.bashrc中export LM_LICENSE_FILE=/thePathOfLicenseFile/yourLicenseFileName就可以了?。?

           

          第二節(jié):建立niosII系統(tǒng)。

          1:建立項(xiàng)目。

          建立一個(gè)目錄,比如H:DB2005projectniosDKExampleNiosSmall

          啟動(dòng)QuartusII4.2軟件。

          選擇File -> New Project Wizard

          在Diectory,Name,Top-Level Entity中如下填寫,在你自己的項(xiàng)目中,你可以類比著填寫:

           


           

           

          在Add Files中如下填寫,在你自己的項(xiàng)目中,你可以類比著填寫:



           

           

          在EDA Tools Setting中如下填寫,在你自己的項(xiàng)目中,你可以類比著填寫:



           

           

          最后,選擇Finish,就OK了!



           

           

          在H:DB2005projectniosDKExampleNiosSmall下建立一個(gè)name為Setup.tcl的file,其內(nèi)容如下:

          #Setup.tcl
          # Setup pin setting
          set_global_assignment -name RESERVE_ALL_UNUSED_PINS AS OUTPUT DRIVING GROUND
          set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF
          set_location_assignment PIN_16 -to clk
          set_location_assignment PIN_37 -to led[0]
          set_location_assignment PIN_39 -to led[1]
          set_location_assignment PIN_1 -to led[2]
          set_location_assignment PIN_41 -to led[3]
          set_location_assignment PIN_42 -to led[4]
          set_location_assignment PIN_49 -to led[5]
          set_location_assignment PIN_50 -to led[6]
          set_location_assignment PIN_51 -to led[7]

           

          很淺顯的Script,你可以根據(jù)需要修改。

          然后打開Tools -> Tcl Scripts,選中剛才編輯的Script文件:Setup,并點(diǎn)擊Run



          2:生成一個(gè)可調(diào)試的nios 最小系統(tǒng)

           

          選擇 Tools -> SopcBuilder,啟動(dòng)Altera SOPC Builder

          啟動(dòng)Altera SOPC Builder后,SOPC Builder會(huì)立刻彈出對(duì)話框

          填入System Name,比如niosII_e;HDL Language ,比如選擇verilog,如下圖:



           

           

          選擇Board Target ,比如,我選擇Unspecified Board;

          選擇Target Device Family,比如,我選擇Cyclone;

          填入Clock,比如,我 填入22.1184

          如下圖:



           

           

          添加Nios II到項(xiàng)目中:

          雙擊 Nios II Processor -Altera Corporation,會(huì)彈出Altera niosII 對(duì)話框,

           

          在NiosII core配置選項(xiàng)中,點(diǎn)擊Nios II/e區(qū)域,選擇Nios II/e,如下圖。然后Next,進(jìn)入下一步。



           

           

          在JTAG Debug Module配置選項(xiàng)中,選擇Level 1,如下圖。然后Next,進(jìn)入下一步。



           

           

          在Custom Instructions配置選項(xiàng)中,我由于無需增加任何定制指令,所以為空,如下圖:

           



           

           

          最后選擇Finish,你的項(xiàng)目中會(huì)增加一個(gè)niosII 處理器,名字為cpu_0,為了簡(jiǎn)便起見,我沒有將它改名。你可以依照你自己的喜好,為該處理器取個(gè)名字。如下圖:

           



           

           



          然后雙擊On-Chip Memory(RAM or ROM),(在Avalon Modules -> Memory -> 下),為系統(tǒng)添加RAM.

          Memory Type選擇RAM;Data Width選擇32bits,Total Memory Size 可以選擇2K bytes,然后選擇Finish確認(rèn)。

           



           

           

          如下圖,系統(tǒng)中會(huì)添加name 為onchip_memory_0的ram,為了簡(jiǎn)便起見,我沒有將它改名。你可以依照你自己的喜好,為其取個(gè)名字。

           



           

           



          之后,雙擊PIO(在Parallel I/O)(在Avalon Modules -> Other 下),為系統(tǒng)添加輸出接口。

          Width 選擇8 bits,然后點(diǎn)擊 Finish

          如下圖

           



           

           

          如下圖,系統(tǒng)中會(huì)添加name 為pio_0的PIO,為了簡(jiǎn)便起見,我沒有將它改名。你可以依照你自己的喜好,為其取個(gè)名字。

           



           

           

          然后,選擇System ->Auto-Assign Base Addresses,讓系統(tǒng)自動(dòng)分配基地址。如下圖:

           



           

           

          然后,選擇Sysetm->Auto-Assign IRQs,讓系統(tǒng)自動(dòng)分配中斷。如下圖:

           



           

           



          點(diǎn)擊Nios II More cpu_0 settings選項(xiàng)卡,進(jìn)行處理器設(shè)定。

          在該例中,無需做任何更改;Reset Address、Exceptiong Address、Break Location默認(rèn)值如下圖所示。

           



           



          點(diǎn)擊System Generation選項(xiàng)卡,進(jìn)行最后的設(shè)定并生成系統(tǒng)。

          選中HDL.Generate system module logic in Verilog,

          如果需要仿真,也請(qǐng)選中Simulation.Create ModelSim(tm) project files

          然后點(diǎn)擊Generate,進(jìn)行系統(tǒng)生成的任務(wù)。如下圖:

           



           

           



          然后,就是漫長(zhǎng)的等待,你可以悠閑得喝一杯咖啡(因?yàn)榈却臅r(shí)間還是蠻長(zhǎng)的,比如我,要等近10分鐘)。一般沒有問題的話,可以看到系統(tǒng)提示:SUCCESS: SYSTEM GENERATION COMPLETED.如果看到此信息,恭喜恭喜,系統(tǒng)被正確生成了。如果失敗,請(qǐng)返回并檢查、修改!

          如下圖:

           



          3:在QuartusII中使用上述niosII系統(tǒng)

           

          在 SOPC Builder正確運(yùn)行完畢后,可以在QuartusII中,打開SOPC Builder生成的niosII_e.bsf,檢查一下引腳,看看跟你的設(shè)想是否有誤,如下圖,niosII_e有兩個(gè)input:clk,reset_n,一組output:out_port_from_the_piop[7:0]

          如下圖:

           



           

           

          你可以使用上述的niosII_e,來構(gòu)造你自己的系統(tǒng)。如下圖,我簡(jiǎn)單得創(chuàng)建了nisoSmall.bdf,來使用該niosII_e。

          nios clk to clk

          niso reset_n to VCC

          out_port_from_the_pio_0[7:0] to LED[7:0]

           



           

           

          第三節(jié):編寫程序。

          在Alter SOPC Builder中,點(diǎn)擊Run Nios II IDE,啟動(dòng)Nios II IDE,如下圖:

           



           

           

          在Nios II IDE中,選擇File -> New -> Project,開啟New Project 對(duì)話框

          選擇 C/C++ Application,如下圖。然后選擇Next,進(jìn)入下一步。

           



           

           

          填寫你自己的Project Name,比如我填寫hello_led_1;在Select Project Template中,我選擇Hello LED(因?yàn)榇娣懦绦虻膕ram只有2kbytes,所以許多Template不可用),如下圖。然后選擇Next,進(jìn)入下一步。

           



           

          選擇Create a new system library named:,最后點(diǎn)擊Finish,創(chuàng)建項(xiàng)目。如下圖:

           



           

           

          打開項(xiàng)目中的文件:hello_led.c,進(jìn)行適當(dāng)?shù)男薷摹?

          比如,我將PIO的基地址修改為PIO_0_BASE;while(i200000)修改為while(i20000).你可以依照你的需求修改!

           

           



           

           

          然后選擇Project->Build All(Ctrl+B),編譯整個(gè)項(xiàng)目。

          如果無誤,可以看到以下信息:Build completed.如果看到了該條提示,恭喜恭喜,距離成功只有一步之遙了!

           



           

           

          第四節(jié):編譯整個(gè)項(xiàng)目。

          然后,在QuartusII中,選擇Processing -> Star Compilation,開始編譯整個(gè)項(xiàng)目。

          你又可以坐下來喝杯咖啡了,反正我是等了又十來分鐘。

          成功后,可以看到如下信息:如果到了這一步,赫赫,基本上大功告成了!

           



           

           

          第五節(jié):下載與測(cè)試。

          最后,選擇Tools ->Programmer,下載整個(gè)配置到FPGA中,如下圖。

           



           

          下載成功后,可以看到LED的有規(guī)律的變化。(物理硬件中,我只用了一個(gè)LED,觀察到LED是常亮,有規(guī)律得熄滅,因?yàn)槲业腖ED是低電平才發(fā)光,與設(shè)計(jì)完全吻合?。?

          OK,做到這一步,就大功告成了!




          關(guān)鍵詞: FPGANIosII

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();