用于 PCI Express* 的 英特尔® FPGA R-tile Avalon® Streaming IP用户指南

ID 683501
日期 6/26/2023
Public
文档目录

4.3.1.4. Avalon® Streaming TX接口

应用层通过 Avalon® -ST TX接口将数据发送到R-Tile PCI Express IP核将数据传输到事务层。R-Tile PCI Express IP核必须在发送之前置位pX_tx_st_ready_o

如果R-Tile PCI Express IP核以双宽度配置Configuration Mode 0 (1x16)配置,则有四个256位数据宽度的段,从而允许每周期多个 TLP。这意味着有四个pX_tx_stN_sop_i信号和四个pX_tx_stN_eop_i用于Configuration Mode 0 (1x16)。

该接口也不遵循pX_tx_st_ready_opX_tx_stN_dvalid_i信号之间由Avalon 接口规范指定的固定延迟。

Configuration Mode 0 (1x16) 和双宽度配置下的R-Tile PCI Express 核提供四个段,每个段有256位数据(pX_tx_stN_data_i[255:0]),128位头(pX_tx_stN_hdr_i[127:0])和32位TLP前缀(pX_tx_stN_prefix_i[31:0])。如果该核以Configuration Mode 0 (1x16)配置,则全部四个段都被使用,于是数据总线成为总共1024位总线,由pX_tx_st0_data_i[255:0]pX_tx_st1_data_i[255:0]pX_tx_st2_data_i[255:0]pX_tx_st3_data_1[255:0]组成。

由32:1 XOR完成奇偶校验生成(即,每32个数据,头或前缀位有一个奇偶校验位)。

表 57.  Avalon Streaming TX接口信号
信号名称 方向 描述 EP/RP/BP 时钟域
pX_tx_stN_data_i[255:0]其中

X = 0,1,2,3(IP核个数)

N = 0,1,2,3(段数)

输入

用于发送的Application Layer数据。数据总线以多个256位的段组织而成。在x16模式下,所有4个段都被有效用于形成1024位数据总线。在x8模式下,2个段被用于组成一个512位数据总线。在x4模式下,每个256位的段是一个独立的总线。

Application Layer必须为TX接口提供正确格式的TLP。当对应的tx_stN_valid_i信号被置位时,数据有效。

报文TLP的映射与Transaction Layer TLP的映射相同都具有4个双字头。用于头(header)中长度和地址字段的数据周期数必须正确。发布具有错误数据周期数的数据包会导致TX接口挂起并且接收进一步的请求。

请注意: tx_stN_sop_itx_stN_eop_i周期之间不得有空闲周期,除非解除置位tx_st_ready_o时存在背压。
EP/RP/BP coreclkout_hip
pX_tx_stN_hdr_i[127:0]其中

X = 0,1,2,3(IP核个数)

N = 0,1,2,3(段数)

输入 这是要发送的头,遵循PCIe规范规定的TLP头的格式。请参考以下指导:
  • R-Tile Avalon® Streaming Intel FPGA IP for PCIe以EP或RP模式配置,则会自动计算Completer/Requester ID,并且应用程序逻辑不需要将此信息作为发送中的TLP头的一部分来提供。请注意,当此IP以TLP Bypass模式配置时,本指导内容不适用。
  • 当R-Tile Avalon® Streaming Intel FPGA IP for PCIe以EP模式配置时,SR-IOV被启用,请遵循SR-IOV支持实现BDF约束部分的内容。

tx_stN_sop_i信号被置位时,该信号有效

EP/RP/BP coreclkout_hip
pX_tx_stN_prefix_i[31:0]其中

X = 0,1,2,3(IP核个数)

N = 0,1,2,3(段数)

输入

要传输的TLP前缀,它遵循PCIe规范指定的TLP前缀格式。支持PASID。

当对应的tx_stN_sop_i信号置位时,这些信号有效。

