PCIe 个人理解专栏——【2】LTSSM(Link Training and Status State Machine)
前言:
链路训练和状况状态机LTSSM(Link Training and Status State Machine)是整个链路训练和运行中状态的状态转换逻辑关系图,总共有11个状态。
正文:
包括检测(Detect),轮询(poling),配置(configration),L0,L0s,L1,L2,恢复(Recovery),环回(Loopback),热复位(Hot Reset),禁用(Disable);L0是链路正常运行的状态,从配置到L0(即图中的绿色箭头)即是链路训练的过程。
整个LTSSM状态很多,且多个状态可以互相的转换,初步看上去很复杂,我们简单归纳一下,分成几类:
训练状态类:包括Detect,polling,configuration。
Detect:当PCIe链路被复位或者通过填写某些寄存器,将进入该状态,开始侦测对端设备是否存在,PCIe如何发现链路的另外一端有设备存在呢,其实是一个充电时间侦测,发送端拉高D+和D-信号的电压到600mv,如果没有接受端存在或者接受端没上电,发送端电压很快上升到600mv,但如果有接收端存在,因为有AC电容的存在,会经过一个充电时间后才上升到600mv;
polling:侦测到对端设备后,进入该状态,向对端发送TS1/TS2序列,并接收对端发送过来的TS1/TS2序列,以确定Bit/Symbol Lock,lane的极性,并进行Loopback测试。
Configration:进入该状态将确定链路的宽度,link number,lane reversal,polarity inversion和lane-lane的延时,至此链路两端还是2.5GT/S的速度。
工作状态:L0,PCIe链路的正常工作状态;
重新训练类:Revovery,链路有异常时,可能需要重新训练,会进入Recovery,从L0s,L1返回到L0,也需要先进入到Recovery。
Recvery:PCIe链路需要重新协商链路状态时,进入该状态;
电源管理状态类:L0s,L1,L2,如果设备进入了低功耗如D1/D2等,链路则相应进入L1,L2状态;
L0s,L1,L2都是低功耗状态,L0s功耗最高,L2功耗最低。
ASPM类:L0s和L1,ASPM即活动电源管理,负责链路的低功耗状态,如IDLE状态;
其他类:Loopback,Hot Reset,Disabled,环路通常用作链路端口的自检,Hot Reset则是由带内发起的复位;
Disable:系统软件可以进入此状态,对端设备拔出也进入此状态;
Loopback:进入该状态,接收端口的数据被转发到发送端口,以利于测试用途;
Hot reset:系统启动该状态,先进入Recovery状态,在进入Hot reset状态,链路重新初始化
需要注意的是:在从Detect到L0之前,链路肯定是link down的,其中configuration可能是UP,也可能是down,在L0之后,L1,L2,L0s,recovery状态下链路均是Link up的,特殊的几个模式:Loopback,Hot Reset和disable则是linkdown的,up/down在图中用绿色/黑色的椭圆外形表示;
在一致性测试中,进行测试的原理是使设备进入Polling状态下的polling Cmpliance状态,该状态基本是一个故障状态,PCIe发送端会不发送测试pattern出来,从而可以进行眼图测试;