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状态内部的行为流程以及状态迁移条件:
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生成器、反射采样比较器和超时计数器。