基于CPLDFPGA的NOSII处理器设计.docx
- 文档编号:7731355
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:25
- 大小:593.60KB
基于CPLDFPGA的NOSII处理器设计.docx
《基于CPLDFPGA的NOSII处理器设计.docx》由会员分享,可在线阅读,更多相关《基于CPLDFPGA的NOSII处理器设计.docx(25页珍藏版)》请在冰豆网上搜索。
基于CPLDFPGA的NOSII处理器设计
基于CPLD/FPGA的NiosII软处理器设计
1Nios简单介绍
NiosII是一个用户可配置的通用RISC嵌入式处理器。
Altera推出的NiosII系列嵌入式处理器扩展了目前世界上最流行的软核嵌入式处理器的性能,把NiosII嵌入到Altera的所有FPGA中,例如StratixII、Stratix、CycloneII,Cyclone、APEX,ACEX和HardCopy系列器件中,用户可以获得超过200DMIPS的性能,用户可以从三种处理器以及超过60个的IP核中选择所需要的,NiosII系统为用户提供了最基本的多功能性,设计师可以以此来创建一个最适合他们需求的嵌入式系统。
2NiosII处理器的优点和特性
使用NiosII处理器的用户可以根据他们的需要来调整嵌入式系统的特性、性能以及成本,快速使得产品推向市场,扩展产品的生命周期,并且避免处理器的更新换代。
1)提高系统性能
*一系列的处理器核可供选择,其中包括了超过200DMIPS性能的核
*实现任何数量的处理器或将不同的处理器核组和在一起
*增加了已有的处理器,在FPGA中添加一个或更多的NiosII软核处理器
更低的系统成本
*通过将处理器、外设、存储器和I/O接口集成到一个单一的FPGA中,从而降低了系统成本、复杂性和功耗
*通过将NiosII处理器嵌入到低成本的FPGA中只需花费35美分或者更低(编者:
对大多数用户而言,NiosII所占逻辑资源的成本大约是10-20元人民币,具体取决于所选FPGA的类型和NiosII的配置)
2)应对产品的生命周期
*提供易用的设计工具从而快速将产品推向市场。
*提供永久的,免费的许可从而使基于NiosII处理器的产品避免了处理器的更新换代而带来的损失。
3)功能强大、易用的开发工具
*通过使用NiosII集成开发环境(IDE),从而加速了软件的开发
*利用Altera的强大的SOPCBuilder系统开发工具和QuartusII设计软件可以在几分钟内设计一个系统
使用完全功能的开发包
*使用易用的NiosII开发包开始一个设计
*使用易用的NiosII开发包开始设计
*可以选择具有低成本特性的CycloneFPGA开发套件,或高性能的StratixFPGA开发套件
下面我们就设计一个最简单的NiosII系统,使用NiosII去控制一个LED灯,通过这个例子我们可以了解整个介绍NiosII的设计流程
3EDA软件的安装
许多朋友在配置EDA环境的时候,就遇到了更多问题,我现在总结一下:
1。
安装QuartusII4.2
2。
安装NiosIIIDE用于软件开发
3。
安装ModelSim6.0。
用于系统仿真
如下是ModelSim下的安装说明:
1.Install,SelectFullproductinstllation.Whenaskedforsecuritykey,selectno.Whenyou
seeLicenseWizarddialog,selectclosebecauselicensewizarddontknowourlicense'sformat.
2.Useourkeygentogeneratelicense.dat,copyittoc:
\flexlmdirectory.
3.setenviromentstring:
LM_LICENSE_FILE=c:
\flexlm\license.dat
4.StartModelsimandhavefun.
仍有许多人表示搞不定,通常是因为第三步有问题,可以如下设置:
在W2K下,在开始-〉系统-〉设置-〉系统-〉高级-〉环境变量-〉系统变量中设置
变量名为LM_LICENSE_FILE,值为你的存放license.dat的路径+文件名,比如c:
\flexlm\license.dat,
(在unix/linux下,在.bashrc中exportLM_LICENSE_FILE=/thePathOfLicenseFile/yourLicenseFileName就可以了!
)
4建立niosII系统。
1:
建立项目。
建立一个目录,比如H:
\DB2005\project\niosDK\Example\NiosSmall
启动QuartusII4.2软件。
选择File->NewProjectWizard
在Diectory,Name,Top-LevelEntity中如下填写,在你自己的项目中,你可以类比着填写:
在AddFiles中如下填写,在你自己的项目中,你可以类比着填写:
在EDAToolsSetting中如下填写,在你自己的项目中,你可以类比着填写:
最后,选择Finish,就OK了!
在H:
\DB2005\project\niosDK\Example\NiosSmall下建立一个name为Setup.tcl的file,其内容如下:
#Setup.tcl
#Setuppinsetting
set_global_assignment-nameRESERVE_ALL_UNUSED_PINS"ASOUTPUTDRIVINGGROUND"
set_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFF
set_location_assignmentPIN_16-toclk
set_location_assignmentPIN_37-toled\[0\]
set_location_assignmentPIN_39-toled\[1\]
set_location_assignmentPIN_1-toled\[2\]
set_location_assignmentPIN_41-toled\[3\]
set_location_assignmentPIN_42-toled\[4\]
set_location_assignmentPIN_49-toled\[5\]
set_location_assignmentPIN_50-toled\[6\]
set_location_assignmentPIN_51-toled\[7\]
很浅显的Script,你可以根据需要修改。
然后打开Tools->TclScripts,选中刚才编辑的Script文件:
Setup,并点击Run
2:
生成一个可调试的nios最小系统
选择Tools->SopcBuilder,启动AlteraSOPCBuilder
启动AlteraSOPCBuilder后,SOPCBuilder会立刻弹出对话框
填入SystemName,比如niosII_e;HDLLanguage,比如选择verilog,如下图:
选择BoardTarget,比如,我选择UnspecifiedBoard;
选择TargetDeviceFamily,比如,我选择Cyclone;
填入Clock,比如,我填入22.1184
如下图:
添加NiosII到项目中:
双击NiosIIProcessor-AlteraCorporation,会弹出AlteraniosII对话框,
在NiosIIcore配置选项中,点击NiosII/e区域,选择NiosII/e,如下图。
然后Next,进入下一步。
在JTAGDebugModule配置选项中,选择Level1,如下图。
然后Next,进入下一步。
在CustomInstructions配置选项中,我由于无需增加任何定制指令,所以为空,如下图:
最后选择Finish,你的项目中会增加一个niosII处理器,名字为cpu_0,为了简便起见,我没有将它改名。
你可以依照你自己的喜好,为该处理器取个名字。
如下图:
然后双击On-ChipMemory(RAMorROM),(在AvalonModules->Memory->下),为系统添加RAM.
MemoryType选择RAM;DataWidth选择32bits,TotalMemorySize可以选择2Kbytes,然后选择Finish确认。
如下图,系统中会添加name为onchip_memory_0的ram,为了简便起见,我没有将它改名。
你可以依照你自己的喜好,为其取个名字。
之后,双击PIO(在ParallelI/O)(在AvalonModules->Other下),为系统添加输出接口。
Width选择8bits,然后点击Finish
如下图
如下图,系统中会添加name为pio_0的PIO,为了简便起见,我没有将它改名。
你可以依照你自己的喜好,为其取个名字。
然后,选择System->Auto-AssignBaseAddresses,让系统自动分配基地址。
如下图:
然后,选择Sysetm->Auto-AssignIRQs,让系统自动分配中断。
如下图:
点击NiosIIMore"cpu_0"settings选项卡,进行处理器设定。
在该例中,无需做任何更改;ResetAddress、ExceptiongAddress、BreakLocation默认值如下图所示。
点击SystemGeneration选项卡,进行最后的设定并生成系统。
选中HDL.GeneratesystemmodulelogicinVerilog,
如果需要仿真,也请选中Simulation.CreateModelSim(tm)projectfiles
然后点击Generate,进行系统生成的任务。
如下图:
然后,就是漫长的等待,你可以悠闲得喝一杯咖啡(因为等待的时间还是蛮长的,比如我,要等近10分钟)。
一般没有问题的话,可以看到系统提示:
SUCCESS:
SYSTEMGENERATIONCOMPLETED.如果看到此信息,恭喜恭喜,系统被正确生成了。
如果失败,请返回并检查、修改!
如下图:
3:
在QuartusII中使用上述niosII系统
在SOPCBuilder正确运行完毕后,可以在QuartusII中,打开SOPCBuilder生成的niosII_e.bsf,检查一下引脚,看看跟你的设想是否有误,如下图,niosII_e有两个input:
clk,reset_n,一组output:
out_port_from_the_piop[7:
0]
如下图:
你可以使用上述的niosII_e,来构造你自己的系统。
如下图,我简单得创建了nisoSmall.bdf,来使用该niosII_e。
niosclktoclk
nisoreset_ntoVCC
out_port_from_the_pio_0[7:
0]toLED[7:
0]
第三节:
编写程序。
在AlterSOPCBuilder中,点击RunNiosIIIDE,启动NiosIIIDE,如下图:
在NiosIIIDE中,选择File->New->Project,开启NewProject对话框
选择C/C++Application,如下图。
然后选择Next,进入下一步。
填写你自己的ProjectName,比如我填写hello_led_1;在SelectProjectTemplate中,我选择HelloLED(因为存放程序的sram只有2kbytes,所以许多Template不可用),如下图。
然后选择Next,进入下一步。
选择Createanewsystemlibrarynamed:
,最后点击Finish,创建项目。
如下图:
打开项目中的文件:
hello_led.c,进行适当的修改。
比如,我将PIO的基地址修改为PIO_0_BASE;while(i<200000)修改为while(i<20000).你可以依照你的需求修改!
然后选择Project->BuildAll(Ctrl+B),编译整个项目。
如果无误,可以看到以下信息:
Buildcompleted.如果看到了该条提示,恭喜恭喜,距离成功只有一步之遥了!
第四节:
编译整个项目。
然后,在QuartusII中,选择Processing->StarCompilation,开始编译整个项目。
你又可以坐下来喝杯咖啡了,反正我是等了又十来分钟。
成功后,可以看到如下信息:
如果到了这一步,赫赫,基本上大功告成了!
第五节:
下载与测试。
最后,选择Tools->Programmer,下载整个配置到FPGA中,如下图。
下载成功后,可以看到LED的有规律的变化。
(物理硬件中,我只用了一个LED,观察到LED是常亮,有规律得熄灭,因为我的LED是低电平才发光,与设计完全吻合!
)
OK,做到这一步,就大功告成了!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 CPLDFPGA NOSII 处理器 设计