基于FPGA的片上可编程系统(SOPC)设计之:典型实例-基于NIOS II处理器的“Hello LED”程序设计
Avalon三态总线,如图8.40所示。
图8.40添加外部RAM总线
(8)SOPCBuilder定制串行通信设备UART。
通用串行总线RS-232协议是我们最常用的通信协议,所以把它也添加到我们的系统里。注意选择所需的数据帧格式,如图8.41所示。
(9)SOPCBuilder定制LCD液晶模块。
使用标准16027字符型液晶显示器。
(10)SOPCBuilder定制systemid。
在SOPCBuilder中使用默认定制的systemid。
(11)SOPCBuilder定制PIO。
添加4个LED和输入设备按键开关PIO,这是一个标准SOPC一般所需要的设备。
(12)SOPCBuilder指定基地址和中断编号。
首先修改Flash的基地址为0x00000000,之后在Flash上单击右键锁定基地址,如图8.42所示。
图8.41串行通信设备UART参数设置
图8.42锁定Flash基地址
然后,选择“System”/“Auto-AssignBaseAddresses”,让系统自动分配基地址,如图8.43所示。
图8.43自动分配系统设备地址
最后,选择“System”/“Auto-AssignIRQs”,让系统自动分配中断,如图8.44所示。
(13)SOPCBuilderNIOSIICPU其他设置。
单击“NiosIIMore“cpu_0”Settings”选项卡,进行处理器设定。在本实例中,将“ResetAddress”修改为“ext_flash”,“ExceptionAddress”修改为“sdram”,“BreakLocation”使用默认值,如图8.45所示。
图8.45自动分配系统设备中断编号
(14)生成软嵌入式系统IP核。
单击“SystemGeneration”选项卡,进行最后的设定并生成系统。选中“HDLGeneratesystemmodulelogicinVerilog”。如果需要仿真,也选择“SimulationCreateModelSim(tm)projectfiles”,然后单击“Generate”按钮,执行系统生成的任务。
然后,耐心地等待系统的生成。一般没有问题的话,可以看到系统提示“SUCCESS:SYSTEMGENERATIONCOMPLETED”。如果看到此信息,则说明系统被正确生成了。如果失败,请返回并检查、修改。
(15)在QuartusII工程中添加上述NIOS系统。
类似向QuartusII工程添加功能模块一样,将所定制的NiosII软核CPU添加到本例工程中。双击工程顶层图空白处,弹出“Symbol”对话框,在“Project”下面可以找到刚才建立的niosii_c模块,如图8.46所示。
图8.46在QuartusII中添加IP核
单击“OK”按钮将其niosii_c添加到顶层图中。
(16)在QuartusII工程中添加端口分配管脚编译。
首先在QuartusII中将NIOS等端口添加至工程中,并为工程添加相应的管脚约束,然后即可对工程进行编译。
(17)设计该工程软件。
首先在AlteraSOPCBuilder中,点击RunNiosIIIDE,启动NiosIIIDE,如图8.47所示。
图8.47打开NIOSIIIDE软件
接下来我们要设计该工程的软件。运行NiosIDE,在NiosIIIDE中,选择“File”/“New”/“Project”选项,开启“NewProject”对话框,选择“C/C++Application”,如图8.48所示。
图8.48新建软件工程
然后单击“Next”按钮,进入下一步,在模板中选择“HelloLED”,如图8.49所示。
单击“SOPCBuilderSystem”右边的“Browse”按钮打开目录对话框,从该工程目录下找到“niosii_c.ptf”,因为NiosIIIDE必须从这个文件获取该系统的相关信息。单击“Finish”按钮,即建立一个名为Hello_LED_0的模板。
打开项目中的文件:hello_led.c,根据需要进行修改。在本实例程序中,“PIO_0_BASE”名称中的“PIO_0”应改为SOPCBuilder定义时的名称,如图8.49中的“Hello_LED_0”。
图8.49采用设计模板
(18)编译软件。
右键单击“hello_led_0”,在弹出的菜单中选择“BuildProject”。(为使编译过程更加顺利,此时最好关闭杀毒软件和其他占用电脑资源较大的软件)。
如果无误,可以看到以下信息:Buildcompleted。如果看到了这条提示,表示软件编译成功,可以看到程序占用空间等信息。
(19)下载验证。
最后我们还要回到QuartusⅡ里面选择“Tools”菜单里面的“Programmer”,下载整个配置到FPGA中去。
然后在NiosII环境中单击“RunAsNiosIIHardware”按钮将C程序下载到实验板中。
本实例最终的硬件实现现象是led跑马灯。
8.4.3小结
本节讲解了一个完整的软嵌入式设计流程。虽然此实例实现的功能比较简单,但对于初学者来说
- 单片DSP处理器功能系统的SOPC技术设计(01-12)
- 基于DSP和SOPC数字信号发生器的设计(01-05)
- 基于Linux的SoPC应用系统设计(04-23)
- 基于DSP的实时数据处理系统浅析(02-28)
- 基于LXI总线的1553B通讯模块设计与开发(11-24)
- 双MicroBlaze软核处理器的SOPC系统设计(01-27)