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

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

4.3.1.2.4. RX流程控制接口

RX流量控制接口为PCIe Hard IP提供关于应用程序上可用于Posted (P),Non-Posted (NP)和Completion (CPL)事务的RX缓冲空间的信息。它以PCIe Specification指定的credit数量报告可用的空间大小。

应用程序逻辑必须确保在Credit Initialization阶段为R-Tile Avalon-ST IP for PCIe提供足够的信用。这样就可以防止由于IP和应用程序逻辑之间缺乏可用信用而导致的性能影响。根据在PCIe链路级别发生的 P、NP和CPL事务的数量,如果应用程序逻辑通告的信用数量小于 R-Tile Avalon-ST IP for PCIe向链路对端通告的信用数量,则可能会发生缺乏信用的情况。

流量控制credit可用于以下TLP类别:
  • Posted (P)事务:不需要响应的TLP。
  • Non-poseted (NP)事务:需要completion的TLP。
  • Completions (CPL): 响应non-posted 事务的TLP。
表 51.  R-Tile Avalon-ST IP for PCIe向链路对端通告的信用注释:此表格中的信用单位遵循PCIe规范,其中1个credit = 4个DW = 16个字节。
端口(Port) Hard IP模式 Posted Headers Posted Data Non-Posted Headers Non-Posted Data Completion Headers Completion Data
Port 0 Endpoint 784 1456 784 392 0 (无穷) 0 (无穷)
Root Port 784 1456 784 392 0 (无穷) 0 (无穷)
Upstream Port 784 1456 784 392 1024 2816
Downstream Port 784 1456 784 392 1024 2816
Port 1 Endpoint 392 760 392 196 0 (无穷) 0 (无穷)
Root Port 392 760 392 196 0 (无穷) 0 (无穷)
Upstream Port 392 760 392 196 512 1408
Downstream Port 392 760 392 196 512 1408
Port 2 Endpoint 224 444 224 112 0 (无穷) 0 (无穷)
Root Port 224 444 224 112 0 (无穷) 0 (无穷)
Upstream Port 224 444 224 112 256 704
Downstream Port 224 444 224 112 256 704
Port 3 Endpoint 224 444 224 112 0 (无穷) 0 (无穷)
Root Port 224 444 224 112 0 (无穷) 0 (无穷)
Upstream Port 224 444 224 112 256 704
Downstream Port 224 444 224 112 256 704

有关常规情况下如何在该IP中实现credit控制的更多信息,请参阅Credit控制

注: 某些系统中,链路对端会在PCIe枚举过程中广播Message TLP。如果未能正确初始化,并将相应credit从Application逻辑返回到R-Tile Avalon® Streaming IP,就会因为Message TLP和Configuration TLP之间所需要Completion的优先顺序而导致枚举问题。Application逻辑必须确保将正确的credit返回到其接收TLP的R-Tile Avalon® Streaming IP。
表 52.  事务类型分类
TLP类型 类别
Memory Write Posted
Memory Read Non-Posted
Memory Read Lock
I/O Read
I/O Write
Configuration Read
Configuration Write
Fetch and Add AtomicOp
Message Posted
Completion Completion
Completion with Data
Completion Lock
Completion Lock with Data
表 53.  RX流量控制接口信号
信号名称 方向 描述 EP/RP/BP 时钟域
pX_rx_st_hcrdt_update_i[2:0]其中

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

输入

指示credit可用于不同类型的Header。

每个Header(包括TLP Prefix,如有)消耗一个credit。

[0] : Posted Header (PH)

[1] : Non-Posted Header (NPH)

[2] : Completion Header (CPLH)

要通告IP和应用程序逻辑之间特定TLP类型的无限信用,必须将该信号总线内相应位置位一个时钟周期,并且在信用初始化阶段,pX_rx_st_hcrdt_update_cnt_i信号总线中目标TLP类型在相应位上的值为0。

EP/RP/BP coreclkout_hip
pX_rx_st_hcrdt_update_cnt_i[5:0]其中

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

输入

指示已释放的信用数量。

[1:0]:已释放的PH信用数量

[3:2]:已释放的NPH信用数量

[5:4]:已释放的CPLH信用数量

对应的pX_rx_st_hcrdt_update_i位 = 1时,有效。

释放的信用数量最多为3。

要通告IP和应用程序逻辑之间特定TLP类型的无限信用,就必须在信用初始化阶段,当pX_rx_st_hcrdt_update_i位被置位一个时钟周期时,必须将该信号内总线上相应的位设置为0。

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

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

输入

Credit初始化指示。这些信号在整个初始化阶段保持高电平。从High 到Low的转变表示credit初始化阶段的完成。

[0] : PH

[1] : NPH

[2] : CPLH

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

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

输入

指示主机已经为credit初始化阶段作好准备

[0] : PH

[1] : NPH

[2] : CPLH

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

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

输入

指示credit可用于不同类型的Data。

[0] : Posted Data (PD)

[1] : Non-Posted Data (NPD)

[2] : Completion Data (CPLD)

要通告IP和应用程序逻辑之间特定TLP类型的无限信用,必须将该信号总线内的相应位置位一个时钟周期,并且在信用初始化阶段,pX_rx_st_dcrdt_update_cnt_i信号总线中目标TLP类型在相应位上的值为0。

EP/RP/BP coreclkout_hip
pX_rx_st_dcrdt_update_cnt_i[11:0]其中

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

输入

指示释放的信用数量。

[3:0]:释放的PD信用数量

[7:4]:释放的NPD信用数量

[11:8]:释放的CPLD信用数量

对应的pX_rx_st_dcrdt_update_i位 = 1时,有效。

释放的信用数量最多为15。

要通告IP和应用程序逻辑之间特定TLP类型的无限信用,就必须在信用初始化阶段,当pX_rx_st_dcrdt_update_i位被置位一个时钟周期时,必须将该信号内总线上相应的位设置为0。

注: 初始RX NPD信用必须等于或大于Maximum Payload Size(最大有效负载大小)。
EP/RP/BP coreclkout_hip
pX_rx_st_dcrdt_init_i[2:0]其中

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

输入

Credit初始化指示。这些信号在整个初始化阶段保持高电平。从High 到Low的转变表示credit初始化阶段的完成。

[0] : PD

[1] : NPD

[2] : CPLD

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

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

输入

指示Host主机已经为credit初始化阶段作好准备

[0] : PD

[1] : NPD

[2] : CPLD

EP/RP/BP coreclkout_hip