AXI MM Bridge 主接口用于从主机对 AXI 存储器映射空间进行高带宽访问。此接口支持最多 32 个未完成的 AXI 读取和写入。可将任意物理功能 (PF) 或虚拟功能 (VF) 的一个或多个 PCIe BAR 映射到 AXI-MM Bridge 主接口。此选择必须在设计编译之前完成。在 AXI-MM 接口的 aruser
和 awuser
中都将提供功能 ID、BAR ID、VF 组和 VF 组偏移,以便允许用户逻辑识别每次存储器访问的来源。在 AXI Bridge 主端口中会列出 m_axib_awuser/m_axib_aruser[54:0]
用户位的映射。
虚拟功能组 (VFG) 表示 VF 组编号。它等同于对应 VF 关联的 PF 编号。VFG_OFFSET 表示与特定 PF 相关的 VF 编号。请注意,它并非每个 PF 的 FIRST_VF_OFFSET。
例如,如果 PF0 和 PF1 均有 8 个 VF,则 PF0 和 PF1 的 FIRST_VF_OFFSET 分别为 4 和 11。以下是 VFG 和 VFG_OFFSET 的映射。
功能编号 | PF 编号 | VFG | VFG_OFFSET |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 |
4 | 0 | 0 | 0(因为 PF0 的 FIRST_VF_OFFSET 为 4,所以 PF0 的第一个 VF 从 FN_NUM=4 开始,VFG_OFFSET=0 表示这是 PF0 的第一个 VF) |
5 | 0 | 0 | 1(VFG_OFFSET=1 表示这是 PF0 的第二个 VF) |
... | ... | ... | ... |
12 | 1 | 1 | 0(VFG=1 表示此 VF 与 PF1 关联) |
13 | 1 | 1 | 1 |
每个主机发起的访问均可通过 PCIe 到 AXI BAR 转换单独映射到 64 位 AXI 地址空间。
由于所有功能都共享相同的 AXI 主接口地址空间,因此需要相应机制来将请求从不同功能映射到 AXI 主接口侧的不同地址空间。以下提供的示例演示了如何使用 PCIe 到 AXI 转换矢量。请注意,属于相同 PF 的所有 VF 都共享相同的 PCIe 到 AXI 转换矢量。因此,每个 VF 的 AXI 地址空间都连接在一起。VFG_OFFSET 可用于计算特定 VF 的 AXI 实际起始地址。
总结,m_axib_awaddr
判定方式如下:
- 对于 PF,
m_axib_awaddr
=pcie2axi_vec
+axib_offset
。 - 对于 VF,
m_axib_awaddr
=pcie2axi_vec
+ (VFG_OFFSET + 1)*vf_bar_size
+axib_offset
。
其中,pcie2axi_vec
是 PCIe 到 AXI BAR 转换(从
Vivado®
IP 目录配置 IP 核时即可设置此转换)。
axib_offset
是请求的目标空间中的地址偏移。