PCIE原理: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发送端的。


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)  


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

映射过程如下:

  •  0x0000_12340ABC减去Aperture Base Address :0X0000000012340000,得到0xABC

  •  所得结果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

具体映射图如下所示:


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、地址映射的注意事项

① 一个AXI slave接口可以使用多组BAR

版权声明:本文为CSDN博主「IC小鸽」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/icxiaoge/article/details/90573811

推荐阅读