TLP前缀使用Big Endian实现(即,Fmt字段在位[31:29]中,Type字段在位[28:24]中)。

如果给定的TLP无前缀,则该双字(dword)(包括Fmt字段)为全零。

EP/RP/BP coreclkout_hip
pX_tx_stN_sop_i其中

X = 0,1,2,3(IP核个数)

N = 2,3(段数)

输入 tx_stN_valid_i的对应位一起被置位时,指示TLP的第一个周期。对于x16配置:
  • tx_st3_sop_i:置位后,指示tx_st3_data_i[255:0]中的TLP开始。
  • tx_st2_sop_i:置位后,指示tx_st2_data_i[255:0]中的TLP开始。
  • tx_st1_sop_i:置位后,指示tx_st1_data_i[255:0]中的TLP开始。
  • tx_st0_sop_i:置位后,指示tx_st0_data_i[255:0]中的TLP开始。

这些信号在每个TLP被置位一个时钟周期。它们还认证对应的tx_stN_hdr_itx_stN_tlp_prfx_i信号。

注: pX_tx_stN_sop_i 脉冲只能在segments 0和/或2 (st0和/或st2)上发送。
EP/RP/BP coreclkout_hip
pX_tx_stN_eop_i其中

X = 0,1,2,3 (IP核个数)

N = 0,1,2,3(段数)

输入 tx_stN_valid_i的对应位一起被置位时,指示TLP的最后一个周期。对于x16配置:
  • tx_st3_eop_i:置位后,指示tx_st3_data_i[255:0]中的TLP结束。
  • tx_st2_eop_i:置位后,指示tx_st2_data_i[255:0]中的TLP结束。
  • tx_st1_eop_i:置位后,指示tx_st1_data_i[255:0]中的TLP结束。
  • tx_st0_eop_i:置位后,指示tx_st0_data_i[255:0]中的TLP结束。

这些信号在每个TLP被置位一个时钟周期。

EP/RP/BP coreclkout_hip
pX_tx_stN_dvalid_i其中

X = 0,1,2,3(IP核个数)

N = 0,1,2,3(段数)

输入

认证发送到IP核中的tx_stN_data_i对应段的数据处于就绪周期。

要加速时序收敛,Intel建议您寄存tx_st_ready_otx_stN_dvalid_i信号。

EP/RP/BP coreclkout_hip
pX_tx_stN_hvalid_i其中

X = 0,1,2,3(IP核个数)

N = 0,1,2,3(段数)

输入

认证发送到IP核中的tx_stN_data_i对应段的头处于就绪周期。

要加速时序收敛,英特尔建议您寄存tx_st_ready_otx_stN_hvalid_i信号。

EP/RP/BP coreclkout_hip
pX_tx_stN_pvalid_i其中

X = 0,1,2,3(IP核个数)

N = 0,1,2,3(段数)

输入

认证发送到IP核中的tx_stN_data_i对应段的前缀处于就绪周期。

要加速时序收敛,Intel建议您寄存tx_st_ready_otx_stN_pvalid_i信号。

EP/RP/BP coreclkout_hip
pX_tx_stN_data_par_i[Z:0]其中

X = 0,1,2,3(IP核个数)并且Z因为核的不同而不同。

N = 0,1,2,3(段数)

输入

tx_stN_data_i的奇偶校验。Bit [0]对应于tx_stN_data_i[31:0],bit [1]对应于tx_stN_data_i[63:32],依此类推。

默认情况下,PCIe Hard IP生成TX数据的奇偶校验。

EP/RP/BP coreclkout_hip
pX_tx_stN_hdr_par_i[3:0]其中

X = 0,1,2,3(IP核个数)

N = 0,1,2,3(段数)

输入

tx_stN_hdr_i的奇偶校验。

默认情况下,PCIe Hard IP生成TX头的奇偶校验。

EP/RP/BP coreclkout_hip
pX_tx_stN_prefix_par_i其中

