PCIe LTSSM 之 Detect 状态

Detect 状态由 Detect.Quiet、Detect.Active 两个子状态组成。该状态的主要功能是检测 PCIe 链路的对端是否有 PCIe 设备存在,如果存在,一共使用了多少可用的 Lane 资源。

PCIe LTSSM 之 Detect 状态_第1张图片

1. Detect.Quiet

Detect.Quiet 状态是上电之后或者复位(Function Level Reset 除外)的初始状态,并且协议要求必须在复位之后的 20 ms 内进入 Detect.Quiet 状态。

PCIe 设备进入 Detect.Quiet 状态时,其发送逻辑 TX 处于 Electrical Idle 状态,此时该设备的发送链路 D+ 和 D- 信号的电压为 DC 共模电压,且为相同的值,此时发送逻辑 TX 使用的功耗最低。

除了上电或者复位,当 Disabed、Loopback、L2、Polling、Configuration 或者 Recovery 状态出现问题时,也可以进入 Detect.Quiet 状态。当从这些状态切换到 Detect.Quiet 状态时,发送逻辑 TX 需要发送必要的 Idle 序列,通知对端设备的接受逻辑 RX,然后经过一段时间后才能进入 Electrical Idle 状态。

Detect.Quiet 状态下,默认使用 2.5 GT/s 的数据传输速率,并且 LinkUp、upconfigure_capable 等状态位为 0,此时数据链路层处于 DL_Inactive 状态。整个 PCIe 链路处于“完全静止”状态。

切换到 Detect.Active 状态:当 PCIe 设备处于 Detect.Quiet 状态超过 12 ms 之后,或者检测到 PCIe 链路上的任何一个 Lane 退出 Electrical Idle 状态时,PCIe 设备进入 Detect.Active 状态。


2. Detect.Active

Detect.Active 状态只能从 Detect.Quiet 状态进入。该状态下,通过 Receiver Detect 机制,设备的发送逻辑 TX 会检测每个 Lane 的对端是否连接了另一个 PCIe 设备。

切换到 Detect.Active 状态:如果所有 Lane 的对端都没有检测到设备,那就重新返回 Detect.Quiet 状态。在 Detect.Quiet 状态待 12 ms 之后,再次进入 Detect.Active 状态再次进行设备检测。

切换到 Polling 状态:如果所有 Lane 都能成功的检测到对端设备,则进入 Polling 状态。

特殊情况:如果只有一部分 Lane 检测到对端设备(例如,x4 的设备与 x2 的设备相连),那么物理层等待 12 ms 之后,重新进行对端设备检测。如果两次检测的结果一致,则进入 Polling 状态(未检测到设备的 Lane 会被置为 Electrical Idle 状态)。如果两次检测的结果不一致,则进入 Detect.Quiet 状态。


参考资料:
[1] Mike Jackson & Ravi Budruk,PCI Express Technology
[2] 王齐,PCI Express 体系结构导读

你可能感兴趣的:(PCIe,pci-e)