配置状态接口 - 1.3 简体中文

UltraScale+ 器件 Integrated Block for PCI Express 产品指南 (PG213)

Document ID
PG213
Release Date
2022-11-16
Version
1.3 简体中文

配置状态接口可提供有关核配置方式的信息,例如,协商的链路宽度和速度、核的功耗状态以及配置错误等。下表定义了核的“Configuration Status”(配置状态)接口中的端口。

表 1. 配置状态接口端口描述
端口 I/O 宽度 描述
cfg_phy_link_down 输出 1 配置链路中断

PCI Express 链路状态,基于物理层 LTSSM。

  • 1b:链路中断(LinkUp 状态变量为 0b)
  • 0b:链路为上行(LinkUp 状态变量为 1b)
注释: 根据 PCI Express 基本规范 3.0 版,LinkUp 在“Recovery”(恢复)、L0、L0s、L1 和 L2 cfg_ltssm 状态下为 1b。在“Configuration”(配置)状态下,LinkUp 可为 0b 或 1b。当使用“Detect > Polling > Configuration”(检测 > 轮询 > 配置)达到“Configuration”状态时,则始终为 0b。如果通过任何其它状态转换达到 Configuration 状态,则 LinkUp 为 1b。
注释: 断言复位有效时,此信号的输出为 0b,直至释放复位为止。
cfg_phy_link_status 输出 2 配置链路状态

PCI Express 链路的状态。

  • 00b:未检测到接收器
  • 01b:正在进行链路训练
  • 10b:链路上行,正在进行 DL 初始化
  • 11b:链路上行,DL 初始化已完成
cfg_negotiated_width 输出 3 协商的链路宽度

此输出指示给定 PCI Express 链路的协商宽度,当 cfg_phy_link_status[1:0] == 11b(DL 初始化完成)时有效。

协商的链路宽度值:

  • 000b = x1
  • 001b = x2
  • 010b = x4
  • 011b = x8
  • 100b = x16
  • 其它值均为保留值。
cfg_current_speed 输出 3 当前链路速度

此信号用于输出给定 PCI Express 链路的当前链路速度。

  • 00b:2.5 GT/s PCI Express 链路速度
  • 01b:5.0 GT/s PCI Express 链路速度
  • 10b:8.0 GT/s PCI Express 链路速度
  • 11b:保留
cfg_max_payload 输出 2 Max_Payload_Size

此信号用于输出最大有效载荷大小,从器件控制寄存器位 7 向下直至位 5。该字段用于设置最大 TLP 有效载荷大小。作为接收器,逻辑处理的 TLP 数量不得超过此处设定的值。作为发射器,逻辑生成的 TLP 数量不得超过此处设定的值。

  • 00b:128 字节最大有效载荷大小
  • 01b:256 字节最大有效载荷大小
  • 10b:512 字节最大有效载荷大小
  • 11b:1024 字节最大有效载荷大小
cfg_max_read_req 输出 3 Max_Read_Request_Size

此信号用于输出最大读取请求大小,从器件控制寄存器位 14 向下直至 12。该字段作为“Requester”(请求器),用于为逻辑设置最大读取请求大小。此逻辑生成的读取请求大小不得超过此处设定的值。

  • 000b:128 字节最大读取请求大小
  • 001b:256 字节最大读取请求大小
  • 010b:512 字节最大读取请求大小
  • 011b:1024 字节最大读取请求大小
  • 100b:2048 字节最大读取请求大小
  • 101b:4096 字节最大读取请求大小
  • 其它值均为保留值
cfg_function_status 输出 16 配置功能状态

这些输出用于指示每个功能的 PCI 配置空间中的命令寄存器位的状态。这些输出用于启用来自主机逻辑的请求和完成包。位的分配如下:

  • 位 0:功能 0 I/O 空间使能
  • 位 1:功能 0 存储器空间使能
  • 位 2:功能 0 总线主控制器使能
  • 位 3:功能 0 INTx 禁用
  • 位 4:功能 1 I/O 空间使能
  • 位 5:功能 1 存储器空间使能
  • 位 6:功能 1 总线主控制器使能
  • 位 7:功能 1 INTx 禁用
  • 位 8:功能 2 I/O 空间使能
  • 位 9:功能 2 存储器空间使能
  • 位 10:功能 2 总线主控制器使能
  • 位 11:功能 2 INTx 禁用
  • 位 12:功能 3 I/O 空间使能
  • 位 13:功能 3 存储器空间使能
  • 位 14:功能 3 总线主控制器使能
  • 位 15:功能 3 INTx 禁用
