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

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

4.3.1.3. Avalon® Streaming RX接口

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

当R-Tile IP在1x16配置下操作时,该接口支持每周期四个rx_st_sop_o信号和四个rx_st_eop_o信号。

在双宽度配置的Configuration Mode 0 (1x16) 下,内核提供四个段,每个段具有256位数据(pX_rx_stN_data_o[255:0]),128位标头 (pX_rx_stN_hdr_o[127:0])和32位TLP前缀((pX_rx_stN_prefix_o[31:0])。如果该内核配置为1x16模式,则数据总线成为1024位总线。

双宽度配置的Configuration Mode 1 (2x8)中,仍然有四个 Avalon® Streaming段(每个x8端口两个)。

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

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

输出 这是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(段数)

输出 这是接收到的头,其遵循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(段数)

输出

这是接收到的第一个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(段数)

输出

在该信号与对应的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(段数)

输出

在该信号与对应的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(段数)

输出 这些信号认证进入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(段数)

输出 这些信号认证发往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(段数)

输出 这些信号认证发往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(段数)

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

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

输出 rx_stN_prefix_o的奇偶校验信号。 EP/RP/BP coreclkout_hip
pX_rx_st_ready_i 输入 指示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(段数)

输出

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

输出

为要输出的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(段数)

输出

置位后,这些信号指示接收到的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(段数)

输出

指定接收的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(段数)

输出

指定接收的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中结束。

图 31.  Avalon® Streaming RX接口时序