8.4典型实例14:根据NIOSII处理器的“HelloLED”程序规划
8.4.1实例的内容及方针
1.实例的首要内容
本节旨在经过给定的工程实例——“HelloLED”来了解Altera软嵌入式体系的软硬件规划办法。一起运用根据AlteraFPGA的开发板将该实例进行下载验证,完结工程规划的硬件完结。本节首要解说下面一些知识点。
·QuartusIISOPCBuilder运用办法。
·NIOSIIIDE软件开发流程。
经过这些知识点,依照本节实例的完结进程,读者能够敏捷把握Altera软嵌入式软硬件规划办法。
2.实例方针
经过详细的流程解说,读者应到达下面的方针。
·了解QuartusIISOPCbuilder运用办法。
·了解NIOSIIIDE软件规划办法。
8.4.2实例详解
本实例运用图解的办法将整个流程一步一步展示给读者,使读者能够轻松把握开发的流程。
本实例要点在于了解运用QuartusⅡ和SOPCBuilder来创立一个NiosⅡ嵌入式处理器体系,并经过软件编程完结对试验板上面的LED灯的操控,详细完结进程如下。
(1)新建工程。
新建一个工程目录“sopc_led”,在此目录下树立一个名为“sopc_led”的QuartusII工程,并新建一个顶层图,保存于工程中。
(2)SOPCBuilder定制NIOSII处理器。
用SOPCBuilder定制NiosII处理器及其外设。翻开“Tools”/“SOPCBuilder”,如图8.30所示。
图8.30翻开Tools–SOPCBuilder
指定体系姓名,本例中咱们输入niosii_c。单击“OK”按钮进入SOPC定制界面。
图8.31SOPCBuilder界面
为“Target”挑选“UnspecifiedBoard”,为“Clock(MHz)”挑选时钟频率为50.0,为“TargetDeviceFamily”挑选方针器材系列为Cyclone。
在SOPC定制界面的左面,咱们能够看到有许多功用模块,用户能够依照需求将这些模块增加到所规划的体系中。
首要,咱们需求一个CPU。挑选“NiosIIProcessor”/“AlteraCorporation”,弹出AlteraNiosII对话框,咱们挑选一个经济型的CPU核,即NiosII/e,如图8.32所示。
图8.32参加NIOSIICPU
单击“JTAGDebugModule”标签页,挑选榜首级调试支撑Level1:特点是占用逻辑资源少,编译速度快,不包含缓存,如图8.33所示。
图8.33设置CPU调试模型
单击“Finish”按钮完结NiosIICPU的装备作业。项目中会增加一个NiosII处理器,姓名为cpu_0,为了简洁起见,没有将它改名。改名的办法是:单击右键,挑选“Rename”,输入姓名后回车即可,如图8.34。
图8.34定制CPU完结图
(3)SOPCBuilder定制JTAG串口。
在左边器材池中双击“JTAGUARTInterface”,运用默许参数设置,如图8.35所示。
它是NiosII体系嵌入式处理器新增加的接口元件,经过内嵌在AlteraFPGA内部的联合测验举动组(JTAG)电路,在PC主机和FPGA之间进行串行字符流通讯。特点是在运转时在调试区输入信息能够与FPGA进行交互。
(4)SOPCBuilder定制计时器。
在左边器材池中双击“IntervalTimer”。定时器关于HAL体系库中的器材驱动十分有用,比方JTAGUART驱动运用定时器来完结10s的暂停。挑选“IntervalTimer”,在设置导游中周期挑选1msec,预设置中挑选Full-featured,如图8.36所示。
图8.35JTAGUART参数设置 图8.36计时器设置
(5)SOPCBuilder定制外部Flash。
在左边器材池中双击“CompactFlashInterface”。在“Presets”中选自界说Custom,地址宽度21bits,带宽16bits。由于Flash是通用设备,所以时序标签运用默许设置。如图8.37和8.38所示。
图8.37Flash带宽设参数置界面 图8.38Flash时序参数设置界面
(6)SOPCBuilder定制外部SDRAM。
一般的体系都需求用户指定一个内存空间,这个内存是指RAM,能够是片上的,也能够是片外的SDRAM或SRAM等。假如用户程序较大,超出了FPGA所能定制的最大片上RAM容量,则也能够将程序放在SDRAM中运转。在左边器材池中双击“SDRAMcontroller”。
在“Presets”中挑选“micronMT48LC4M32B2-7chip”,其他的参数设置能够运用体系的默许选项,如图8.39所示。
(7)SOPCBuilder定制外部RAM总线。
增加外部RAM总线(AvalonTri-StateBridge)。软件运用Avalon接口来衔接片上元件和Avalon主从端口。
图8.39SDRAM参数设置
在Nios开发板上,要完结Nios体系与FPGA片外存储器通讯,就有必要在Avalon总线和衔接外部存储器的总线之间增加一个桥,这个桥便是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)SOPCBuilderNIOSI%&&&&&%PU其他设置。
单击“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小结
本节解说了一个完好的软嵌入式规划流程。尽管此实例完结的功用比较简单,但关于初学者来说,是一个不错的入门实例。其间硬件规划部分(SoPCbuilder)包含开发板上一切设备,今后读者能够在此硬件平台上树立多个软件运转。