cfg_vf_status 输出 504

配置虚拟功能状态

  • 位 0:虚拟功能 0:已由软件配置/启用。
  • 位 1:虚拟功能 0:PCI 命令寄存器,总线主控制器使能。
  • 位 2:虚拟功能 1:已由软件配置/启用。
  • 位 3:虚拟功能 1:PCI 命令寄存器,总线主控制器使能。
cfg_function_power_state 输出 12 配置功能功耗状态

这些输出用于指示物理功能的功耗状态。位 [2:0] 用于捕获功能 0 的功耗状态,位 [5:3] 则用于捕获功能 1 的功耗状态,以此类推。可能的功耗状态包括:

  • 000:D0_uninitialized
  • 001:D0_active
  • 010:D1
  • 100:D3_hot
  • 其它值均为保留值。
cfg_vf_power_state 输出 756 配置虚拟功能功耗状态

这些输出用于指示虚拟功能的功耗状态。位 [2:0] 用于捕获虚拟功能 0 的功耗状态,位 [5:3] 则用于捕获虚拟功能 1 的功耗状态,以此类推。可能的功耗状态包括:

  • 000:D0_uninitialized
  • 001:D0_active
  • 010:D1
  • 100:D3_hot
  • 其它值均为保留值。
cfg_link_power_state 输出 2 PCI Express 链路的当前功耗状态,当 cfg_phy_link_status[1:0] == 11b(DL 初始化完成)时有效。
  • 00:L0
  • 01:TX L0s
  • 10:L1
  • 11:L2/3 就绪
cfg_local_error_out 输出 5 局部错误状况:已记录错误优先级,优先级 0 为最高优先级。
  • 00000b - 保留
  • 00001b - 检测到物理层错误(优先级 21)
  • 00010b - 链路回放超时(优先级 17)
  • 00011b - 链路回放滚动(优先级 18)
  • 00100b - 接收到链路错误 TLP(优先级 15)
  • 00101b - 接收到链路错误 DLLP(优先级 16)
  • 00110b - 链路协议错误(优先级 10)
  • 00111b - 回放缓冲器 RAM 可纠正 ECC 错误(优先级 27)
  • 01000b - 回放缓冲器 RAM 不可纠正 ECC 错误(优先级 4)
  • 01001b - 接收转发请求 RAM 可纠正 ECC 错误(优先级 25)
  • 01010b - 接收转发请求 RAM 不可纠正 ECC 错误(优先级 2)
  • 01011b - 接收完成 RAM 可纠正 ECC 错误(优先级 26)
  • 01100b - 接收完成 RAM 不可纠正 ECC 错误(优先级 3)
  • 01101b - 接收转发缓冲器上溢错误(优先级 6)
  • 01110b - 接收非转发缓冲器上溢错误(优先级 7)
  • 01111b - 接收完成缓冲器上溢错误(优先级 8)
  • 10000b - 流量控制协议错误(优先级 9)
  • 10001b - 检测到发射奇偶性错误(优先级 5)
  • 10010b - 接收到意外完成(优先级 20)
  • 10011b - 检测到完成超时(优先级 19)
  • 10100b - AXI4ST RQ INTFC 包丢弃(优先级 22)
  • 10101b - AXI4ST CC INTFC 包丢弃(优先级 23)
  • 10110b - AXI4ST CQ 毒化丢弃(优先级 24)
  • 10111b - axi2cfg_rq_parity_error_detected_i(优先级 1)
  • 11000b - axi2cfg_cc_parity_error_detected_i(优先级 0)
  • 11001b - 11111b - 保留
