修改GHRD工程
要在FPGA侧产生中断,首先需要在硬件设计中添加一个支持中断输出的PIO外设,并将其中断信号连接到HPS的FPGA中断输入口上。
下面以Button产生中断为例进行PIO添加和配置说明,其实Button对应的PIO已经添加到GHRD当中,本教程中无需再次添加该PIO,本文只是把添加的过程再说明一遍,方便读者学习。
请参考教程如何在ubuntu系统上安装和卸载Quartus Prime Pro Edition 25.3 或者 最新版Quartus Prime Pro 25.1 的安装和使用演示(含Questa仿真) 安装好Quartus软件。
在Platform Designer中添加PIO
1. 在Quartus Prime 25.1.1 中打开DE25-Nano的GHRD工程。
2. 在Platform Designer中打开\Demonstration\SoC_FPGA\GHRD\peripheral_subsys\peripheral_subsys.qsys。
3. 从IP Catalog搜索PIO(Parallel I/O) 核并双击它即可将该IP添加到系统。(本教程无需添加新的PIO,只需对现有的PIO组件进行配置上的修改。)

4. 双击System View界面的button_pio组件修改PIO参数:
位宽:根据按键数量设置(DE25-Nano的FPGA端用户按键是2,所以这里位宽从4位修改为2位)
方向:保持Input(用于读取按键状态)设置
边沿捕获寄存器设置:保持选择FALLING,仅在信号下降沿时捕获。保持Enable bit-clearing设置,允许软件清除已捕获的边沿标志位。
中断:使能中断,保持触发类型 EDGE。

5. 系统互联:保持button-pio的时钟、复位信号连接到系统的时钟和复位模块上,以及保持其slave端口继续连接到Avalon Memory Mapped Pipeline Bridge IP上。
6. 端口导出:保持button-pio的external-connection端口和irq端口的导出设置。
7. 分配地址:继续保留0x00010060的地址分配。

8. 连接中断信号:保持将PIO的 irq 输出端口连接到HPS组件的f2h_irq0_in 接口上。

可以看到这里按键的中断对应FPGA中断线编号1,FPGA 中断在HPS中的系统中断编号偏移为 17,所以按键对应系统中断编号为18。
生成硬件描述文件
9. 完成Platform Designer配置后,点击 Generate HDL 生成系统。
qsys_top.qsys包含三个子系统:jtag_subsys、hps_subsys、peripheral_subsys。因为修改过\Demonstration\SoC_FPGA\GHRD\peripheral_subsys\peripheral_subsys.qsys,所以既要对peripheral_subsys.qsys重新生成系统,还要对\Demonstration\SoC_FPGA\GHRD\qsys_top.qsys重新生成系统。
10. 对GHRD工程进行全编译,生成golden_top .sof 配置文件。然后按照连接
【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First) 将FPGA配置文件固化到QSPI FLASH里面去。
在后续的设备树和驱动开发中,需要用到以下信息:
PIO基地址:0x20010060
PIO地址空间大小:例如 0x10(16字节)
中断号:在Platform Designer中HPS分配的SPI编号为18
PIO数据位宽:2

浙公网安备 33010602011771号