含成功完成状态的完成包 - 1.3 简体中文

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

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

每次从完成器请求接口接收到 1 个非转发请求时,用户应用都必须向核的 CC 接口返回 1 个完成 (Completion) 包。当请求完成且不含任何错误时,用户应用必须返回含成功完成 (SC) 状态的完成包。根据请求类型,此完成包可能包含有效载荷,也可能不含有效载荷。此外,当数据块大小超出配置的有效载荷最大大小时,与请求关联的数据可拆分为多个拆分完成 (Split Completion) 包。用户逻辑负责根据需要将数据块拆分为多个拆分完成包。用户应用必须将每个拆分完成包作为独立 AXI4-Stream 数据包(包含其自己的 12 字节描述符)通过完成器完成接口进行传输。

在本章的时序图示例中,要传输的数据块的起始 Dword 地址(如描述符的下位地址字段的位 [6:2] 中所述)假定为 (m × 8 + 1),其中 m 为整数。数据块的大小假定为 n 个 Dword,其中,n = k × 32 + 28 且 k > 0

CC 接口支持 2 种数据对齐模式:Dword 对齐和地址对齐。以下时序图显示了当接口宽度分别配置为 64 位、128 位和 256 位时,从用户应用接收到完成包(采用 Dword 对齐模式)后,通过 CC 接口来进行传输的过程。在此情况下,有效载荷的第一个 Dword 紧接在描述符之后开始。当数据块并非 4 字节的倍数时,或者当有效载荷的开始位置与 Dword 地址边界未对齐时,用户应用必须添加空字节以使有效载荷对齐到 Dword 边界,并使有效载荷成为 Dword 数量的整数倍。例如,当数据块从字节地址 7 开始且大小为 3 字节时,用户应用必须在第 1 个字节前添加 3 个空字节,并在数据块末尾添加 2 个空字节,以使其长度达到 2 个 Dword。并且,对于非连续读取,数据块中返回的字节并非全都有效。在此情况下,用户应用必须在适当位置返回有效字节,并根据需要在有效字节间的间隙内填充空字节。此接口不提供任何信号用于指示有效载荷中的有效字节。此类信号并非必需,原因在于请求器会负责保留请求中字节使能的记录,并丢弃来自完成包的无效字节。

在 Dword 对齐模式下,传输从 12 个描述符字节开始,紧随其后即为有效载荷字节。用户应用必须在数据包的整个持续时间段保持 s_axis_cc_tvalid 信号处于断言有效状态。集成块会将数据包传输期间断言无效的 s_axis_cc_tvalid 作为错误来处理,并将链路上发射的对应完成 TLP 置空,以避免数据损坏。

用户应用还必须在数据包的最后一拍中断言 s_axis_cc_tlast 信号有效。如果集成块未准备好接受数据,那么可在任意周期内断言 s_axis_cc_tready 无效。在集成块含 deasserted s_axis_cc_tready 的时钟周期内,用户应用不得更改 CC 接口上的值。

图 1. 完成器完成接口上的正常完成包的传输(Dword 对齐模式、64 位接口)
图 2. 完成器完成接口上的正常完成包的传输(Dword 对齐模式、128 位接口)
图 3. 完成器完成接口上的正常完成包的传输(Dword 对齐模式、256 位接口)

在地址对齐模式下,有效载荷的交付始终从描述符的最后一个字节后的节拍中开始。对于存储器读取完成包,根据有效载荷的第 1 个有效字节的地址,有效载荷的第 1 个字节可显示在任意字节通道上。对于所有其它完成包,有效载荷必须从字节通道 0 开始。

以下时序图显示了当接口宽度分别配置为 64 位、128 位和 256 位时,通过完成器完成接口来传输存储器读取完成包(采用地址对齐模式)的过程。为便于演示,要传输的数据块的起始 Dword 地址(如描述符的下位地址字段的位 [6:2] 中所述)假定为 (m × 8 +1),其中 m 为整数。数据块大小假定为 n 个 Dword,其中,n = k × 32 + 28 且 k > 0

图 4. 完成器完成接口上的正常完成包的传输(地址对齐模式、64 位接口)
图 5. 完成器完成接口上的正常完成包的传输(地址对齐模式、128 位接口)
图 6. 完成器完成接口上的正常完成包的传输(地址对齐模式、256 位接口)