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

ID 683501
日期 3/28/2022
Public

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

文档目录

4.4.1.3. Avalon® Streaming RX接口

Application Layer通过 Avalon® Streaming RX接口接收从R-tile PCI Express IP核的Transaction Layer来的数据。该应用程序必须在传输开始前先置位rx_st_ready_i。对于R-tile,rx_st_ready_i必须始终保持在高电平。用户逻辑中的缓冲控制需要由RX Flow Control接口来处理。请参阅RX流程控制接口了解更多详细信息。

R-tile IP在1x16配置运行时,此接口支持每周期4个rx_st_sop_o信号和4个rx_st_eop_o信号。它也不会遵循由 Avalon® Interface Specifications指定的rx_st_ready_irx_st_valid_o之间的固定延迟。

x16核提供4个段,每段为256位数据(rx_st_data_o[255:0]),128位头(rx_st_hdr_o[127:0]),和32位TLP前缀(rx_st_ prfx_o[31:0])。如果该核以1x16模式配置,将会使用4个段,因而该数据总线成为一个具有4个rx_st_data_o[255:0]的1024位总线。数据包可以在任何段中开始,如每个段中rx_st_sop_o信号所示。

注:
当Hard IP接收到多个SOP的情况下,仅可在Avalon Streaming RX接口的单个时钟周期上观察到2个SOP,并且可能的组合,如下:
  • rx_stN_sop_i脉冲segment 0和segment 2(st0和st2),或者
  • rx_stN_sop_i脉冲segment 1和segment 3(st1和st3)。

对于在同一时钟周期到达的多个TLP,应用程序需要按照段索引的顺序(即,段st0->st1->st2->st3->st0)来处理TLP。对于跨越多个段的TLP,此应用程序逻辑也需要按照段索引的顺序来处理该TLP(段st0->st1->st2->st3->st0)

如果以2x8模式配置该核,并且将该IP核设置为双宽度模式,则仍然有4个 Avalon® Streaming段(每x8端口两个)。

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

表 54.  Avalon Streaming RX接口信号
信号名称 方向 描述 EP/RP/BP 时钟域
pX_rx_stN_data_o[W:0]其中

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

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

Output 这是Receive数据总线。Application Layer接收从该总线上IP核的Transaction Layer来的数据。 EP/RP/BP coreclkout_hip
pX_rx_stN_hdr_o[127:0]其中

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

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

Output 这是接收到的头,其遵循PCIe specifications指定的TLP头格式。 EP/RP/BP coreclkout_hip
pX_rx_stN_prefix_o[31:0]其中

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

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

Output

这是接收到的第一个TLP前缀,它遵循PCIe规范指定的TLP前缀格式。支持PASID。

当对应的rx_st_sop_o被置位时,该信号有效。

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

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

EP/RP/BP coreclkout_hip
pX_rx_stN_sop_o其中

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

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

Output

在该信号与对应的rx_stN_valid_o位同时被置位时,发出第一个周期的TLP信号。

rx_stN_sop_o:置位时,发送rx_stN_data_o[255:0]上TLP开始的信号。

例如,置位后,rx_st2_sop_o发送rx_st2_data_o[255:0]上TLP开始的信号。

EP/RP/BP coreclkout_hip
pX_rx_stN_eop_o其中

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

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

Output

在该信号与对应的rx_stN_valid_o位同时被置位时,发出第一个周期的TLP信号。

rx_stN_eop_o:置位时,发送rx_stN_data_o[255:0]上TLP结束的信号。

例如,置位后,rx_st2_eop_o发送rx_st2_data_o[255:0]上TLP结束的信号。

EP/RP/BP coreclkout_hip
pX_rx_stN_dvalid_o其中

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

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

Output 这些信号认证进入Application Layer的rx_stN_data_o信号。 EP/RP/BP coreclkout_hip
pX_rx_stN_hvalid_o其中

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

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

Output 这些信号认证发往Application Layer的rx_stN_hdr_o信号。 EP/RP/BP coreclkout_hip
pX_rx_stN_pvalid_o其中

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

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

Output 这些信号认证发往Application Layer的rx_stN_prefix_o信号。 EP/RP/BP coreclkout_hip
pX_rx_stN_data_par_o[Z:0]其中

X = 0,1,2,3(IP核个数),Z会因为各个内核而异。

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

Output rx_stN_data_o的奇偶校验信号。 EP/RP/BP coreclkout_hip
pX_rx_stN_hdr_par_o[3:0]其中

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

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

