Xilinx PCIe Gen3.0 For Uscale Plus之(一)数据组织形式

Xilinx PCIe 3.0随笔

  • AXI4-Stream接口说明
    • 数据对齐选项
      • 1. 64/128/256位接口:
      • 2. 512位接口
    • CQ,CC和RQ接口上的跨界选项

AXI4-Stream接口说明

          Xilinx PCIe3.0接口被组织为四个独立的AXIS的接口,通过这些接口可以在PCIe链路和用户应用程序之间传输数据:

  1. PCIe Completer Request(CQ)接口,来自链路的请求通过该接口传递到用户应用程序。
  2. PCIe Completer Completion(CC)接口,用户应用程序可以通过该接口将对CQ接口请求的响应发送回去。 用户应用程序可以将所有 Non-Posted的交易作为拆分交易进行处理,也就是说,它可以在发送请求的完成信息时继续在完成程序请求接口(CQ)上接受新请求。
  3. PCIe Requester Request(RQ)接口,用户应用程序可通过该接口生成对连接到该链路的远程PCIe设备的请求。
  4. PCIe Requester Completion(RC)接口,IP通过该接口将从链路接收的完成消息(响应于作为PCIe请求者的用户应用程序请求)返回给用户应用程序。
            Xilinx PCIe Gen3.0 For Uscale Plus之(一)数据组织形式_第1张图片
              四个接口均基于AMBA®AXI4-Stream协议规范。 这些接口的宽度可以配置为64、128、256或512位,用户时钟频率可以选择为62.5、125或250 MHz,具体取决于选择的通道数和PCIe协议版本。 仅Gen3 x16接口具有512位(64字节)的数据位宽,并以250位的时钟频率运行,可以在双向上提供16 GB / s的峰值传输速率,足以支持Gen3 x16 PCIExpress®链路 。
              下表列出了IP所支持的不同链接宽度和链接速度的接口宽度和用户时钟频率的有效组合。 在所有情况下,所有四个AXI4-Stream接口均配置为相同的宽度。此外,IP还包含以下接口,通过这些接口将状态信息传递到用户应用程序的PCIe主端:
    •     连接到请求者请求(RQ)接口的流控制状态接口,该接口提供有关当前可用传输信用的信息。这使用户应用程序可以基于可用信用调度请求,避免由于链接伙伴缺乏信用而阻塞控制器的内部管道。
    •     附加到请求者请求(RQ)接口的标签可用性状态接口,该接口提供有关可分配给未发布请求的标签(Tags)数量的信息。这样,当PCIe IP中的标签管理单元用尽所有可用于外发未发布请求的标签时,客户端可以根据可用Tags数量安排请求,不会被阻塞。
    •     附加到完成者请求(CQ)接口的接收消息接口,用于传递从链路接收的消息TLP。当从链路中接收到消息时,它可以选择向用户逻辑提供指示(而不是通过AXI4接口将整个消息传输到用户应用程序)。
                     Xilinx PCIe Gen3.0 For Uscale Plus之(一)数据组织形式_第2张图片

数据对齐选项

         事务层数据包(TLP)在每个AXI4-Stream接口上作为描述符传输,后跟有效载荷数据(当TLP具有有效载荷时)。描述符的固定大小在请求接口上为16个字节,在完成接口上为12个字节。在其发送端(朝向链路),IP核根据用户应用程序在描述符中提供的参数组装TLP报头。在其接收端(朝向用户界面),IP核从接收到的TLP的报头中提取参数,并构造描述符以传递给用户应用程序。根据AXI4-Stream接口协议中的定义,每个TLP均作为AXIS突发数据包进行传输。

1. 64/128/256位接口:

存在有效负载时,有两个选项可将有效负载的第一个字节相对于数据路径对齐。

  1. Dword对齐模式:在这种模式下,只要存在有效载荷,描述符字节后立即在下一个Dword位置跟随有效载荷字节。
  2. 地址对齐模式:在此模式下,有效负载可以从数据路径上的任何字节位置开始。对于从IP核传输到用户应用程序的数据,第一个字节的位置确定为:
              n = A mod w
    其中A是描述符中指定的内存或I / O地址(对于消息和配置请求,该地址为0),w是数据总线的已配置宽度(以字节为单位)。 描述符的末尾与有效负载的第一个字节的开头之间的任何间隙都将填充为空字节。

          对于从IP传输到用户应用程序的数据,数据对齐方式是根据数据存储块在用户存储器中指定的起始地址确定的。对于从用户应用程序传输到IP核的数据,当使用地址对齐模式时,用户应用程序必须使用tuser边带信号将第一个字节的位置显式传递给IP核。在地址对齐模式下,有效负载和描述符不允许重叠。 即,发送器在发送了描述符之后开始新的拍子以开始有效载荷的传输。 发送器用空字节填充描述符的最后一个字节和有效负载的第一个字节之间的所有间隙。

