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

ID 683501
日期 3/28/2022
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

4.4.1.4. Avalon® Streaming TX接口

Application Layer通过 Avalon® -ST TX接口将数据发送到R-tile PCI Express IP核的Transaction Layer。Transaction Layer必须在传输开始前,先置位tx_st_ready_o。置位tx_st_ready_o后,数据包的传输一定不可间断。

如果此IP是以1x16模式下双宽配置,则有4个256位数据宽的段,可允许每周期多个TLP。

当R-tile IP运行于1x16配置时,该接口支持每个段每周期一个tx_st_sop_i信号和一个tx_st_eop_i信号。这就意味着有4个tx_st_sop_i信号和4个tx_st_eop_i信号用于此x16 IP核。该接口也不遵循由Avalon Interface Specifications指定的tx_st_ready_otx_st_valid_i信号之间的固定频率。在解除置位tx_st_ready_otx_st_valid_i之间最大延迟(即,16个coreclkout_hip周期)内的任何时间都可接收数据。

注: tx_stN_sop_i脉冲只能在segments 0和/或segments2 (st0 和/或st2)上发送。

以双宽度配置的x16核提供4个段,每段为256位(tx_st_data_i[255:0]),128位头(tx_st_hdr_i[127:0]),和32位TLP前缀(tx_st_tlp_prfx_i[31:0])。如果该核以1x16模式配置,则4个段都会被使用,因而该数据总线成为一个由tx_st0_data_i[255:0]tx_st1_data_i[255:0]tx_st2_data_i[255:0]tx_st3_data_1[255:0]组成的,总计1024位的总线。该数据包可在任何段中开始,如tx_stN_sop_i信号所示。

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

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

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

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

Input

用于传输的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(段数)

Input 要传输的头(header), 遵循PCIe规范的TLP header格式,requester ID/completer ID字段(tx_stN_hdr_i[95:80])除外:
  • tx_stN_hdr_i[95:84]: tx_st_vf_num[11:0]
  • tx_stN_hdr_i[83]: tx_st_vf_active
  • tx_stN_hdr_i[82:80]: tx_st_func_num[2:0]

置位对应的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(段数)

Input

要传输的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 = 0,2(段数)

Input 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(段数)

Input 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(段数)

Input

认证发送到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(段数)

Input

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

要加速时序收敛,Intel建议您寄存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(段数)

Input

认证发送到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(段数)

Input

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(段数)

Input

tx_stN_hdr_i的奇偶校验。

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

EP/RP/BP coreclkout_hip
pX_tx_stN_prefix_par_i其中

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

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

Input

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核个数)

Output

指示PCIe Hard Ip已准备好接受数据。该readyLatency的最大值是16个周期。

如果由PCIe Hard IP中的Transaction Layer将tx_st_ready_o置位在周期<n>中,则<n> + readyLatency是一个就绪周期,在此期间Application可能置位tx_stN_valid_i并传输数据。

如果Transaction Layer在周期<n>解除置位tx_st_ready_o,则Application必须在周期<n>后的readyLatency个周期内解除置位tx_stN_valid_i

可在如下条件下解除置位tx_st_ready_o
  • LTSSM还未准备就绪。
  • 正在处理Retry。
  • 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保持在高电平作为标记。
图 27.  Avalon® Streaming TX接口时序
注: tx_stN_sop_i脉冲只能在segments 0和/或segments2 (st0 和/或st2)上发送。