一、总览
链路初始化和训练,由物理层进行控制,是一个基于硬件的过程。初始化设备的链路和端口,使得设备能够收发报文,在链路上正常通信。
在reset后由硬件自动启动完整的训练过程,并由LTSSM管理。
1 位锁定
训练开始,接收端时钟和发送端时钟不同步,接收端无法可靠采样输入信号的数据bit
训练期间,接收端的时钟和数据恢复(CDR,clock and data recovery)逻辑,通过使用数据bit流作为时钟的参考信号,来重建发送端的时钟,一旦从数据流中恢复了时钟,表示接收端完成位锁定。
2 符号锁定
编码8b/10b来说,下一步训练进行符号锁定,接收端可以接收单个bit,但是不知道10bit组成符号的边界,收发端交换有序集TS1和TS2时候,接收端接收可识别的pattern,如COM符号,因为COM符号独特编码导致它容易被识别找到,识别到COM后,接收方不但定位到两个符号的边界,还可以定位到两个有序集边界(TS1 TS2以COM作为开端,可区分)。
3 块锁定
和符号锁定不太一样,没有编码方案的支持,但是还是需要区分块边界。解决方式就是在有序训练集中包含更多的EIEOS(电气空闲退出有序集),用于定位边界。特定是00h和FFh交替的pattern。
4 链路宽度
PCIE可以使用不同的链路宽度,如X2和X4的端口设备连接,链路训练过程中, 两台设备会设置为两者能接受的最大值(交集)。
5 通道翻转
通常设备端口在多通道情况下,从0开始依次递增;端口对端口也是0对0,1对1这样;
这个功能主要是简化PCB布线,当支持通道翻转时候,如4通道情况下,默认是0-0,1-1,...这样的,但是某种原因,需要0-3 1-2 2-1 3-0这样交叉进行对接,如有通道翻转,开启后,效果和默认一样;这是可选项。
6 极性翻转
两个设备间D+和D-是支持反接的,目的也是为了简化PCB布局布线。任意的接收端都需要单独检测查分信号的连接情况,如发生极性翻转,训练期间自动纠正。这是必选项。
7 数据链路速率
reset后,链路初始化和训练状态机总是会将速率设置为默认的2.5Gbit/s,实现向后兼容(第一代就是2.5)。若是要实现更高的速率,完成训练后,LSTTM再重新进行一次过程更短的训练,以改变双方都支持的最高速率;
8 多lane信号去偏移
通道间的传输线长度有差异,导致多通道链路中同时并行传输的bit,到达接收端有差距,称为信号偏斜;接收方需要延迟到达早的通道,对齐所有通道的信号时间,补偿通道之间的信号传输快慢的差异;
6~8可以很大程度上简化PCIE PCB设计。
二、链路训练的有序集
链路训练过程设计的有序集TS1和TS2
LTSSM在轮询、配置以及恢复状态中,收发端都会交换TS1 TS2有序集。
symbol | description |
0 | gen1/gen2:COM(k28.5)符号;GEN3: 1Eh->TS1有序集 |
1 | Link Number链路编号:
|
2 | Lane Number链路编号:
|
3 | N_FTS 有序集数量:从L0s返回L0时,接收方收到快速FTS有序训练集数量。 |
4 |