【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First)

一、前言

Agilex 5 SoC FPGA 集成了高性能 FPGA 结构与双集群 ARM 处理器系统(HPS,包含双核 Cortex‑A76 与双核 Cortex‑A55),为嵌入式开发者提供了兼具硬件可重构性与强大软件处理能力的异构计算平台。针对系统复位后由 FPGA 还是 HPS 主导启动流程,Altera定义了两种不同的引导模式:FPGA Configuration First和HPS Boot First。

本文将首先介绍这两种启动模式的工作方式,然后在 DE25‑Nano 开发板上完整演示其开发与验证流程。

二、Agilex 5 SoC 启动模式概述

FPGA Configuration First Mode

当选择FPGA Configuration First模式时,系统安全器件管理器(SDM)会首先完成FPGA的完整配置,随后配置HPS的SDRAM引脚,加载HPS的第一级引导程序(FSBL),最后将HPS从复位状态释放。在此模式下,FPGA逻辑阵列在HPS退出复位之前便已开始工作,即FPGA在HPS启动前已完全就绪。需要注意的是,FPGA Configuration First模式不支持HPS在运行时对FPGA进行重配置。

HPS Boot First Mode

当您选择HPSBoot First时,SDM会先配置HPS的SDRAM引脚,加载HPS的FSBL并将HPS从复位状态释放,之后由HPS在稍后的时间点再完成FPGA I/O和FPGA逻辑阵列的配置。HPS优先选项具有以下优势:最小化SDM所需的闪存容量;最小化HPS软件启动所需的时间;支持HPS在运行过程中对FPGA进行重配置。

选择 HPS Boot First 还是 FPGA Configuration First,核心在于权衡 HPS 的启动速度FPGA 的早期可用性,以及后期FPGA是否可以重配置等。这取决于你的应用场景更侧重哪个方面。

三、准备工作

硬件准备

  1. DE25-Nano开发板

  2. 5V电源适配器(随板附带)

  3. USB Type-C数据线(用于UART串口通信和JTAG编程,随板附带)

  4. MicroSD卡(建议8GB以上,随板附带)

  5. 读卡器

  6. 一台Ubuntu电脑

软件准备

  1. Altera Quartus Prime Pro Edition 25.1.1(支持Agilex 5器件)

  2. DE25-Nano GHRD工程(从友晶官网下载https://dl2.terasic.com/resources/de25-nano/DE25-Nano_revB_v.1.0.0_ResourcePackage.zip

  3. DE25-Nano Linux镜像(从友晶官网下载https://dl2.terasic.com/resources/de25-nano/de25_nano_sdcard_console_v1.1.zip

  4. 串口终端软件(如PuTTY、minicom等)

  5. Win32DiskImager工具(也可以用命令直接在Ubuntu电脑烧写SD卡)

四、模式设置

可以在 Quartus 的图形界面中进行设置,路径为:Assignments > Device > Device and Pin Options > Configuration > HPS/FPGA Configuration order:

Quartus 默认设置是FPGA Configuration First模式(即HPS/FPGA configuration order 默认设置是After INIT_DONE),如果想改成HPS Boot First模式,可在GUI界面选择HPS First或者在.qsf文件里面添加约束:

复制代码
set_global_assignment -name HPS_INITIALIZATION "HPS FIRST"

五、DE25-Nano 开发板 FPGA Configuration First 模式演示

首先固化QSPI Flash,这个固化工作可以在Windows和Ubuntu系统下操作。

Windows下固化QSPI Flash

双击DE25-Nano_revB_v.1.0.0_ResourcePackage\Demonstration\SoC_FPGA\GHRD\sof_with_hps.bat将GHRD编译生成的golden_top.sof文件转化为golden_top_hps.sof文件。

然后双击

DE25-Nano_revB_v.1.0.0_ResourcePackage\Demonstration\SoC_FPGA\GHRD\sof_to_jic.bat将golden_top_hps.sof文件转化为golden_top_hps.jic文件。

最后双击Nano_revB_v.1.0.0_ResourcePackage\Demonstration\SoC_FPGA\GHRD\output_files\program_qspi_flash\flash_program.bat文件将golden_top_hps.jic文件固化到QSPI Flash当中:

Ubuntu下固化Flash

设置Quartus的环境变量:

复制代码
export QUARTUS_ROOTDIR=/home/doreen/altera_pro/25.1.1/quartusexport PATH=$QUARTUS_ROOTDIR/bin:$PATH

在GHRD工程的目录下执行如下命令生成golden_top_hps.sof文件

复制代码
quartus_pfg -c output_files/golden_top.sof output_files/golden_top_hps.sof -o hps_path=software/u-boot/spl/u-boot-spl-dtb.hex

然后执行如下命令生成golden_top_hps.jic文件:

复制代码
quartus_pfg -c output_files/golden_top_hps.sof output_files/golden_top_hps.jic -o device=MT25QU128 -o flash_loader=A5EB013BB23B -o mode=ASX4

最后执行如下命令将golden_top_hps.jic文件下载到DE25-Nano的QSPI flash当中:

复制代码
quartus_pgm -m jtag -c 1 -o "pvi;output_files/golden_top_hps.jic"

启动开发板观察测试结果

参考【教程】Linux上用命令烧写SD卡和Windows上用Win32DiskImager工具一键烧写SD卡烧写SD卡并启动开发板。可以看到在Uart串口打印开发板Linux系统启动的过程中fpga led已经亮起,且有一个led闪烁:

本文部分图参考Altera文档:

相关推荐
cmc102814 小时前
292.三段式状态机第三段时序逻辑用state_c与_n的差异分析
fpga开发
智塑未来2 天前
FPGA开发板怎么选?先看资质、案例与研发底盘
fpga开发
minglie13 天前
黑金AX301的SDRAM
fpga开发
hahaha60163 天前
HLS高层次综合设计技巧--高层次综合设计探讨
fpga开发
minglie13 天前
黑金AX301的EEPROM 24LC04
fpga开发
Hello-FPGA3 天前
量子计算滨松c15550-22up单光子相机与PCIe1004采集卡
人工智能·计算机视觉·fpga开发
9527华安3 天前
FPGA实现CameraLink转SFP光口,基于GT Transceivers Wizard Aurora8B10B编解码架构,提供4套工程源码和技术支持
fpga开发·sfp·cameralink·aurora8b10b·transceivers
ALINX技术博客4 天前
【期刊共读】如何应对 FPGA 短缺常态?
嵌入式硬件·fpga开发·fpga
156082072194 天前
短波接收机灵敏度测试
fpga开发
Riwuarua4 天前
从近似0基础开始FPGA开发 -- part.6 逻辑设计与状态机
fpga开发