PCIE原理-002:PCIE地址是如何映射的

1、PCIE地址映射是什么意思?

本文以xinlinx FPGA PCIE为例,选择集成AXI的PCIE结构为例,说明AXI接口读写地址是如何映射成PCIE读写地址的。

2、集成AXI 的PCIE结构

下图所示为集成AXI的PCIE结构图。其中,包含了PCIE CORE,以及AXI bridge以及3个axi接口,AXI Master是axi总线的主端口,AXI4-lite 是slave端口,用于配置PCIE逻辑。AXI slave是从端口,与之相连的逻辑可以通过axi slave接口主动发起读写操作。本文将说明从AXI slave接口发起的读写地址是如何映射到PCIE端口的。即axi slave端口的awaddr地址是怎么映射到PCIE发送端的。

PCIE原理-002:PCIE地址是如何映射的_第1张图片

3、AXI slave接口读写地址到PCIE 串行发送端口的地址映射

使用vivado打开PCIE IP配置界面,可以看到如下图所示的界面,用于配置AXI地址映射的基地址寄存器,即AXI:BARS。

图中配置了3组基地址:每组地址代表了一片地址映射空间。寄存器配置可以自己手动配置,

Aperture high Address和Aperture Base Address决定了axi访问的一片地址空间,AXI to PCIE Translation说明了这片地址空间的最低地址(Aperture Base Address)对应PCIE的哪个地址。

每一片地址映射空间包含三个地址寄存器:16进制,64bit ,其中AXI BAR0配置如下

Aperture Base Address:0x00000000_12340000 

Aperture high Address:0x00000000_1234FFFF (64KB)

AXI to PCIE Translation:0x50000000_56710000 (64kbyte对应的地位为0) 

其中AXI BAR1配置如下

Aperture Base Address:0x00000000_ABCDE000 

Aperture high Address: 0x00000000_ABCDFFFF (8kbyte)

AXI to PCIE Translation:0x60000000_FEDC0000 (8kbyte对应的地位为0) 

其中AXI BAR2配置如下

Aperture Base Address:0x00000000_FE000000  

Aperture high Address: 0x00000000_FFFFFFFF (32 Mbytes)  

AXI to PCIE Translation:0x70000000_40000000(32Mbyte对应的地位为0)  

PCIE原理-002:PCIE地址是如何映射的_第2张图片

 

 

从AXI slave接口发起的读写地址如果是0x0000_12340ABC,那么映射到PCIE串行发送侧的地址是0x5000000056710ABC。映射过程如下:

  1. 0x0000_12340ABC减去Aperture Base Address :0X0000000012340000,得到0xABC
  2. 所得结果0xABC加上0X5000000056710000,则映射到PCIE的发送侧地址为0x5000000056710ABC

综上所叙:

Accessing the Bridge AXIBAR_0 with address 0x0000_12340ABC on the AXI bus yields
0x5000000056710ABC on the bus for PCIe.
• Accessing the Bridge AXIBAR_1 with address 0x0000_ABCDF123 on the AXI bus yields
0x60000000FEDC1123 on the bus for PCIe.
• Accessing the Bridge AXIBAR_2 with address 0x0000_FFFEDCBA on the AXI bus yields
0x700041FEDCBA on the bus for PCIe

具体映射图如下所示:

PCIE原理-002:PCIE地址是如何映射的_第3张图片

5、地址不发生映射如何配置

如果AXI slave地址不发生映射,可以只是用一组BAR寄存器,其中Aperture high Address不能为全0,最好为全F。如果Aperture high Address为全0,则读写空间为0,则无法正常读写数据。

则应该配置如下:

Aperture Base Address:0x00000000_00000000

Aperture high Address:0xFFFFFFFF_FFFFFFFF

AXI to PCIE Translation:0x00000000_00000000 

 

6、地址映射的注意事项

  1. 一个AXI slave接口可以使用多组BAR
  2.  

 

你可能感兴趣的:(PCIE)