首页 > 其他分享 >PCIE状态机-LTSSM

PCIE状态机-LTSSM

时间:2024-05-16 12:42:18浏览次数:19  
标签:状态 LTSSM PCIe 状态机 PCIE Polling 链路 Configuration TS1

一、PCIE LTSSM

  LTSSM是指Link Training and Status State Machine,是PCIe物理层实现的,用于控制和管理PCIe总线上的数据链路。它提供了一组状态,以便设备进行链路训练和链接协商。

  在PCIe总线上,发送端和接收端需要进行链路训练,以便确定最佳的链接速度和链接宽度。LTSSM的作用是控制这个过程,并在链路训练期间跟踪链路状态和错误。

  LTSSM状态包括:Detect、Polling、Configuration、Recovery、L0、L0s、L1、L2、Hot Reset、Loopback和Disable。当设备之间开始建立连接时,LTSSM从Detect状态开始。然后,它进入Polling状态,等待对方回应确认连接。如果确认完成,则进入Configuration状态,进行链路配置。之后,LTSSM进入L0状态,表明链路处于活动状态。如果设备需要低功耗状态,则可以进入L0s或L1状态。如果出现错误,则可能会进入L2状态或Loopback状态进行修复。

1. 链路训练和状态机

物理层的链路训练和状态机(LTSSM)模块负责配置和初始化一个设备的物理层、端口的发送器和接收器以及相关的链路,以状态机来管理和描述这个过程。

下图展示了LTSSM的 11 个状态,这些状态可以分为以下 4 种类型:

(1)PCIe链路训练状态:Detect、Polling 和 Configuration状态。正常PCIe链路训练状态转换流程:Detect -> Polling -> Configuration -> L0;L0是PCIe链路可以正常工作的电源状态。

(2)PCIe链路重训练状态:Recovery 状态。进入这个状态因素很多,比如电源状态的变化,PCIe链路速率的变化等。

(3)电源管理状态:PCIe总线的电源状态主要有两部分内容。

  • 基于软件控制的PCI-PM电源管理机制
  • 基于硬件控制的ASPM(Active State Power Management)电源管理机制,是基于硬件自主控制的链路电源管理机制,只有在PCIe设备处于D0状态时才可以启动ASPM机制,与ASPM有关的链路状态有L0、L0s、L1 (包括L1.1和L1.2)和 L2。

(4)其它状态:Disable、Loopback 和 Hot Reset。

 

1.1 Detect 状态

   Detect 状态是在基本复位或者软件产生的热复位命令后进入的初始状态,在复位80ms内进入这个状态。Detect状态也能从其它状态进入。如下图所示:

 

Detect有两个子状态:Detect.Quiet 和 Detect.Active。

1.1.1 Detect.Quiet 子状态

1.1.2 Detect.Active 子状态

 我理解的Detect状态是有硬件实现的,且不需要发送PLP包,所有在Trace上看是没有Detect子状态的。

1.2 Polling 状态

Polling 状态是链路训练和初始化过程中的第一个时段,在这个过程中两相连设备互相发送PLP包(TS1 和 TS2 序列)。Polling 状态机共有 4 个子状态:

  • Polling.Active:进行 Bit Lock 和 Symbol Lock;
  • Polling.Compliance:进行 Compliance 合规性测试;
  • Polling.Configuration:实现极性翻转(Lane Polarity Inversion);
  • Polling.Speed:确定链路速率。

 

  • Bit Lock:在Bit传输过程中,RX PLL锁定TX Clock频率,这个过程称为RX实现“Bit Lock”
  • Symbol Lock:RX端串并转化器知道如何区分一个有效的10-bit Symbol,这个过程称为“Symbol Lock”,这里用到的是COM控制符。
1.2.1 Polling.Active 子状态

1.2.2 Polling.Configuration 子状态 

在 Polling.Active 状态下至少发送1024个TS1 来实现 Bit/Symbol Lock。由于发送端和接收端不是同时退出Detect状态,所以从Trace上看TS1序列交流可能不会同步。随后发送8个TS2有序集,进入Polling.Configuration状态,在这个状态下完成Polarity Inversion极性反转。并进入下一个状态Configuration。

 

1.2.3 Polling.Speed 子状态

1.2.4 Polling.Compliance 子状态

1.3 Configuration 状态

本状态的主要功能是为每一条Lane分配链路号和通路号,去除同一个链路各通路间的时差。上游设备往所有下游通路上发送TS1,下游设备也返回TS1,以此进行链路编号和通路编号。在Link Number 和 Lane Number 成功完成之后,双方再互相发送TS2进行确认。

Configuration包含6个子状态:

  • Configuration.Linkwidth.Stat
  • Configuration.Linkwidth.Accept
  • Configuration.Lanenum.Wait
  • Configuration.Lanenum.Accept
  • Configuration.Complete
  • Configuration.Idle

 

