名称 | I/O | 宽度 | 描述 |
---|---|---|---|
s_axis_cc_tdata | 输入 | 512 | 从用户应用到 PCIe 核的完成数据。 |
s_axis_cc_tuser | 输入 | 81 | 这组信号中包含所传输的 TLP 的边带信息。当 s_axis_cc_tvalid 为高电平时,这些信号有效。 下表描述了这组信号中的每个信号。 |
s_axis_cc_tlast | 输入 | 1 | 用户应用必须在包的最后一个周期内断言此信号有效以指示包结束。在单一节拍 (beat) 内完成 TLP 传输时,用户应用必须在传输的首个周期内设置该位。 仅当禁用“straddle”(跨接)选项时,此输入才可供核使用。启用跨接选项时,该核会忽略此输入的设置,改为使用 s_axis_cc_tuser 总线中的 is_sop/is_eop 信号来判定 TLP 的起始和结束位置。 |
s_axis_cc_tkeep | 输入 | 16 | 传输期间断言此总线的位 i 有效对于核而言,表示 s_axis_cc_tdata 总线的 Dword i 包含的数据有效。用户逻辑必须针对从描述符的首个 Dword 开始到有效载荷的最后一个 Dword 为止的所有 Dword 将该位连续设置为 1。因此,在包的所有节拍中,s_axis_cc_tdata 必须全部设置为 1,但在包的总大小并非数据总线宽度的整数倍(在 2 个 Dword 内都是如此)的情况下,最后一个节拍除外。对于有效载荷传输的 Dword 对齐模式和 128b 地址对齐模式都是如此。 仅当在 CC 接口上未启用跨接选项时,tkeep 位才有效。如启用跨接,那么核在整个接口中接收数据时,会忽略这些位的设置。在此情况下,用户逻辑必须在 s_axis_cc_tuser 总线中设置 is_sop/is_eop 信号,以作为通过该接口传输的 TLP 的起始和结束信号。 |
s_axis_cc_tvalid | 输入 | 1 | 用户应用在 s_axis_cc_tdata 总线上驱动有效数据时必须始终断言此输出有效。用户应用必须在包传输期间使有效信号保持处于断言有效状态。该核会使用 s_axis_cc_tready 信号来调整数据传输节奏。 |
s_axis_cc_tready | 输出 | 4 | PCIe 核激活此信号表明它已准备好接受数据。在同一周期内 s_axis_cc_tvalid 和 s_axis_cc_tready 均断言有效时,就会通过该接口传输数据。 当有效信号为高电平时,如果核断言就绪信号无效,那么用户逻辑必须在总线上保留数据,并使有效信号保持处于断言有效状态,直至该核断言就绪信号有效为止。 对于此输出端口,每个位均指示相同的值,因此用户逻辑可以使用任何位。 |
位索引 | 名称 | 宽度 | 描述 |
---|---|---|---|
1:0 | is_sop[1:0] | 2 | 用作为此节拍中新 TLP 的起始信号。这些输出在 TLP 的第一拍中设置。禁用跨接时,仅限 is_sop[0] 有效。启用跨接时,设置如下:
仅当启用“straddle”(跨接)选项时,此字段才可供核使用。禁用跨接时,核使用 tlast 来判定传入 TLP 的第一拍。 |
3:2 | is_sop0_ptr[1:0] | 2 | 用于指示在此节拍中开始的第 1 个 TLP 的第 1 个字节的位置:
仅当启用“straddle”(跨接)选项时,此字段才可供核使用。禁用跨接时,用户逻辑必须始终在字节通道 0 中启动 TLP。 |
5:4 | is_sop1_ptr[1:0] | 2 | 用于指示在此节拍中开始的第 2 个 TLP 的第 1 个字节的位置:
仅当在 CC 接口上启用跨接选项时,才使用此输出。随后,用户将在同一节拍中跨接 2 个 TLP。 |
7:6 | is_eop[1:0] | 2 | 用作为 TLP 在此节拍中结束的信号。这些输出在 TLP 的最后一个节拍中设置。禁用跨接时,仅限 is_eop[0] 有效。启用跨接时,设置如下:
仅当启用“straddle”(跨接)选项时,此字段才可供核使用。禁用跨接时,核使用 tlast 和 tkeep 来判定最后一拍和 EOP 的位置。 |
11:8 | is_eop0_ptr[3:0] | 4 | 用于指示在此节拍中结束的第 1 个 TLP 的最后一个 Dword 的偏移。当 is_eop[0] 断言有效时,此输出有效。 仅当启用“straddle”(跨接)选项时,此字段才可供核使用。 |
15:12 | is_eop1_ptr[3:0] | 4 | 用于指示在此节拍中结束的第 2 个 TLP 的最后一个 Dword 的偏移。当 is_eop[1] 断言有效时,此输出有效。 仅当启用“straddle”(跨接)选项时,此字段才可供核使用。 |
16 | discontinue | 1 | 如果传输期间用户应用在所传输的数据中检测到错误(例如,读取来自存储器的有效载荷时检测到不可纠正 ECC 错误)并且需要中止该数据包,即可断言此信号有效。核会将链路上对应 TLP 置空,以避免数据损坏。 在传输期间,用户逻辑可在除 TLP 第一拍之外的任何节拍中断言此信号有效。它可以选择在周期内发出错误信号处提前终止该数据包,或者也可以继续处理,直至将有效载荷的所有字节都交付到核为止。针对后者,该核会针对数据包的后续节拍将此错误作为粘滞错误来处理,即使用户逻辑在包结束前断言 discontinue 信号无效也是如此。 仅当 s_axis_cc_tvalid 为高电平时,才能断言 discontinue 信号有效。仅当 s_axis_cc_tready 为高电平时,核才会对此信号进行采样。因此,一旦断言有效后,在 s_axis_cc_tready 变为高电平之前不应将其断言无效。 在 CC 接口上启用跨接选项时,如果 TLP 结束时已断言 discontinue 信号有效,那么在同一节拍内,用户不应启动新 TLP。 当核配置为端点时,核也会使用高级错误报告 (AER) 向所连接到的根联合体报告此错误。 |
80:17 | parity | 64 | 256 位数据的奇校验。在核上启用奇偶校验检查时,用户逻辑必须将该逻辑的位 i 设置为针对 s_axis_cc_tdata 的字节 i 计算所得的奇校验。 检测到奇偶校验错误时,核会将链路上的对应 TLP 置空,并将其报告为“Uncorrectable Internal Error”(不可纠正的内部错误)。 如果在核中未启用奇偶校验检查,那么奇偶校验位可永久绑定到 0。 |