X = 0,1,2,3(IP核个数)

N = 0,1,2,3(段数)

输入

tx_stN_tlp_prfx_i的奇偶校验。

默认情况下,PCIe Hard IP生成TX TLP前缀的奇偶校验。

EP/RP/BP coreclkout_hip
pX_tx_st_ready_o其中

X =0,1,2,3(IP核个数)

输出

指示PCIe Hard IP已准备好接受数据。

tx_st_ready_o被R-Tile Avalon Streaming Intel FPGA IP for PCIe驱动到高电平时,Application逻辑可能会将tx_stN_valid_i信号置位高并传输数据。

tx_st_ready_o被R-Tile Avalon Streaming Intel FPGA IP for PCIe驱动到低电平,Application逻辑必须在最多16个时钟周期内将tx_stN_valid_i驱动到低电平。

请参阅Avalon Streaming TX Interface pX_tx_st_ready_o Behavior 了解更多信息。

可解除置位pX_tx_st_ready_o信号的情况如下:
  • LTSSM不处于L0状态。
  • TLP重试正在进行中。
  • R-Tile Avalon-ST IP正在忙于发送内部生成的TLP。
  • 内部R-Tile TX FIFO已满。
EP/RP/BP coreclkout_hip

例如,以下 Avalon® Streaming TX接口时序显示了在具有跨多个段的数据的back-to-back TLP情况下,Avalon Streaming TX接口的行为。如下文本描述了每个时钟周期的波形。

  1. 时钟周期1:R-Tile Intel FPGA IP for PCI Express置位p0_tx_st_ready_o信号,指示Hard IP已准备接受从Application逻辑来的TLP。
  2. 时钟周期2:
    1. 第一个TLP (T0)的开始在segment 0中,由置位p0_tx_st0_sop_i来指示。
    2. 置位信号p0_tx_st0_hvalid_i以验证p0_tx_st0_hdr_i总线中第一个TLP (T0H0)的头。
    3. 置位信号p0_tx_st0_dvalid_i来验证p0_tx_st0_data_i总线中第一个TLP (T0D0)的数据。
    4. 置位 p0_tx_st1_dvalid_i来验证p0_tx_st1_data_i总线中第一个TLP (T0D1)数据的下一个部分。
    5. 置位该信号p0_tx_st2_dvalid_i以验证p0_tx_st2_data_i总线中第一个TLP (T0D2)的数据的下一个部分 。
    6. 置位信号 p0_tx_st3_dvalid_i来验证p0_tx_st3_data_i总线中第一个TLP (T0D3)的数据的最后部分。
    7. 第一个TLP (T0)的结尾在segment 3中,由置位p0_tx_st3_eop_i来标记。
  3. 时钟周期3:
    1. 下一个TLP (T1),到达segment 0,由p0_tx_st0_sop_i保持在高电平作为标记。
    2. 置位该信号p0_tx_st0_hvalid_i以验证p0_tx_st0_hdr_i总线中此TLP (T1H0)的头。
    3. 置位信号p0_tx_st0_dvalid_i以验证p0_tx_st0_data_i总线中此TLP (T1D0)的数据
    4. 置位信号p0_tx_st1_dvalid_i,以验证p0_tx_st1_data_i总线中此TLP (T1D1)数据的下一个部分。
    5. 置位信号p0_tx_st2_dvalid_i以验证p0_tx_st2_data_i总线中该TLP (T1D2)数据的下一个部分。
    6. 置位信号p0_tx_st3_dvalid_i以验证p0_tx_st3_data_i总线中TLP (T1D2)数据的最后部分。
    7. TLP (T1)的结尾在segment 3中,通过将p0_tx_st3_eop_i保持在高电平作为标记。
图 32.  Avalon® Streaming TX接口时序
注: 对于Configuration Mode 0 (1x16),TLP(pX_tx_stN_sop_i)的开始只能发生在段0(st0)或段2(st2)。