Nios简略介绍:
Nios II是一个用户可装备的通用RISC嵌入式处理器。在这儿,我引用了Altera公司关于NiosII的官方介绍:
Altera推出的Nios? II系列嵌入式处理器扩展了现在世界上最盛行的软核嵌入式处理器的功用,
把Nios II嵌入到Altera的一切FPGA中,例如StratixII、Stratix、CycloneII,Cyclone、APEX,ACEX和HardCopy系列器材中,用户能够获得超越200 DMIPS的功用,用户能够从三种处理器以及超越60个的IP核中挑选所需求的,Nios II体系为用户供给了最基本的多功用性,规划师能够以此来创立一个最适合他们需求的嵌入式体系。
Nios II处理器的长处和特性
运用Nios II处理器的用户能够依据他们的需求来调整嵌入式体系的特性、功用以及本钱,快速使得产品推向市场,扩展产品的生命周期,而且防止处理器的更新换代。
进步体系功用
* 一系列的处理器核可供挑选,其间包含了超越200 DMIPS功用的核
* 完成任何数量的处理器或将不同的处理器核组和在一同
* 增加了已有的处理器,在FPGA中增加一个或更多的Nios II软核处理器
更低的体系本钱
* 经过将处理器、外设、存储器和I/O接口集成到一个单一的FPGA中,然后降低了体系本钱、复杂性和功耗
* 经过将Nios II处理器嵌入到低本钱的FPGA中只需花费35美分或许更低(编者:对大多数用户而言,NiosII所占逻辑资源的本钱大约是10-20元人民币,详细取决于所选FPGA的类型和NiosII的装备)
应对产品的生命周期
* 供给易用的规划东西然后快速将产品推向市场。
* 供给永久的,免费的答应然后使根据Nios II处理器的产品防止了处理器的更新换代而带来的丢失。
功用强壮、易用的开发东西
* 经过运用Nios II集成开发环境(IDE),然后加快了软件的开发
* 运用Altera的强壮的SOPC Builder体系开发东西和Quartus II规划软件能够在几分钟内规划一个体系
运用彻底功用的开发包
* 运用易用的Nios II 开发包开端一个规划
* 运用易用的Nios II开发包开端规划
* 能够挑选具有低本钱特性的Cyclone FPGA开发套件,或高功用的Stratix FPGA开发套件
略微了解一下NiosII后,咱们就来开端规划、运用它吧!
下面咱们就规划一个最简略的NiosII体系,运用NiosII去操控一个LED灯,经过这个比方咱们能够了解整个介绍NiosII的规划流程
第一节:EDA软件的装置。
许多朋友在装备EDA环境的时分,就遇到了更多问题,我现在总结一下:
1。装置QuartusII4.2
2。装置NiosII IDE 用于软件开发
3。装置ModelSim6.0。 用于体系仿真
如下是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.
仍有许多人表明搞不定,一般是由于第三步有问题,能够如下设置:
在W2K下,在开端 -〉体系 -〉设置 -〉 体系 -〉 高档 -〉 环境变量 -〉体系变量中设置
变量名为 LM_LICENSE_FILE ,值为 你的寄存license.dat的途径 + 文件名,比方 c:flexlmlicense.dat,
(在unix/linux下,在.bashrc中export LM_LICENSE_FILE=/thePathOfLicenseFile/yourLicenseFileName就能够了!)
第二节:树立niosII体系。
1:树立项目。
树立一个目录,比方H:DB2005projectniosDKExampleNiosSmall
发动QuartusII4.2软件。
挑选File -> New Project Wizard
在Diectory,Name,Top-Level Entity中如下填写,在你自己的项目中,你能够类比着填写:
在Add Files中如下填写,在你自己的项目中,你能够类比着填写:
在EDA Tools Setting中如下填写,在你自己的项目中,你能够类比着填写:
最终,挑选Finish,就OK了!
在H:DB2005projectniosDKExampleNiosSmall下树立一个name为Setup.tcl的file,其内容如下:
#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,你能够依据需求修正。
然后翻开Tools -> Tcl Scripts,选中方才修正的Script文件:Setup,并点击Run
2:生成一个可调试的nios 最小体系
挑选 Tools -> SopcBuilder,发动Altera SOPC Builder
发动Altera SOPC Builder后,SOPC Builder会马上弹出对话框
填入System Name,比方niosII_e;HDL Language ,比方挑选verilog,如下图:
挑选Board Target ,比方,我挑选Unspecified Board;
挑选Target Device Family,比方,我挑选Cyclone;
填入Clock,比方,我 填入22.1184
如下图:
增加Nios II到项目中:
双击 Nios II Processor -Altera Corporation,会弹出Altera niosII 对话框,
在NiosII core装备选项中,点击Nios II/e区域,挑选Nios II/e,如下图。然后Next,进入下一步。
在JTAG Debug Module装备选项中,挑选Level 1,如下图。然后Next,进入下一步。
在Custom Instructions装备选项中,我由于无需增加任何定制指令,所认为空,如下图:
最终挑选Finish,你的项目中会增加一个niosII 处理器,姓名为cpu_0,为了简洁起见,我没有将它改名。你能够按照你自己的喜爱,为该处理器取个姓名。如下图:
然后双击On-Chip Memory(RAM or ROM),(在Avalon Modules -> Memory -> 下),为体系增加RAM.
Memory Type挑选RAM;Data Width挑选32bits,Total Memory Size 能够挑选2K bytes,然后挑选Finish承认。
如下图,体系中会增加name 为onchip_memory_0的ram,为了简洁起见,我没有将它改名。你能够按照你自己的喜爱,为其取个姓名。
之后,双击PIO(在Parallel I/O)(在Avalon Modules -> Other 下),为体系增加输出接口。
Width 挑选8 bits,然后点击 Finish
如下图
如下图,体系中会增加name 为pio_0的PIO,为了简洁起见,我没有将它改名。你能够按照你自己的喜爱,为其取个姓名。
然后,挑选System ->Auto-Assign Base Addresses,让体系主动分配基地址。如下图:
然后,挑选Sysetm->Auto-Assign IRQs,让体系主动分配中止。如下图:
点击Nios II More cpu_0 settings选项卡,进行处理器设定。
在该例中,无需做任何更改;Reset Address、Exceptiong Address、Break Location默认值如下图所示。
点击System Generation选项卡,进行最终的设定并生成体系。
选中HDL.Generate system module logic in Verilog,
假如需求仿真,也请选中Simulation.Create ModelSim(tm) project files
然后点击Generate,进行体系生成的使命。如下图:
然后,便是绵长的等候,你能够清闲得喝一杯咖啡(由于等候的时刻仍是蛮长的,比方我,要等近10分钟)。一般没有问题的话,能够看到体系提示:SUCCESS: SYSTEM GENERATION COMPLETED.假如看到此信息,祝贺祝贺,体系被正确生成了。假如失利,请回来并查看、修正!
如下图:
3:在QuartusII中运用上述niosII体系
在 SOPC Builder正确运转结束后,能够在QuartusII中,翻开SOPC Builder生成的niosII_e.bsf,查看一下引脚,看看跟你的想象是否有误,如下图,niosII_e有两个input:clk,reset_n,一组output:out_port_from_the_piop[7:0]
如下图:
你能够运用上述的niosII_e,来结构你自己的体系。如下图,我简略得创立了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]
第三节:编写程序。
在Alter SOPC Builder中,点击Run Nios II IDE,发动Nios II IDE,如下图:
在Nios II IDE中,挑选File -> New -> Project,敞开New Project 对话框
挑选 C/C++ Application,如下图。然后挑选Next,进入下一步。
填写你自己的Project Name,比方我填写hello_led_1;在Select Project Template中,我挑选Hello LED(由于寄存程序的sram只要2kbytes,所以许多Template不可用),如下图。然后挑选Next,进入下一步。
挑选Create a new system library named:,最终点击Finish,创立项目。如下图:
翻开项目中的文件:hello_led.c,进行恰当的修正。
比方,我将PIO的基地址修正为PIO_0_BASE;while(i200000)修正为while(i20000).你能够按照你的需求修正!
然后挑选Project->Build All(Ctrl+B),编译整个项目。
假如无误,能够看到以下信息:Build completed.假如看到了该条提示,祝贺祝贺,间隔成功只要一步之遥了!
第四节:编译整个项目。
然后,在QuartusII中,挑选Processing -> Star Compilation,开端编译整个项目。
你又能够坐下来喝杯咖啡了,横竖我是等了又十来分钟。
成功后,能够看到如下信息:假如到了这一步,赫赫,基本上功德圆满了!
第五节:下载与测验。
最终,挑选Tools ->Programmer,下载整个装备到FPGA中,如下图。
下载成功后,能够看到LED的有规则的改变。(物理硬件中,我只用了一个LED,观察到LED是常亮,有规则得平息,由于我的LED是低电平才发光,与规划彻底符合!)
OK,做到这一步,就功德圆满了!