工程经验分享:PCIE(2)

上篇文章探讨了基于Xilinx PCIE IP核的PCIE最小系统搭建和开发框架,这篇文章聚焦于IP核本身,讨论其中的一些关键配置和用法。

1. 第一页

 Pcie Block Location:选择PCIE位置。PCIE 以硬核形式存在于片上,一些芯片(比如690T)会存在多个PCIE硬核,需要开发者指定IP位置。同时,PCIE使用GT接口作为其底层数据传输的实现载体。每个PCIE硬核都存在若干个“最优”的GT BANK选择,通常位于PCIE硬核附近。在板级硬件布局允许的情况下,推荐使用最优的GT BANK。否则,可能会影响工程的布局布线,不利于时序收敛,甚至影响PCIE速率。

如上图所示,该芯片共有三个PCIE 硬核 (X0Y0~X0Y2),我选择将PCIE实现于X0Y0,同时选择GT BANK111、BANK112作为数据接口。

Maximum Link Speed:选择PCIE速率 ,2.5G对应GEN1,5G对应GEN2,8G对应GEN3。

需要注意的是,PCIE实际运行速率取决于与主端自协商后的结果,如果上述PCIE和GT位置距离较远,实际速率可能会小于配置值。例如配置的是8G,但由于PCIE硬核距离GT太远,导致与主端自协商到了GEN2(5G)。

其他配置包括参考时钟频率,AXI总线时钟频率和位宽,是否增加DRP端口等都是常见配置,不再赘述。

2、第二页

主要是PCIE基本信息配置,vender ID,Device ID等信息将会在主端进行PCIE扫链的时候由主端获取。其余配置一般默认就好。

3、第三页

本页主要是PCIE BAR地址设置,PCIE和很多通信协议一样,其架构是基于地址的数据传输(与之对应的是流式传输,比如视频数据)。

BAR地址的意思是:我们FPGA作为PCIE的从端设备,想要占据主端设备的地址空间,这些地址空间有多少段,每一段的大小是多少,都需要在本页进行配置。

上图中只有PF0_BAR0被勾选,说明我们只要一段空间;

“size”为4KB,即FPGA的PCIE占据主端地址空间长度为4KB;

“64Bit”没有勾选,说明地址是32位的;

Value:暂时不明确这个是什么作用,默认设置不影响使用。

Pcie to AXI Translation:地址转换增量。PCIE主端会根据BAR配置为其分配地址空间,假设主端分配的空间其实地址为A,Pcie to AXI Translation配置为B,那么主控端对A地址的访问,到达从端后将变为对B地址的访问。

举例说明:为FPGA分配的地址空间为0x58000000,Pcie to AXI Translation设置为0x00000000。那么在主端对0x58000000在到达FPGA段后将变成对地址0x00000000的访问。

第四页:本页保持默认设置即可,非必要不需要更改。将来用到会更新。

第五页:

AXI to PCIe translation:和上述Pcie to AXI Translation类似的一个配置。

PCIE为双向传输,主端可以访问从端的地址空间,同时也会为从端开辟一个地址空间,共从端访问,此时也可以加一个类似的地址偏移。具体规则如下

假设:

PCIE S_AXI端起始地址为A

AXI to PCIe translation设置为B

那么FPGA外设通过PCIE S_AXI端对地址A的访问等价于对主端地址B的访问。

举例说明,在FPGA内部,通过一个CDMA IP核与PCIE S_AXI端口连接,以实现FPGA对PCIE主端地址空间的访问

同时,PCIE A_AXI端口的地址分配如下图所示,这意味着CDMA可通过0x80000000这个地址开始通过PCIE访问主端地址空间

同时,AXI to PCIe translation设置为0x00000000

那么CDMA对0x80000000地址的访问,到了主端那边,就成了对地址0x00000000的访问。

通过上述的规则,我们可以有一个相对简单的设置方法。

首先,从端FPGA通过PCIE 访问主端地址空间是有限制的,不是所有空间都可以被访问到。比如主端是一个CPU,那么cpu软件开发人员可以设置从端pcie可以访问的地址空间范围,可能是一个DDR或电子盘所对应的空间。

我们就假设cpu端开放了DDR地址空间供从端PCIE设备访问,起始地址为0x80000000,大小为2GB,即0x80000000~0xFFFFFFFF。

那么我们可以设置AXI to PCIe translation为0x80000000,同时设置PCIE S_AXI的地址范围为0x80000000~0xFFFFFFFF。那么根据上述规则可以推导出:CDMA访问PCIE S_AXI端口,地址是0x80000000,到了CPU那边,地址仍为0x80000000,这样子就实现了CDMA直接对CPU端DDR的访问,中间再无需任何地址转换动作。

IP核后续的配置项都可以保持默认设置,不用管。若后续用到了,再在文章中进行更新。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值