PCIe | 辅助信号与复位机制 注本文为 “PCIe 复位机制” 相关合辑。图片清晰度受引文原图所限。略作重排未整理去重。如有内容异常请看原文。PCIe 板卡辅助信号解析业余程序员 plus 原创于 2024-08-15 20:57:31 发布1. 简介PCIe 扩展卡可依托 PCIe 插槽配置的辅助信号实现系统唤醒、复位、调试、热插拔等各类系统功能。常用辅助信号包含REFCLK-/REFCLK、PERST#、WAKE#、SMBCLK、SMBDAT、JTAG、CLKREQ#、PRSNT1#、PRSNT2#各信号功能说明如下REFCLK-/REFCLK属于低压差分信号主板输出的REFCLK信号需符合 PCIe 相关规范要求。PERST#用于完成 PCIe 设备复位同时标识系统主电源达到稳定状态的时长。WAKE#由 PCIe 设备驱动向主机发送唤醒相关信号。主机检测到该信号后向设备供给主电源与参考时钟完成 PCIe 链路激活。该信号可结合 OBFF 机制使用主机可通过WAKE#调整设备缓冲区工作模式例如缓冲区刷新、数据填充。设备可在无数据收发需求时进入低功耗模式收到指令后快速唤醒并处理数据。CLKREQ#由 PCIe 设备驱动用于向主机申请参考时钟保障 PCIe 接口完成数据收发。当设备进入 L1 PM Substates 状态时CLKREQ#置高参考时钟停止输出PCIe 链路进入静默状态主机或设备将CLKREQ#置低后设备退出 L1 PM Substates 状态。SMBCLK为 SMBus 总线提供时钟信号。SMBDAT为 SMBus 总线提供数据信号。JTAGTRST#、TCLK、TDI、TDO、TMS引脚遵循 IEEE Standard 1149.1 定义的测试端口与边界扫描架构PCIe 设备可选择性配置该接口。PRSNT1#、PRSNT2#用于实现 PCIe 板卡的热插拔检测。下文针对REFCLK-/REFCLK、PERST#、WAKE#三类信号展开分析。2. REFCLK-/REFCLK参考时钟采用低压摆幅差分架构可降低信号抖动同时适配新一代硬件制造工艺。该信号单端标称摆幅为0 V ∼ 0.7 V 0\ \text{V} \sim 0.7\ \text{V}0V∼0.7V工作频率为100 MHz ± 300 PPM 100\ \text{MHz} \pm 300\ \text{PPM}100MHz±300PPM。主板上各连接器对应的参考时钟采用点对点布线设计单段布线长度不超过15 1515英寸38.1 38.138.1厘米。信号接收端处数据与时钟的传输时延偏差需小于12 ns 12\ \text{ns}12ns。受时钟信号最大失配、传输通道最大长度共同影响系统整体时延偏差区间约为9 ns ∼ 10 ns 9\ \text{ns} \sim 10\ \text{ns}9ns∼10ns。时钟源至连接器的路径中REFCLK-与REFCLK两条差分信号线的长度偏差需小于0.005 0.0050.005英寸0.0127 0.01270.0127厘米。布线阶段需将该组信号线与其他非时钟线路保持合理间距抑制信号串扰。3. PERST#PERST#用于判定电源电压是否处于规范允许范围且状态稳定在电源稳定后该信号同步完成 PCIe 设备状态机及其他逻辑电路的初始化操作。3.1 ACPI 电源状态PERST#的电平变化通常与系统电源状态联动本节先介绍 ACPI 电源状态体系。ACPI 规范定义多类电源状态用于实现操作系统与硬件之间的电源管理协同。状态划分为全局状态、系统状态、设备状态、处理器状态四大类各类常见状态说明如下表所示类别状态描述全局状态G0 (S0)设备正常运行满功率工作全局状态G1睡眠状态包含 S1、S2、S3、S4 子状态全局状态G2 / S5系统停机硬件保留部分供电全局状态G3物理断电整机无供电系统状态S0系统完全启动并运行系统状态S1处理器暂停运算唤醒速度较快系统状态S2处理器关闭硬件功耗进一步降低唤醒较快系统状态S3标准睡眠模式运行数据暂存至内存系统状态S4休眠模式运行数据暂存至存储介质系统状态S5系统关闭部分硬件模块维持供电设备状态D0设备完全上电工作设备状态D1, D2分级休眠状态可保留部分运行上下文设备状态D3设备主回路断电保留待机供电处理器状态C0处理器满负荷运行处理器状态C1轻度休眠停止指令执行恢复速度快处理器状态C2中度休眠关闭部分硬件模块恢复速度放缓处理器状态C3深度休眠可关闭处理器缓存恢复耗时更长3.2 Initial Power Up (G3 to S0)下图为 PCIe 板卡从上电至稳定运行阶段辅助信号、电源、PCIe 链路的时序关系。部分时序参数在 CEM 规范中有明确定义对应数值将逐一标注。工作流程如下若系统与 PCIe 板卡支持3.3 Vaux 3.3\ \text{Vaux}3.3Vaux辅助电源优先完成该路电源上电此阶段PERST#可保持低电平或高电平。3.3 Vaux 3.3\ \text{Vaux}3.3Vaux辅助电源稳定后主机将PERST#置低令 PCIe 设备进入复位状态。3.3 Vaux 3.3\ \text{Vaux}3.3Vaux辅助电源稳定后经过延时 1SMBus 总线开始工作。设备无3.3 Vaux 3.3\ \text{Vaux}3.3Vaux供电时计时起点改为3.3 V 3.3\ \text{V}3.3V/12 V 12\ \text{V}12V主电源稳定时刻。3.3 V 3.3\ \text{V}3.3V/12 V 12\ \text{V}12V主电源稳定后经过延时参数TPVPERL \text{TPVPERL}TPVPERL取值100 ms 100\ \text{ms}100ms将PERST#置高。主电源稳定的同时参考时钟开始输出参考时钟稳定所需时长为TPERST-CLK \text{TPERST-CLK}TPERST-CLK取值100 μ s 100\ \mu\text{s}100μs。据此计算PERST#低电平持续时长最小值为TPVPERL TPERST-CLK 0.1001 s \text{TPVPERL} \text{TPERST-CLK} 0.1001\ \text{s}TPVPERLTPERST-CLK0.1001s。参考时钟稳定后需经过时长 4PCIe 链路方可正常工作。参考时钟稳定后需经过时长 5JTAG接口方可正常工作。设备上电初始阶段配置空间寄存器内的 Link Control register 中 ASPM Control 位域硬件默认值需设为0 00。该位域仅允许系统 BIOS 或操作系统修改其余软件无修改权限。3.3 Power Management States (S0 to S3/S4 to S0)系统切换至 S3 或 S4 状态前需先将 PCIe 设备切换至 D3hot 状态同时将 PCIe 链路设置为 L2 状态。完成上述配置后插槽主电源与参考时钟停止输出设备因主电源断开由 D3hot 切换为 D3cold 状态。设备处于 D3cold 状态时3.3 Vaux 3.3\ \text{Vaux}3.3Vaux辅助电源持续供电。触发唤醒事件后系统恢复主电源与参考时钟输出待电源与时钟状态稳定再将PERST#置高。完整流程如下系统准备进入 S3/S4 状态前将 PCIe 链路设置为 L2 静默状态。链路进入静默状态并经过时长 1 后将PERST#置低设备进入复位状态。PERST#置低并经过时长 2 后系统切断插槽主电源与参考时钟二者进入不稳定状态。PERST#置低并经过时长 3 后JTAG接口停止工作进入静默状态。触发唤醒事件后系统依次恢复主电源、参考时钟输出经过时长 4PCIe 设备恢复正常工作。系统完成 S0 → S3/S4 → S0 状态切换的全过程中PERST#低电平持续时长最小值为TPERST \text{TPERST}TPERST该参数取值为100 μ s 100\ \mu\text{s}100μs。PCIe 设备从 D3cold 状态恢复运行时配置空间寄存器内的 Link Control register 中 ASPM Control 位域硬件默认值需设为0 00。该位域仅允许系统 BIOS 或操作系统修改其余软件无修改权限。3.4 Power Down结合电压容差要求CEM 规范划定电源有效判定阈值区间3.3 V 3.3\ \text{V}3.3V电源、3.3 Vaux 3.3\ \text{Vaux}3.3Vaux辅助电源阈值区间为2.5 V ∼ 3.00 V 2.5\ \text{V} \sim 3.00\ \text{V}2.5V∼3.00V12 V 12\ \text{V}12V电源阈值区间为9.7 V ∼ 11.04 V 9.7\ \text{V} \sim 11.04\ \text{V}9.7V∼11.04V。若电源输出电压低于对应阈值判定电源工作异常系统执行下电流程。PCIe 设备下电阶段各信号时序如下具体流程插槽主电源断开前先将 PCIe 链路设置为静默状态设备切换至 D3hot 状态。链路进入静默状态并经过时长 1 后将PERST#置低设备进入复位状态。PERST#置低并经过时长 2 后插槽主电源开始断电。PERST#置低并经过时长 3 后参考时钟停止输出JTAG接口同步停止工作时长 3 数值大于时长 2。参数TFAIL \text{TFAIL}TFAIL定义异常断电场景下PERST#的低电平保持时长该参数最大值为500 ns 500\ \text{ns}500ns。4. WAKE#TODO…5. 电压参数6. 时间参数参考资料PCI Express® Card Electromechanical Specification Revision 4.0PCIe 复位机制概述PCIePeripheral Component Interconnect Express是高性能点对点串行通信协议协议定义多类复位机制用于处理设备异常、链路故障、功能恢复等问题。整体分为传统复位与**函数级复位FLR**两大体系传统复位包含冷复位、暖复位、热复位其中冷、暖复位合称基础复位热复位为带内复位。一、复位体系分类传统复位早期规范定义包含冷复位、暖复位、热复位。冷复位、暖复位属于基础复位热复位属于非基础复位与带内复位。基础复位会将设备状态机、硬件逻辑、端口及配置寄存器恢复为默认值依靠辅电源V a u x V_{aux}Vaux​供电的粘性寄存器不受影响。函数级复位FLRPCIe 2.0 新增为可选功能。可读取 Device Capabilities Register 的 FLR Capability 位bit 28判断设备是否支持。各类复位耗时排序冷复位 暖复位 热复位 FLR。二、传统复位2.1 冷复位Cold Reset2.1.1 触发方式整机断电重上电、设备主电源上电也可通过边带信号PERST ‾ \overline{\text{PERST}}PERST配合上电流程触发。2.1.2 特性与范围复位等级最高清空所有由主电源V C C V_{CC}VCC​供电的寄存器、硬件逻辑与状态机粘性寄存器仅在V a u x V_{aux}Vaux​完全切断后才会重置设备完成完整硬件初始化。2.1.3 应用场景整机上电、硬重启、硬件重新插拔、顽固故障恢复、固件烧录后初始化。2.2 暖复位Warm Reset2.2.1 触发方式设备主电源保持供电由硬件电路、POWERGOOD \text{POWERGOOD}POWERGOOD信号联动 ICH 生成PERST ‾ \overline{\text{PERST}}PERST信号触发。2.2.2 特性与范围属于基础复位复位效果与冷复位基本一致设备不断电粘性寄存器数据保留。2.2.3 应用场景系统软重启、平台受控整机复位、固件升级后快速重置。2.3 基础复位信号PERST ‾ \overline{\text{PERST}}PERSTPERST ‾ \overline{\text{PERST}}PERST是实现基础复位的硬件边带信号由 ICH 依据电源状态生成可管控 PCIe 交换开关、桥设备、终端卡等器件。上电时序上电后PERST ‾ \overline{\text{PERST}}PERST拉低执行复位维持一段时间后拉高释放不同平台时序略有差异。硬件通路说明终端设备通过金手指接收PERST ‾ \overline{\text{PERST}}PERST信号板内分出两路独立复位信号phy_por_rstn负责复位 PHY 模块ctrl_rstn负责复位控制器模块。PHY 固件加载期间会临时屏蔽PERST ‾ \overline{\text{PERST}}PERST设备未断电时后续触发该复位不会重新加载固件。终端设备可按需选择三种联动策略仅复位 PCIe 模块、复位 PCIe 及关联模块、整卡全模块复位。2.4 热复位Hot Reset热复位为带内复位不依赖边带信号仅根复合体、交换开关可主动发起终端设备无法触发。2.4.1 触发条件软件配置触发向桥控制寄存器Bridge Control Registerbit6Secondary Bus Reset 位写入1 11端口生成带热复位标识的 TS1 有序集在所有通道向下游传输。设备连续收到 2 组对应 TS1 有序集后执行复位。链路状态触发交换开关上行端口上报KaTeX parse error: Expected EOF, got _ at position 9: \text{DL_̲Down}状态时下行端口自动触发热复位。2.4.2 LTSSM 状态流转收到热复位指令后链路训练状态机依次进入 Recovery、Hot Reset 状态最终跳转至 Detect 状态并重新训练链路。持续接收合法 TS1 信号则保持 Hot Reset 状态2 m s 2\ \mathrm{ms}2ms超时后自动切换至 Detect 状态。2.4.3 指令传递规则根端口、交换开关下行端口置位 Secondary Bus Reset复位指令持续向下游传输寄存器清零后停止。交换开关上行端口收到热复位会向所有下行端口广播指令并完成自身复位终端设备仅复位自身。PCIe-to-PCI 桥会将热复位转换为PRST ‾ \overline{\text{PRST}}PRST信号复位后端 PCI 总线。2.4.4 链路参数调整流程确认 LTSSM 处于 L0 状态配置链路控制寄存器、链路控制寄存器 2置位 Secondary Bus Reset 触发热复位等待2 m s 2\ \mathrm{ms}2ms后清除对应位链路重新初始化。2.4.5 特性与应用场景复位范围覆盖整条下游链路及所有设备设备不断电粘性寄存器保持不变。适用于链路初始化失败、链路层错误恢复、链路速率/位宽调整、软件调试复位。三、函数级复位FLR, Function Level Reset3.1 触发方式软件向设备控制寄存器 bit15Initiate Function Level Reset 位写入1 11启动复位。规范要求模块需在100 m s 100\ \mathrm{ms}100ms内完成动作。执行前需校验设备 FLR 能力并等待所有待处理事务结束。3.2 特性与范围仅复位设备内单个功能模块的专属状态机与配置寄存器。以下内容不受影响粘性位、硬件初始化位、链路/电源管理/流量控制类公共寄存器。FLR 不改变 LTSSM 状态物理链路无需重训练。3.3 应用场景多功能设备、SR-IOV 虚拟化设备、高可用系统用于单模块故障隔离、虚拟化设备复位、热插拔功能初始化。四、复位优先级与拓展类型4.1 复位优先级力度由强到弱高等级复位可覆盖低等级复位排序如下冷复位PERST ‾ \overline{\text{PERST}}PERST触发全局热复位链路复位仅重训练链路不修改设备配置FLR4.2 拓展复位类型带内热复位链路传输 TS1 触发作用于下游设备触发链路重训练。下游总线复位PCIe-to-PCI 桥专用仅复位后端 PCI 总线。错误恢复复位硬件根据错误等级自动触发可纠正错误触发链路复位致命错误触发热复位。五、各类复位对比5.1 热复位与 FLR 对比对比项热复位FLR作用粒度链路级、设备级单功能模块级链路影响触发 LTSSM 切换链路重训练链路状态保持不变寄存器影响大部分寄存器重置粘性寄存器除外仅重置模块专属寄存器发起主体根复合体、交换开关软件直接操作功能寄存器运行开销耗时较长耗时短业务影响小5.2 全类型复位复位类型所属分类触发方式作用范围典型耗时冷复位传统复位/基础复位断电重上电、PERST ‾ \overline{\text{PERST}}PERST整台设备V C C V_{CC}VCC​全部逻辑最长暖复位传统复位/基础复位硬件电路、PERST ‾ \overline{\text{PERST}}PERST整台设备绝大部分逻辑较长热复位传统复位/带内复位软件写寄存器、TS1 有序集整条下游链路及所有设备较短FLR函数级复位软件写功能寄存器设备内单个功能模块≤ 100 m s \leq 100\ \mathrm{ms}≤100ms最短5.3 简易特性复位类型作用范围触发方式特点冷复位整设备断电重上电彻底初始化硬件暖复位整设备PERST ‾ \overline{\text{PERST}}PERST不断电整机复位热复位下游整条链路软件指令、TS1链路全局重置支持参数调整FLR单个功能模块软件命令隔离复位不影响链路链路复位PCIe 链路链路请求仅重训练链路不改动配置六、工程使用规范6.1 选择原则遵循从弱到强顺序优先使用 FLR、链路复位故障无法恢复再依次使用热复位、暖复位最后使用冷复位减少系统停机。6.2 场景汇总复位类型典型应用场景冷复位整机上电/硬重启、固件卡死、寄存器锁死、固件烧录后初始化暖复位系统软重启、固件升级后快速复位热复位链路故障恢复、链路速率/位宽调整、驱动调试FLR虚拟化设备复位、单模块故障隔离、热插拔初始化链路复位链路协商失败、CRC 错误等链路层故障处理参考资料PCI Express Base Specification Revision 5.0MindShare PCI Express Technology 3.0《PCI、PCI-X 和 PCI Express 的原理及体系结构》《PCI Express 体系结构导读》referencePCIe板卡辅助信号解析_pcie clkreq-CSDN博客https://blog.csdn.net/u011037593/article/details/141231501PCIe 的 4 种复位机制 | FPGA 开发圈https://fpga.eetrend.com/blog/2024/100586493.htmlPCIe 复位必须了解的PERST#_pcie perst-CSDN博客https://blog.csdn.net/icxiaoge/article/details/141781231深入理解 PCIe 复位Cold Reset, Warm Reset, Hot Reset 与 FLR 的对比与实践 - 知乎https://zhuanlan.zhihu.com/p/1950491402824814975Understanding the 4 Types of PCIe Bus Resets · KADhttps://www.kad8.com/hardware/understanding-the-4-types-of-pcie-bus-resets/PCIe 总线 4 种复位介绍-电子工程专辑https://www.eet-china.com/mp/a335800.html(ov)ノ Hi - PCIe 复位Clod reset、warm reset、Hot reset、Function level resethttps://www.cnblogs.com/cute/p/10309763.html