0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对LTSSM进行了简单的介绍

SwM2_ChinaAET 来源:未知 作者:李倩 2018-06-08 09:12 次阅读

这一篇文章来简单地介绍一下链路训练状态机(Link Training and Status State Machine,LTSSM),并简要地介绍各个状态的作用和实现机制。

LTSSM有11个状态(其中又有多个子状态),分别是Detect、Polling、Configuration、Recovery,L0、L0s、L1、L2(L3是可选的)、Hot Reset、Loopback和Disable状态。系统进行复位操作(Cold, Hot or Warm Reset)后,会自动进入Detect状态。

这11个状态又可以被分为以下五个类别:

1、链路训练状态(Link Training State);

2、重训练状态(Re-Training(Recovery) State);

3、软件驱动功耗管理状态(Software Driven Power Management State);

4、活动状态功耗管理状态(Active-State Power Management State,ASPM State);

5、其他状态(Other State);

如下图所示:

下面分别简要地介绍一下各个状态:

首先是Detect:

前面说到,系统进行复位操作(Cold, Hot or Warm Reset)后,会自动进入Detect状态。在这个状态中,PCIe设备会去检测自己Link的另一端是否存在其他PCIe设备。换句话说,就是检测有么有其他的PCIe设备与其相连接。如下图所示:

Polling:

在该状态中,PCIe设备会依次发送TS1OS和TS2OS以实现以下目标:

1、位锁定(Bit Lock);

2、字符锁定(Symbol Lock);

3、信号极性翻转(Polarity Inversion),如果需要的话;

4、确定各个设备支持的速率(Data Rates)。

如下图所示:

Configuration:

在该状态中,PCIe设备会依次发送TS1OS和TS2OS以实现以下目标:

1、确定链路宽度(Link Width);

2、分配通道(Lane)号;

3、通道位置翻转(Lane Reversal),如果需要的话;

4、通道对齐(Lane-to-Lane De-skew)。

如下图所示:

L0:

这是链路(Link)的正常状态(Normal and Full-Active State),所有的TLP、DLLP和Ordered Sets都可以被正常的收发。该状态下,速率可以是2.5GT/s或者是5GT/s(如果链路两端设备都支持的话,且经过了Re-Trainning)。

Recovery:

这个状态用于Re-Trainning,因此Re-Trainning可能会改变原有的速率,所以位锁定(Bit Lock)和符号锁定(Symbol Lock)操作都会被重新进行,但是花费的时间要比第一次少很多。

其内部的子状态转移图如下图所示:

L0s:

该ASPM状态主要用于降低功耗,在总线空闲的时候可以进入该状态,且从该状态可以迅速地重新切换回L0状态。当在L0状态是,链路上出现EIOS时,则表明即将进入L0s状态。当在L0s状态时,链路上出现FTS时,链路会迅速地完成位锁定和符号锁定,并进入L0状态。

发送端如下图所示:

接收端的示意图如下:

L1:

相对于L0s状态,L1状态下的功耗更低。进入L1状态需要链路两端的PCIe进行“沟通”,只有双方都“同意”进入该状态,链路才会进入该状态。一般有以下两种方式:

1、第一种是由ASPM引导,硬件自动完成的。发送端发现链路上长时间没有TLP或者DLLP时,便通过ASPM建议接收端进入L1状态。如果接收端“同意”了,则链路进入L1状态;如果接收端“不同意”,则链路进入L0s状态。

2、第二种是有软件引导的,软件发送一系列的命令让链路进入低功耗状态(D1,D2,or D3 Hot)。随后,链路的上端设备会通知下端设备进入L1状态,收到来自下端设备的应答后,链路进入L1状态。

如下图所示:

L2:

L2状态下的链路功耗更低,因为其只保留了Vaux,关闭了链路的其他功能。此时,需要Beacon信号或者WAKE#边带信号来唤醒系统。其中Beacon信号是一种低频信号(30KHz~500MHz),其波形图如下图所示:

注:此外,还有一个L3状态,不过其实际上已经不属于LTSSM了。由于L3状态连Vaux都关闭了,一旦进入L3状态,实际上和直接关闭PCIe设备的电源没有什么太大的差别了。

L2的子状态转移图如下图所示:

Loopback:

该状态主要用于测试,这里就不详细介绍了。

Disable:

该状态中链路被禁止,此时发送端处于电气空闲状态(Electrical Idle State),而接收端处于低阻状态(Low Impedance State)。进入该状态的原因可能是链路连接不稳定,或者链路中的某个设备被移除,如PCIe卡从插槽中拔出。

Hot Reset:

软件可以通过将桥控制寄存器(Bridge Control Register)中的Secondary Bus Reset位置位来复位链路。随后,桥下端的PCIe设备发送TS1OS,其中的Training Control中包含了Hot Reset的信息。当接收端发现连续的两个TS1OS中都包含Hot Reset时,链路随后进入复位状态。

