第2章SOPC开发流程及QuartusII的使用2.1SOPC开发流程和开发工具SOPC设计包括硬件和软件两部分。硬件设计:主要基于QuartusII和SOPCBuilder。软件设计:基于NiosIIIDE。SOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C++应用程序代码和定制的库自定义的功能模块建立QuartusII工程,建立顶层图*.bdf打开SOPCBuilder定义和生成系统集成SOPC生成的系统到QuartusII工程使用NiosIIIDE开发软件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到NiosII系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性使用IDE编程工具烧写配置文件和软件代码•在进行SOPC开发之前,首先必须确定系统的需求,如应用系统需求的计算性能、需要的带宽和吞吐量、需求的接口类型以及是否需求多线程的软件等。•每个开发过程开始时都应建立一个工程,QuartusII是以工程的方式对设计过程进行管理。在工程中建立顶层模块文件.bdf相当于传统电路设计中的电路板(PCB)。•在SOPCBuilder中添加需要的功能模块(NiosII及其标准外设模块),完成后生成一个系统模块。•如果需要,用户可以定制指令和外设逻辑。(可参考第8章)SOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C++应用程序代码和定制的库自定义的功能模块建立QuartusII工程,建立顶层图*.bdf集成SOPC生成的系统到QuartusII工程使用NiosIIIDE开发软件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到NiosII系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性•在QuartusII软件中包含了大量的Altera公司提供的LPM功能模块,相当与传统设计中除处理器以外的逻辑芯片(如74系列);•当设计中现有模块不能满足设计要求时,可设计自己的功能模块。并在顶层模块中使用;打开SOPCBuilder定义和生成系统•在顶层模块中,分别将SOPCBuilder生成的系统模块、LPM功能模块以及用户自定义功能模块添加到顶层模块中;•然后将各个功能模块用连线连起来组成系统功能原理图。这个两过程类似传统电路设计中,将所有要使用的芯片焊接到电路板上,然后通过PCB上的连线将各个芯片连接起来,组成电路系统。使用IDE编程工具烧写配置文件和软件代码SOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C++应用程序代码和定制的库自定义的功能模块建立QuartusII工程,建立顶层图*.bdf集成SOPC生成的系统到QuartusII工程使用NiosIIIDE开发软件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到NiosII系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性打开SOPCBuilder定义和生成系统•为系统功能原理图选择芯片载体并为各个输入输出信号分配芯片的管脚;•设置编译选项,从而让编译器按照用户设定来进行编译;•编译系统生成硬件系统的配置文件*.sof和*.pof。编译系统是一个非常复杂的过程,包括优化逻辑的组合、综合逻辑、适配FPGA、布线以及时序分析等步骤。使用IDE编程工具烧写配置文件和软件代码SOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C++应用程序代码和定制的库自定义的功能模块建立QuartusII工程,建立顶层图*.bdf集成SOPC生成的系统到QuartusII工程使用NiosIIIDE开发软件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到NiosII系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性打开SOPCBuilder定义和生成系统软件开发也可以在SOPCBuilder生成系统模块后立即进行!与传统软件开发类似,唯一不同在于系统是自己定制的,所受局限小!使用IDE编程工具烧写配置文件和软件代码SOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C++应用程序代码和定制的库自定义的功能模块建立QuartusII工程,建立顶层图*.bdf集成SOPC生成的系统到QuartusII工程使用NiosIIIDE开发软件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到NiosII系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性打开SOPCBuilder定义和生成系统•设置好软件运行的硬件环境属性后,便可进行编译、链接和调试、运行程序。•对用户程序进行编译,生成可执行文件*.elf。•接下来在IDE的指令集仿真器(ISS)上仿真软件和运行/调试软件。•将配置文件.sof下载到FPGA,将可执行文件.elf下载到RAM。•在目标板上反复调试软件。•直到硬件和软件设计都达到设计要求。•最后利用IDE的编程工具将配置文件烧写到FPGA的配置芯片或Flash,将可执行文件*.elf编程到Flash中。使用IDE编程工具烧写配置文件和软件代码2.1SOPC开发流程和开发工具硬件开发硬件开发使用QuartusII和SOPCBuilder配置NiosII处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统SOPCBuilderGUI自定义命令IP模块处理器库外设模块库硬件开发NiosIIIDE软件开发QuartusIIGNUTools•用SOPCBuilder软件从NiosII处理器内核和NiosII开发套件提供的外设列表中选取合适的CPU、存储器以及各外围器件,并定制和配置它们的功能;•分配外设地址及中断号;•设定复位地址;•最后生成系统。•用户也可以添加用户自身定制指令逻辑到NiosII内核以加速CPU性能;•添加用户自己设计的IP模块。2.1SOPC开发流程和开发工具硬件开发硬件开发使用QuartusII和SOPCBuilder配置NiosII处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统SOPCBuilderGUI自定义命令IP模块处理器库外设模块库硬件开发NiosIIIDE软件开发QuartusIIGNUTools•编译QuartusII工程,对HDL文件进行布局布线,从HDL源文件综合生成一个适合目标器件网表,生成FPGA配置文件(.sof);•HDL源文件•测试台•用户逻辑设计•其它的IP模块•SOPCBuilder的顶层.bdf文件管脚连接分配编译(分析与综合、布局布线、时序分析等)验证调试硬件配置文件JTAG串口、以太网片上调试(软件跟踪、硬件断点SignalTapII)AlteraGPGA•用下载电缆(如ByteBlasterII),将配置文件下载到目标板上。硬件校验完成后,可将新的硬件配置文件下载到目标板上的非易失存储器(如EPCS器件)。2.1SOPC开发流程和开发工具软件开发软件开发使用NiosIIIDE,它是一个基于EclipseIDE架构的集成开发环境,它包括:GNU开发工具(标准GCC编译器,连接器,汇编器和makefile工具等);基于GDB的调试器,包括软件仿真和硬件调试;提供用户一个硬件抽象层HAL;提供嵌入式操作系统MicroC/OS-II和LwTCP/IP协议栈的支持;提供帮助用户快速入门的软件模板;提供Flash下载支持(FlashProgrmmer和QuartusIIProgrammer)2.1SOPC开发流程和开发工具软件开发配置NiosII处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统SOPCBuilderGUI自定义命令IP模块处理器库外设模块库硬件开发NiosIIIDE软件开发QuartusIIGNUTools•使用SOPCBuilder生成系统后,可以直接使用NiosIIIDE开始设计C/C++应用程序代码。Altera提供外设驱动程序和硬件抽象层(HAL),使用户能够快速编写与低级硬件细节无关的NiosII程序;•HDL源文件•测试台•用户逻辑设计•其它的IP模块•SOPCBuilder的顶层.bdf文件管脚连接分配编译(分析与综合、布局布线、时序分析等)验证调试硬件配置文件JTAG串口、以太网片上调试(软件跟踪、硬件断点SignalTapII)AlteraGPGA•C头文件•用户库函数•外设驱动•除了应用代码,用户还可以在NiosIIIDE工程中设计和重新使用定制库。•用户代码•库函数•操作系统(RTOS)硬件开发使用QuartusII和SOPCBuilder2.2SOPC硬件开发实例第一步是要进行需求分析,根据这个要求来建立硬件系统。电子钟的设计要求:在液晶屏上显示日期、时间;可以设置日期、时间;根据系统要求实现的功能,电子钟的设计要用到的外围器件有:LCD:电子钟显示屏幕;按键:电子钟设置功能键;Flash存储器:存储软、硬件程序;SRAM存储器:程序运行时将其导入SRAM。根据所要用到的外设、要实现的功能以及开发板的配置,在SOPCBuilder中建立系统要添加的模块包括:NiosIICPU、定时器、按键PIO、LCD控制器、AVALON三态桥、外部RAM接口、外部Flash接口。2.2SOPC硬件开发实例使用的开发环境如下:WinXP操作系统NiosII嵌入式处理器QuartusII6.0基于CycloneII的SOPC开发板2.2.1创建工程进行完需求分析之后,进行硬件系统的创建。首先必须建立一个QuartusII的工程,步骤如下:1.开始程序AlteraQuartusII6.1QuartusII6.1(32bit),启动QuartusII软件;2.选择File菜单NewProjectWizard,出现Introduction页面,该页面介绍所要完成的具体任务,点击next。2.2.1创建工程2.2.1创建工程2.2.1创建工程3.进行项目名称的设定、工作目录的选择。指定工程存放的目录,工程名和顶层实体名,工程名和顶层实体名要求相同,工程目录可以随意设置,但必须是英文的目录,工程名和顶层实体名也要求是英文名字,我们的工程名和顶层实体名为clock,选择Next。2.2.1创建工程2.2.1创建工程4.可以为工程添加先期已经输入的设计文件,指定用户自定义的元件库的路径,这里我们没有事先输入好的文件,也没有自定义的元件库,点击Next进入下一步。2.2.1创建工程2.2.1创建工程5.用户指定目标器件,根据开发板的所使用的器件来选择,实际开发中,通过查看核心板的参考手册来获取所使用的器件具体型