仅对英特尔可见 — GUID: lxk1612826774656
Ixiasoft
仅对英特尔可见 — GUID: lxk1612826774656
Ixiasoft
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_o和tx_st_valid_i信号之间的固定频率。在解除置位tx_st_ready_o 和tx_st_valid_i之间最大延迟(即,16个coreclkout_hip周期)内的任何时间都可接收数据。
以双宽度配置的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个数据,头或前缀位有一个奇偶校验位)。
信号名称 | 方向 | 描述 | 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_i和tx_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_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配置:
这些信号在每个TLP被置位一个时钟周期。它们还认证对应的tx_stN_hdr_i和tx_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配置:
这些信号在每个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_o和tx_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_o和tx_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_o和tx_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:
|
EP/RP/BP | coreclkout_hip |
例如,以下 Avalon® Streaming TX接口时序显示了在具有跨多个段的数据的back-to-back TLP情况下,Avalon Streaming TX接口的行为。如下文本描述了每个时钟周期的波形。
- 时钟周期1:R-tile Intel FPGA IP for PCI Express置位p0_tx_st_ready_o信号,指示Hard IP已准备接受从Application逻辑来的TLP。
- 时钟周期2:
- 第一个TLP (T0)的开始在segment 0中,由置位p0_tx_st0_sop_i来指示。
- 置位信号p0_tx_st0_hvalid_i以验证p0_tx_st0_hdr_i总线中第一个TLP (T0H0)的头。
- 置位信号p0_tx_st0_dvalid_i来验证p0_tx_st0_data_i总线中第一个TLP (T0D0)的数据。
- 置位 p0_tx_st1_dvalid_i来验证p0_tx_st1_data_i总线中第一个TLP (T0D1)数据的下一个部分。
- 置位该信号p0_tx_st2_dvalid_i以验证p0_tx_st2_data_i总线中第一个TLP (T0D2)的数据的下一个部分 。
- 置位信号 p0_tx_st3_dvalid_i来验证p0_tx_st3_data_i总线中第一个TLP (T0D3)的数据的最后部分。
- 第一个TLP (T0)的结尾在segment 3中,由置位p0_tx_st3_eop_i来标记。
- 时钟周期3:
- 下一个TLP (T1),到达segment 0,由p0_tx_st0_sop_i保持在高电平作为标记。
- 置位该信号p0_tx_st0_hvalid_i以验证p0_tx_st0_hdr_i总线中此TLP (T1H0)的头。
- 置位信号p0_tx_st0_dvalid_i以验证p0_tx_st0_data_i总线中此TLP (T1D0)的数据
- 置位信号p0_tx_st1_dvalid_i,以验证p0_tx_st1_data_i总线中此TLP (T1D1)数据的下一个部分。
- 置位信号p0_tx_st2_dvalid_i以验证p0_tx_st2_data_i总线中该TLP (T1D2)数据的下一个部分。
- 置位信号p0_tx_st3_dvalid_i以验证p0_tx_st3_data_i总线中TLP (T1D2)数据的最后部分。
- TLP (T1)的结尾在segment 3中,通过将p0_tx_st3_eop_i保持在高电平作为标记。