3. Detect状态(行为):发送Detect信号序列(DSS),检测远端接收器是否存在

Detect状态是PCIe链路训练状态机中的第一个物理层状态。当链路从复位(Fundamental Reset)或电气空闲(Electrical Idle, EI)退出后,状态机自动进入Detect状态。该状态的核心目标只有一个:确认对端设备(Downstream/Upstream)的接收器是否物理存在。只有确认远端存在,链路才能继续进入后续的Polling、Configuration等状态。

3.1 Detect状态的行为概述

在Detect状态下,发送端(TX)会执行以下两个关键动作:

  • 发送Detect信号序列(DSS):TX在链路上发送一组特定的电气序列,用于探测远端接收器的反射特性。
  • 检测远端接收器是否存在:通过分析DSS在链路上的反射信号或负载变化,判断对端是否连接了有效的接收器。

Detect状态不进行任何数据交换,也不进行位锁定或符号锁定。它纯粹是一个物理层电气探测过程。

关键概念: Detect状态只关心“远端是否有接收器”,不关心接收器是否正常工作、是否处于复位状态。即使对端设备处于复位,只要其接收器物理存在(即差分阻抗匹配),Detect状态就能成功。

3.2 Detect信号序列(DSS)的构成

DSS并非一个复杂的数据包,而是一组特定的电气电平切换序列。其目的是在链路上产生可观测的瞬态响应。DSS的典型构成如下表所示:

序列阶段 持续时间 电气行为 目的
阶段1:电气空闲退出 最小 2 个UI(Unit Interval) TX从共模电压切换到差分驱动,输出稳定的差分低电平(D0) 唤醒链路,建立初始差分信号
阶段2:DSS脉冲 固定 16 个UI TX输出一个特定的差分脉冲序列(例如:连续4个交替的D0/D1电平) 产生反射信号,用于远端检测
阶段3:静默期 最小 4 个UI TX返回电气空闲状态(共模电压) 等待反射信号稳定,准备采样

DSS的总长度通常不超过 32 个UI,是一个非常短促的探测过程。PCIe规范要求DSS必须包含至少一次从电气空闲到非空闲的转换,以确保远端接收器的交流耦合电容能够被充电并产生可检测的反射。

3.3 远端接收器检测原理

检测远端接收器是否存在,基于传输线反射原理。PCIe链路使用差分传输线,远端接收器呈现特定的输入阻抗(通常为 50Ω 差分)。当TX发送DSS脉冲时,该脉冲沿传输线传播到远端:

  • 远端存在接收器:接收器的输入阻抗与传输线特性阻抗匹配(或接近匹配),反射信号极小,TX端检测到的电压变化平稳。
  • 远端不存在接收器(开路):传输线远端呈现高阻抗(开路),DSS脉冲几乎完全反射回TX端,TX端检测到明显的电压过冲或振铃。
  • 远端短路:传输线远端呈现低阻抗(短路),DSS脉冲被反向反射,TX端检测到电压下冲或反向脉冲。

PCIe物理层通过比较DSS发送期间和发送后的电压波形,判断远端阻抗状态。只有检测到“匹配或接近匹配”的阻抗,才认为远端接收器存在。

检测判据: 实际硬件中,Detect状态的成功条件通常为:在DSS脉冲发送后的采样窗口内,TX端测得的差分电压幅度在预设阈值范围内(例如:相对于发送幅度的 ±20%)。超出该范围则判定为远端不存在或链路故障。

3.4 Detect状态流程图

下图展示了Detect状态内部的行为流程以及状态迁移条件:

Detect状态行为与迁移流程图 Detect状态行为与迁移流程图 进入Detect状态 行为1:发送DSS序列 (16~32 UI脉冲 + 静默期) 行为2:采样反射信号 (比较电压幅度阈值) 远端接收器存在 (阻抗匹配) 远端接收器不存在 (开路/短路) 迁移至Polling状态 重试Detect状态 说明:Detect状态最多重试 2 次,若连续失败则进入 Detect Quit 状态,链路保持 Down。

3.5 状态迁移条件与超时机制

Detect状态并非无限等待。PCIe规范定义了明确的迁移条件和超时限制:

条件 检测结果 下一状态 备注
DSS发送后,反射信号在阈值内 远端接收器存在 Polling 正常迁移路径
DSS发送后,反射信号超出阈值 远端接收器不存在 Detect(重试) 最多重试 2 次
重试 2 次后仍失败 链路故障 Detect Quit 链路进入 Down 状态
检测到电气空闲(EI) 链路被复位或断开 Detect(重新开始) 从阶段1重新开始
常见误区: 有些工程师认为Detect状态会检测“对端是否上电”或“对端是否完成初始化”。实际上,Detect只检测物理连接是否存在。即使对端设备处于复位状态,只要其接收器阻抗匹配,Detect状态就会成功通过。对端是否准备好进行数据通信,是后续Polling和Configuration状态的任务。

3.6 硬件实现要点

在实际的PCIe物理层设计中,Detect状态的实现涉及以下关键电路:

  • DSS生成器:一个简单的状态机,控制TX在指定时间内输出DSS脉冲序列。通常由一组计数器实现,无需PLL参与。
  • 反射采样比较器:在TX端并联一个高速比较器,用于监测差分线上的电压幅度。比较器的参考电压由内部DAC产生,可编程以适应不同链路长度。
  • 阻抗匹配网络:TX端通常包含可调阻抗匹配电路,用于在Detect阶段优化反射信号的检测灵敏度。
  • 超时计数器:用于控制Detect状态的最大停留时间(通常为 12ms 量级),防止链路因故障而永久卡在Detect状态。
设计提示: 在高速PCB设计中,Detect状态的可靠性高度依赖于传输线的阻抗连续性。任何阻抗不连续点(如过孔、连接器、stub)都可能产生虚假反射,导致Detect状态误判。建议在Detect阶段使用较低的TX摆幅(如 400mV)以减小反射幅度,提高检测精度。

3.7 本章小结

Detect状态是PCIe链路训练的第一步,其行为简单但至关重要:

  • 通过发送DSS序列并分析反射信号,判断远端接收器是否存在。
  • 成功则进入Polling状态,失败则重试最多2次,之后进入Detect Quit。
  • Detect状态不涉及数据交换,只关注物理层电气连接。
  • 硬件实现依赖DSS生成器、反射采样比较器和超时计数器。