Output rx_stN_hdr_o的奇偶校验信号。 EP/RP/BP coreclkout_hip
pX_rx_stN_prefix_par_o其中

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

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

Output rx_stN_prefix_o奇偶校验信号。 EP/RP/BP coreclkout_hip
pX_rx_st_ready_i Input 指示Application Layer已经准备好接收信号。该信号应该始终设置为1。RX侧的Flow Control通过Credit Control Interface处理。 EP/RP/BP coreclkout_hip
pX_rx_stN_empty_o[2:0]其中

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

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

Output

指定rx_stN_eop_o信号置位时,周期内为空的双字个数。当rx_stN_eop_o信号未置位时,这些信号无效。

EP/RP/BP coreclkout_hip
pX_rx_stN_bar_o[2:0]其中

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

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

Output

为要输出的TLP指定BAR。

rx_stN_sop_orx_stN_valid_o置位时,这些输出有效。

EP/RP coreclkout_hip
pX_rx_stN_vfactive_o其中

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

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

Output

置位后,这些信号指示接收到的TLP是针对虚拟功能。解除置位这些信号后,接收到的TLP是针对物理功能,而rx_stN_pfnum_o信号指示功能编号。

当对应的rx_stN_sop_o置位时,该信号有效。

EP/RP coreclkout_hip
pX_rx_stN_vfnum_o[10:0]其中

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

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

Output

指定接收的TLP的目标VF数。应用程序将此信息用于request和completion TLP。对于completion TLP,这些位指定该completion TLP的requester的VF个数。

rx_stN_vf_active_o和对应的rx_stN_sop_o置位时,这些信号有效。

EP/RP coreclkout_hip
pX_rx_stN_pfnum_o[2:0]其中

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

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

Output

指定接收到的TLP的物理功能编号。

当对应的rx_stN_sop_o置位时,信号有效。

EP/RP coreclkout_hip
例如,以下的 Avalon® Streaming RX接口时序显示具有多个TLP的Avalon Streaming RX接口的行为,以及其中跨越多个段的每个TLP的行为。以下文本描述每个周期的波形:
  1. 时钟周期1:应用逻辑置位p0_rx_st_ready_i信号。该信号必须始终设置为高电平。RX流量控制必须由使用RX Flow Control接口的Application逻辑处理(请参阅RX流程控制接口了解详细信息)。
  2. 时钟周期2:
    1. 置位p0_rx_st1_sop_o时,第一个TLP (T0)的开始到达segment 1。
    2. 置位信号p0_rx_st1_hvalid_o以验证p0_rx_st1_hdr_o总线中第一个TLP (T0H0) 的头。
    3. 置位信号p0_rx_st1_dvalid_o以验证p0_rx_st1_data_o总线中第一个TLP (T0D0) 的数据。
    4. 该第一个TLP (T0)的结尾在segment 2中,由置位p0_rx_st2_eop_o来标记。
    5. 置位信号p0_rx_st2_dvalid_o以验证p0_rx_st2_data_o总线中该第一个TLP (T0D1)的数据。
    6. 总线p0_rx_st2_empty_o指示p0_rx_st2_data_o总线(T0D1)中无效的双字个数。
  3. 时钟周期3:
    1. 下一个TLP (T1)达到segment 1,由置位p0_rx_st1_sop_o来标记。
    2. 置位信号p0_rx_st1_hvalid_o以验证p0_rx_st1_hdr_o总线中该TLP (T1H0)的头。
    3. 置位信号p0_rx_st1_dvalid_o以验证p0_rx_st1_data_o 总线中该TLP (T1D0)的数据。
    4. 置位该信号p0_rx_st2_dvalid_o以验证p0_rx_st2_data_o总线中该TLP (T1D1)的数据。
    5. 置位信号p0_rx_st3_dvalid_o 以验证p0_rx_st3_data_o总线中该TLP (T1D2)的数据。
  4. 时钟周期4:
    1. T1 TLP的结尾在segment 0中,由置位p0_rx_st0_eop_o来标记。
    2. 置位该信号p0_rx_st0_dvalid_o以验证p0_rx_st0_data_o 总线中该TLP (T1D3)的数据。
    3. 总线p0_rx_st0_empty_o指示p0_rx_st0_data_o总线(T1D3)中无效双字的个数。

下一个TLP达到segment 1中的下一个时钟周期并在segment 0中结束。

图 26.  Avalon® Streaming RX接口时序