可将任意物理功能 (PF) 或虚拟功能 (VF) 的一个或多个 PCIe BAR 映射到 AXI4‑Lite 主接口。此操作必须在配置 IP 时完成。在 AXI4‑Lite 接口的 aruser
和 awuser
中将提供功能 ID、BAR ID(BAR 命中)、VF 组和 VF 组偏移,帮助用户识别存储器访问的来源。
在 AXI4-Lite 主端口中会列出 m_axil_awuser/m_axil_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_OSSET=0 表示这是 PF0 的第一个 VF) |
5 | 0 | 0 | 1(VFG_OSSET=1 表示这是 PF0 的第二个 VF) |
... | ... | ... | ... |
12 | 1 | 1 | 0(VFG=1 表示此 VF 与 PF1 关联) |
13 | 1 | 1 | 1 |
每个主机发起的访问均可通过 PCIe 到 AXI BAR 转换单独映射到 64 位 AXI 地址空间。
由于所有功能都共享相同的 AXI4 主接口地址空间,因此需要相应机制来将请求从不同功能映射到 AXI 主接口侧的不同地址空间。以下显示了如何使用 PCIe 到 AXI 转换矢量。请注意,属于相同 PF 的所有 VF 都共享相同的 PCIe 到 AXI 转换矢量。因此,每个 VF 的 AXI 地址空间都连接在一起。VFG_OFFSET 可用于计算特定 VF 的 AXI 实际起始地址。
综上所述,m_axil_awaddr 的判定方式为:
- 对于 PF,
m_axil_awaddr
=pcie2axi_vec
+axil_offset
。 - 对于 VF,
m_axil_awaddr
=pcie2axi_vec
+ (VFG_OFFSET + 1)*vf_bar_size
+axil_offset
其中,pcie2axi_vec
是 PCIe 到 AXI BAR 转换(可在 IP 配置期间设置)。
axib_offset
是请求的目标空间中的地址偏移。
每个主机发起的访问均可单独映射到 64 位 AXI 地址空间。在此接口上支持一个未完成的读取操作和一个未完成的写入操作。
在 IP 配置时,还可将扩展 ROM BAR 映射到 AXI4‑Lite 接口。