1.3.1 Link Number 协商

        Downstream在TS1中设定Link Number,此时Lane Number为PAD,并发送给Upstream。

   此时Upstream回复的第一个TS1,Link Number还是PAD。

1.3.2 Lane Number 协商
当 Downstream 看到 Upstream 返回的TS1中 Link number 已经是设定值,那么久认为Link num已经协商成功,然后就开始准备设定 Lane number,此时 Downstream 链路也进入Configuration.Linkwidth.Accept状态。

Lane Number 协商过程跟 Link Number 一样,在TS1 中包含了已设定的Link Number 和将要设定的 Lane Number。

Downstream 接收到 Upstream 返回的TS1 的 Lane Number 已经是设定值,Lane Number就协商完成了,接下来进入Configuration.Complete状态。

1.3.3 确认Link/Lane Number

Downstram 和 Upstream 双方通过发送 TS2 序列,对之前设定的Link/Lane number进行确认,这个过程LTSSM处于Configuration.Complete状态, 确认没有问题之后,就准备进入下一个状态。

1.4 L0 状态

  当进入这个状态时,PCIe链路就可以愉快的开始正常工作了。这个状态可以传输TLP,DLLP等报文。

1.5 L0s 状态

  表示设备处于低功耗状态,但仍能在短时间内快速恢复到L0状态,以响应来自系统的请求。

1.6 L1 状态

  表示设备处于更加严格的低功耗模式,需要一些时间才能恢复到L0状态。在L1状态下,设备仍然保持接收来自系统的信号,但不会进行数据传输。

1.7 L2 状态

表示设备处于最低功耗模式,需较长时间才能从其恢复,此时设备已无法响应来自系统的信号。在L2状态下,设备会关闭其传输通道,以达到最低功耗状态。

1.8 Recovery 状态

当PCIe链路需要重新训练时,进入Recovery状态。主要有以下几种情况:

(1)PCIe链路信号发现error,需要调整 Bit Lock 和 Symbol Lock;

(2)从L0s或者L1低功耗电源状态退出;

(3)Speed Change。因为第一次进入L0状态时,PCIe链路速率是2.5GT/s。当需要调整更高(5.0GT/s或8.0GT/s)速率时,需要进入Recovery状态进行Speed Change。这个阶段 Bit Lock、Symbol Lock都需要重新获取;

(4)需要重新调整PCIe链路的Width;

(5)软件触发 Retrain 操作;

(6)仅在Gen3和Gen4,需要重新进行Equaalization。

我们结合一个上电过程中Gen1提速至Gen3的时序来解读一下Recovery状态的转换:

a. Downstream率先进入Recovery.RcvrLock状态, 之后向Upstream持续发送TS1并且将speed_change bit设置为1;

b. Upstream端看到TS1进来之后,也跟着进入Recovery.RcvrLock状态,同时回传TS1序列,不过此时,speed_change bit仍为0. 当Upstream接收达到连续8个TS1且speed_change bit设置为1,这时,Upsteam回传的TS1、TS2中speed_change bit设置为1,并告诉Downstream建议工作速率,接着进入Recovery.RcvrCfg状态;

c. Downstream收到Upstream建议的速率反馈之后,也返回TS2序列,并发送EIOS序列,准备进入Electrical Idle. 此时,LTSSM处于Recovery.RcvrCfg状态;

d. 之后,Downstream 和 Upstream相继进入Electrical Idle, LTSSM处于Recovery.Speed状态;

e. 经过一段时间timeout(Spec要求至少800ns),Upstream发送EIEOS, 退出Electrical Idle, 尝试跑最高速率8GT/s;

f. 接着 Downstream 也退出Electrical Idle, 尝试跑试跑最高速率8GT/s;

g. 最后,双方开始进行EQ。EQ之后,PCIe链路就可以回到正常工作状态。

 

1.9 Hot Reset 状态

  当某个PCIe设备发生错误时,我们有时候需要通过软件的方式对设备进行复位,这个方式就是Hot Reset。发送器在下游端口的所有Lane上连续发送Hot Reset 位为1的TS1序列。当接收器收到至少2个带有Hot Reset的位为1的TS1时,然后通过Recovery进入Hot Reset。

Hot Reset的指令是在TS1序列中体现,如下图:

Hot Reset触发之后,LTSSM会进入Recovery和Hot Reset状态,之后会到Detect状态,PCIe链路开始重新训练。

 

1.10 Disable 状态

  用户可以通过设置修改Link Control寄存器,让PCIe链路处于Disabled状态。当退出Disabled状态后,LTSSM回到Dectect,PCIe链路重新训练。

当PCIe设备的驱动程序在系统启动时没有正确加载或出现故障时,该设备可能会进入PCIe Disable状态。在这种情况下,该设备将被禁用,并且无法使用。

 

