示例 1:BAR 大小为 64 KB,含 1 个 4 KB 大小的窗口
窗口 0:大小为 4 KB,含 0xF 的地址转换(对应位 [15:12])。
- Vivado IP 配置的“AXI BAR”选项卡中的选项如下:
- AXI BAR 大小 64K:0xFFFF bits [15:0]
- 位 [63:16] 的地址转换可在 GUI 中设置。在此示例中 [63:16] = 0x0
- 设置间隙基址:0x0000_0000_0000_0000
- 设置间隙高位地址:0x0000_0000_0000_FFFF
- BDF 表编程:
- 针对 1 个窗口编程 1 个条目
- 窗口大小 = AXI BAR 大小/8 = 64K / 8 = 0x1FFF = 8 KB(13 个位)。每个窗口的最大大小为 8 千字节。
- 在此示例中,窗口大小为 4K,因此 0x1 将于 0x2430 位 [25:0] 处进行编程。
- 位 [15:13] 的地址转换将于 0x2420 和 0x2424 处进行编程。
- 在此示例中,位 [15:13] 的地址转换设为 0x7。
编程值 | 寄存器 |
---|---|
0x0000_E000 | 地址转换值低位 |
0x0 | 地址转换值高位 |
0x0 | PASID/保留 |
0x0 | [11:0]:功能编号 |
0xC0000001 |
[31:30] 读/写访问权限 [29]:R0 访问错误 [28:26] 保护 ID [25:0] 窗口大小 ([25:0]*4K = 窗口的实际大小) |
0x0 | 保留 |
对于此示例,从地址 0x0000_0000_0000_0100 将转换为 0x0000_0000_0000_E100。
示例 2:BAR 大小为 64 KB,含 1 个 8 KB 大小的窗口
窗口 0:大小为 8 KB,含 0x6 ('b110) 的地址转换(对应位 [15:13])。
- Vivado IP 配置的“AXI BAR”选项卡中的选项如下:
- AXI BAR 大小 64K:0xFFFF bits [15:0]
- 位 [63:16] 的地址转换可在 GUI 中完成。在此示例中 [63:16] = 0x0
- 设置间隙基址:0x0000_0000_0000_0000
- 设置间隙高位地址:0x0000_0000_0000_FFFF
- BDF 表编程:
- 针对 1 个窗口编程 1 个条目。
- 窗口大小 = AXI BAR 大小/8 = 64K / 8 = 0x1FFF = 8 KB(13 个位)。每个窗口的最大大小为 8 千字节。
- 在此示例中,窗口大小为 8K,因此 0x2 将于 0x2430 位 [25:0] 处进行编程。
- 位 [15:13] 的地址转换将于 0x2420 和 0x2424 处进行编程。
- 在此示例中,位 [15:13] 的地址转换设为 0x6 ('b110)。
偏移 | 编程值 | 寄存器 |
---|---|---|
0x2420 | 0x0000_C000 | 地址转换值低位 |
0x2424 | 0x0 | 地址转换值高位 |
0x2428 | 0x0 | PASID/保留 |
0x242C | 0x0 | [11:0]:功能编号 |
0x2430 | 0xC0000002 |
[31:30] 读/写访问权限 [29]:R0 访问错误 [28:26] 保护 ID [25:0] 窗口大小 ([25:0]*4K = 窗口的实际大小) |
0x2434 | 0x0 | 保留 |
对于此示例,从地址 0x0000_0000_0000_0100 将转换为 0x0000_0000_0000_C100。
示例 3:BAR 大小为 32 GB,含 4 个不同大小的窗口
- 窗口 0:大小为 4 KB,含 0xAAAAA 的地址转换(对应位 [31:12])。
- 窗口 1:大小为 4 GB,窗口上不含地址转换。
- 窗口 2:大小为 64 KB,含 0xBBBB 的地址转换(对应位 [31:16])。
- 窗口 3:大小为 1 GB,含 11111 的地址转换(对应位 [34:30])。
- Vivado IP 配置的“AXI BAR”选项卡中的选项如下:
- AXI BAR 大小 32G:0x7_FFFF_FFFF bits [34:0]。
- 位 [63:35] 的地址转换可在 GUI 中进行编程。在此示例中 [63:36] = 0xAB。
- 设置间隙基址:0x0000_0AB0_0000_0000。
- 设置间隙高位地址:0x0000_0AB7_FFFF_FFFF。
- BDF 表编程:
- 窗口大小 = AXI BAR 大小/8 = 32 GB / 8 = 0xFFFF_FFFF = 4 GB(32 个位)。每个窗口的最大大小为 4 GB。
- 针对 4 个窗口编程 4 个条目:
- BDF 表格条目 0 起始地址为 0x2420。
- BDF 表格条目 1 起始地址为 0x2440。
- BDF 表格条目 2 起始地址为 0x2460。
- BDF 表格条目 3 起始地址为 0x2480。
- 窗口 0 大小为 4 千字节。
- 将 0x1 编程为 0x2430 位 [25:0]。
- 位 [34:32] 的地址转换将于 0x2420 和 0x2424 处进行编程。
- 将 0x0000_0000 编程为 0x2420。
- 将 0x0000_0007 编程为 0x2424
- 窗口 1 大小为 4 GB。
- 将 0x10_0000 编程为 0x2450 位 [25:0]。
- 无地址转换,因为此窗口将使用所有地址位。
- 将 0x0000_0000 编程为 0x2440。
- 将 0x0000_0000 编程为 0x2444
- 窗口 2 大小为 64 千字节。
- 将 0x10 编程为 0x2470 位 [25:0]。
- 位 [34:32] 的地址转换将于 0x2460 和 0x2464 处进行编程。
- 将 0x0000_0000 编程为 0x2460
- 将 0x0000_00005 编程为 0x2464
- 窗口 3 大小为 1 GB。
- 将 0x4_0000 编程为 0x2490 位 [25:0]。
- 位 [34:30] 的地址转换将于 0x2480 和 0x2484 处进行编程。
- 将 0x0000_0000 编程为 0x2480。
- 将 0x0000_0003 编程为 0x2484
偏移 | 编程值 | 寄存器 |
---|---|---|
0x2420 | 0x0000_0000 | 地址转换值低位 |
0x2424 | 0x7 | 地址转换值高位 |
0x2428 | 0x0 | PASID/保留 |
0x242C | 0x0 | [11:0]:功能编号 |
0x2430 | 0xC0000001 |
[31:30] 读/写访问权限 [29]:R0 访问错误 [28:26] 保护 ID [25:0] 窗口大小 ([25:0]*4K = 窗口的实际大小) |
0x2434 | 0x0 | 保留 |
偏移 | 编程值 | 寄存器 |
---|---|---|
0x2440 | 0x0000 | 地址转换值低位 |
0x2444 | 0x0 | 地址转换值高位 |
0x2448 | 0x0 | PASID/保留 |
0x244C | 0x0 | [11:0]:功能编号 |
0x2450 | 0xC010_0000 |
[31:30] 读/写访问权限 [29]:R0 访问错误 [28:26] 保护 ID [25:0] 窗口大小 ([25:0]*4K = 窗口的实际大小) |
0x2454 | 0x0 | 保留 |
偏移 | 编程值 | 寄存器 |
---|---|---|
0x2460 | 0x_0000 | 地址转换值低位 |
0x2464 | 0x05 | 地址转换值高位 |
0x2468 | 0x0 | PASID/保留 |
0x246C | 0x0 | [11:0]:功能编号 |
0x2470 | 0xC000_00010 |
[31:30] 读/写访问权限 [29]:R0 访问错误 [28:26] 保护 ID [25:0] 窗口大小 ([25:0]*4K = 窗口的实际大小) |
0x2474 | 0x0 | 保留 |
偏移 | 编程值 | 寄存器 |
---|---|---|
0x2480 | 0x0000_0000 | 地址转换值低位 |
0x2484 | 0x3 | 地址转换值高位 |
0x2488 | 0x0 | PASID/保留 |
0x248C | 0x0 | [11:0]:功能编号 |
0x2490 | 0xC004_0000 |
[31:30] 读/写访问权限 [29]:R0 访问错误 [28:26] 保护 ID [25:0] 窗口大小 ([25:0]*4K = 窗口的实际大小) |
0x2494 | 0x0 | 保留 |
对于此示例:
从地址 0x0000_0000_0000_0100 将转换为 0x0000_0AB7_0000_0100。
从地址 0x0000_0001_0000_0100 将转换为 0x0000_0AB0_0000_0100。
从地址 0x0000_0002_0000_0100 将转换为 0x0000_0AB5_0000_0100。
从地址 0x0000_0003_0000_0100 将转换为 0x0000_0AB3_0000_0100。
Slave Bridge 不支持窄突发 AXI 传输事务。为避免窄突发传输,请连接 AXI 智能连接模块,此模块将把窄突发传输转换为完整突发的 AXI 传输。