这一过程的主要目的是host在识别枚举PCIe设备前,设备和主机PCIe链路上发生了什么?主要流程是上电后两侧根据PCIe进入总线协议LTSSM流程;该过程是一套硬件自动化过程,双方自动协商速度和宽度,调整发送和接收参数,达到最佳信号质量。 尽管根据信号完整性的不同,Root port支持PCIe Gen3/4,但主板布线有问题和干扰,只能Training出Gen2,甚至Gen1的速度来。
一、link概述
1.1 链路过程
- 检测对方是否存在初始状态
- 互发Training Sequence,实现锁定
- 互发TS,写宽度,决定lane-to-lane Deskew
- 重新训练链路
- 正常工作状态
1.2 字符序列
1.2.2 TS1和TS2序列
TS1序列主要是监控PCIe链路配置信息,TS2序列确认TS1序列检测结果
1.3 链路特征
- Equalization Interface
因为PCIE 3.80信号的速率可以达到8Gb/s,此外,为了补偿,链路通道的布线也可能很长,这可能导致高速信号衰减过大channel衰减需要增加传输信号的高频成分,使高频和低频能量相似,即equalization。因此在PCIE 3.0的Tx和Rx均衡设置用于补偿长链路时高速信号的衰减。 参考链接:PCIe3.0动态均衡 软件开发工程师通常不需要关心自适应平衡部分的配置,因为自适应平衡通常由硬件机制完成。详细参考链接:眼图和自适应平衡器
- PCIE的数据链路(lane)
PCIe采用端到端数据传输方式,数据发送端和接收端都包含发送逻辑(TX)和接收逻辑(RX),如下图 1所示是PCIe链路的一个数据通路(lane),一个lane有两组差分信号,共四条信号线。接收端RX和发送端的TX连接一组差分信号。一个PCIe链路可以由多个lane最多有32个组成lane(因为物理尺寸太大,一般不用)。 如图所示,版本PCIe的lane不同的数字,带宽也不同:
- lane resersal和lane Inversion 参考以下链接:了解链路翻转和极性翻转
二、LTSSM状态机
LTSSM有11种状态(包括多个子状态),即Detect、Polling、Configuration、Recovery,L0、L0s、L1、L2(L3是可选的),Hot Reset、Loopback和Disable状态。复位操作系统(Cold, Hot or Warm Reset)之后,会自动进入Detect状态。
2.1 Detect
Detect状态是设备上电复位或热复位后的第一个状态,即LTSSM当前设备检测到对端设备到位后,入口状态将下降polling状态。检测方法是根据充电时间长短判断对端是否在位。
2.2 Polling
进入这种状态,说明两者已经相遇,接下来需要打个招呼,看能不能正常沟通。 在这种状态下,两端设备相互发送TS1和TS2来确认Bit Lock, Symbol Lock,Polarity Inversion等等。这种状态下有三个子状态,即Active、Compliance、Configuration状态
2.2.1 Active状态
当在Detect.Active状态时TX发送RD序列后,对端RX接收正常,PCIe设备进入Polling.Active状态。 该状态下:
- 进入compliance状态
- 检测link control2寄存器的“Enter Compilance bit位置,如果位置为1,则进入compliance状态
- 如果PCIe链路上的任何一个lane对地阻抗为50欧的电阻连接在发送链路上,PCIe强制进入设备Compliance状态
- 若进入configuration如果状态条件不成立,也会进入Compliance状态
- 进入configuration状态
- 当“Enter Compilance bit位不为1时,PCIe链路两端设备的发送逻辑TX至少需要向对端发送1024TS1序列,其中TS1序列的Lane/Link number必须为PAD(即不设置Lane/Link number),若其接收逻辑RX从全部正确识别lane在接收了以下任何8个连续的报文序列之后PCIe设备将进入Configuration状态
2.3 Configuration
进入这种状态表明,两者使用相同的语言,无障碍的沟通,需要更深入的沟通才能实现合作。
2.4 L0
进入这种状态后,意味着双方已经完成了沟通,可以开始愉快的合作。也就是说,可以进行DLLP和TLP通信了。TLP packet携带真实命令(例如)MRd,CfgRd等)和响应,每一个TLP发出后,接收端应逐个回复DLLP ACK表示收到了TLP,若接收端收到TLP有bit error或者CRC error,然后回复NAK 第一次进入是GEN1的状态,但期望的是最大的协商能力L0状态,需要重新沟通,达到最佳合作状态,即跳入Recovery状态。
2.5 Recovery
进入这种状态,说明双方认为可以继续沟通,努力达到合作共赢的最佳状态。 这是一种重新训练的状态,目的是达到最佳路状态,如链路异常,未达到最大速率或最大宽度
三、link失败的原因
3.2.3 造成linking不稳定因素
- 高速串行信号质量问题 示波器测量确定了高速信号的完整性
- Serdes电源问题
- 时钟问题 PCIe SPEC规定RC和EP同源设备时钟需要100M. ±600ppm ,非同源时钟1000M. ±300ppm,因此若link时钟钟钟不能满足要求,可以通过等方式是pcie的Host和EP使用同源时钟或尝试姜EP的SSC功能关闭。