CC 接口上的跨接选项 - 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_cc_tkeep 信号和 m_axis_cc_tlast 信号。并改为使用 m_axis_cc_tuser 总线中所提供的以下信号来执行 TLP 的界定。

  • is_sop[0]:当有至少 1 个完成 TLP 从节拍中开始时,在该节拍中此输入必须设为高电平。此 TLP 的描述符的第 1 个字节的位置判定方式为:
    • 如果前一个 TLP 在此节拍前结束,那么描述符的第 1 个字节位于字节通道 0 中。
    • 如果前一个 TLP 在此节拍继续,那么此描述符的第 1 个字节位于字节通道 32 中。仅当前一个 TLP 在当前节拍中结束时(即同时设置 is_eop[0] 时),才有可能出现此情况。
  • is_sop0_ptr[1:0]:设置 is_sop[0] 时,该字段必须指示当前节拍中起始的第 1 个完成 TLP 的偏移。有效设置包括 2'b00(TLP 起始位置为 Dword 0)和 2'b10(TLP 起始位置为 Dword 8)。
  • is_sop[1]:当有 2 个完成 TLP 在同一拍内起始时,在该节拍中此输入必须设置为高电平。第 1 个 TLP 必须始终在字节位置 0 开始,第 2 个 TLP 则在字节位置 32 开始。仅当前一个 TLP 在同一拍内在字节位置 32 之前结束时,用户应用才能在字节位置 32 启动第 2 个 TLP;即,仅当 is_eop[0] 也在同一拍内设置时才会如此。
  • is_sop1_ptr[1:0]:设置 is_sop[1] 时,该字段必须提供当前节拍中起始的第 2 个请求 TLP 的偏移。其唯一有效设置为 2'b10(TLP 起始位置为 Dword 8)。
  • is_eop[0]:此输入用于指示完成 TLP 结束。断言此输入有效即表示有至少 1 个 TLP 在此节拍中结束。
  • is_eop0_ptr[3:0]:断言 is_eop[0] 有效时,is_eop0_ptr[3:0] 必须提供在此节拍中结束的对应 TLP 的最后一个 Dword 的偏移。
  • is_eop[1]:当有 2 个 TLP 在当前节拍中结束时,此输入设置为高电平。:仅当 is_eop[0] 信号和 is_sop[0] 信号在同一拍内同样为高电平时,才能设置 is_eop[1]。
  • is_eop1_ptr[3:0]:断言 is_eop[1] 有效时,is_eop1_ptr[3:0] 必须提供在此节拍中结束的第 2 个 TLP 的最后一个 Dword 的偏移。由于第 2 个 TLP 只能在字节通道 32 上起始,因此只能在 43-63 范围内的字节通道上结束。因此,偏移 is_eop1_ptr[3:0] 只能取 10-15 范围内的值。

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

图 1. 在启用跨接选项的完成器完成接口上执行完成 TLP 的传输(512 位接口)