1、 SOPC开发流程及开发平台简介1.LOGO主要内容 详细介绍了SOPC开发的基本流程,然后通过实际操作,详细的讲述了一个简单的SOPC系统的设计过程,包括使用Quartus II、SOPC Builder定制Nios II系统以及利用Nios II IDE进行应用程序开发.力求以实例的途径让大家以最快的方式了解SOPC开发以及各软件的使用.2.LOGO 目录v2.1 SOPC开发流程v2.2 简单SOPC实例开发任务及步骤v2.3 分析系统需求v2.4 使用Quartus II建立工程v2.5 使用SOPC Builder创建Nios II系统v2.6 集成Nios II系统到Quartus
2、 II顶层模块v2.7 设置编译选项并编译硬件系统v2.8 下载硬件设计到目标FPGAv2.9 使用Nios II IDE建立用户程序v2.10 调试/运行程序3.LOGO 目录v2.1 SOPC开发流程v2.2 简单SOPC实例开发任务及步骤v2.3 分析系统需求v2.4 使用Quartus II建立工程v2.5 使用SOPC Builder创建Nios II系统v2.6 集成Nios II系统到Quartus II顶层模块v2.7 设置编译选项并编译硬件系统v2.8 下载硬件设计到目标FPGAv2.9 使用Nios II IDE建立用户程序v2.10 调试/运行程序4.LOGO2.1 SO
3、PC开发流程vSOPC设计包括以Nios II软核处理器为核心的嵌入式系统的硬件配置、硬件设计、硬件仿真、IDE环境的软件设计、软件调试等。vSOPC的开发流程通常包括2个方面:基于Quartus II、SOPC Builder的硬件设计、基于NiosII IDE的软件设计。对于比较简单的NiosII系统,一个人便可执行所有设计。对于比较复杂的系统,硬件和软件设计可以分开进行。vSOPC的开发过程中要使用到Quartus II、SOPC Builder以及Nios II IDE,三者之间关系如下所示:5.LOGO2.1 SOPC开发流程QuartusII:用于完成Nios II系统的分析综合、
4、硬件优化、适配、配置文件编程下载以及硬件系统测试等;SOPC Builder:它是Nios II软核处理器的开发包,用于实现Nios II系统配置、生成以及与Nios II系统相关的监控和软件调试平台的生成;Nios II IDE:用于完成基于Nios II系统的软件开发和调试,并可借助其自带的Flash编程器完成对Flash以及EPCS的编程操作。Quartus II、SOPC Builder以及Nios II IDE三者之间关系SOPC Builder GUIQuartus II GNU ToolsNios II IDE6.LOGO2.1 SOPC开发流程v硬件开发硬件开发使用硬件开发使用
5、Quartus IIQuartus II和和SOPC BuilderSOPC Builder配置Nios II处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统生成系统SOPC Builder GUI自定义命令IP 模块处理器库外设模块库硬件开发Nios II IDE软件开发Quartus IIGNU Tools 用 SOPC Builder软 件 从NiosII处理器内核和NiosII开发套件提供的外设列表中选取合适的CPU、存储器以及各外围器件,并定制和配置它们的功能;分配外设地址及中断号;设定复位地址;最后生成系统。用户也可以添加用户自身定制指令逻辑到NiosII内核以加
6、速CPU性能;添加用户自己设计的IP模块。7.LOGO2.1 SOPC开发流程v硬件开发硬件开发使用硬件开发使用Quartus IIQuartus II和和SOPC BuilderSOPC Builder配置Nios II处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统生成系统SOPC Builder GUI自定义命令IP 模块处理器库外设模块库硬件开发Nios II IDE软件开发Quartus IIGNU Tools 将生成的Nios II系统集成到之前建立的Quartus II工程;Quartus II工程中可加入Nios II系统以外的逻辑。其可以是自身定制的硬件模块
7、,也可以是从Altera或第3方IP供应商中得到的其它现成的知识产权设计模块。Quartus II软件用来选取具体的Altera FPGA器件型号,然后为Nios II系统上的各I/O口分配管脚。HDL 源文件 测试台 用户逻辑设计 其它的IP模块 SOPC Builder的 顶层.bdf文件管脚连接分配8.LOGO2.1 SOPC开发流程v硬件开发硬件开发使用硬件开发使用Quartus IIQuartus II和和SOPC BuilderSOPC Builder配置Nios II处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统生成系统SOPC Builder GUI自定义命
8、令IP 模块处理器库外设模块库硬件开发Nios II IDE软件开发Quartus IIGNU Tools 编译Quartus II工程,对HDL文件进行布局布线,从HDL源文件综合生成一个适合 目 标 器 件 网 表,生 成FPGA配置文件(.sof);HDL 源文件 测试台 用户逻辑设计 其它的IP模块 SOPC Builder的 顶层.bdf文件管脚连接分配编译(分析与综合、布局布线、时序分析等)验证调试硬件配置文件JTAG串口、以太网片上调试(软件跟踪、硬件断点 SignalTap II)Altera GPGAAltera GPGA 用下载电缆(如 ByteBlaster II),将配
9、置文件下载到目标板上。硬件校验完成后,可将新的硬件配置文件下载到目标板上的非易失存储器(如EPCS器件)。9.LOGO2.1 SOPC开发流程v软件开发软件开发使用Nios II IDE,它是一个基于Eclipse IDE架构的集成开发环境,它包括:GNU开发工具(标准GCC编译器,连接器,汇编器和makefile工具等);基于GDB的调试器,包括软件仿真和硬件调试;提供用户一个硬件抽象层HAL;提供嵌入式操作系统MicroC/OS-II和LwTCP/IP协议栈的支持;提供帮助用户快速入门的软件模板;提供Flash下载支持(Flash Progrmmer 和QuartusII Programm
10、er)10.LOGO2.1 SOPC开发流程v软件开发配置Nios II处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统生成系统SOPC Builder GUI自定义命令IP 模块处理器库外设模块库硬件开发Nios II IDE软件开发Quartus IIGNU Tools 使用SOPC Builder生成系统后,可以直接使用Nios II IDE开始设计C/C+应用程序代码。Altera提供外设驱动程序和硬件抽象层(HAL),使用户能够快速编写与低级硬件细节无关的Nios II程序;HDL 源文件 测试台 用户逻辑设计 其它的IP模块 SOPC Builder的 顶层.bd
11、f文件管脚连接分配编译(分析与综合、布局布线、时序分析等)验证调试硬件配置文件JTAG串口、以太网片上调试(软件跟踪、硬件断点 SignalTap II)Altera GPGAAltera GPGA C头文件 用户库函数 外设驱动 除了应用代码,用户还可以在Nios II IDE 工程中设计和重新使用定制库。用户代码 库函数 操作系统(RTOS)硬件开发使用Quartus II和SOPC Builder11.LOGO2.1 SOPC开发流程v软件开发硬件开发使用Quartus II和SOPC Builder配置Nios II处理器选择并配置外设.IP连接各外设模块分配外设地址和中断生成系统生成
12、系统SOPC Builder GUI自定义命令IP 模块处理器库外设模块库硬件开发Nios II IDE软件开发Quartus IIGNU Tools HDL 源文件 测试台 用户逻辑设计 其它的IP模块 SOPC Builder的 顶层.bdf文件管脚连接分配编译(分析与综合、布局布线、时序分析等)验证调试硬件配置文件JTAG串口、以太网片上调试(软件跟踪、硬件断点 SignalTap II)Altera GPGAAltera GPGA C头文件 用户库函数 外设驱动 用户代码 库函数 操作系统(RTOS)即使在没有软件开发的目标板的情况下,也可以经过编译、连接后通过Nios II指令仿真器
13、(ISS)运行和调试代码。编译、连接、调试可执行代码 一旦有一个目标板,用户救可以使用下载电缆下载软件到目标板进行调试/运行。12.LOGO2.1 SOPC开发流程vSOPC基本开发流程简介从“硬件开发”与“软件开发”两小节中,在我们的脑海里一定已经形成了一个大致的开发流程,下面我们仔细的对其进行梳理和理解。见SOPC开发流程简图。13.LOGOSOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C+应用程序代码和定制的库自定义的功能模块建立Quartus II工程,建立顶层图*.bdf打开SOPC Builder定义和生成
14、系统集成SOPC生成的系统到Quartus II工程使用Nios IIIDE开发软件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到Nios II系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性使用IDE编程工具烧写配置文件和软件代码在进行SOPC开发之前,首先必须确定系统的需求,如应用系统需求的计算性能、需要的带宽和吞吐量、需求的接口类型以及是否需求多线程的软件等。每个开发过程开始时都应建立一
15、个工程,Quartus II是以工程的方式对设计过程进行管理。在工程中建立顶层模块文件.bdf相当于传统电路设计中的电路板(PCB)。在SOPC Builder中添加需要的功能模块(Nios II及其标准外设模块),完成后生成一个系统模块。如果需要,用户可以定制指令和外设逻辑。(可参考第8章)14.LOGOSOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C+应用程序代码和定制的库自定义的功能模块建立Quartus II工程,建立顶层图*.bdf集成SOPC生成的系统到Quartus II工程使用Nios IIIDE开发软
16、件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到Nios II系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性在Quartus II软件中包含了大量的Altera公司提供的LPM功能模块,相当与传统设计中除处理器以外的逻辑芯片(如74系列);当设计中现有模块不能满足设计要求时,可设计自己的功能模块。并在顶层模块中使用;打开SOPC Builder定义和生成系统在顶层模块中,分别将SOPC Bu
17、ilder生成的系统模块、LPM功能模块以及用户自定义功能模块添加到顶层模块中;然后将各个功能模块用连线连起来组成系统功能原理图。这个两过程类似传统电路设计中,将所有要使用的芯片焊接到电路板上,然后通过PCB上的连线将各个芯片连接起来,组成电路系统。使用IDE编程工具烧写配置文件和软件代码15.LOGOSOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C+应用程序代码和定制的库自定义的功能模块建立Quartus II工程,建立顶层图*.bdf集成SOPC生成的系统到Quartus II工程使用Nios IIIDE开发软件A
18、ltera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到Nios II系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性打开SOPC Builder定义和生成系统为系统功能原理图选择芯片载体并为各个输入输出信号分配芯片的管脚;设置编译选项,从而让编译器按照用户设定来进行编译;编译系统生成硬件系统的配置文件*.sof和*.pof。编译系统是一个非常复杂的过程,包括优化逻辑的组合、综合逻辑、适配FPGA、布线以
19、及时序分析等步骤。使用IDE编程工具烧写配置文件和软件代码16.LOGOSOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C+应用程序代码和定制的库自定义的功能模块建立Quartus II工程,建立顶层图*.bdf集成SOPC生成的系统到Quartus II工程使用Nios IIIDE开发软件Altera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到Nios II系统下载配置文件到FPGA器件在目标板上运行/调试软
20、件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性打开SOPC Builder定义和生成系统软件开发也可以在SOPC Builder 生成系统模块后立即进行!与传统软件开发类似,唯一不同在于系统是自己定制的,所受局限小!使用IDE编程工具烧写配置文件和软件代码17.LOGOSOPC开发流程简图分析系统需求NiosII内核&标准外设定制指令&定制外设逻辑硬件抽象层(HAL)&外设驱动程序用户C/C+应用程序代码和定制的库自定义的功能模块建立Quartus II工程,建立顶层图*.bdf集成SOPC生成的系统到Quartus II工程使用Nios IIIDE开发软件Al
21、tera的LPM模块连接各功能模块选择FPGA型号并进行管脚分配进行编译选项设置编译硬件系统生成配置文件sof编译软件生成可执行文件elf在目标板上下载可执行软件到Nios II系统下载配置文件到FPGA器件在目标板上运行/调试软件调试好的硬件和软件在IDE中使用ISS运行/调试软件设置软件运行硬件环境属性打开SOPC Builder定义和生成系统 设置好软件运行的硬件环境属性后,便可进行编译、链接和调试、运行程序。对用户程序进行编译,生成可执行文件*.elf。接下来在IDE的指令集仿真器(ISS)上仿真软件和运行/调试软件。将配置文件.sof下载到FPGA,将可执行文件.elf下载到RAM。
22、在目标板上反复调试软件。直到硬件和软件设计都达到设计要求。最后利用IDE的编程工具将配置文件烧写到FPGA的 配 置 芯 片 或Flash,将可执行文件*.elf编程到Flash中。使用IDE编程工具烧写配置文件和软件代码18.LOGO 目录v2.1 SOPC开发流程v2.2 简单SOPC实例开发任务及步骤v2.3 分析系统需求v2.4 使用Quartus II建立工程v2.5 使用SOPC Builder创建Nios II系统v2.6 集成Nios II系统到Quartus II顶层模块v2.7 设置编译选项并编译硬件系统v2.8 下载硬件设计到目标FPGAv2.9 使用Nios II ID
23、E建立用户程序v2.10 调试/运行程序19.LOGO2.2 简单SOPC实例开发任务及步骤在这一节中,我们通过实际操作的视频教程来体验一个简单的SOPC开发的整个过程。任务步骤建立一个基于Nios II处理器的系统来控制一个LED灯闪烁。1.分析系统需求。2.启动QuartusII软件和新建实例设计工程。3.启动新的SOPC Builder系统。4.在SOPC Builder中定义并生成系统。5.集成SOPC Builder系统到QuartusII工程。6.选择芯片型号并进行管脚分配。7.设置编译选项并编译硬件系统。8.下载硬件设计到目标FPGA。9.使用NiosII IDE开发用户程序。1
24、0.调试用户程序。11.运行程序。20.LOGO目录v2.1 SOPC开发流程v2.2 简单SOPC实例开发任务及步骤v2.3 分析系统需求v2.4 使用Quartus II建立工程v2.5 使用SOPC Builder创建Nios II系统v2.6 集成Nios II系统到Quartus II顶层模块v2.7 设置编译选项并编译硬件系统v2.8 下载硬件设计到目标FPGAv2.9 使用Nios II IDE建立用户程序v2.10 调试/运行程序21.LOGO2.3 分析系统要求每一个SOPC系统开发之前,都应该仔细分析系统需求,例如:对所设计的系统运行性能有什么要求?系统要处理的带宽有多大?
25、应用需求哪种类型的接口?应用需求多线程的软件吗??22.LOGO2.3 分析系统要求每一个SOPC系统开发之前,都应该仔细分析系统需求,基于这些问题,用户可确定具体的系统要求,例如:1.使用哪种NiosII处理器内核:比较小的还是比较快的?2.设计要求什么外设及其数量?3.功耗要求?4.使用哪种实时操作系统(RTOS)?5.硬件加速逻辑在哪些方面可大大提高系统性能?例如:增加一个DMA外设能释放CPU在进行数据拷贝时所占用的资源?定制的指令能取代DSP算法吗?对所设计的系统运行性能有什么要求?系统要处理的带宽有多大?应用需求哪种类型的接口?应用需求多线程的软件吗??23.LOGO2.3 分析系
26、统要求v实例开发任务是:展示可用于控制LED闪烁的简单NiosII处理器系统。利用最通用和有效的方法来建立实际的定制NiosII系统。整个系统仅使用片内资源,且不依赖于目标板。v分析任务可以知道FPGA内硬件系统组成应包含:带有2kBytes指令高速缓存的NiosII/s处理器核;2kBytes片内ROM存储器(Onchip_ROM)用于存储程序代码以及程序运行空间;1kBytes片内RAM存储器(Onchip_RAM)用于变量存储(R/W数据)、Heap、stack;7位输出I/O(PIO)管脚来控制LED;24.LOGO2.3 分析系统要求v控制LED闪烁的系统框图 其他逻辑与Nios I
27、I系统一样可存在与FPGA中。并且可与其他的片内逻辑相互作用,这取决于整个系统的需要。25.LOGO2.3 分析系统要求v计算机要求Altera Quartus II 9.0或更高的软件版本Nios II9.0或更高版本无论是否拥有一块开发板,都可以在按照以上所述来建立实例设计。如果没有目标板,仍然可以使用以上内容,只是不能目睹实例设计在硬件上运行。取而代之,用户将可以在Nios II指令集仿真器(ISS)上仿真软件运行。如果读者拥有开发板以及ByteBlaster II下载电缆,则目睹实例设计在硬件上运行,LED灯的闪烁。26.LOGOv2.1 SOPC开发流程v2.2 简单SOPC实例开发任务及步骤v2.3 分析系统需求v2.4 使用Quartus II建立工程v2.5 使用SOPC Builder创建Nios II系统v2.6 集成Nios II系统到Quartus II顶层模块v2.7 设置编译选项并编译硬件系统v2.8 下载硬件设计到目标FPGAv2.9 使用Nios II IDE建立用户程序v2.10 调试/运行程序27.