您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > SOPC开发流程和开发实例
第1节SOPC开发流程和开发工具SOPC设计包括硬件和软件两部分。硬件设计:主要基于QuartusII和SOPCBuilder。软件设计:基于NiosIIIDE。流程见图解析:分析系统需求:在进行SOPC开发之前,首先必须确定系统的需求,如应用系统需求的计算性能、需要的带宽和吞吐量、需求的接口类型以及是否需求多线程的软件等。建立QuartusII工程:每个开发过程开始时都应建立一个工程,QuartusII是以工程的方式对设计过程进行管理。在工程中建立顶层模块文件.bdf相当于传统电路设计中的电路板(PCB)。定义和生成系统:在SOPCBuilder中添加需要的功能模块(NiosII及其标准外设模块),完成后生成一个系统模块。定制指令&定制外设逻辑:如果需要,用户可以定制指令和外设逻辑。(可参考第8章)自定义的功能模块:当设计中现有模块不能满足设计要求时,可设计自己的功能模块。并在顶层模块中使用;集成SOPC生成的系统到QuartusII工程:在顶层模块中,分别将SOPCBuilder生成的系统模块、LPM功能模块以及用户自定义功能模块添加到顶层模块中;连接各功能模块:然后将各个功能模块用连线连起来组成系统功能原理图。Altera的LPM模块:在QuartusII软件中包含了大量的Altera公司提供的LPM功能模块,相当与传统设计中除处理器以外的逻辑芯片(如74系列);选择FPGA型号并进行管脚分配:为系统功能原理图选择芯片载体并为各个输入输出信号分配芯片的管脚;进行编译选项设置:设置编译选项,从而让编译器按照用户设定来进行编译;编译硬件系统生成配置文件sof:编译系统生成硬件系统的配置文件*.sof和*.pof。编译系统是一个非常复杂的过程,包括优化逻辑的组合、综合逻辑、适配FPGA、布线以及时序分析等步骤。下载配置文件到FPGA器件:将配置文件.sof下载到FPGA,将可执行文件.elf下载到RAM。设置软件运行硬件环境属性:设置好软件运行的硬件环境属性后,便可进行编译、链接和调试、运行程序。编译软件:对用户程序进行编译,生成可执行文件*.elf。ISS运行/调试:接下来在IDE的指令集仿真器(ISS)上仿真软件和运行/调试软件。在目标板上运行/调试软件:在目标板上反复调试软件。使用IDE编程工具烧写配置文件和软件代码:最后利用IDE的编程工具将配置文件烧写到FPGA的配置芯片或Flash,将可执行文件*.elf编程到Flash中。(1)硬件开发用SOPCBuilder软件从NiosII处理器内核和NiosII开发套件提供的外设列表中选取合适的CPU、存储器以及各外围器件,并定制和配置它们的功能;分配外设地址及中断号;设定复位地址;用户也可以添加用户自身定制指令逻辑到NiosII内核以加速CPU性能;添加用户自己设计的IP模块。编译QuartusII工程,对HDL文件进行布局布线,从HDL源文件综合生成一个适合目标器件网表,生成FPGA配置文件(.sof);用下载电缆(如ByteBlasterII),将配置文件下载到目标板上。硬件校验完成后,可将新的硬件配置文件下载到目标板上的非易失存储器(如EPCS器件)。2)软件开发软件开发使用NiosIIIDE,它是一个基于EclipseIDE架构的集成开发环境,它包括:GNU开发工具(标准GCC编译器,连接器,汇编器和makefile工具等);基于GDB的调试器,包括软件仿真和硬件调试;提供用户一个硬件抽象层HAL;提供嵌入式操作系统MicroC/OS-II和LwTCP/IP协议栈的支持;提供帮助用户快速入门的软件模板;提供Flash下载支持(FlashProgrmmer和QuartusIIProgrammer)使用SOPCBuilder生成系统后,可以直接使用NiosIIIDE开始设计C/C++应用程序代码。Altera提供外设驱动程序和硬件抽象层(HAL),使用户能够快速编写与低级硬件细节无关的NiosII程序;除了应用代码,用户还可以在NiosIIIDE工程中设计和重新使用定制库。第2节SOPC硬件开发实例SOPCAlteraAVALONSOPC硬件开发实例第一步是要进行需求分析,根据这个要求来建立硬件系统。电子钟的设计要求:在液晶屏上显示日期、时间;可以设置日期、时间;根据系统要求实现的功能,电子钟的设计要用到的外围器件有:LCD:电子钟显示屏幕;按键:电子钟设置功能键;Flash存储器:存储软、硬件程序;SRAM存储器:程序运行时将其导入SRAM。根据所要用到的外设、要实现的功能以及开发板的配置,在SOPCBuilder中建立系统要添加的模块包括:NiosIICPU、定时器、按键PIO、LCD控制器、AVALON三态桥、外部RAM接口、外部Flash接口。使用的开发环境如下:WinXP操作系统NiosII6.0嵌入式处理器QuartusII6.0基于CycloneII的SOPC开发板2.2.1创建工程进行完需求分析之后,进行硬件系统的创建。首先必须建立一个QuartusII的工程,步骤如下:QuartusII6.1(32bit),启动QuartusII软件;QuartusII6.1Altera程序1.开始NewProjectWizard,出现Introduction页面,该页面介绍所要完成的具体任务,点击next。2.选择File菜单3.进行项目名称的设定、工作目录的选择。指定工程存放的目录,工程名和顶层实体名,工程名和顶层实体名要求相同,工程目录可以随意设置,但必须是英文的目录,工程名和顶层实体名也要求是英文名字,我们的工程名和顶层实体名为clock,选择Next。4.可以为工程添加先期已经输入的设计文件,指定用户自定义的元件库的路径,这里我们没有事先输入好的文件,也没有自定义的元件库,点击Next进入下一步。5.用户指定目标器件,根据开发板的所使用的器件来选择,实际开发中,通过查看核心板的参考手册来获取所使用的器件具体型号,可以使用窗口右边的Filters来加快器件的选择,选择完毕点击Next。6.指定在QuartusII之外的用于,设计输入、综合、仿真、时序分析的第三方EDA工具,QuartusII对第三方工具的支持比较完善。这里我们不做选择,直接点击Next。Settings所见新工程的信息,确认所创建工程的主要信息,点击Finish完成工程的建立,在开发的过程中,还可以通过菜单assignment来对这些配置进行修改。点击Finish按钮,QuartusII自动会打开这个工程,可以看到顶层实体名出现在工程导航窗口中。第3节创建NiosII系统模块创建完成工程之后,需要创建顶层实体。创建完顶层设计文件之后,使用SOPCBuilder创建NIOSII嵌入式处理器,添加、配置系统的外设IP,组成NiosII系统模块。NiosII系统模块设计完成之后要加入到该顶层实体中,然后进行其他片上逻辑的开发。2.3.1创建顶层实体New;(1)新建的工程窗口中,选择File(2)在DeviceDesignFile页中,选择BlockDiagram/SchematicFile,即原理图文件,也可以选择硬件描述语言的文件形式。单击OK。(3)出现一个模块编辑窗口。SaveAs,出现Save(4)选择FileAs对话框,显示的目录为之前设置的工程目录,文件名为之前设置的顶层实体名(由于这是工程的第一个文件,系统会默认为顶层设计实体的名字)。确定AddtoCurrentProject选项被选中,点击Save文件被保存并被加入到工程中。2.3.2创建NiosII系统模块创建NIOSII系统模块需要使用SOPCBuilder,它是QuartusII中的一个工具,使用SOPCBuilder可以创建一个NiosII系统模块,或者创建多主设备SOPC模块。一个完整NiosII的系统模块包括NiosII处理器和相关的系统外设。所以创建系统模块的流程是先创建一个系统,然后添加NiosIICPU和外设IP,然后进行相应的设置,最后生成实例,然后将其加入到工程的顶层实体中去。一、创建系统SOPCBuilder,出现图2-10的CreateNewSystem对话框。键入系统的名字,选择硬件描述语言Verilog或者是VHDL。启动SOPCBuilder,选择Tools二、设置系统主频和指定目标FPGA在Target栏中的Board部分指定我们这本书使用的核心开发板——CycloneII(EP2C35)。也可以在Board部分选择Unspecified,然后在DeviceFamily选择CycloneII。用户需要设置系统的时钟频率,该频率用于计算硬件和软件开发中的定时,比如时钟分频或波特率。这里我们设成85MHz,还可以选择是否选用流水线。三、加入NiosIICPU和IP模块首先加入NiosII软核,NiosII是软核CPU,共有三种类型的CPU可供选择:NiosII/e(经济型)、NiosII/s(标准型)和NiosII/f(快速型)。用户可以根据实际的情况进行选择。NiosII是一个用户可以自行进行定制的CPU,用户可以增加新的外设、新的指令等。添加NiosIICPU的步骤如下:1.AvalonComponents下面选择NiosIIProcessor;2.点击Add,出现NiosIICPU的配置向导,共有三种类型的CPU可供选择;根据需要选择相应的一种NiosII核,我们选择标准型的NiosII核,HardwareMultiply选择none,不选择HardwareDivide点击Next,进入Caches&TightlyCoupledMemories设置窗口;设置NiosII的Cache和与CPU直接相连的存储器端口(不通过Avalon总线),选择InstructionCache为4Kbytes,不选中Includetightlycoupledinstructionmasterport(s),点击Next进入AdvancedFeatures设置页面。AdvancedFeatures的设置页面是QuartusII6.1版本才有的设置,这里不选择Includecpu_resetrequestandcpu_resettakensignals点击Next进入JTAGDebugModule设置。共有4个调试级别可供选择,这里选择Level1即可,该级别支持软件的断点调试。JTAG调试模块要占用较多的逻辑资源,如果整个系统调试完毕了可以选用NoDebugger以减少系统占用资源点击Next进入自定义指令的设置。因为本例不用到任何的自定义指令,这里不作任何的设置,点击Finish完成CPU模块的添加。除了NiosIICPU,电子钟设计需要添加的IP模块包括:TimerButtonPIOLCD控制器ExternalRAMBusExternalFlashBusExternalRAMinterfaceExternalFlashInterface1.添加定时器定时器和NiosIICPU一样,用户可以对其进行定制。添加定时器的步骤如下:(1)在Avaloncomponents下的other库中选择IntervalTimer并单击Add,Avalon_Timer-timer_0的向导窗口出现;(2)配置定时器,点击Finish,完成定时器的添加。(3)可以对Timer进行重命名,我们这里取缺省的名字。2.添加ButtonPIO(1)在Avaloncomponents下的other下选择PIO,单击Add,出现AvalonPIO-PIO_0的向导;(2)在BasicSettings页中,设置width=4bits,direction为InputPortsOnly;(3)在InputOptions页中,在EdgeCaptureRegister下选中SynchronouslyCapture,然后选择EitherEdge;(4)在Interrupt下选中GenerateIRQ,然后选择Edge;(
本文标题:SOPC开发流程和开发实例
链接地址:https://www.777doc.com/doc-5022267 .html