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. 热插拔卡金手指接触不良,造成电气断路。
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 状态内部两个子状态之间的跳转逻辑,以及成功/失败后的出口路径。
3.5 热插拔故障定位要点
故障定位检查清单:
- Presence 信号:确认热插拔卡插入后,PRSNT1#/PRSNT2# 引脚电平是否正确拉低。
- Detect.Quiet 超时:若 LTSSM 反复停留在 Detect.Quiet 并超时,使用示波器测量 TX 差分电压是否进入 Electrical Idle(< 20 mV)。
- Detect.Active 反射异常:若跳转到 Detect.Active 后立即返回 Detect.Quiet,检查对端接收器端接电阻(50 Ω 对地)是否正常。
- 重试计数器:超过 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,说明反射信号判定不稳定,应优先排查链路阻抗连续性。