美文网首页
PLP(转)

PLP(转)

作者: 小学究鑫鑫 | 来源:发表于2020-11-20 13:19 被阅读0次

    http://www.bnc.com.cn/gygj/xwzx/491.html

    PCIe总线凭借其优良的传输性能和强大的扩展性和兼容性在各种数字系统中得到了广泛的应用,其最新的规范PCIe 5.0速率已提升至32GT/s,具有强大的应用潜力和前景。我司的板卡同样大量应用该总线实现系统的简化和扩展。实际经验中,大量的相关问题,如协商问题、降速、降lane、误码等,都发生在物理层。因此专题介绍PCIe物理层和链路协商的过程,同时配以实际应用中常见的相关问题,使读者深入理解PCIe物理层,并且得到依据这些知识进行问题定位的经验。

    PCIe物理层

    PCIe总线分为3个传输层,分别是物理层、数据链路层和传输层,其中物理层负责处理物理信号并与数据链路层进行数据交换,如下图所示:

    图1 物理层示意图

    物理层的主要功能包括:串并转换、 编解码(2.5GT/s\5GT/s速率下采用8b/10b编码,而8GT/s以上采用128b/130b编码)、差分信号的发送和接收、生成物理层报文PLP、链路初始化和链路训练。

    8b/10b编码

    2.5GT/s、5GT/s速率下采用8b/10b编码,而8GT/s以上采用128b/130b编码,本文以8b/10b编码为例讲解。链路进行编码的目的在于避免在链路上输出连续的“0”或连续的“1”,其原因如下:

    接收器需要从链路上恢复时钟,该时钟用于接收器的采样等功能,而连续的“0”或 “1”会导致接收器无法稳定的恢复时钟。

    发送器和接收器之间通过串接电容交流耦合,连续的“0”或 “1”包含的直流分量会受到耦合电容的衰减,导致在接收测无法分辨高低电平,从而造成误码。

    链路需要保持直流平衡。

    8b/10b编码在物理层的实现如下图所示,在发送过程中数据链路层的8bit数据转换为10bit数据输出在链路上;在接收侧将链路上接收到的10b数据转换为8bit后上传到数据链路层。

    图2 8b/10b编码

    来回转换的过程并非直接增加两个bit,而是根据ANSI X3.230-1994标准中规定的表格实现的,其中一个8bit数据对应两个10bit数据。所对应的10bit数中已经排除了其中包含连续的“0”或 “1”,因此经过编码后可以保证链路上不会出现连续的“0”或 “1”,从而实现上述目的。

    PCIe链路在进入L0(正常工作状态)后就会启用8b/10b编码,因此在链路上无法像IIC总线一样看出链路传输的数据,而需要通过协议分析仪解码后再进行分析。再进入L0状态之前(即训练过程中),链路上的数据未使用8b/10b编码,在此阶段可以通过示波器进行观察其链路状态。

    链路初始化和训练

    PCIe链路需要通过链路初始化和链路训练的过程来建立连接,同时决定链路的宽度、链路速率、链路翻转和链路极性。

    PCIe标准支持X1、X2、X4、X8等链路宽度,需要注意的是如果在X4链路中Lane0链路出问题,剩余3条Lane均正常,该链路并不能协商成X2链路或X1链路。除非两侧设备均支持Lane翻转。

    链路速率由两个设备所支持的最高速率决定,在Polling阶段两个设备分别将速率信息写入TS1数据包中进行协商。

    链路翻转的意义如下图所示,其目的在于便于链路的PCB走线。

    图3 正常链路

    图4 翻转链路

    链路极性翻转即差分信号中的正负信号反接,其目的也是在于方便PCB走线。需要注意的是无论是链路翻转还是极性翻转都建议尽量不要使用,原因在于不同厂家对这些功能的支持情况不同,可能导致设计失败的后果。

    LTSSM

    LTSSM意思是链路训练和状态状态机,控制链路建立、链路参数协商以及电源模式等。LTSSM是理解PCIe链路训练过程的关键,也是解决PCIE链路速率、宽度错误以及连接无法建立问题的重要依据。

    图5 LTSSM

    正常的训练过程是Detect->Polling->Configuration->L0,其中L0即正常工作状态,而L0s、L1、L2均为不同等级的低功耗状态,Detect为检测在位,Polling阶段协商链路参数和锁定Symbol,Configuration阶段确认链路参数。

    相关文章

      网友评论

          本文标题:PLP(转)

          本文链接:https://www.haomeiwen.com/subject/zaydiktx.html