4. LTSSM 状态详解 – Detect

Detect 是 PCIe 链路训练状态机(LTSSM)的起始状态,也是链路从电气空闲(Electrical Idle)恢复后进入的第一个稳定状态。该状态的核心任务是:确认对端设备是否存在,并为后续的 Polling 状态建立基本的电气连接。Detect 状态不进行任何协议层交互,仅依赖物理层的电气检测机制。

关键认知: Detect 状态不发送任何有序集(Ordered Sets),也不进行位锁定或符号锁定。它只回答一个问题——“链路的另一端是否有设备?”

4.1 Detect 状态的目的

Detect 状态在以下三种场景下被进入:

  • 初始上电或复位: 链路从未知状态启动,需要探测对端。
  • 从电气空闲退出: 链路进入低功耗或发生电气空闲条件后,重新探测对端是否仍在。
  • 链路恢复失败回退: Recovery 状态超时或失败后,回退到 Detect 重新开始训练。

Detect 状态的成功退出条件是:接收器检测逻辑(Receiver Detection Logic)确认至少有一条通道(Lane)存在对端接收器。如果所有通道均未检测到接收器,LTSSM 将保持在 Detect 状态并周期性重试。

4.2 电气空闲检测(Electrical Idle Detection)

在进入 Detect 状态之前,链路必须确认处于电气空闲状态。电气空闲是指差分信号线上的电压差维持在 0 V 附近(通常 < 50 mV 峰峰值),且持续至少 TDETECTQUIET 时间。

电气空闲检测电路(EIDLE Detect)是每个 Lane 上的独立模拟比较器,其关键参数如下:

参数 符号 Gen5 典型值 说明
退出电气空闲阈值 VEXIT-IDLE 50 mVpp-diff 超过此值认为退出空闲
进入电气空闲阈值 VENT-IDLE 20 mVpp-diff 低于此值认为进入空闲
电气空闲检测时间 TDETECTQUIET 20 µs 进入 Detect 前必须保持空闲
时序陷阱: 如果电气空闲检测时间 TDETECTQUIET 设置过短,链路可能误判噪声为有效信号,导致 Detect 状态提前退出;设置过长则增加链路训练延迟。Gen5 要求该参数在 12 µs – 20 µs 范围内可配置。

4.3 接收器检测逻辑(Receiver Detection Logic)

接收器检测是 Detect 状态的核心操作。发送器通过测量 RC 时间常数 来判断对端是否存在接收器。其基本原理如下:

  1. 预充电阶段: 发送器将差分对的两个信号线(D+ / D-)驱动到共模电压(约 0 V),然后进入高阻态。
  2. 检测阶段: 发送器施加一个已知的电压阶跃(通常为 300 mV – 600 mV),并监测信号线上的电压上升时间。
  3. 判定逻辑:
    • 如果对端存在接收器(约 20 pF – 50 pF 的等效电容),电压上升较慢,时间常数较大。
    • 如果对端不存在接收器(开路),电压上升极快,时间常数接近 0。

接收器检测的时序参数由 TDETECT 定义,详见 4.4 节。

接收器检测原理 – RC 时间常数法 发送器 (TX) 接收器 (RX) D+ D- CRX ≈ 20–50 pF 施加电压阶跃 测量上升时间 判定逻辑 τ 大 → RX 存在  |  τ 小 → RX 不存在

4.4 时序参数 TDETECT

TDETECT 是 Detect 状态中最重要的时序参数,它定义了从进入 Detect 状态到完成接收器检测并做出退出决策的 最大允许时间。Gen5 规范对 TDETECT 的要求如下:

参数 符号 Gen5 最小值 Gen5 最大值 单位
接收器检测时间 TDETECT 12 24 ms
电气空闲静默时间 TDETECTQUIET 12 20 µs
检测采样窗口 TDETECTSAMPLE 1 2 µs

TDETECT 的时序约束在数字电路设计中需要特别注意以下几点:

  • 计数器精度: 用于 TDETECT 计时的计数器必须使用高频参考时钟(通常为 100 MHz 或 125 MHz),确保 12 ms – 24 ms 的计时误差 < 1% 。
  • 状态机同步: Detect 状态内的子状态(Detect.Quiet、Detect.Active、Detect.Wait)之间的切换必须满足 无毛刺(Glitch-Free) 的跨时钟域同步。
  • 多 Lane 对齐: 在 x4 / x8 / x16 链路中,所有 Lane 的接收器检测结果必须通过 Lane-to-Lane 对齐逻辑 汇总,只有当所有 Lane 都检测到接收器(或超时)时,状态机才允许退出 Detect。
Detect 状态子状态机与 TDETECT 时序 Detect.Quiet 等待电气空闲 Detect.Active 执行接收器检测 Detect.Wait 等待所有 Lane 结果 TDETECT (12 ms – 24 ms) TDETECTQUIET TDETECTSAMPLE 对齐 & 判定 退出条件:所有 Lane 检测到 RX 或 TDETECT 超时

4.5 Detect 状态的设计约束与调优建议

在 Gen5 链路训练中,Detect 状态的设计质量直接影响链路训练的成功率和初始化时间。以下是针对数字电路设计工程师的约束与调优建议:

设计维度 约束要求 调优方向
时钟域 Detect 状态机必须运行在 PCLK(PHY Clock)域 使用异步 FIFO 或双级同步器隔离 MAC 层时钟域
计数器 TDETECT 计数器分辨率 ≤ 1 µs 采用 16 位计数器,参考时钟 100 MHz 以上
检测精度 接收器检测误判率 < 10⁻⁶ 增加多次采样取多数判决(Majority Voting)
功耗 Detect 状态功耗 < 50 mW(x16 链路) 检测完成后立即关闭预充电电路
多 Lane 同步 所有 Lane 检测结果必须在 2 µs 内对齐 使用专用硬件对齐逻辑,避免软件轮询
实战经验: 在 Gen5 链路调试中,如果链路反复卡在 Detect 状态无法进入 Polling,优先检查:① 电气空闲检测阈值是否被噪声误触发;② 接收器检测的 RC 时间常数是否因 PCB 寄生电容过大而超出判定范围;③ TDETECT 计数器是否因时钟抖动导致超时提前。