PCIE链路训练-状态机描述1

状态机描述

Config.linkwidth.start

1.

1Linkup = 0 + 状态机没有执行链路宽度的升级upconfiguration of the Link width):那么tx会在所有activedsp上发送TS1,其中link num为具体内容,lane num为pad;

(2)upconfigure_capable为1(这个变量为1一般表示上层逻辑执行链路宽度的减少),并且状态机没有执行upconfiguration of the Link width,那么自从进入到recovery状态之后,并且在当前子状态下收到了两个连续的TS1,其中link num和lane num均为pad,此后检测到退出Electrical Idle,那么tx会在inactive Lane上发送TS1,其中link num为具体内容,lane num为pad;

那么什么是activelane呢?-dsp/usp均满足

从Polling状态进入此子状态时,所有检测到接收端的通道会被视作Active Lane。从Recovery状态进入此子状态时,所有历经 Configuration.Complete 状态的链路上的通道,都会被视作Active Lane。

另外注意一点,DSP必须在发送的TS1中通告自身所有支持的速率,其中也需要包括端口不打算使用的速率。

此外针对usp,还需要注意,如果此时的状态跳转不是由 LTSSM 超时触发的,那么此时发送方应该在 Configuration 状态中发送的 TS1 中置位 Autonomous Change 比特 (Symbol 4, bit 6) ,表示发送方出于自身(Autonomous )原因想要改变链路宽度,从而进入 Configuration 状态。

2.

1dsp

Linkup = 1 + 状态机执行链路宽度的升级upconfiguration of the Link width):那么tx会在那么会在下列三类通道上发送link numlane num均为padTS1.

A:当前工作的通道上;

B:想要激活的非工作通道;

C:自从进入recovery状态之后已经收到两个连续的TS1接收到TS1的通道上,并且,在该通道上检测到退出Electrical Idle

  Usptx会在下列三类通道上发送link numlane num均为padTS1.

A:当前工作的通道上;

B:想要激活的非工作通道;

C如果upconfigure_capable为1,针对inactive的lane,并且这个lane自从进入recovery状态之后已经收到两个连续的TS1接收到TS1的通道上,并且,在该通道上检测到退出Electrical Idle的lane。

注意三点:

A:如果 USP 打算恢复链路宽度,LTSSM 首先等待下述两个条件任意满足一个:所有待激活的通道上都接收到两个连续的链路编号有效,通道编号为填充符号的TS1或者任意一个待激活通道进入本状态超过1ms

B:为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少2个TS1,128b/130b 编码时至少等待34个 TS1,但任何情况下不要等待超过1ms。

C:在激活不工作的通道后,发送端必须等待发送共模电压(Tx common mode voltage)稳定,才能退出电气空闲状态并开始发送TS1

2那么什么时候开始发送link num为具体数值但是lane numpadTS1在满足以下条件之一即可

Dsp

A在发送TS1的lane上收到了收到了两个连续的TS1,并且link num和lane num均为pad;

B:1ms超时;

另外注意两点,在激活不工作的通道时,发送端必须等待发送共模电压(Tx common mode voltage)稳定,才能退出电气空闲状态并开始发送TS1;对于组合为同一链路的通道,他们的链路编号必须相同。只能在支持多链路配置的不同链路之间才可以分配不同的链路编号。

Usp

如果一些通道接收到了两个连续的链路编号有效,通道编号为填充符号的TS1 usp选取其中一个接收到的链路编号作为这些通道的链路编号,并在所有收到链路编号非空的TS1的通道上,回复采用该链路编号的TS1,通道编号继续使用填充字符。对于剩下的通道,如果他们检测到了接收方,但是还没有收到链路编号,那么则发送链路编号和通道编号都采用填充符号的TS1

3.针对支持crosslinks特性:

Dsp

会在所有detect阶段检测为receiver的lane上先发送16~32个TS1,其中link num为具体数值,lane num为pad。在此之后,任意一个lane在收到两个连续的TS1,其中link num为具体数值,lane为pad,随后dsp转变为usp(为了根据timeout机制决定谁才是真正的dsp,如果 DSP 接收到的第一批 TS1 中,链路编号就已经不是填充符号了,那么 DSP 通过这种现象就意识到存在交叉链路(Crosslink),链路对端设备此时也是 DSP。针对这种情况,面向下游的通道将转换为面向上游通道,DSP 等待长度随机的超时时间后,重新进入 Configuration.Linkwidth.Start 状态,只不过此时该通道将变成面向上游的通道)。并且转变为Configuration.Linkwidth.Start的条件变为和usp一样。

