L0是PCIE设备正常工作的状态,当设备链路处于非工作状态可以跳转大相应的低功耗状态,L0s是一种可以快速恢复到L0的低功耗状态;L1必须经过Reovery状态才可以恢复到L0状态;L2需要从Detect开始逐步进入到L0状态。它们的恢复时间依次延长,与此对应便是降低功耗的等级越来越高。
1. L0s
L0s状态下发送机和接收机分别有一个状态机进行控制。RX状态机主要包括Rx_L0s.entry,Rx_L0s.idle,Rx_L0s.FTS; TX状态机主要包括Tx_L0s.entry,Tx_L0s.idle,Tx_L0s.FTS;
接收机:
- Rx_L0s.entry:等待一个超时时间T_tx_idle_min 后,便会跳转Rx_L0s.idle。
- Rx_L0s.idle:如果任何lane检测到退出电气空闲,或者100ms 超时 with 接收机的电阻不满足规范,且当前速度是8GT 及以上,便会跳转到Rx_L0s.FTS。
- Rx_L0s.FTS:如果接收到特定的Order Set则会跳转到L0, (SKP OS for 8b/10b,SDS for 128b/130b); 否则达到超时时间内需要退出至Recovery状态更新N_FTS的值。
发送机:
- Tx_L0s.entry:发送机需要发送EIEOSQ,等待一个超时时间T_tx_idle_min 后,便会跳转Rx_L0s.idle。此时要求DC 共模电压符合协议规范,接口电路需要保持active状态。
- Tx_L0s.idle:无条件跳转到Tx_L0s.FTS。
- Tx_L0s.FTS:此阶段需要发送用于link partner 完成bit or symbole锁定的FTS序列,发送结束后便会跳转到L0状态。8b/10b需要在发送FTS之前发送4~8个EIE,发送FTS后在发送一个SKP; 128b/130b要求在发送FTS之前发送EIEOS,发送FTS之后需要先发送EIEOS 在发送一个SDS。
2. L1
L1主要包括L1.entry,L1.Idle两个状态,
在L1.entry状态下,设备的DC共模电压需要维持在协议规范之内,在达到T_tx_idle_min超时后跳转到L1.idle状态。
在L2.idle状态下,当任意lane检测到退出电气空闲或者被directed 后,退出至Recovery状态,(这要求在该状态至少持续40ns,原因是保证空闲检测电路可以正常工作);另外如果达到100ms超时后with 接收机的电阻不满足规范,且当前速度是8GT 及以上,此时也会跳转到Reovery状态。
3. L2
L2状态时更深层次的低功耗状态,此时main power 跟PLL以及移除。主要分为L2.idle,L2.Transmitwake。
在L2.idle状态下,协议规定设备的DC共模电压不需要维持在协议规范之内,需要在1ms内完成端口电阻的调节使其符合规范,所有的Receiver必须等待T_tx_idle_min事件后才可以捕捉时候退出电气空闲状态。
For Downstream Port:对于RC来说 如果捕捉到唤醒信号Beacon,或者被top Directed,则会退出至Detect状态(要求退出至Detect之前,Main power需要恢复)。对于Switch 的lane0 以及其他通道的DSP端口收到Beacon时,它需要指示其本地USP 进入L2.TransmitWake状态向上一级发送Becaon唤醒信号。
For Upstream Port:如果any predetermined lane侦测到退出电气空闲,则跳转到Detect状态,(此时如果设备时Switch ,此时他的DSP的需要跳转达到Detect状态)。 如果被指示进入发送唤醒信号Beacon则需要跳转到L2.TransmitWake。
在L2.Transmitwake状态下,它只支持USP端口,如果USP的接收机捕捉到了退出电气空闲则需要跳转到Detect状态。