PCIe Detect State
Dectect 简介
PCIe Detect是LTSSM状态的起始状态,在该状态transmitter会去探测link的对端是否存在receiver。
Detect State Machine介绍
Detect substate 介绍
- Dectect.Quiet
Dectect.Quiet 是LTSSM的初始状态,在这个状态下transmitter处于Electrical Idle,并且data rate 一定是2.5GT/s。 - Dectect.Active
LTSSM在Dectect.Active开始测试对端receiver是否存在,该探测过程是由MAC发起,PHY从DC common mode 电压开始改变电压,然后测试充电时间。因为对端存在与否负载电阻不同,因此充电时间不同,如果充电时间比较短,那么则认为没有receiver,否则存在receiver。
Dectect substate跳转条件
- Dectect.Quiet到Dectect.Active
- 每12ms LTSSM会从Detect.Quiet 跳转到Dectec.Active去测试对端是否存在,如果对端一直不存在这个过程也会一直进行。
- 如果链路上的Electrical Idle状态被破坏了,那么transmitter中的LTSSM会跳到Detect.Active状态。
这种Electrical Idle状态可能发生在金手指连接不稳定的场景下,在这种场景下transmitter会尝试进入Detect.Active状态来修复连接不稳定的信道或者降lane,来解决这种问题。
- Detect.Active到Detect.Quiet
当对端不存在receiver时,LTSSM会从Detect.Quiet跳到Detect.Quiet。
测试对端是否存在过程中MAC和PHY交互
PCIe MAC和PHY之间通过标准PIPE接口PIPE学习记录进行交互,从上述描述可以看出测试对端是否存在的过程主要的逻辑是PHY完成的。但是在Simulation过程中有VIP PIPE<-> DUT PIPE 拓扑,因此对MAC和PHY在Detect状态下的交互进行介绍可以更好的对这种拓扑进行理解。
- 与Detect状态相关的PIPE信号
- PowerDown[1:0]
- TxDetectRx/Loopback
- TxElecIdle
- RxElecIdle
详细介绍见PIPE Spec
Detect.Quiet 状态下PIPE信号行为介绍
- 12ms timeout引起的状态机跳转到Detect.Active
所有相关信号都会保持不动。 - No Electrical Idle on Link引起的状态机跳转到Detect.Active
PHY会将RxElecIdle拉低给MAC,以表示lane上已经不是Electrical Idle了。
Dectect.Active 状态下PIPE信号行为介绍
MAC拉高TxDetectRx来发起测试过程,然后PHY(在VIP PIPE <-> DUT PIPE拓扑下,PHY通常是PHY model),通过PhyStatus和RxStatus来告知MAC对端是否存在,详细时序图如下。