PCIe Gen4 ltssm协商过程

科技   2024-08-19 15:22   江苏  

本章节我们以gen4 Endpoint为例介绍PCIe ltssm(链路状态机)协商过程。

正常PCIe设备链路状态跳变为   detect-->polling-->configuration-->L0(gen1)-->recovery-->L0(gen3)-->recovery-->L0(gen4)。
需要注意的是在进入configuration状态之前,因为物理层还未收到有效数据(例如在PIPE接口的时钟pclk稳定之前),ltssm会在detect和polling之间反复跳转。
链路状态机首次进入L0时是2.5 GT/s速率,接着从L0进入recovery(步骤4)状态,在recovery状态将速率切换到8 GT/s,然后再回到L0(步骤5),接着从gen3 L0跳转到recovery状态(步骤6),在recovery状态将速率切换到16 GT/s,然后再回到gen4 L0(步骤7),至此链路协商已完成,后续使用DLLP完成credit初始化后就能发送TLP了。    

1.Detect  

detect目的是检测对端设备是否存在。

1.1.Detect.Quiet  

Detect.Quiet 状态是上电、复位(Function Level Reset 除外)、power‐up event之后进入的初始状态。
设备发送侧逻辑Transmitter 处于 Electrical Idle state.
Detect.Quiet 状态下,默认使用 2.5 GT/s 的数据传输速率
物理层状态信号LinkUp = 0通知数据链路层当前链路无法正常工作
之前已更新的均衡(equalization )状态会被清零
l何时进入Detect.Active?
Detect.Quiet状态超过12ms或者任意lane退出了Electrical Idle,则会进入Detect.Active
l如何进入Detect.Quiet 状态?
ltssm可以从Disabed、Loopback、L2、Polling、Configuration 或者 Recovery 状态进入 Detect.Quiet 状态。

1.2.Detect.Active  

只有从Detect.Quiet才能进入Detect.Active。在Detect.Active状态,使用Receiver Detection机制检测是否存在对接的lane。发送侧通过改变共模电压检测对端是否存在对接设备,如果链路如果存在对接设备,则电压变化较慢,反之,则电压变化很快。
  • 进入 “Detect.Quiet”
如果任意lane均没有检测到对端设备,则等待12ms后,进入Detect.Quiet
  • 进入“Polling State”
如果在所有lane均检测到对端设备,则进入polling状态。
  • 只有部分lane检测到对端设备
    • 等待12ms,再执行一次Receiver Detection,如果检测结果与首次检测结果相同则进入polling状态,否则进入Detect.Quiet
         

 

   
         

 

2.Polling  

在此状态,端口TX逻辑发送TS1 和 TS2 Ordered Sets(2.5 GT/s)、RX逻辑接收TS1 和 TS2 Ordered Sets(2.5 GT/s)
通过接收到的 TS1 和 TS2 序列,完成如下操作:
l完成bit lock、
l完成Symbol lock 或者 Block Lock
l完成Lane polarity配置
Gen4协商过程在此状态会依次经过Polling.Active和Polling.Configuration。在Polling.Active阶段,完成bit lock、Symbol lock,在Polling.Configuration阶段完成Polarity Inversion。    
         

 

3.Configuration  

发送逻辑 TX 和 接收逻辑 以 2.5 GT/s 的速度交换 TS1 和 TS2 Ordered Sets,完成如下功能
— Determine Link width
— Assign Lane numbers
— Optionally check for Lane reversal and correct it
— Deskew Lane‐to‐Lane timing differences
Endpoint设备在gen4链路协商过程中在Configuration状态经过的子状态分别是CFG_LINKWIDTH_START、CFG_LINKWIDTH_ACCEPT、CFG_LANENUM_WAIT、CFG_LANENUM_ACCEPT、CFG_COMPLETE和CFG_IDLE。
因为有些PCIe port支持bifucation,可以同时对接多个PCIe设备,因此需要在CFG_LINKWIDTH_START和CFG_LINKWIDTH_ACCEPT阶段确认Link width,而很多PCIe设备支持lane reversal并且支持部分lane对接设备(例如:x16lane的PCIe设备可以使用lane4~lane7 对接一个x4的PCIe设备)因此需要在CFG_LANENUM_WAIT和CFG_LINKWIDTH_START阶段确认有效的lane number。PCIe设备在CFG_COMPLETE阶段通过TS2确认已协商好的 Link widthLane numbers并且完成lane deskew,最后在CFG_IDLE阶段发送Idle data,然后进入L0。
         

 

4.Recovery  

在recovery状态可以实现如下功能:
lchange the data rate
n例如从2.5 GT/s切换到8GT/s、从8GT/s切换到16 GT/s
lre-establish bit lock, Symbol lock or Block alignment
lLane-to-Lane de-skew
lEqualization Complete
从L0进入Loopback、Disabled和Hot Reset状态都需要先进入Recovery
例如从L0开始重新协商有效lane数量,则首先进入recovery再进入Configuration
8GT/s及其以上速率,均衡(Equalization )是非常重要的步骤,能够有效保证高速通信过程中的信号质量,均衡的协商在Recovery.Equalization状态完成。
Recovery.speed状态用于完成速率切换
Recovery.RcvrLock阶段完成bit lock、完成Symbol lock 或者 Block Lock
Recovery.Rcvrcfg: 通过TS2 协商speed change or link width change、指定均衡阶段需要使用的init Preset  
    

5.L0  

L0正常工作状态,可以发送TLP
         

 

本文内容仅代表作者观点,不代表平台观点。

如有任何异议,欢迎联系我们。

如有侵权,请联系删除。


往期精彩回顾





2021年的第一场雪!英特尔2020年Q4财报解读



利用硬件辅助验证工具加速功能仿真


博文:裸片尺寸和光罩难题——光刻扫描仪吞吐量的成本模型


博文速递:Race condition in digital circuits


IP与SoC设计
《IP 与SoC》依托无锡国家“芯火”平台,全面报道全球IP与SoC设计技术的发展和国内外应用经验,为中国IC设计行业搭建一个IP与SoC资讯交流、产业促进的平台,为中国IC设计行业提供IP与SoC专业知识及相关信息支持和服务。
 最新文章