PCIe总线的链路训练

目录

概述

链路训练的目的

几个关键概念

Lane reveral :

Polarity inversion:

De-skew:

link number:

Lane number:

Bit lock:

Symbol lock:

几个特殊序列:

TS1和TS2:

IDLE;

FTS:

Skip:

LTSSM状态机

Detect状态:

Polling:

Cfg:


概述

PCie链路的初始化过程较为复杂,Pcie总线进行链路训练时,将初始化Pcie设备的物理层,发送接收模块和相关的链路状态信息,当链路训练成功结束后,PCIe链路两端的设备可以进行通讯。

链路训练主要由硬件逻辑完成,而无需系统软件的参与。此外当PCie设备从低功耗状态返回到正常工作模式时,或者PCie出现错误时,也需要进行重新连接。

链路训练的目的

主要是进行PCie物理层,端口配置信息,相应的链路状态,并了解链路对端的拓扑结构,以便PCie链路两端的设备进行通信。

几个关键概念

Lane reveral :

PCie链路两端的设备所使用的的lane可以错序进行连接

Polarity inversion:

在单lane上,差分的极性也可以进行错序连接

De-skew:

PCI总线可以使用多个lane进行数据交换,而数据报文经过不同的lane的延时并不完全相同,PCie总线进行训练时,需要处理这些不通lane的延时差异,并进行补偿

link number:

在一个switch中存在多个下游,并使用0~n,进行编号,这些编号存在swith的硬件逻辑中,而不再配置空间中,

Lane number:

分为两类,一类时物理lane number(链路训练之前) 另一类是逻辑lane number(链路训练之后,)应为PCIE容许错序连接,因此,逻辑lane和物理lane并不一定相同,因此在总线链路训练时,需要对rc或者sw的link初始化。

Bit lock:

pcie总线进行数据传输时,需要进行时钟同步,但是pcie链路并没有这个时钟信号,因此在进行总线训练时,接收端需要从发送端的数据报文中提取接受时钟,这个过程称为bit lock

Symbol lock:

在链路训练中,PCIe链路需要首先确认COM字符。11000001010,00111110101

几个特殊序列:

TS1和TS2:

TS1主要检测PCie的链路配置信息,而ts2确认TS1序列的检测结果;

(仅仅时第6到15的字符含义不通)

0:COM控制字符,表示ts1和ts2序列的开始,字符序列将复位LF-SR序列。

1:在链路的初始化阶段,第一个字符放置pad,即为空;而在链路配置阶段,该字符放置

端口的link number。

2:在链路训练阶段,第一个字符放置pad,即为空,而在链路配置阶段,该字符放置端口的lane number;

3:FTS的个数,不通的PCIe链路需要使用不通德FTS序列,才能使接收端的PLL锁定接受时钟。

4:存放当前PCie设备支持的数据速率。

5:存放命令,第一位为hot reset; 第二位式:loopback;第三位式:disable scrambling 第四位是:compliance receive。当接受逻辑收到TS1/TS2序列后,将根据该字符进行对应操作。

IDLE;

在正常情况下,在发送端进入到electrical idle 状态,必须向对端进行eios序列。

FTS:

单个FTS序列由一个com和三个FTS组成,该序列的主要目的是使接受逻辑重新获得bit/symbol lock;

Skip:

由一个com和三个skip、字符组成,主要目的是进行时钟补偿,PCIe的时钟2.5G+-300ppm,其中300ppm意味着。一百万个时钟,会出现300个偏移。如果PCIE不使用skip序列,本地时钟与从报文中提取存在飘逸,可能导致数据传输失败。

在PCIe设备接受逻辑中,使用了两个时钟,一个时钟是从PLL报文中恢复,一个是本地时钟。在总线中,使用elastic buffer 技术处理者这两个时钟之间的频率差和相位差,elastic buffer由一个buff组成,该FIFO的一端使用本地时钟域,另一端使用恢复的时钟域。由于时钟的不匹配,将出现overrun和underrun。总线规定在1190-1538字符之后,必须发送skip序列进行补偿。

LTSSM状态机

LTSSM是链路训练里面一个比较重要的状态机。

在进行总线链路训练时,将使用LTSSM状态机。总共由11个状态组成,如下图。

PCIe总线的链路训练_第1张图片

各个状态:

Detect状态:

简介:当PCie链路被复位或者数据链路层通过填写某些寄存器后,ltssm将进入该状态,该状态也是LTSSM的初始状态,当PCIe链路处于该状态时,发送逻辑TX并不知道对端接受逻辑RX的存在,因此使用Receive Detect识别逻辑判断对端接受逻辑rx是否可以正常工作,之后进入其他状态。

详情:detect由detect.quiet/ detect.active 两个子状态组组成,当PCIe设备进入复位,首先进入quiet状态,(发送逻辑处于idle,差分线为共模电压状态,为相同的值,此时发送逻辑功耗最低),当PCie设备处于quiet状态时,缺省使用2.5G速率,当12ms过后或者任何一个lane退出idle时,PCIe进入active阶段,

Polling:

当PCie链路进入该阶段时,将向对端发送ts1和ts2,并接受对端的ts1和ts2

以确定bit/symbol,lane的极性,处于该状态,将进行loop测试,确定当前pcie可以正常工作。

Cfg:

当进入该状态时,将确定链路的宽度,link number,lane reveral/porarity inverion,laneto lane的延时,该状态ltssm状态机最重要的状态,值得注意的时,在cfg状态。统一使用2.5g,知道进入l0状态。

L0状态:PCie正常工作状态。

你可能感兴趣的:(FPGA设计,嵌入式硬件,fpga开发)