注释: 此信号可能并非对于所有 PCIe 链路宽度/速度配置都有效。请勿单独依赖此信号来判定错误。还可以通过解码 AER 寄存器来准确检测错误。
cfg_local_error_valid 输出 1 局部错误状况有效:当遇到 cfg_local_error_out[4:0] 中的任何错误时,块会激活此输出并保持 1 个周期。驱动到 1b 时,cfg_local_error_out[4:0] 会指示局部错误类型。此时将记录错误报告的优先级(用于并发错误)。
注释: 此信号可能并非对于所有 PCIe 链路宽度/速度配置都有效。请勿单独依赖此信号来判定错误。还可以通过解码 AER 寄存器来准确检测错误。
cfg_rx_pm_state 输出 2 当前 RX 有效状态功耗管理 L0s 状态:以下列出了编码,且当 cfg_ltssm_state 指示 L0 时有效:
  • RX_NOT_IN_L0s = 0
  • RX_L0s_ENTRY = 1
  • RX_L0s_IDLE = 2
  • RX_L0s_FTS = 3
cfg_tx_pm_state 输出 2 当前 TX 有效状态功耗管理 L0s 状态:以下列出了编码,且当 cfg_ltssm_state 指示 L0 时有效:
  • TX_NOT_IN_L0s = 0
  • TX_L0s_ENTRY = 1
  • TX_L0s_IDLE = 2
  • TX_L0s_FTS = 3
cfg_ltssm_state 输出 6 LTSSM 状态。显示当前 LTSSM 状态:
  • 00:Detect.Quiet
  • 01:Detect.Active
  • 02:Polling.Active
  • 03:Polling.Compliance
  • 04:Polling.Configuration
  • 05:Configuration.Linkwidth.Start
  • 06:Configuration.Linkwidth.Accept
  • 07:Configuration.Lanenum.Accept
  • 08:Configuration.Lanenum.Wait
  • 09:Configuration.Complete
  • 0A:Configuration.Idle
  • 0B:Recovery.RcvrLock
  • 0C:Recovery.Speed
  • 0D:Recovery.RcvrCfg
  • 0E:Recovery.Idle
  • 10:L0
  • 11-16:保留
  • 17:L1.Entry
  • 18:L1.Idle
  • 19-1A:保留
  • 20:禁用
  • 21:Loopback_Entry_Master
  • 22:Loopback_Active_Master
  • 23:Loopback_Exit_Master
  • 24:Loopback_Entry_Slave
  • 25:Loopback_Active_Slave
  • 26:Loopback_Exit_Slave
  • 27:Hot_Reset
  • 28:Recovery_Equalization_Phase0
  • 29:Recovery_Equalization_Phase1
  • 2a:Recovery_Equalization_Phase2
  • 2b: Recovery_Equalization_Phase3
cfg_rcb_status 输出 4 RCB 状态。

用于提供每个物理功能的链路控制寄存器中的读取完成边界 (RCB) 位的设置。在“Endpoint”模式下,位 0 指示物理功能 0 (PF 0) 的 RCB,位 1 指示 PF 1 的 RCB,以此类推。在 RC 模式下,位 0 指示 RP 的链路控制寄存器的 RCB 设置,位 1 保留。

对于每个位,值为 0 表示 RCB 为 64 字节,值为 1 表示 128 字节。

cfg_dpa_substate_change 输出 4 动态功耗分配子状态更改。

在“Endpoint”模式下,当“Configuration Write”(配置写入)传输事务写入“Dynamic Power Allocation Control”(动态功耗分配控制)寄存器以修改器件的 DPA 功耗状态时,核会在其中一个输出上生成 1 个周期的脉冲。位 0 上发生脉冲表示针对 PF0 发生此类 DPA 事件,位 1 上发生脉冲则表示针对 PF1 发生同样的 DPA 事件。另 2 个位为保留位。这些输出在 Root Port 模式下无效。

cfg_obff_enable 输出 2 优化缓冲器刷新填充启用。

此输出用于反映器件控制 2 寄存器中的“OBFF Enable”(OBFF 启用)字段的设置。

  • 00:OBFF 已禁用。
  • 01:OBFF 已启用,使用报文信号 Variation A。
  • 10:OBFF 已启用,使用报文信号 Variation B。
  • 11:OBFF 已启用,使用 WAKE# 信号。
