searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

HPS地址映射详解:Intel FPGA SoC系统设计关键技术

2025-07-01 05:47:19
1
0

HPS地址映射是Intel FPGA SoC系统设计的核心概念之一,它决定了ARM处理器、FPGA逻辑以及各种外设之间如何高效地进行数据交换和控制信号传递。无论是从HPS访问FPGA资源,还是从FPGA访问HPS的存储器和外设,都需要通过精确的地址映射机制来实现。

本文将从HPS地址空间的基本结构出发,详细解析MPU视图与Non-MPU视图的差异,深入探讨HPS与FPGA之间的通信接口,并结合实际的Platform Designer设计案例,为读者提供全面而实用的HPS地址映射指导。

MPU与non-MPU地址空间

image.png

  1. HPS地址空间 左侧MPU部分是ARM处理器看到的地址空间,右侧Non-MPU是外设作为master通过L3总线访问的地址空间。要从HPS或Non-HPS访问FPGA,需要通过红框标出的FPGA Slaves和Lightweight FPGA Slaves。
    • FPGA Slaves地址空间访问的是HPS2FPGA接口
    • Lightweight FPGA Slaves访问的是LWHPS2FPGA接口
  2. MPU视图 MPU视图展示了ARM处理器如何看待地址空间:
    • 要访问HPS2FPGA总线,使用FPGA Slaves定义的基地址0xC0000000作为偏移地址
    • 要访问LWHPS2FPGA总线,使用Lightweight FPGA Slaves定义的基地址0xFF200000作为偏移地址
  3. Non-MPU视图 Non-MPU视图展示了L3总线如何看待地址空间,和MPU视图略有不同需要注意。

Platform Designer 地址设置

image.png
Platform Designer设计中,h2f_axi_master和h2f_lw_axi_master从Qsys看都是master接口。

  • h2f_axi_master 连接到HPS2FPGA总线,图中连接到 axi_bridge_1。
  • h2f_lw_axi_master 连接到 LWHPS2FPGA 总线,图中连接到 axi_bridge_0 。
  • axi_bridge_1 和 axi_bridge_0 的基地址都是 0x00000000 ,这在 Qsys 中是允许的,因为每个master有各自的地址空间。Qsys中的基地址不会自动继承HPS地址空间的0xC0000000或0xFF200000,而是从0x00000000开始。

HPS与FPGA地址转换

image.png

  1. 从HPS看Qsys中slave的地址
    要从HPS访问Qsys的slave,需要考虑HPS地址空间基地址+Qsys内偏移地址,即:
    • On-Chip Memory: 0xC0000000
    • LED_PIO: 0xFF200000
    • Button_PIO: 0xFF200020
    • DIP_PIO: 0xFF200030
  2. 从FPGA看HPS上slave的地址
    • FPGA2HPS总线接口: FPGA的master模块使用此接口访问HPS,地址范围是0x00000000~0xFFFFFFFF共4GB,遵循Non-MPU视图的地址映射。
    • FPGA2SDRAM总线接口: FPGA的master模块使用此接口直接访问HPS的SDRAM控制器,地址范围也是4GB,直接对应SDRAM的地址。

上面这只是举一个例子,这个图里的地址也不是agilex芯片准确的每个master的地址,agilex的地址空间可以访问官方手册查看。

DDR相关地址映射

使用不同DDR空间大小时,DDR空间会被映射到不同的地址空间。可以查看以下查看intel官方手册来确定DDR地址空间。
image.png

0条评论
0 / 1000
Du_carry
3文章数
0粉丝数
Du_carry
3 文章 | 0 粉丝
原创

HPS地址映射详解:Intel FPGA SoC系统设计关键技术

2025-07-01 05:47:19
1
0

HPS地址映射是Intel FPGA SoC系统设计的核心概念之一,它决定了ARM处理器、FPGA逻辑以及各种外设之间如何高效地进行数据交换和控制信号传递。无论是从HPS访问FPGA资源,还是从FPGA访问HPS的存储器和外设,都需要通过精确的地址映射机制来实现。

本文将从HPS地址空间的基本结构出发,详细解析MPU视图与Non-MPU视图的差异,深入探讨HPS与FPGA之间的通信接口,并结合实际的Platform Designer设计案例,为读者提供全面而实用的HPS地址映射指导。

MPU与non-MPU地址空间

image.png

  1. HPS地址空间 左侧MPU部分是ARM处理器看到的地址空间,右侧Non-MPU是外设作为master通过L3总线访问的地址空间。要从HPS或Non-HPS访问FPGA,需要通过红框标出的FPGA Slaves和Lightweight FPGA Slaves。
    • FPGA Slaves地址空间访问的是HPS2FPGA接口
    • Lightweight FPGA Slaves访问的是LWHPS2FPGA接口
  2. MPU视图 MPU视图展示了ARM处理器如何看待地址空间:
    • 要访问HPS2FPGA总线,使用FPGA Slaves定义的基地址0xC0000000作为偏移地址
    • 要访问LWHPS2FPGA总线,使用Lightweight FPGA Slaves定义的基地址0xFF200000作为偏移地址
  3. Non-MPU视图 Non-MPU视图展示了L3总线如何看待地址空间,和MPU视图略有不同需要注意。

Platform Designer 地址设置

image.png
Platform Designer设计中,h2f_axi_master和h2f_lw_axi_master从Qsys看都是master接口。

  • h2f_axi_master 连接到HPS2FPGA总线,图中连接到 axi_bridge_1。
  • h2f_lw_axi_master 连接到 LWHPS2FPGA 总线,图中连接到 axi_bridge_0 。
  • axi_bridge_1 和 axi_bridge_0 的基地址都是 0x00000000 ,这在 Qsys 中是允许的,因为每个master有各自的地址空间。Qsys中的基地址不会自动继承HPS地址空间的0xC0000000或0xFF200000,而是从0x00000000开始。

HPS与FPGA地址转换

image.png

  1. 从HPS看Qsys中slave的地址
    要从HPS访问Qsys的slave,需要考虑HPS地址空间基地址+Qsys内偏移地址,即:
    • On-Chip Memory: 0xC0000000
    • LED_PIO: 0xFF200000
    • Button_PIO: 0xFF200020
    • DIP_PIO: 0xFF200030
  2. 从FPGA看HPS上slave的地址
    • FPGA2HPS总线接口: FPGA的master模块使用此接口访问HPS,地址范围是0x00000000~0xFFFFFFFF共4GB,遵循Non-MPU视图的地址映射。
    • FPGA2SDRAM总线接口: FPGA的master模块使用此接口直接访问HPS的SDRAM控制器,地址范围也是4GB,直接对应SDRAM的地址。

上面这只是举一个例子,这个图里的地址也不是agilex芯片准确的每个master的地址,agilex的地址空间可以访问官方手册查看。

DDR相关地址映射

使用不同DDR空间大小时,DDR空间会被映射到不同的地址空间。可以查看以下查看intel官方手册来确定DDR地址空间。
image.png

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0