CQ 接口上的跨接选项 - 1.3 简体中文

UltraScale+ 器件 Integrated Block for PCI Express 产品指南 (PG213)

Document ID
PG213
Release Date
2022-11-16
Version
1.3 简体中文

当上一个请求已终止于数据总线上的 Dword 位置 7 或者在此位置前终止时,核具备在同一拍内在请求器完成接口上传输新请求的功能。在 Vivado® IDE 中进行核自定义期间可启用此跨接选项。跨接选项只能配合 Dword 对齐模式一起使用。

当启用跨接选项时,在 AXI4-Stream 接口上,请求 TLP 将作为无数据包边界的连续数据流进行传输。因此,在判定接口上交付的 TLP 的边界过程中不使用 m_axis_rc_tkeep 信号和 m_axis_rc_tlast 信号(使用跨接选项时,核会永久性将 m_axis_rc_tkeep 的位全部设置为 1,将 m_axis_rc_tlast 全部设置为 0)。并改为使用 m_axis_rc_tuser 总线中所提供的以下信号来执行 TLP 的界定。

  • is_sop[0]:当有至少 1 个请求 TLP 从节拍中开始时,在该节拍中,核就会将此输出设置为高电平有效。此 TLP 的描述符的第 1 个字节的位置判定方式为:
    • 如果前一个 TLP 在此节拍前结束,那么描述符的第 1 个字节位于字节通道 0 中。
    • 如果前一个 TLP 在此节拍继续,那么此描述符的第 1 个字节位于字节通道 32 中。仅当前一个 TLP 在当前节拍中结束时(即同时设置 is_eop[0] 时),才有可能出现此情况。
  • is_sop[1]:当有至少 2 个请求 TLP 从同一拍中开始时,在该节拍中,核会断言此输出有效。第 1 个 TLP 始终在字节位置 0 开始,第 2 个 TLP 则在字节位置 32 开始。仅当前一个 TLP 在同一拍内在字节位置 32 之前结束时,核才能在字节位置 32 启动第 2 个 TLP;即,仅当 is_eop[0] 也在同一拍内设置时才会如此。
  • is_eop[0]:此输出用于指示请求 TLP 结束。断言此输入有效即表示有至少 1 个 TLP 在此节拍中结束。
  • is_eop0_ptr[3:0]:断言 is_eop[0] 有效时,is_eop0_ptr[3:0] 提供在此节拍中结束的对应 TLP 的最后一个 Dword 的偏移。对于含有效载荷的 TLP,最后一个字节的偏移同样可根据 TLP 的起始地址和长度来确定,或者根据字节使能信号 byte_en[63:0] 来确定。
  • is_eop[1]:此输出用于指示有至少 2 个 TLP 在同一拍内结束。断言此输出有效即表示有至少 1 个 TLP 在此节拍中结束。仅当已设置 is_eop[0] 时,才能同时设置 is_eop[1]
  • is_eop1_ptr[3:0]:断言 is_eop[1] 有效时,is_eop1_ptr[3:0] 提供在此节拍中结束的第 2 个 TLP 的最后一个 Dword 的偏移。对于含有效载荷的 TLP,最后一个字节的偏移同样可根据 TLP 的起始地址和长度来确定,或者根据字节使能信号 byte_en[63:0] 来确定。由于第 2 个 TLP 只能在字节通道 32 上起始,因此只能在 47-63 范围内的字节通道上结束。因此,偏移 is_eop1_ptr[3:0] 只能取 11-15 范围内的值。
图 1. 在启用跨接选项的完成器请求接口上执行请求 TLP 的传输

上图显示了启用跨接选项的情况下,在完成器请求接口上传输 4 个请求 TLP 的过程。对于所有 TLP,有效载荷的第 1个 Dword 始终位于描述符之后,且没有任何间隙。第 1 个请求 TLP (REQ 1) 从节拍 1 的 Dword 位置 0 开始,并在节拍 3 的 Dword 位置 5 结束。第 2 个 TLP (REQ 2) 从同一拍内的 Dword 位置 8 开始。此第 2 个 TLP 仅含 1 个有效载荷(其中含 4 个 Dword),因此同样在同一拍内结束。第 3 和第 4 个请求 TLP 完全在节拍 4 中传输,因为 REQ 3 仅含 1 个有效载荷(含 1 个 Dword),而 REQ 4 则不含任何有效载荷。