注意两点,针对两端都想变为dsp的情况,可以让双方都先变为usp,随后双方都随机等一个时间,超时后usp转变为dsp。因为双方的超时时间长度是不同的,最终将有一个端口成为 DSP ,而另一个端口仍然是 USP,这样一来训练就可以继续进行。超时时间长度必须是随机,这样即使链路双方的端口实现完全相同,也不会出现死锁的情况;如果支持交叉链路特性,那么在接收的 TS1 的链路编号从PAD转换到非PAD符号的过程中,不允许出现TS2打断这个过程。

Usp:

对于支持交叉链路特性的 USP 来说,当 LinkUp = 0b 时,需要在所有检测到接收端的通道上至少发送 16-32 个 TS1,其中链路编号和通道编号采用填充符号。随后任何usp的一些通道上接收到了两个连续的链路编号有效,通道编号为填充符号的TS1,那么有如下操作和条件:

A:tx持续发送TS1,link num和lane num均为pad;

B:如果任意通道接收到了两个连续的链路编号有效,通道编号为填充符号的TS1 usp选取其中一个接收到的链路编号作为这些通道的链路编号,并在所有收到连续两个链路编号非空的TS1的通道上(lane编号为lane),回复采用该链路编号的TS1,通道编号继续使用填充字符。对于剩下的通道,如果他们检测到了接收方,但是还没有收到链路编号,那么则发送链路编号和通道编号都采用填充符号的TS1下一个状态是 Configuration.Linkwidth.Accept。

C:为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少 2 个 TS1,128b/130b 编码时至少等待 34 个 TS1,但任何情况下不要等待超过 1ms。

注意,如果不满足上述条件,经过Tcrosslink时间后,16-32个TS1,其中linknum和lane num均为pad,usp变为dsp,下个状态变为Configuration.Linkwidth.Start(相当于重新开始)。

Config.linkwidth.accept

Dsp

dsp提议通道编号值。如果一条链路可以由多个通道合并组成,这些通道都可以收到两个连续的,链路编号值相同的 TS1那么dsp会为他们发送链路编号一致,但是通道编号各不相同的TS1对于剩下的通道,如果他们没有接收到TS1,那么发送链路编号和通道编号都采用填充符号的TS1,不能打断原有发送过程。

为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少2个TS1,128b/130b 编码时至少等待34个TS1,但任何情况下不要等待超过1ms。-dsp/usp均满足

1.变量变化

A:在满足如下条件的时候use_modified_TS1_TS2_Ordered_Set变为1:

(1)LinkUp = 0b -dsp/usp均满足

2)自从进入polling状态以来,tx已经在polling/Configuration状态下发送Modified TS1/TS2,在TS1/TS2中设置symbol5中的Enhanced Link Behavior Control field为‘b11。针对up端,要求在所有的TS1/TS2中发送这样的序列

(3)导致从polling.configuration转变到configuration状态的那8个连续的TS2的data rate中设置了Enhanced Link Behavior Control field位为’b11(symbol5)+TS2中的32.0 GT/s data rate is supported设为1。注意这8个TS2要求是连续的,并且是在所有lane上都收到才能满足从polling.configuration转变到configuration状态。-dsp/usp均满足

B:在满足如下变化Flit_Mode_Enabled变量设为1:

(1)LinkUp = 0b-dsp/usp均满足

2)自从进入polling状态以来,tx已经在polling/Configuration状态下发送相关TS1/TS2,在其中TS1/TS2中设置symbol4中bit0,也就是Flit Mode Supported bit中的Data Rate Identifier为‘b1。-dsp/usp均满足

(3)导致从polling.configuration转变到configuration状态的那8个连续的TS2的data rate中设置了flit mode supported位(也就是symbol4的bit0)为1。注意这8个TS2要求是连续的,并且是在所有lane上都收到才能满足从polling.configuration转变到configuration状态。-dsp/usp均满足

usp

usp在从dsp提供的链路编号中选择其中一个,填充至所有通道的TS1中,反馈发送给dsp。这里所有通道指的是那些所有接收链路编号不为填充字符TS1的通道。在所有剩余的通道中,如果检测到对端接收方,但是没有接收到有效链路编号的通道,将继续发送链路编号和通道编号采用填充符号的TS1

