2.1 SOPC开发流程
SOPC开发包括硬件开发和软件开发两部分。硬件开发主要基于Quartus Ⅱ和Qsys(原SOPC Builder)。软件开发最早使用Nios Ⅱ IDE,后来逐渐转向Nios Ⅱ Software Build Tools for Eclipse(简称Nios Ⅱ SBT)。Nios Ⅱ使用Eclipse集成开发环境来完成软件工程的编辑、编译、调试和下载,极大地提高了软件开发效率。
图2-1显示了基于英特尔Quartus Ⅱ和Nios Ⅱ的SOPC开发流程。从图中可见,与FPGA开发流程相比,SOPC开发流程增加了处理器及其外设接口的定制步骤,以及Nios Ⅱ软件开发部分。这些新增加的开发内容可以利用Qsys、Nios Ⅱ SBT轻松地完成。
图2-1 SOPC开发流程
2.1.1 硬件开发流程
(1)利用Qsys从Nios Ⅱ处理器内核和Nios Ⅱ开发套件提供的外设列表中选取合适的CPU、存储器及外围器件(如片内存储器、PIO、定时器、UART、片外存储器接口等),并定制和配置它们的功能,然后分配外设地址及中断号,设定复位地址,最后生成系统。用户也可以添加自身定制的指令逻辑到Nios Ⅱ内核以提高CPU性能,或者添加自身定制的外设以减轻CPU的工作量。
(2)使用Qsys生成Nios Ⅱ系统后,将其集成到Quartus Ⅱ工程中。可以在Quartus Ⅱ工程中加入Nios Ⅱ系统以外的逻辑,大多数SOPC设计都包括Nios Ⅱ系统以外的逻辑,这也是SOPC系统的优势所在。用户可以集成自身定制的硬件模块到SOPC设计中,或者集成从英特尔或第三方供应商处获取的现成的知识产权(IP)设计模块。
(3)使用Quartus Ⅱ软件选取具体的英特尔FPGA器件型号,然后为Nios Ⅱ系统中的各I/O接口分配引脚,并根据要求进行硬件编译选项或时序约束的设置,最后编译Quartus Ⅱ工程。在编译过程中Quartus Ⅱ将对Qsys生成系统的HDL设计文件进行布局布线,由HDL源文件生成一个适合目标器件的网表,同时生成FPGA配置文件。
(4)使用Quartus Ⅱ编程器和下载线(如USB Blaster)将配置文件(用户定制的Nios Ⅱ处理器系统的硬件设计)下载到开发板上。当校验完当前硬件设计后,可将新的配置文件下载到开发板上的非易失性存储器(如EPCS器件)中。下载完硬件配置文件后,软件开发者就可以将此开发板作为初期硬件平台进行软件开发。
2.1.2 软件开发流程
(1)当用Qsys进行硬件设计时,就可以开始编写独立于器件的C/C++程序,如算法或控制程序。用户可以使用现成的软件库和开放的操作系统内核来加快开发进程。
(2)在Nios Ⅱ SBT中建立新的软件工程时,Eclipse会根据Qsys对系统的硬件配置自动生成一个定制的HAL(硬件抽象层)系统库。这个库能为程序和底层硬件的通信提供接口驱动程序,它类似于在创建Nios Ⅱ系统时Qsys生成的SDK。
(3)使用Nios Ⅱ SBT对软件工程进行编译、调试。
(4)将软件下载到开发板上并在硬件上运行。