仅对英特尔可见 — GUID: wme1602804513154
Ixiasoft
仅对英特尔可见 — GUID: wme1602804513154
Ixiasoft
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_i和rx_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信号所示。
- 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个数据,头或前缀位有一个奇偶校验位)。
信号名称 | 方向 | 描述 | 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_o和rx_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 |
- 时钟周期1:应用逻辑置位p0_rx_st_ready_i信号。该信号必须始终设置为高电平。RX流量控制必须由使用RX Flow Control接口的Application逻辑处理(请参阅RX流程控制接口了解详细信息)。
- 时钟周期2:
- 置位p0_rx_st1_sop_o时,第一个TLP (T0)的开始到达segment 1。
- 置位信号p0_rx_st1_hvalid_o以验证p0_rx_st1_hdr_o总线中第一个TLP (T0H0) 的头。
- 置位信号p0_rx_st1_dvalid_o以验证p0_rx_st1_data_o总线中第一个TLP (T0D0) 的数据。
- 该第一个TLP (T0)的结尾在segment 2中,由置位p0_rx_st2_eop_o来标记。
- 置位信号p0_rx_st2_dvalid_o以验证p0_rx_st2_data_o总线中该第一个TLP (T0D1)的数据。
- 总线p0_rx_st2_empty_o指示p0_rx_st2_data_o总线(T0D1)中无效的双字个数。
- 时钟周期3:
- 下一个TLP (T1)达到segment 1,由置位p0_rx_st1_sop_o来标记。
- 置位信号p0_rx_st1_hvalid_o以验证p0_rx_st1_hdr_o总线中该TLP (T1H0)的头。
- 置位信号p0_rx_st1_dvalid_o以验证p0_rx_st1_data_o 总线中该TLP (T1D0)的数据。
- 置位该信号p0_rx_st2_dvalid_o以验证p0_rx_st2_data_o总线中该TLP (T1D1)的数据。
- 置位信号p0_rx_st3_dvalid_o 以验证p0_rx_st3_data_o总线中该TLP (T1D2)的数据。
- 时钟周期4:
- T1 TLP的结尾在segment 0中,由置位p0_rx_st0_eop_o来标记。
- 置位该信号p0_rx_st0_dvalid_o以验证p0_rx_st0_data_o 总线中该TLP (T1D3)的数据。
- 总线p0_rx_st0_empty_o指示p0_rx_st0_data_o总线(T1D3)中无效双字的个数。
下一个TLP达到segment 1中的下一个时钟周期并在segment 0中结束。