PCIe 个人理解专栏——【2】LTSSM(Link Training and Status State Machine)
前言:
链路训练和状况状态机LTSSM(Link Training and Status State Machine)是整个链路训练和运行中状态的状态转换逻辑关系图,总共有11个状态。
正文:
包括检测(Detect),轮询(poling),配置(configration),L0,L0s,L1,L2,恢复(Recovery),环回(Loopback),热复位(Hot Reset),禁用(Disable);L0是链路正常运行的状态,从配置到L0(即图中的绿色箭头)即是链路训练的过程。

整个LTSSM状态很多,且多个状态可以互相的转换,初步看上去很复杂,我们简单归纳一下,分成几类:
训练状态类:包括Detect,polling,configuration。
Detect:当PCIe链路被复位或者通过填写某些寄存器,将进入该状态,开始侦测对端设备是否存在,PCIe如何发现链路的另外一端有设备存在呢,其实是一个充电时间侦测,发送端拉高D+和D-信号的电压到600mv,如果没有接受端存在或者接受端没上电,发送端电压很快上升到600mv,但如果有接收端存在,因为有AC电容的存在,会经过一个充电时间后才上升到600mv;
polling:侦测到对端设备后,进入该状态,向对端发送TS1/TS2序列,并接收对端发送过来的TS1/TS2序列,以确定Bit/Symbol Lock,lane的极性,并进行Loopback测试。
Configration:进入该状态将确定链路的宽度,link number,lane reversal,polarity inversion和lane-lane的延时,至此链路两端还是2.5GT/S的速度。
工作状态:L0,PCIe链路的正常工作状态;
重新训练类:Revovery,链路有异常时,可能需要重新训练,会进入Recovery,从L0s,L1返回到L0,也需要先进入到Recovery。
Recvery:PCIe链路需要重新协商链路状态时,进入该状态;
电源管理状态类:L0s,L1,L2,如果设备进入了低功耗如D1/D2等,链路则相应进入L1,L2状态;
L0s,L1,L2都是低功耗状态,L0s功耗最高,L2功耗最低。
ASPM类:L0s和L1,ASPM即活动电源管理,负责链路的低功耗状态,如IDLE状态;
其他类:Loopback,Hot Reset,Disabled,环路通常用作链路端口的自检,Hot Reset则是由带内发起的复位;
Disable:系统软件可以进入此状态,对端设备拔出也进入此状态;
Loopback:进入该状态,接收端口的数据被转发到发送端口,以利于测试用途;
Hot reset:系统启动该状态,先进入Recovery状态,在进入Hot reset状态,链路重新初始化
需要注意的是:在从Detect到L0之前,链路肯定是link down的,其中configuration可能是UP,也可能是down,在L0之后,L1,L2,L0s,recovery状态下链路均是Link up的,特殊的几个模式:Loopback,Hot Reset和disable则是linkdown的,up/down在图中用绿色/黑色的椭圆外形表示;
在一致性测试中,进行测试的原理是使设备进入Polling状态下的polling Cmpliance状态,该状态基本是一个故障状态,PCIe发送端会不发送测试pattern出来,从而可以进行眼图测试;
相关文章:
PCIe 个人理解专栏——【2】LTSSM(Link Training and Status State Machine)
前言: 链路训练和状况状态机LTSSM(Link Training and Status State Machine)是整个链路训练和运行中状态的状态转换逻辑关系图,总共有11个状态。 正文: 包括检测(Detect),轮询&…...
cmake 编译QT之JKQtPlotter-4.0.3
cmake 编译 JKQtPlotter-4.0.3 1.下载源码 源码地址:https://github.com/jkriege2/JKQtPlotter 2.编译 mkdir build cd buildDCMAKE_PREFIX_PATH指编译器目录 D:\ProgramFiles\cmake-3.25.0-rc1-windows-i386\bin\cmake.exe -G "Visual Studio 16 2019&qu…...
【C】memory 详解
<memory.h> 是一个 C 标准库头文件,提供了一组内存管理函数,用于分配、释放和操作动态内存。这些函数主要操作的是未初始化的内存块,是早期 C 编程中常用的内存操作工具。 尽管在现代 C 编程中更推荐使用<cstring>或<memory&…...
Python 爬虫 - Selenium 框架
Python 爬虫 - Selenium 框架 安装安装 Selenium安装 WebDriver 操作浏览器打开浏览器普通方式加载配置方式Headless 方式 设置浏览器窗口最大化显示最小化显示自定义大小 前进后退前进后退 元素定位根据 id 定位根据 name 定位根据 class 定位根据标签名定位使用 CSS 定位使用…...
mysql的having语句
MySQL的HAVING语句用于在GROUP BY子句对数据进行分组后,过滤满足特定条件的组。与WHERE子句不同,HAVING子句可以在过滤条件中使用聚合函数,而WHERE子句则不能。通常,HAVING子句与GROUP BY子句一起使用,以实现对分组数据…...
华为数据之道-读书笔记
内容简介 关键字 数字化生产 已经成为普遍的商业模式,其本质是以数据为处理对象,以ICT平台为生产工具,以软件为载体,以服务为目的的生产过程。 信息与通信技术平台(Information and Communication Technology Platf…...
CDN、源站与边缘网络
什么是“源站” 源服务器 源服务器的目的是处理和响应来自互联网客户端的传入请求。源服务器的概念通常与边缘服务器或缓存服务器的概念结合使用。源服务器的核心是一台运行一个或多个程序的计算机,这些程序旨在侦听和处理传入的客户端请求。源服务器可以承担为网…...
工业相机 SDK 二次开发-Sherlock插件
本文介绍了 sherlock 连接相机时的插件使用。通过本套插件可连接海康的工业相机。 一.环境配置 1. 拷贝动态库 在用户安装 MVS 目录下按照如下路径 Development\ThirdPartyPlatformAdapter 找到目 录为 DalsaSherlock 的文件夹,根据 Sherlock 版本找到…...
FlinkSql使用中rank/dense_rank函数报错空指针
问题描述 在flink1.16(甚至以前的版本)中,使用rank()或者dense_rank()进行排序时,某些场景会导致报错空指针NPE(NullPointerError) 报错内容如下 该报错没有行号/错误位置,无法排查 现状 目前已经确认为bug,根据github上的PR日…...
VS C++ 配置OPENCV环境
VS C 配置OPENCV环境 1.下载opencv2.安装环境3.opencv环境4.VS配置opencv环境5.EXE执行文件路径的环境lib和dll需要根据是debug还是release环境来区分使用哪个 6.Windows环境 1.下载opencv 链接: link 2.安装环境 双击运行即可 3.opencv环境 include文件路径:opencv\build\…...
【SpringSecurity】基本开发流程
文章目录 概要整体架构流程实现流程1、编写各种Handler2 、AccessToken处理器3、定义AuthenticationFilter 继承 OncePerRequestFilter (OncePerRequestFilter是Spring提供的一个过滤器基类,它确保了在一次完整的HTTP请求中,无论请求经过多少…...
Redis实战(黑马点评)——关于缓存(缓存更新策略、缓存穿透、缓存雪崩、缓存击穿、Redis工具)
redis实现查询缓存的业务逻辑 service层实现 Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;// 现查询redis内有没有数据String shopJson (String) redisTemplate.opsForValue().get(key);if(StrUtil.isNotBlank(shopJson)){ // 如果redis的数…...
ChatGPT从数据分析到内容写作建议相关的46个提示词分享!
在当今快节奏的学术环境中,研究人员面临着海量的信息和复杂的研究任务。幸运的是,随着人工智能技术的发展,像ChatGPT这样的先进工具为科研人员提供了强大的支持。今天就让我们一起探索如何利用ChatGPT提升研究效率进一步优化研究流程。 ChatG…...
在 Windows 11 中设置 WSL2 Ubuntu 的 `networkingMode=mirrored` 详细教程
在 Windows 11 中设置 WSL2 Ubuntu 的 networkingModemirrored 详细教程 引言环境要求配置 .wslconfig 文件重启 WSL2验证镜像网络模式解决常见问题其他注意事项结论 引言 在 Windows 11 中使用 WSL2(Windows Subsystem for Linux 2)时,默认…...
万字长文总结前端开发知识---JavaScriptVue3Axios
JavaScript学习目录 一、JavaScript1. 引入方式1.1 内部脚本 (Inline Script)1.2 外部脚本 (External Script) 2. 基础语法2.1 声明变量2.2 声明常量2.3 输出信息 3. 数据类型3.1 基本数据类型3.2 模板字符串 4. 函数4.1 具名函数 (Named Function)4.2 匿名函数 (Anonymous Fun…...
怎么样把pdf转成图片模式(不能复制文字)
贵但好用的wps, 转换——转为图片型pdf —————————————————————————————————————————— 转换前: 转换后: 肉眼可见,模糊了,且不能复制。 其他免费办法,参考&…...
本地centos网络配置
1、路径 2、配置 另外还需要...
kotlin内联函数——runCatching
1.runCatching作用 代替try{}catch{}异常处理,用于捕获异常。 2.runCatching函数介绍 参数:上下文引用对象为参数返回值:lamda表达式结果 调用runCatching函数,如果调用成功则返回其封装的结果,并可回调onSuccess函…...
Python3 正则表达式:文本处理的魔法工具
Python3 正则表达式:文本处理的魔法工具 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南,旨在帮助读者从基础入门到项目实战,全面提升编程能力。文章结构由 5 个版块组成,内容层层递进,逻…...
《DiffIR:用于图像修复的高效扩散模型》学习笔记
paper:2303.09472 GitHub:GitHub - Zj-BinXia/DiffIR: This project is the official implementation of Diffir: Efficient diffusion model for image restoration, ICCV2023 目录 摘要 1、介绍 2、相关工作 2.1 图像恢复(Image Rest…...
新手避坑指南:安捷伦/是德示波器探头选1MΩ还是50Ω?实测对比告诉你差别有多大
示波器探头阻抗选择实战手册:1MΩ与50Ω的黄金法则 第一次接触示波器时,我犯了个低级错误——用1MΩ探头直接测量射频电路,结果不仅波形畸变成锯齿状,还差点烧毁前端放大器。这个价值3000元的教训让我深刻认识到:探头…...
如何用开源工具G-Helper实现华硕笔记本硬件控制的全面优化?
如何用开源工具G-Helper实现华硕笔记本硬件控制的全面优化? 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项…...
华为防火墙NAT(Easy-IP)实战:多区域安全访问控制与地址转换
1. 华为防火墙NAT(Easy-IP)技术解析 华为防火墙的NAT(Easy-IP)功能是企业网络架构中实现安全访问和地址转换的核心技术。简单来说,它就像是一个智能门卫,不仅负责检查进出人员的身份(安全策略),还能帮内部员工隐藏真实…...
Qt图形项事件处理全解析:从mousePressEvent到mouseReleaseEvent的正确姿势
1. Qt图形项鼠标事件处理的核心机制 在Qt框架中处理图形项的鼠标交互,本质上是在和事件传播机制打交道。我刚接触Qt图形视图框架时,也曾被mouseMoveEvent不触发的问题困扰过整整两天。后来才发现,这其实是一套设计精巧的事件处理哲学——只有…...
OpenClaw多模型路由策略:百川2-13B与CodeLlama任务分配逻辑
OpenClaw多模型路由策略:百川2-13B与CodeLlama任务分配逻辑 1. 为什么需要多模型路由? 去年我在搭建个人AI助手时遇到一个典型问题:当我把所有任务都交给同一个大模型处理时,发现代码生成任务的质量总是不尽如人意。后来通过日志…...
思博伦TestCenter打流丢包?别急着甩锅设备,先看看这个20字节的‘隐形签名’
思博伦TestCenter打流丢包?别急着甩锅设备,先看看这个20字节的‘隐形签名’ 当你在深夜的机房里盯着思博伦TestCenter的测试报告,发现RFC2544吞吐量测试结果突然归零,而端口统计与流统计的数值差异大得离谱时,那种抓狂…...
GitLab实战:如何用rebase -i优雅合并多个commit(附常见错误排查)
Git提交历史优化:交互式rebase高阶操作指南 1. 为什么需要整理Git提交历史 在团队协作开发中,我们经常会遇到提交历史杂乱无章的情况。想象一下这样的场景:你完成了一个新功能的开发,但在这个过程中产生了十几个零散的提交记录&am…...
Audacity:音频创作者的开源瑞士军刀
Audacity:音频创作者的开源瑞士军刀 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 在数字音频创作的世界里,专业工具往往意味着高昂的订阅费用和陡峭的学习曲线。Audacity 的出现打破了这…...
从‘找不到设备’到驱动成功:3DSystems Touch HID 在Linux下的连接问题全解析与诊断工具使用
从‘找不到设备’到驱动成功:3DSystems Touch HID 在Linux下的连接问题全解析与诊断工具使用 当你在Ubuntu系统中第一次连接3DSystems Touch HID设备时,可能会遇到各种令人困惑的问题——设备无法识别、动态链接库错误、/dev/ttyACM*设备消失等。这些问…...
从ResNet到mHC:DeepSeek重构残差连接,额外开销仅6.7%,附复现代码
2015年,由微软亚洲研究院的何恺明团队提出ResNet,ResNet引入残差连接的概念,用以解决深层神经网络训练中的梯度消失/爆炸和网络退化问题,使得训练极深的网络成为可能。 ��1��&#x…...