如果一个link可以使用具体数值的link num号来实现configured link(注意,这个link num来自于收到的两个连续的TS1,并且这两个TS1中的link numlane num均不为pad,两个连续的TS1中的link numlane num前后一致),那么TS1会发送和收到的TS1link num/lane num一致或不一致的TS1(针对不一致的TS1往往是存在于lane reversed)。

另外注意三点:

1)收到的TS1既可以是标准的TS1,也可以是Modified的TS1(Modified的TS1只有在use_modified_TS1_TS2_Ordered_Set为1的情况下);

2)针对lane进行编号的时候,需要注意,lane num必须要针对连续的groupinglane进行连续的编号,针对没有收到TS1lane,相当于这个lane不属于一个groupinglane。剩下的lane必须要发送link numlane num均设为padTS1

3)比如说一个 x8 链路,将会把它的通道编号为 0-7。端口需要支持链路容纳其所拥有的最大通道数,也需要支持链路容纳最少至一个通道。通道总是从 0 开始编号,并且需要是连续编号不中断的。比如,如果一个 x8 链路上有些通道不工作,它可能可以转而配置成一个 x4 链路,这种情况下它必须使用通道 0-3。再举一个例子,如果是链路的通道 2 无法正常工作,无法使用通道 0134 组成一个 x4 链路,因为它们的编号是不连续的。链路上任何剩余的通道必须发送链路和通道编号都使用填充符号的 TS1

Configuration.Lanenum.Wait

如果use_modified_TS1_TS2_Ordered_Set1,需要注意:

1tx需要发送Modified TS1而不是正常的TS1;

2rx端必须检查是否收到Modified TS1(注意一开始进入这个状态的时候可能还是收到标准的TS1,需要检查的是收到连续的Modified TS1)

为了避免将链路的宽度配置小于正常宽度,协议建议如果在多通道链路上发现某些通道出现错误或者失去 Block Alignment 状态,那么延迟一段时间后再进行本过程。8b/10b 编码时等待至少 2 TS1128b/130b 编码时至少等待 34 TS1,但任何情况下不要等待超过 1ms

Dsp

Configuration.Lanenum.Wait 状态期间,DSP 会继续发送链路和通道编号为非填充值的 TS1,直至满足某个跳转到其他状态的条件。

Usp

Configuration.Lanenum.Wait 状态期间,USP 会继续发送链路和通道编号为非填充值的 TS1,直至满足某个跳转到其他状态的条件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/178654.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MFS分布式文件系统

目录 集群部署 Master Servers ​Chunkservers ​编辑Clients Storage Classes LABEL mfs高可用 pacemaker高可用 ​编辑ISCSI 添加集群资源 主机 ip 角色 server1 192.168.81.11 Master Servers server2 192.168.81.12 Chunkservers server3 192.168.81.13 Chunkserver…

二叉搜索树java实现

顾名思义,二叉搜索树是一棵二叉树,每个节点就是一个对象,这个对象包含属性left、right和parent。left指向节点的左孩子,right指向节点的右孩子,parent指向节点的父节点(双亲)。如果某个孩子节点…

校园圈子论坛,交友,帖子内短视频,二手市场,APP小程序H5三端交付,源码交付,支持二开

校园圈子论坛,交友频道,商城,二手市场,活动专区,短视频,从校园生活的方方面面展现出了充满活力和创造力的镜头。这个频道是一个让学生们相互交流、结识新朋友的平台,不仅有交友功能,…

RK3588平台开发系列讲解(嵌入式AI篇)嵌入式AI模型的部署

文章目录 一、嵌入式AI模型的部署二、AI模型训练框架有哪些三、rknn-toolkit可支持转换的模型沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将给大家介绍嵌入式AI模型的部署。 一、嵌入式AI模型的部署 模型的部署,是指将训练好的模型放到运行环境中进行推理的…

自动解决IP冲突的问题 利用批处理更改末位IP循环+1直到网络畅通为止 解放双手 事半功倍

好久没出来写点什么了,难道今天有点时间,顺便把这两天碰到的问题出个解决方法吧。 这几天去客户那儿解决网络问题,因为客户的网络是固定的静态IP,因为没做MAC绑定,IP固定在本地电脑上,只要上不了网&#xf…

