SOPC开发流程及开发平台简介LOGO主要内容详细介绍了SOPC开发的基本流程,然后通过实际操作,详细的讲述了一个简单的SOPC系统的设计过程,包括使用QuartusII、SOPCBuilder定制NiosII系统以及利用NiosIIIDE进行应用程序开发.力求以实例的途径让大家以最快的方式了解SOPC开发以及各软件的使用.LOGO目录2.1SOPC开发流程2.2简单SOPC实例开发任务及步骤2.3分析系统需求2.4使用QuartusII建立工程2.5使用SOPCBuilder创建NiosII系统2.6集成NiosII系统到QuartusII顶层模块2.7设置编译选项并编译硬件系统2.8下载硬件设计到目标FPGA2.9使用NiosIIIDE建立用户程序2.10调试/运行程序LOGO目录2.1SOPC开发流程2.2简单SOPC实例开发任务及步骤2.3分析系统需求2.4使用QuartusII建立工程2.5使用SOPCBuilder创建NiosII系统2.6集成NiosII系统到QuartusII顶层模块2.7设置编译选项并编译硬件系统2.8下载硬件设计到目标FPGA2.9使用NiosIIIDE建立用户程序2.10调试/运行程序LOGO2.1SOPC开发流程SOPC设计包括以NiosII软核处理器为核心的嵌入式系统的硬件配置、硬件设计、硬件仿真、IDE环境的软件设计、软件调试等。SOPC的开发流程通常包括2个方面:基于QuartusII、SOPCBuilder的硬件设计、基于NiosIIIDE的软件设计。对于比较简单的NiosII系统,一个人便可执行所有设计。对于比较复杂的系统,硬件和软件设计可以分开进行。SOPC的开发过程中要使用到QuartusII、SOPCBuilder以及NiosIIIDE,三者之间关系如下所示:LOGO2.1SOPC开发流程QuartusII:用于完成NiosII系统的分析综合、硬件优化、适配、配置文件编程下载以及硬件系统测试等;SOPCBuilder:它是NiosII软核处理器的开发包,用于实现NiosII系统配置、生成以及与NiosII系统相关的监控和软件调试平台的生成;NiosIIIDE:用于完成基于NiosII系统的软件开发和调试,并可借助其自带的Flash编程器完成对Flash以及EPCS的编程操作。QuartusII、SOPCBuilder以及NiosIIIDE三者之间关系SOPCBuilderGUIQuartusIIGNUToolsNiosIIIDELOGO2.1SOPC开发流程硬件开发硬件开发使用QuartusII和SOPCBuilder配置NiosII处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统SOPCBuilderGUI自定义命令IP模块处理器库外设模块库硬件开发NiosIIIDE软件开发QuartusIIGNUTools•用SOPCBuilder软件从NiosII处理器内核和NiosII开发套件提供的外设列表中选取合适的CPU、存储器以及各外围器件,并定制和配置它们的功能;•分配外设地址及中断号;•设定复位地址;•最后生成系统。•用户也可以添加用户自身定制指令逻辑到NiosII内核以加速CPU性能;•添加用户自己设计的IP模块。LOGO2.1SOPC开发流程硬件开发硬件开发使用QuartusII和SOPCBuilder配置NiosII处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统SOPCBuilderGUI自定义命令IP模块处理器库外设模块库硬件开发NiosIIIDE软件开发QuartusIIGNUTools•将生成的NiosII系统集成到之前建立的QuartusII工程;•QuartusII工程中可加入NiosII系统以外的逻辑。其可以是自身定制的硬件模块,也可以是从Altera或第3方IP供应商中得到的其它现成的知识产权设计模块。•QuartusII软件用来选取具体的AlteraFPGA器件型号,然后为NiosII系统上的各I/O口分配管脚。•HDL源文件•测试台•用户逻辑设计•其它的IP模块•SOPCBuilder的顶层.bdf文件管脚连接分配LOGO2.1SOPC开发流程硬件开发硬件开发使用QuartusII和SOPCBuilder配置NiosII处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统SOPCBuilderGUI自定义命令IP模块处理器库外设模块库硬件开发NiosIIIDE软件开发QuartusIIGNUTools•编译QuartusII工程,对HDL文件进行布局布线,从HDL源文件综合生成一个适合目标器件网表,生成FPGA配置文件(.sof);•HDL源文件•测试台•用户逻辑设计•其它的IP模块•SOPCBuilder的顶层.bdf文件管脚连接分配编译(分析与综合、布局布线、时序分析等)验证调试硬件配置文件JTAG串口、以太网片上调试(软件跟踪、硬件断点SignalTapII)AlteraGPGA•用下载电缆(如ByteBlasterII),将配置文件下载到目标板上。硬件校验完成后,可将新的硬件配置文件下载到目标板上的非易失存储器(如EPCS器件)。LOGO2.1SOPC开发流程软件开发软件开发使用NiosIIIDE,它是一个基于EclipseIDE架构的集成开发环境,它包括:•GNU开发工具(标准GCC编译器,连接器,汇编器和makefile工具等);•基于GDB的调试器,包括软件仿真和硬件调试;•提供用户一个硬件抽象层HAL;•提供嵌入式操作系统MicroC/OS-II和LwTCP/IP协议栈的支持;•提供帮助用户快速入门的软件模板;•提供Flash下载支持(FlashProgrmmer和QuartusIIProgrammer)LOGO2.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和SOPCBuilderLOGO2.1SOPC开发流程软件开发硬件开发使用QuartusII和SOPCBuilder配置NiosII处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统SOPCBuilderGUI自定义命令IP模块处理器库外设模块库硬件开发NiosIIIDE软件开发QuartusIIGNUTools•HDL源文件•测试台•用户逻辑设计•其它的IP模块•SOPCBuilder的顶层.bdf文件管脚连接分配编译(分析与综合、布局布线、时序分析等)验证调试硬件配置文件JTAG串口、以太网片上调试(软件跟踪、硬件断点SignalTapII)AlteraGPGA•C头文件•用户库函数•外设驱动•用户代码•库函数•操作系统(RTOS)•即使在没有软件开发的目标板的情况下,也可以经过编译、连接后通过NiosII指令仿真器(ISS)运行和调试代码。编译、连接、调试可执行代码•一旦有一个目标板,用户救可以使用下载电缆下载软件到目标板进行调试/运行。LOGO2.1SOPC开发流程SOPC基本开发流程简介从“硬件开发”与“软件开发”两小节中,在我们的脑海里一定已经形成了一个大致的开发流程,下面我们仔细的对其进行梳理和理解。见SOPC开发流程简图。LOGOSOPC开发流程简图分析系统需求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章)LOGOSOPC开发流程简图分析系统需求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编程工具烧写配置文件和软件代码LOGOSOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C++应用程序代码和定制的库自定义的功能模块建立QuartusII工程,建立顶层图*.bdf集成SOPC生成的系统到QuartusII工程使用NiosIIIDE开发软件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到NiosII系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性打开SOPCBuilder定义和生成系统•为系统功能原理图选择芯片载体并为各个输入输出信号分配芯片的管脚;•设置编译选项,从而让编译器按照用户设定来进行编译;•编译系统生成硬件系统的配置文件