1.11 Loopback 状态

  PCIe Loopback状态是指在PCIe总线上使用一对物理或逻辑通道之间的默认“回环”路径进行数据传输的状态。这种状态被用于测试和诊断PCIe设备和总线的状况。在PCIe Loopback状态下,设备发送和接收数据,但数据不会离开设备,而是通过物理或逻辑通道返回到发送设备。这个过程可以测试设备的发送和接收能力,以及信号的质量和延迟。PCIe Loopback状态可用于测试所有PCIe层,包括物理层、数据链路层和传输层。

 

标签:状态,LTSSM,PCIe,状态机,PCIE,Polling,链路,Configuration,TS1
From: https://www.cnblogs.com/yuanqiangfei/p/18195764

相关文章

  • PCIE思考:简单路由
    上电:主机设备上电,BIOS通过扫描下游设备的BAR,为其注册响应的空间,当需要对这些空间进行操作的时候,就会转换成TLP包的形式进行访问,当然直接和PCIE设备交互的还是RC;其中BAR的低位(具体情况具体分析)作为寻址其的地址;简单DMA读步骤(PCIE设备发起读):1.下游设备发起请求;2.CPU把数据写到......
  • TLP元素与PCIE数据流
    不同于并行总线,PCIe这样的串行总线不使用总线上的控制信号来表示某时刻链路上正在发生什么。相反地,PCIe链路上的发送方发出的比特流必须要有一个预期的大小,还要有一个可供接收方辨认的格式,这样接收方才能理解比特流的内容。此外,PCIe在传输数据包时并不使用任何直接握手机制(imme......
  • PCIE学习(一):PCIE基本知识
    PCIE和板卡点对点的方式连接两个设备。FPGA中的PCIE享有独立的IO,BANK,因为其配置复杂。A7系列支持2.0KU部分支持3.0KU+部分支持4.0通过高速BANK可以引出能连接高速设备的IO(GTX和GTH);在XILINX7Z035FGG676中有两个这样的BANK,每个BANK提供四对高速收发器,所以总的来说是8对......
  • 八、贪吃蛇之状态机设计
    八、贪吃蛇之状态机设计贪吃游戏采用mealy状态机。1. 游戏状态控制状态机用一段式编码来完成游戏控制过程:  各状态说明:(1) RESTART:复位后进入重启状态,屏幕显示欢迎界面,6秒后进入游戏难度选择界面,等待选择难度。(2) START:用SW[2:0]选择游戏难度,按下KEY[3:0]任意键,开始......
  • verilog 状态机模版
    定义所有状态参数localparamIDLE=3'b000;localparamBOF=3'b001;localparamFIND=3'b010;localparamCHANGE=3'b011;localparamERROR=3'b100;localparamEOF=3'b101;always@(posedgeI_sys_clkor......
  • 采集记录仪设计方案:926-基于PCIe的40Gbps光纤采集记录仪
    基于PCIe的40Gbps光纤采集记录仪   ORI-D2000信号记录仪是一款便携式记录仪产品,满足高达40GBps的数据存储速度、可扩展的大容量存储设备和配套的录取存储管理软件。主要特点  1、基本系统内存64GB,存储容量为7.6T,可扩展至四个盘位。  2、包含一张FPG......
  • AI模块(有限状态机、行为树)-应用在cocos中
    前言:本模块是在cocos项目中运用战斗框架,根据学习别人的文章来结合项目进行编写的,若有不对不合理的地方有劳大家指正,万分感谢!!!若有能有用的上的,万分荣幸!简介:AI模块一般是对怪物的AI实现,或者托管等自动战斗的情况。具体方式可能根据项目的具体需求来选择,常用的有:有限状态机,行为树......
  • 926-基于PCIe的40Gbps光纤采集记录仪
    基于PCIe的40Gbps光纤采集记录仪   ORI-D2000信号记录仪是一款便携式记录仪产品,满足高达40GBps的数据存储速度、可扩展的大容量存储设备和配套的录取存储管理软件。主要特点  1、基本系统内存64GB,存储容量为7.6T,可扩展至四个盘位。  2、包含一张FPG......
  • 3568F-PCIe 5G通信测试手册
     ......
  • 实测952Mbps!四路千兆网PCIe拓展方案,国产工业级!
    测试环境说明运行系统:Debian-11.8评估板:TL3588-EVM(RK3588J)模块:PCIe扩展2/4路千兆网口模块方案:无锡沐创N500L-AM2C-DD、N500L-AM4C-QD测试工具:iperf3 创龙科技已基于瑞芯微RK3588J、RK3568J处理器实现了PCIe拓展多路千兆网口方案,以下主要介绍基于瑞芯微RK3588J(硬件平台:创龙......