注:本文只是对LTSSM进行了简单的介绍,关于具体的每一个状态内部是如何实现的,请参考PCIe Spec相关章节。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCIe
    +关注

    关注

    13

    文章

    1079

    浏览量

    80741
  • 链路
    +关注

    关注

    1

    文章

    61

    浏览量

    13928
  • 功耗管理
    +关注

    关注

    0

    文章

    8

    浏览量

    7162

原文标题:【博文连载】PCIe扫盲——链路初始化与训练基础(三)之LTSSM

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问sv子程序是进行了标幺化处理吗

    ti公司提供的SV调制的子程序文件中,计算矢量作用时间的时候,没有按照公式除以Udc,请问是不是哪边进行了标幺化处理
    发表于 12-21 11:19

    请问OSTickISR在UCOSII哪个文件进行了定义?

    OSTickISR在UCOSII哪个文件进行了定义,怎么没有找到?
    发表于 04-02 06:36

    HV857已针对各种应用进行了优化

    EL灯驱动器,它采用Supertex HV857集成电路提供六个EL驱动电路。它们已针对各种应用进行了优化,可以按原样使用,也可以作为设计特定应用电路的起点
    发表于 07-26 08:39

    对结构体成员进行了赋值

    \n",L->c);为什么这种方式对结构体成员进行了赋值tt *L=aa;这里L除了指向数组首地址为什么还指向结构体的首地址tt aa[]={10,25,34,4,5,88,75};这个数组有没有指向结构体的首地址
    发表于 03-23 01:11

    在Virtex5-Q FPGA上进行了哪些资格测试?

    嗨, 我正在寻找有关Virtex5-Q FPGA资格的信息。在Virtex5-Q FPGA上进行了哪些资格测试?谢谢
    发表于 06-11 13:00

    在uboot中对时钟进行了初始化

    uboot中对时钟进行了初始化,源码如下:/* * system_clock_init: Initialize core clock and bus clock. * void
    发表于 01-25 06:11

    请问一下Arm Cortex-M85性能的提升是对总线进行了优化吗?

    请问一下Arm Cortex-M85性能的提升是对总线进行了优化吗?
    发表于 09-21 11:28

    STM32CubeIDE是否针对新MAC中的Apple M1芯片进行了优化?

    STM32CubeIDE 是否针对新 MAC 中的 Apple M1 芯片进行了优化(具有 AArch64 和 x86 的通用二进制文件)?还是当前版本会使用 Rosetta 2 x86 仿真运行?有人试过 M1 Mac 吗?
    发表于 12-02 09:11

    imx6q eim总线连接fpga,signal Tap显示进行了多次写操作,为什么会这样呢?

    我们使用 mmap 映射 eim 总线地址,fpga.driver.c:然后我们在应用程序中定义一个缓冲区来测试,fpga_app.c:这里只进行了一次写操作,但是signal Tap显示进行了多次写操作,为什么会这样呢?
    发表于 04-04 08:38

    什么是LS1043 FIT率以及为得出FIT率进行了哪些测试?

    什么是 LS1043 FIT 率以及为得出 FIT 率进行了哪些测试?(器件数量、测试温度、故障、测试频率)?
    发表于 04-18 07:52

    “黑匣子”收集了数百个传感器参数,帮助进行了崩溃分析

    本文档内容介绍了基于黑匣子收集了数百个传感器参数,帮助进行了崩溃分析。
    发表于 09-18 15:02 0次下载
    “黑匣子”收集了数百个传感器参数,帮助<b class='flag-5'>进行了</b>崩溃分析

    对国内的大硅片项目进行了整理核分析

    《推进纲要》发布以来,我国各地开始大兴晶圆制造项目。时值岁未,笔者对我国的大硅片项目进行了整理。
    的头像 发表于 12-27 10:57 1.8w次阅读
    对国内的大硅片项目<b class='flag-5'>进行了</b>整理核分析

    三安光电董事长就相关财务造假问题进行了回应

    2019年1月16日,受财务造假疑云的影响,三安光电当日早盘大幅低开并与盘中跌停,对此三安光电于午间紧急召开电话会议,董事长就相关财务造假问题进行了回应。
    的头像 发表于 01-21 09:15 1.2w次阅读

    黑鲨3游戏手机对触控算法与采样率进行了优化

    雷军今天在微博透露,即将发布的黑鲨3游戏手机将触控采样率提升到270Hz。同时对触控算法进行了精细的调校,将单指触控延时降至24ms,多指触控延时降至28ms。
    的头像 发表于 02-25 14:02 3192次阅读

    Google对Google Camera进行了改进

    工作人员表示,他们已经改善了JIT,OTA速度,甚至对内核调度程序进行了一些更改。他们希望用户在Android Nougat中注意到所有这些。此外,他们强调,Android Nougat中的Doze light和背景限制将在不久的将来实施。
    的头像 发表于 04-22 09:27 1687次阅读