3. LTSSM 状态详解(一):Detect 状态、Detect.Quiet 子状态、Detect.Active 子状态

Detect 状态是 LTSSM 链路训练的第一个物理层状态,也是热插拔场景下链路初始化的起点。当系统检测到热插拔事件(如 Presence 信号变化)或从低功耗状态恢复时,物理层必须首先确认对端设备是否存在、链路宽度以及极性。Detect 状态由两个子状态构成:Detect.Quiet 和 Detect.Active。

3.1 Detect 状态概述

Detect 状态的核心目标是 “探测对端接收器是否存在”。它不进行任何数据交换,仅通过电气特性判断链路的连通性。该状态是 LTSSM 所有后续状态(Polling、Configuration、L0)的准入前提。

属性 说明
状态编号 LTSSM 状态机第 1 层(物理层初始状态)
触发条件 复位、热插拔事件、从 L2/L3 低功耗状态退出
子状态数 2 个:Detect.Quiet → Detect.Active
成功出口 Polling.Active(链路探测成功)
失败出口 Detect.Quiet(超时重试)
关键参数 Detect 超时定时器(典型值 12 ms)

3.2 Detect.Quiet 子状态

Detect.Quiet 是 Detect 状态的入口子状态。进入该状态后,发送器必须将差分输出置于 电气静默(Electrical Idle) 状态,即 TX 差分电压维持在共模电平附近,不发送任何信号。

3.2.1 状态行为

  • TX 静默:所有发送通道强制进入 Electrical Idle,差分电压 |VTX-DIFF| < 20 mV。
  • RX 监听:接收器持续检测对端是否发送信号(即对端是否处于 Detect.Active 并发送探测脉冲)。
  • 超时机制:若在 12 ms 内未检测到任何信号,LTSSM 重新进入 Detect.Quiet 并递增重试计数器。

3.2.2 热插拔故障场景

常见故障:热插拔卡插入后,若 Detect.Quiet 阶段接收器始终未检测到信号,可能原因包括:
1. 对端设备未上电或复位未完成。
2. 链路差分阻抗不匹配导致信号衰减过大。
3. 热插拔卡金手指接触不良,造成电气断路。

3.3 Detect.Active 子状态

当 Detect.Quiet 阶段接收器检测到对端发送的探测信号后,LTSSM 立即跳转到 Detect.Active。该子状态负责 主动发送探测脉冲 并 确认对端接收器的存在。

3.3.1 状态行为

  • TX 发送探测脉冲:发送器输出一个宽度为 2 个 UI(Unit Interval) 的差分脉冲,幅值符合 PCIe 电气规范。
  • RX 回波检测:发送探测脉冲后,接收器检测链路上的反射信号。若对端接收器存在且端接正确,反射信号幅度会显著降低(阻抗匹配)。
  • 判定逻辑:若反射信号低于阈值(表示对端有接收器端接),则判定链路存在,跳转到 Polling.Active;否则返回 Detect.Quiet。

3.3.2 关键参数

参数 典型值 说明
探测脉冲宽度 2 UI Gen1/Gen2/Gen3 均适用
反射阈值 VRX-DIFF < 50 mV 低于此值认为对端存在
最大重试次数 3 次 超过后 LTSSM 进入 Detect.Quiet 并报告错误

3.4 Detect 状态跳转流程

下图展示了 Detect 状态内部两个子状态之间的跳转逻辑,以及成功/失败后的出口路径。

Detect 状态跳转流程图 Detect 状态跳转流程图 入口(复位/热插拔) Detect.Quiet TX 静默 / RX 监听对端信号 检测到对端信号 Detect.Active TX 发送探测脉冲 / RX 检测反射 反射信号判定 反射 < 阈值? 是(对端存在) Polling.Active 链路训练继续 否(对端缺失) Detect.Quiet 重试(最多 3 次) 超时(12 ms) 重试 计数器+1

3.5 热插拔故障定位要点

故障定位检查清单:
  1. Presence 信号:确认热插拔卡插入后,PRSNT1#/PRSNT2# 引脚电平是否正确拉低。
  2. Detect.Quiet 超时:若 LTSSM 反复停留在 Detect.Quiet 并超时,使用示波器测量 TX 差分电压是否进入 Electrical Idle(< 20 mV)。
  3. Detect.Active 反射异常:若跳转到 Detect.Active 后立即返回 Detect.Quiet,检查对端接收器端接电阻(50 Ω 对地)是否正常。
  4. 重试计数器:超过 3 次重试后,链路应上报“Detect 失败”错误,检查系统日志中的 PCIe AER 错误记录。

3.6 Detect 状态与 Polling 状态的衔接

Detect 状态成功后,LTSSM 进入 Polling.Active 子状态。Polling 阶段将进行位锁定、符号锁定和速度协商。Detect 阶段的任何失败都会导致链路无法进入 Polling,因此 Detect 是热插拔故障诊断的 第一道关卡。

Detect 结果 下一状态 典型故障表现
成功(对端存在) Polling.Active 正常链路训练
失败(对端缺失) Detect.Quiet(重试) 链路状态寄存器显示 Detect 循环
超时(3 次重试后) Detect.Quiet(错误报告) 系统日志:PCIe Link Training Failure
调试技巧:使用 PCIe 分析仪捕获 LTSSM 状态跳转时,重点关注 Detect.Quiet 的停留时间。若每次停留恰好 12 ms 后重试,说明对端接收器完全无响应;若停留时间随机且短于 12 ms,说明反射信号判定不稳定,应优先排查链路阻抗连续性。