2. 512位接口

存在有效负载时,有两种方法可将有效负载的第一个字节相对于数据路径对齐:

  1. Dword-aligned模式:在这种模式下,只要存在有效载荷,描述符字节后立即在下一个Dword位置跟随有效载荷字节。如果D是描述符的大小(以字节为单位),则与有效负载的第一个字节相对应的通道编号确定为:
              n =(S + D +(A mod 4))mod 64
    其中S是描述符的第一个字节出现的通道编号(可以是0、16、32或48),D是描述符的宽度(可以是12或16字节),A是地址的用户存储器中数据块的第一个字节(对于消息和配置请求,地址为0)。
  2. 128b地址对齐模式:在此模式下,512位总线上有效负载的起点在128位边界上对齐。与有效载荷的第一个字节相对应的通道编号确定为:
              n =(S + 16 +(A mod 16))mod 64
    其中S是描述符第一个字节出现的通道编号(可以是0,16、32或48),A是内存或I / O与有效负载的第一个字节相对应的地址(对于消息和配置请求,该地址为0)。描述符的末尾与有效负载的第一个字节的开头之间的任何间隙都将填充为空字节。

          在四个用户界面之间,用于数据对齐的地址A的来源有所不同,
如下所述:
•CQ接口:对于通过CQ接口从内核传输到用户应用程序的数据,用于对齐的地址位是描述符中指定的低位地址,这是用户存储器中数据块的起始地址。
•CC接口:对于通过CC接口从用户应用程序传输到核心的完成数据,对齐方式基于用户在描述符中提供的地址位。
•RQ接口:对于通过RQ接口从用户应用程序传输到核心的内存请求,对齐方式基于用户使用边带信号在请求旁边提供的地址位。用户可以为A指定任何值,而与描述符中地址字段的设置无关。
•RC接口:对于通过RC接口从核心传输到用户应用程序的完成数据,对齐是基于用户提供的地址位以及在RQ接口上发出请求时使用边带信号的请求。内核从请求中保存对齐信息,并在通过RC接口传递完成有效负载时使用它来对齐相应完成的有效负载。
          128b地址对齐模式将512位AXI拍子分为四个每个128位的子拍子。有效负载只能在描述符之后的子拍中开始。有效载荷和描述符不允许在同一子拍中重叠。发送器使用空字节填充描述符的最后一个字节和有效载荷的第一个字节之间的所有间隙。可以通过设置IP自定义为请求者(RQ,RC)和完成者(CQ,CC)接口独立选择对齐方式图形用户界面。

CQ,CC和RQ接口上的跨界选项

        CQ,CC和RQ接口具有跨界选项,该选项允许在同一拍频中通过接口传输多达两个TLP。这样可以提高小型TLP的吞吐量以及TLP在上半拍结束时的吞吐量。在Vivado®IDE中进行核心配置时,可以为每个接口独立启用跨界。 straddle选项只能与Dword对齐模式一起使用。
        RC接口上的跨界选项:RC接口支持跨界选项,该选项允许在同一拍子中通过接口传输多达四个TLP。可以在Vivado®IDE中进行核心配置时启用此选项。启用后,内核可能会在字节通道0、16、32或48上启动新的完成TLP。因此,启用此选项后,内核就有可能在AXI总线上以相同的节拍完全发送四个完成TLP,如果它们每个的有效载荷大小都等于或小于一个Dword。仅当将RC接口配置为Dword对齐模式时,才可以使用straddle选项。
        如果将请求者完成(RC)接口配置为256或512位的宽度,具体取决于TLP的类型和有效负载大小,则如果256位最大为1个TLP或512位最大为2个TLP,则接口使用效率可能会很低。对RC接口的这种低效使用可能导致完成FIFO溢出。必须:
 • 限制未完成的未发布请求的数量,以使接收到的完成总数小于64,并且保持在所选FIFO大小的完成范围之内,或者
 • 使用RC接口straddle选项。

你可能感兴趣的:(PCIe,Xilinx,FPGA)