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