PCIE PHY链路训练
1 Rc和EP整个系统工作如何确保经过物理层模数转换后的信号经过PCB如何能正确被对端设备物理层恢复?
--即PCIE链路训练,会通过动态调整收发器参数来补偿这些影响,即眼图信号质量;
在数字电路通信方式:通信是依靠数据数字逻辑来保证,具体到silicon的时候是通过STA来保证0传输是0,1传输是1;
2 PCIE链路训练基本概念
• 配置/初始化设备的物理层;
• 确保包可以在链路上正常进行传输
• 物理层的链路训练状态机模块负责完成LTSSM;
• 系统复位撤销后,硬件自动启动,不需要软件干预
• 链路训练仅有物理层参与
PCIE PHY内部结构示意图
从结构图可以看出:
* TX:接收MAC层的PIPE的并行接口,进行8b/10b编码,在进行并行2串行的时候加入Serdes的clk;
* RX: 接收Serdes的串行差分信号,进行CDR解时钟然后进行采样,在进行串转并行;
3 PCIE 链路训练目标:
• 位锁定:
• PCIE PHY为Serdes时钟信号隐藏在数据信号中;-->TX向RX发送该数据信号--》RX的PHY通过CDR电路将发送端时钟从接收数据恢复;--》恢复出的时钟对接收数据信号进行采样--》CDR正确恢复出时钟,即为位锁定;
• 符号锁定
• 位锁定只能正确接收识别数据流中的0/1,不确定发送内容;
• 符号锁定即能够识别起始COM字符,然后后面即是要拿的数据;
• 极性反转
• 正常情况下是Serdes Txn与Serdes Rxn连接;但有时候也可能是存在Tx与Rxn连接的情况;
• 链路宽度
• PICE物理层存在多条lane,即存在多个Serdes;x1/x4/x8/x16;即PCIE x16允许设备连接x8/x4的设备;也可能存在坏Lane的情形;
因此需要确认连接链路宽度;
• 通道翻转:
• 即正常设备下:device A lane0/1/2/3 和device B lane0/1/2/3连接;允许device A lane0/1/2/3来连接device 3/2/1/0;
• 通道对齐:
• 发送端各lane各信号到达发送端不一致的情况下;
• 均衡器:
• 使得信号质量眼图更好;
结合上面的图片来进行理解和记忆;
4 PICE链路训练如何实现的为达到上述目标?–链路训练状态机
链路训练过程中物理层发送端和接收端不断交换数据包,来达到上面的链路训练目标;–即TS1/TS2序列
-----即链路训练状态机;–LTSSM
链路状态机图如下:
Detect:监测设备;
Polling:实现位锁定、符号锁定、极性翻转-->协商出GEN几;
Configuration: 链路宽度、通道反转
L0:正常工作状态;
Recoverty: 动态调整EQ参数,改善眼图信号质量;
LTSSM状态转移条件:
1.Detect-->Polling状态
跳转条件:检测到对端设备存在(通过接收端检测到差分信号幅度超过阈值) + 计数器
失败:若未检测到设备,则进入循环;
2.Polling--> Configuration
跳转条件:双方成功交换TS1和TS2,则此时已经实现了位锁定和符号锁定,才能检测出特定序列,协商出支 持最高速率(Gen x);
失败:若速率不匹配,则返回Detect;
3.Configuration-->Recovery/L0状态
跳转条件:若完成通道映射和链路宽度,则直接进入L0;
若是发现信号质量眼图不足,进入Recoverty状态进行EQ;
4.Recovery-->L0状态;
跳转条件:EQ参数收敛,即信号眼图质量满足要求;双方通过TS1/TS2确认EQ参数;
失败:若EQ无法收敛,则进入Detect状态;
5.L0状态-->Recovery状态
触发:链路信号质量差(误码率) 或软件主动配置寄存器重训练;
LTSSM状态寄存器:
位置:PCIe配置空间的Link Status Register(Offset 0x12);
作用:读取当前的LTSSM状态(比如0x3表示Polling状态);
5 PCIE拓扑结构
整个PCIE是一个树形的拓扑:
- RC:是CPU的代理,也称为host bridge,实现cpu地址到PCIE域地址的转换;
- Swtich: 扩展PCIE总线,相当于路由,来找PCIE ep;注意port口;
- EP: 具体pcie device,比如显卡,网卡,nvme卡等;