《安富莱嵌入式周报》第327期:Cortex-A7所有外设单片机玩法LL/HAL库全面上线,分享三款GUI, PX5 RTOS推出网络协议栈,小米Vela开源

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 1、2023 Hackaday大赛胸牌开源 Vectorscope-main.zip (66.83MB) GitHub - Hack-a-Day/Vectorscope: Vectorscope badg…

逸学java【初级菜鸟篇】9.3 Stream流

hi,我是逸尘,一起学java吧 得益于Lambda所带来的函数式编程,引入了一个全新的Stream流概念(就是都基本使用lambda的形式)。 流处理 我们首先理解什么是流处理,它类似于sql语句,可以执行非常复…

【MATLAB源码-第85期】基于farrow结构的滤波器仿真,截止频率等参数可调。

操作环境: MATLAB 2022a 1、算法描述 Farrow结构是一种用于实现可变数字滤波器的方法,尤其适用于数字信号处理中的采样率转换和时变滤波。它通过多项式近似来实现对滤波器系数的平滑变化,使得滤波器具有可变的群延时或其他参数。 Farrow结…

AR道具特效制作工具

AR(增强现实)技术已经逐渐渗透到各个行业,为企业带来了全新的营销方式和用户体验。在这个背景下,美摄科技凭借其强大的技术实力和创新精神,推出了一款专为企业打造的美摄AR特效制作工具,旨在帮助企业轻松实…

8年老鸟整理,自动化测试-准备测试数据详细...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 大部分类型的测试…

陪玩圈子系统APP小程序H5,详细介绍,源码交付,支持二开!

陪玩圈子系统,页面展示,源码交付,支持二开! 陪玩后端下载地址:电竞开黑陪玩系统小程序,APP,H5: 本系统是集齐开黑,陪玩,陪聊于一体的专业APP,小程序&#xff…

黑马React18: ReactRouter

黑马React: ReactRouter Date: November 21, 2023 Sum: React路由基础、路由导航、导航传参、嵌套路由配置 路由快速上手 1. 什么是前端路由 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候,path 对应的组件会在页面中进行渲染 2. …

服务器主机安全的重要性及防护策略

在数字化时代,服务器主机安全是任何组织都必须高度重视的问题。无论是大型企业还是小型企业,无论是政府机构还是个人用户,都需要确保其服务器主机的安全,以防止数据泄露、网络攻击和系统瘫痪等严重后果。 一、服务器主机安全的重…

帝国cms开发一个泛知识类的小程序的历程记录

#帝国cms小程序# 要开发一个泛知识类的小程序,要解决以下几个问题。 1。知识内容的分类。 2。知识内容的内容展示。 3。知识内容的价格设置。 4。用户体系,为简化用户的操作,在用户进行下载的时候,请用户输入手机号&#xff…

AI:86-基于深度学习的街景图像地理位置识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

鸿蒙4.0开发笔记之DevEco Studio页面操作router的pushUrl页面跳转与back返回上一页(五)

一、认识组件 关于HarmonyOS中ArkTS的基础组件请参见文章鸿蒙4.0开发笔记之ArkTs语言基础与基本组件结构(四) 二、实现页面跳转pushUrl 1、操作说明 实现页面跳转的核心便是router.pushUrl的调用,操作起来也很简单,总共就四步…

微机原理_1

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案,请将选定的答案填涂在答题纸的相应位置上。) 1,下列8086CPU标志寄存器的标志位中,不属于状态标志位的是() A. OF B. IF C. AF D. PF 8086微处理器可寻址访问的最大…

Ps:裁剪工具 - 裁剪预设的应用

裁剪工具提供了两种类型的裁剪方式。 一种是仅按宽高比(比例)进行裁剪,常在对图像进行二次构图时采用。 另一种则按指定的图像尺寸(宽度值和高度值)及分辨率(宽 x 高 x 分辨率)进行裁剪。其实质…

Sentinel 监控数据持久化(mysql)

Sentinel 实时监控仅存储 5 分钟以内的数据,如果需要持久化,需要通过调用实时监控接口来定制,即自行扩展实现 MetricsRepository 接口(修改 控制台源码)。 本文通过使用Mysql持久化监控数据。 1.构建存储表&#xff08…

leetcode:520. 检测大写字母

一、题目: 链接:520. 检测大写字母 - 力扣(LeetCode) 函数原型:bool detectCapitalUse(char* word) 二、思路: 本题较为简单,分为三种情况: 1.首字母大写,其余小写 2.首字…