cfg_pl_status_change 输出 1 此输出供核在 Root Port 模式下用于发出以下某一链路训练相关事件的信号:
  • 由于链路宽度或运行速度更改导致链路带宽更改,此更改仅在本地发起(并非由链路伙伴发起),且链路未中断。此中断由链路控制寄存器中的“Link Bandwidth Management Interrupt Enable”(链路带宽管理中断启用)位启用。此中断的状态可从链路状态寄存器的“Link Bandwidth Management Status”(链路带宽管理状态)位读取;或者
  • 由于链路宽度或运行速度更改导致链路带宽自主更改,此更改由远程节点发起。此中断由链路控制寄存器中的“Link Autonomous Bandwidth Interrupt Enable”(链路自主带宽中断启用)位启用。此中断的状态可从链路状态寄存器的“Link Autonomous Bandwidth Status”(链路自主带宽状态)位读取;或者
  • 由于硬件接收到来自远程节点的链路均衡请求,因此它设置了链路状态 2 寄存器中的“Link Equalization Request”(链路均衡请求)位。此中断由链路控制 3 寄存器中的“Link Equalization Interrupt Enable”(链路均衡中断启用)位启用。此中断的状态可从链路状态 2 寄存器的“Link Equalization Request”(链路均衡请求)位读取。

当核配置为 Endpoint 时,pl_interrupt 输出无效。

cfg_tph_requester_enable 输出 4 此输出的位 0 用于反映物理功能 0 的 TPH 请求器功能结构中的 TPH 请求器控制寄存器的 TPH 请求器使能位 [8] 的设置。位 1 对应于物理功能 1。
cfg_tph_st_mode 输出 12 此输出的位 [2:0] 用于反映物理功能 0 的 TPH 请求器控制寄存器中的 ST 模式选择位的设置。位 [5:3] 用于反映 PF 1 的相同寄存器字段的设置。
cfg_vf_tph_requester_enable 输出 252 此输出的每个位用于反映对应虚拟功能的 TPH 请求器功能结构中的 TPH 请求器控制寄存器的 TPH 请求器使能位 8 的设置。
cfg_vf_tph_st_mode 输出 756 此输出的位 [2:0] 用于反映物理功能 0 的 TPH 请求器控制寄存器中的 ST 模式选择位的设置。位 [5:3] 用于反映 VF 1 的相同寄存器字段的设置,以此类推。
pcie_tfc_nph_av 输出 4 此输出用于指示核的发射端的非转发 TLP 的当前可用报头信用值。用户逻辑可先检查此输出,然后在请求器请求接口上发射非转发请求,以避免在没有信用值可用时阻塞此接口。编码包括:
  • 0000:无信用值可用
  • 0001:可用信用值为 1
  • 0010:可用信用值为 2
  • ...
  • 1110:可用信用值为 14
  • 1111:可用信用值不少于 15

由于存在流水线延迟,此输出上的值不包含最近最多 8 个周期内的非转发请求所耗用的信用值。用户逻辑必须根据前几个时钟周期内非转发请求所耗用的信用值(如果有)来调整此输出上的值。

pcie_tfc_npd_av 输出 4 此输出用于指示核的发射端的非转发 TLP 的当前可用有效载荷信用值。用户逻辑会先检查此输出,然后在请求器请求接口上发射非转发请求,以避免在没有信用值可用时阻塞此接口。编码包括:
  • 0000:无信用值可用
  • 0001:可用信用值为 1
  • 0010:可用信用值为 2
  • ...
  • 1110:可用信用值不少于 14
  • 1111:可用信用值不少于 15

由于存在流水线延迟,此输出上的值不包含最近最多 8 个时钟周期内用户逻辑发送的非转发请求所耗用的信用值。用户逻辑必须根据前几个时钟周期内非转发请求所耗用的信用值(如果有)来调整此输出上的值。

pcie_rq_tag_av 输出 4 此输出用于指示可供分配到核的 PCIe 主控制器端的非转发请求的可用标签数量。用户逻辑会先检查此输出,然后在请求器请求接口上发射非转发请求,以避免在没有标签可用时阻塞此接口。编码包括:
  • 0000:无标签可用
  • 0001:可用标签数为 1
  • 0010:可用标签数为 2
  • ...
  • 1110:可用标签数为 14
  • 1111:可用标签数不少于 15

由于存在流水线延迟,此输出上的值不包含最近最多 8 个时钟周期内用户逻辑发送的非转发请求所耗用的标签。用户逻辑必须根据前几个时钟周期内所发送的非转发请求的数量(如果有)来调整此输出上的值。