SOPC设计
Tags
SOPC Development
FPGA Programming
Hardware-Software Integration
Last edited by
AI summary
本文介绍了SOPC设计的概念、开发软件、开发流程及具体步骤,包括使用Altera的Quartus II和Eclipse软件。主要步骤包括定制SOPC系统模块、建立工程、编写程序、调试及生成可执行文件。还提供了简单的SOPC开发步骤和实例,如搭建Qsys系统和编写驱动程序的详细过程。
Last edited time
Dec 29, 2025 03:35 AM
一:SOPC概念/术语/名词
可以详见SOPC概述文档。
二:开发软件
以Altera为例:
Quartus II/Qsys(硬件部分的开发)/Eclipse(软件部分的开发)。
三:SOPC的开发流程
主要有三个步骤:
- 采用Qsys集成开发工具定制SOPC系统模块,包括Nios II处理器以及相应的外设模块/组件;
- 采用Quartus II软件建立工程和顶层实体,完成硬件语言的逻辑电路;
- 采用Eclipse软件编写与Qsys系统相配套的程序/软件使其运行在Nios II处理器上。

四:Qsys和Quartus II硬件开发的具体步骤
- 使用Quartus II软件创建一个新工程,选择具体的FPGA型号;
- 当工程建立完成后,在Quartus II软件中打开Qsys软件,从Qsys软件的处理器库和外设模块/组件库中选择合适CPU(Nios II核)、存储器以及外围器件(定时器/GPIO/UART/EPCS…等IP核),并定制和配置其功能;
- 分配外设地址和中断号,设定复位地址,最后生成Qsys系统;
- 用户也可以添加用户自身定制指令逻辑到Nios II内核以加速CPU的性能,或添加用户外设以减轻CPU的任务;
- 使用Qsys软件生成系统后,将其集成到整个Quartus II工程中,可以在Quartus II工程中加入Nios II系统以外的逻辑,大多数的SOPC设计都包括Nios II系统以外的逻辑,这也就是SOPC的优势所在,用户可以集成自身定制的逻辑模块到SOPC设计,或集成从Altera或者第3方IP供应商得到的其它现成的IP模块;
- 使用Quartus II软件为Nios II系统上的各I/O分配管脚,另外还要根据要求进行硬件编译/约束的设置;
- 最后编译Quartus II工程,在编译过程中Quartus II将对Qsys生成的系统的HDL文件进行布局布线,从HDL源文件综合生成一个适合目标器件的网表,生成FPGA的配置文件(.sof文件);
- 使用Quartus II中的下载选项和下载器,将配置文件(.sof文件)下载到板卡,也可以将配置文件固化板卡上的非易失存储器中(Flash:EPCS16),方便后续的开发验证。
五:Eclipse软件开发的步骤
- 打开Eclipse软件,将Qsys软件生成的.sopcinfo文件导入到Eclipse中可进行用户程序开发,这一步可以在Qsys生成系统模块后立即执行,也可以在整个系统编译完成,并将.sof文件下载到板卡中后执行;
- 当Eclipse软件完成用户程序时,可以对用户程序进行编译,如果出现错误,需要解决所在问题,如果没有出现错误,软件便会生成可执行的文件(.elf文件),将.elf文件下载到板卡中就可以执行程序(下载.elf文件前,一定要先下载.sof文件,否则将出现错误提示)。
六:简单SOPC的开发步骤
- 分析系统需求;
- 启动Quartus II软件和新建实例设计工程;
- 启动Qsys系统;
- 在Qsys中完成组件和处理器之间的连接并生成系统;
- 集成Qsys系统加载在Quartus II工程;
- 编译系统并分配管脚;
- 将配置文件(.sof文件)下载FPGA板卡中;
- 启动Eclipse软件进行用户程序开发;
- 调试用户程序;
- 生成可执行的文件(.elf文件);
- 运行程序(将.elf文件下载FPGA板卡中)
七:SOPC设计实例
- 搭建Qsys系统(LED流水灯)
- on-chip ROM上对地址进行上锁,点击小锁即可。
- 在PIO栏Export中需要引出pio_led端口。
(1):Qsys系统框架图

JTAG UART组件:来实现PC和Nios II系统间的串行通信。
(1):在Qsys中添加需要的组件
(2):需要对每个组件进行命名
(3):对组件进行手动连线
连线时遵循以下原则:数据主端口连接存储器和外设元件;而指令主端口只连接存储器元件。
如果是存储器类IP核,比如ROM/RAM,就需要将Nios II中数据和指令端口连接;
(4):在连接好的图中,做以下修改
(5):需要设置Nios II复位和异常向量。
(6):自动分配基地址
(7):生成Qsys系统
(8):集成Qsys系统加载在Qauartus II工程中
(9):搭建顶层
(10):分配I/O
(11):全编译,生成.sof文件
(12):下载到FPGA板卡
1110~1101~1011~0111
- Eclipse软件写驱动程序(C++)
- 打开Eclipse软件后,导入.info文件,生成HelloWord模版
- 在Qsys_Led工程中Bulid Project,如果没有错误,会在信息栏打印模版中的字符
- 在设计中会提示存储器存储空间不够的错误,修改如下
- 再次Bulid Project,就没有错误了,在工程中RUN AS(Nios II HardWare),然后打印模版中的字符
- 在HelloWord模版将程序替换为流水灯程序
- 再次Bulid Project,程序正确情况下,在工程中RUN AS(Nios II HardWare)
- 可以看到LED进行流水(FPGA板卡可以看到现象)


Loading...