基于DE1-SOC的Nios V工程——my_first_niosv
本教程演示如何在DE1-SOC开发板上创建一个基于FPGA的SOPC系统,并在系统上运行Nios V软件工程。具体会使用Quartus软件中的Platform Designer系统集成工具创建一个基于Nios V的FPGA硬件系统工程,将sof编程文件下载到FPGA 中,然后使用Quartus软件中的Nios V软件工具创建Nios v软件工程——my_first_niosv,最后将.elf可执行文件下载到DE1-SOC开发板观察执行结果。
一、Nios V简介
Nios V处理器系统相当于一个微控制器(或“芯片级计算机”),其中包括处理器以及单芯片上的外设和内存组合。Nios®V处理器系统由一个Nios V处理器内核、一组片内外设、片内存储器和片外存储器的接口组成,所有这些都集成在Intel FPGA芯片上进行实现。与微控制器类似,所有的Nios V处理器系统都使用一致的指令集和编程模型。
目前Intel推出了三款Nios® V处理器(图片来自Intel 官网):

从截图可以看到这里面功能最强的是Nios V/g IP,用户可根据实际需求选择对应的软核。不过对于Cyclone V器件目前只支持Nios V/m软核。Agilex V等器件则支持以上三种软核。
Nios V/m处理器性能:
Nios®V/m处理器是Intel基于RISC-V指令集开发的微控制器核心。
Nios®V/m处理器支持两种不同的配置:
- 流水线
- 应用RV32IZicsr指令集。
- 支持五阶段流水线数据通路。
2. 非流水线
- 应用RV32IZicsr指令集。
- 支持非流水线数据通路。
截图来自Nios® V 嵌入式处理器设计手册:

二、开发工具下载
目前Quartus22.1及以上版本都支持Nios V了,但不是每个高版本都支持Cyclone V器件,比如23.4版本就不支持Cyclone V器件,它支持Agilex V器件,且支持以上三种Nios V IP。
22.1.2是支持Cyclone V器件的,所以本文以22.1.2版本为例进行操作演示。
2. Quartus以及Nios® V/m Embedded Processor的license,在Intel [Self Service Licensing Center]可免费申请,申请步骤可参考链接(点击跳转),使用期限是90天。
3. 设置license环境变量。将Intel发送过来的license文件保存到本地盘,然后将其具体路径添加到计算机的环境变量窗口。

同时,也在Quartus工具中点击菜单Tools——License setup设置license文件路径:

三、SOPC开发流程
在Quartus Prime完成嵌入式系统的硬件部分
在Nios SBT中完成让Nios II CPU 可以运行的软件部分
接着分别下载硬件的可配置文件(de10nano_prj.sof)和软件可执行程序(hello_world.elf),让这个定制的CPU嵌入式系统将“Hello from Nios II!"字符串通过JTAG UART传输到PC上,并在Nios SBT软件下的Nios II Console进行打印显示
四、Quartus工程设计
首先在FPGA里会定制一个包含Nios V处理器、On-Chip Memory、JTAG UART和PIO的嵌入式系统。这个系统中使用的Nios V核是整个系统的核心,其他组件都会通过Avalon总线连接到这个系统核心上。
On-Chip Memory (RAM or ROM) Intel FPGA IP:Intel FPGA包含了可以在Platform Designer系统中当作RAM或ROM使用的片上存储器。片上存储器有以下优势:与片外存储器相比,片上存储器的访问时间更快;Platform Designer自动例化片上存储器,不需要进行任何手动连接; FPGA上电时,某些存储块可具有初始化的内容,这一特性在存储数据常量或处理器引导代码时很重要;片上存储器支持双端口访问,允许两个主设备同时访问同一内存;有RAM和ROM之分,容量大小不超过FPGA最大可用容量。
JTAG UART IP:是PC与FPGA通信电缆的控制台。PC可以将数据通过JTAG电缆传输到FPGA,也能将FPGA产生的数据回传到PC。
PIO(Parallel I/O) Intel FPGA IP
1. 点击菜单File——New Project Wizard——Next:

2. 在桌面创建一个my_first_niosv的文件夹,并将工程路径指向这里,且工程的名称也命名为my_first_niosv:

3. 连续点击3次Next得到如下界面,通过器件过滤器筛选找到DE1-SoC的Cyclone V 5CSEMA5F31C6器件:

4. 最后点击Next和Finish完成工程创建。
5.点击Platform Designer 图标打开qsys系统界面:

6.

7. 用同样的方法

8. 继续搜索并添加JTAG UART Intel FPGA IP到系统,默认参数设置不变。

9.

10.

11.


14. 这时Message栏会出现错误提示,请将My_NiosV的reset信号和ndm_reset_in信号与系统所有rest信号连接起来。最后点击Generate HDL生成qsys文件。



module my_first_niosv ( CLOCK_50, LEDR ); input CLOCK_50; output [9:0] LEDR; niosv u0 ( .clk_clk (CLOCK_50), //clk.clk .led_external_connection_export (LEDR) // led_external_connection.export ); endmodule
14. 点击Analysis & Synthesis进行综合与分析,完成后再按DE1-SoC开发板的相关引脚进行引脚分配。
15.
四、创建Nios V 软件工程
五、下板测试
a'a