嵌入式系统与应用讲授:伍宗富《嵌入式系统》课程教学讲授:伍宗富2010年9月25日星期六湖南文理学院电气与信息工程学院嵌入式系统与应用讲授:伍宗富第八讲NiosII嵌入式应用系统的设计流程教学目的:使学生会用QuartusII和NiosIIIDE软件进行NiosII嵌入式应用系统的设计。教学重点:通过实例讲解NiosII嵌入式系统的设计方法。教学难点:NiosII嵌入式应用系统的设计步骤。教学方法:讲授法、计算机辅助法。课时计划:2学时使用教材:SOPC技术与应用.江国强编著.北京:机械工业出版社主要参考文献:[1]田耘等.无线通信FPGA设计[M].北京:电子工业出版社[2]孟宪元等.FPGA嵌入式系统设计教程[M].北京:电子工业出版社[3]徐光辉等.基于FPGA的嵌入式开发与应用[M].北京:电子工业出版社[4]沈文斌.嵌入式硬件系统设计与开发实例详解[M].北京:电子工业出版社[5]周立功等.SOPC嵌入式系统基础教程[M].北京:北京航空航天大学出版社[6]王彦等.基于FPGA的工程设计与应用[M].西安:西安电子工业出版社[7]周润景等.基于QuartusII的FPGA/CPLD数字系统设计实例[M].北京:电子工业出版社[8]嵌入式系统与应用讲授:伍宗富课题:NiosII嵌入式应用系统的设计流程一、NiosII嵌入式系统的硬件设计流程二、NiosII嵌入式系统的软件设计流程四、课堂小结五、作业三、NiosII嵌入式系统中IP核的添加嵌入式系统与应用讲授:伍宗富一、NiosII嵌入式系统的硬件设计流程¾下面以“两个LED交替闪烁”的设计为例进行NiosII嵌入式系统的设计流程讲解。1.新建SOPC设计项目(1)建立一个文件夹,作为保存设计文件的工程目录.(2)建立设计项目名,执行QuartusII中“File”-“NewProjectWizard”,器件选“CycloneIIEP2C20Q240C8”。(3)建立SOPC系统,执行“Tools”-“SOPCBuilder…”-“Newsystem”(设定语言选VHDL)。clkreset_nout_port_from_the_pio_0[1..0]niosii_cinst嵌入式系统与应用讲授:伍宗富一、NiosII嵌入式系统的硬件设计流程2.加入NiosII系统组件(1)加入NiosCPUCORE.执行“NiosIIProcessor…”,添加一个NiosII/e(经济型CPU)经济型快速型标准型1.新建SOPC设计项目嵌入式系统与应用讲授:伍宗富一、NiosII嵌入式系统的硬件设计流程2.加入NiosII系统组件(2)加入RAM(32bit/8KB)、PIO(output)组件.1.新建SOPC设计项目嵌入式系统与应用讲授:伍宗富一、NiosII嵌入式系统的硬件设计流程3.生成NiosII系统(1)系统自动分配基地址、自动分配中断地址嵌入式系统与应用讲授:伍宗富一、NiosII嵌入式系统的硬件设计流程3.生成NiosII系统(2)系统生成设置与命令执行系统提示“SUCCES:SYSTEMGENERATIONCOMPLETED”表示生成正确。嵌入式系统与应用讲授:伍宗富一、NiosII嵌入式系统的硬件设计流程4.在Quartus工程中添加Nios系统¾假设设计的嵌入式系统工作时钟为50MHz,现输入时钟为25MHz。故需从Quartus的megafunctions的IO库中添加一个锁相环(PLL)。锁相环altpll:fin=25MHz,fco=50MHz,倍频系数为2。5.器件选择、引脚锁定、编译下载至Flash配置芯片(EPCS1),在FPGA芯片中建立硬件系统。VCCclkINPUTVCCresetINPUTled[1..0]OUTPUTclkreset_nout_port_from_the_pio_0[1..0]niosii_cinstCycloneIIinclk0frequency:25.000MHzOperationMode:NormalClkRatioPh(dg)DC(%)c02/10.0050.00inclk0c0altpll0inst1PIN_6PIN_7PIN_154PIN_116“两个LED交替闪烁”的NiosII嵌入式硬件系统设计嵌入式系统与应用讲授:伍宗富一、NiosII嵌入式系统的硬件设计流程5.器件选择、引脚锁定、编译下载至Flash配置芯片(EPCS4),在FPGA芯片中建立硬件系统。“两个LED交替闪烁”的NiosII嵌入式硬件系统设计嵌入式系统与应用讲授:伍宗富二、NiosII嵌入式系统的软件设计流程1.新建软件工程“两个LED交替闪烁”的NiosIDE软件设计(1)运行NiosIDE,执行NiosIDE中的“File”-New-Project-NiosIIC/C++Application(2)在新建对话框中设定工程文件名字,选择已建立的NiosII(CPU)系统文件nios_c.ptf,并选择工程模板。嵌入式系统与应用讲授:伍宗富二、NiosII嵌入式系统的软件设计流程2.程序编写(或根据模板修改)“两个LED交替闪烁”的NiosIDE软件设计#includesystem.h#includealt_types.hintmain(void){alt_u8led=0x2;alt_u8表示无符号8位数,在alt_types.h中定义volatileinti;while(1){for(i=0;i200000;i++);循环延时led=0x1;*(unsignedint*)PIO_0_BASE=led;表示控制led的PIO基地址for(i=0;i200000;i++);led=0x2;*(unsignedint*)PIO_0_BASE=led;}return0;}嵌入式系统与应用讲授:伍宗富二、NiosII嵌入式系统的软件设计流程3.编译工程“两个LED交替闪烁”的NiosIDE软件设计(1)编译设置(使编译编译出更高效、占用空间更小的代码)①工程属性设置:鼠标右击,选择快捷菜单的“Properties”。在对话框中选C/C++Build-ToolSetting-NiosIICompiler-General,在“OptimizationLevel”中选择“Optimzesize(-Os)。嵌入式系统与应用讲授:伍宗富二、NiosII嵌入式系统的软件设计流程3.编译工程“两个LED交替闪烁”的NiosIDE软件设计(1)编译设置(使编译编译出更高效、占用空间更小的代码)②工程系统库属性设置:鼠标右击,选择快捷菜单的“Properties”。在对话框中选C/C++Build-ToolSetting-NiosIICompiler-General,在“OptimizationLevel”中选择“Optimzesize(-Os)。在对话框中选择“SystemLibray”;¾将“Maxfiledescriptors:”改为4;清除(不选)“Cleanexit”,“Linkwithprofilinglibrary”;9复选“Reduceddevicedrivers”和“SmallClibrary”嵌入式系统与应用讲授:伍宗富二、NiosII嵌入式系统的软件设计流程3.编译工程“两个LED交替闪烁”的NiosIDE软件设计(2)编译选择工程:鼠标右击,选择快捷菜单的“BuildProject”编译成功。占用内存空间680B,剩余7512B建立niosII_c系统时定义的是8K内存。嵌入式系统与应用讲授:伍宗富二、NiosII嵌入式系统的软件设计流程4.调试工程(连接好下载线至FPGA核心板的JTAG口)菜单Run-DebugAs-NiosHardware.“两个LED交替闪烁”的NiosIDE软件设计嵌入式系统与应用讲授:伍宗富二、NiosII嵌入式系统的软件设计流程5.运行工程(连接好下载线至FPGA核心板的JTAG口)NiosIDE菜单Tool-QuartusIIProgrammer.“两个LED交替闪烁”的NiosIDE软件设计¾软件设计完成并调试成功后,在QuartusII中将整个项目进行编译,将硬件配置信息与软件初始化信息编译在一起,并下载固化在配置芯片(EPCS4)中,最终使用FPGA实现设计者定制的处理器及控制器等于一体的NiosII嵌入式系统。嵌入式系统与应用讲授:伍宗富三、NiosII嵌入式系统中IP核的添加1.加入用户自定义NiosII系统的外部实体方法①将用户自定义的程序包复制到安装目录(altera\quartus\sopc_builder\components)或工程目录中,便可在用户模块下直接调用;方法②将实体(.vhd或.v)文件复制到工程目录中采用如下方法设置可产生UserLogic项;(a)用鼠标左键双击组件选择栏中LegacyComponents-“InterfacetoUserLogic”-“Add”,选择所需的实体(.vhd或.v)文件;使用“Readport-listfromfiles”显示实体的端口信息,在PortInformation栏中对每个端口名后面的“Type”(类型)进行设置;(b)在“Timing”页面中完成组件的时序设置;在“Publish”页面中的“”ComponentName”栏目中完成组件名称的命名;(c)完成组件加入,“AddtoLibrary”加入工程目录中或“AddtoSystem”加入设计系统中。嵌入式系统与应用讲授:伍宗富三、NiosII嵌入式系统中IP核的添加2.直接调用实例(sopc_de2s1)¾将用户自定义的程序包(user_ip文件夹中的SEG7_LUT_8、SRAM_16Bit_512K、Binary_VGA_Controller)复制到安装目录(altera\quartus\sopc_builder\components),便可在用户模块下直接调用。嵌入式系统与应用讲授:伍宗富三、NiosII嵌入式系统中IP核的添加2.直接调用实例(sopc_de2s2)¾将用户自定义的程序包(user_ip文件夹中的ISP1362)复制到工程目录中,便可在用户模块下直接调用。嵌入式系统与应用讲授:伍宗富三、NiosII嵌入式系统中IP核的添加3.产生UserLogic项后调用实例(sopc_de2s3)¾将用户自定义的实体(user_ip文件夹中的ISP1362中的ISP1362_IF.v)文件复制到工程目录中后,进行LegacyComponents-“InterfacetoUserLogic”-“Add”设置加入,产生UserLogic项的模块,便可在UserLogic项下直接调用。用户组端口Type设置建立时间保持时间等待时间名称加入库加入系统嵌入式系统与应用讲授:伍宗富课堂小结一、NiosII嵌入式系统的硬件设计流程(NiosCPU)二、NiosII嵌入式系统的软件设计流程(NiosIDE)三、NiosII嵌入式系统中IP核的添加(方法,怎样产生UserLogic项)嵌入式系统与应用讲授:伍宗富课外作业:教材P1354.1,上机实验