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

Configuration.Lanenum.Accept

如果use_modified_TS1_TS2_Ordered_Set1,需要注意:

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

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

Dsp

如果dsp在所有通道上都接收到连续两个TS1,它们携带的链路和通道编号都和 dsp在这些通道上发送的数值一致,那么代表usp同意了dsp通告的链路编号和通道编号,dsp随之进入 Configuration.Complete 状态。如果dsp接收到的通道编号顺序与通告的顺序相颠倒,如果dsp支持通道顺序颠倒,那么dsp同样进入 Configuration.Complete状态,并采用接收到的,颠倒的通道编号顺序。(针对usp,进入Configuration.Complete状态的条件是,如果 USP在所有通道上都接收到连续两个TS2,它们携带的链路和通道编号都和 USP 在这些通道上发送的 TS1 中的数值一致,那么USP 进入 Configuration.Complete 状态。)

如果一条正在被配置的链路可以由一部分而不是全部的可用通道组成,这些通道都收到连续两个 TS1 ,链路编号为相同有效的数值,并且通道编号也不为填充符号。那么在这部分通道上发送链路编号相同,通道编号重新编制的 TS1,旨在用更少数量的通道来编成一条链路。新的通道编号必须从 0 开始顺序递增,指派给链路所使用的通道。任何没有接收到 TS1 的通道不能成为链路的一部分,并且中断通道编号递增。举例而言,如果共有 8 条通道,但是通道 2 没有接收到 TS1,那么这组通道将不能组成包括通道 2 的链路。这样一来,不能组成 x8 或者 x4 的链路,只能组成 x2 或者 x1 的链路。剩下不使用的通道,必须在其上发送链路和通道编号都为填充符号的 TS1。此时下个状态是Configuration.Lanenum.Wait。-dsp/usp均满足

如果没有链路可以被配置,或者所有通道接收到两个连续的 TS1,其链路和通道编号都为填充符号,下个状态是detect-dsp/usp均满足

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

注意几点:

1)针对Reversed Lane来说,其lane num的变化要求是非常严格的,比如原来lane num0,那么收到的TS1中的Lane num就为n-1;原来为n-1lane,那么收到的TS1中的lane num0-dsp/usp均满足

2)注意,如果use_modified_TS1_TS2_Ordered_Set变量设为1,并且Alternate Protocol Negotiation执行了,那么转换到Configuration.Complete状态必须要延迟10us,直到dsp收到usprsp(这里有问题,什么是Alternate Protocol Negotiation??,usp这里同样有这样的描述,同样需要注意

变量变化:

1.在如下条件下:SRIS_Mode_Enabled设为1:

(1)Linkup = 0;

(2)自从进入Configuration state状态后,port已经发送了SRIS Clocking (Symbol 4, bit 7 = 1b)的TS1;

寄存器变化:

1.如果当前的configuration状态是从recovery状态进入的,那么Link Status Register中的Link Bandwidth Management StatusLink Autonomous Bandwidth Status域需要根据如下规则更新:

(1)由于链路可靠性导致的dsp发起的bandwidth的改变Link Bandwidth Management Status设为1

2bandwidth的改变不是由于dsp,并且收到的连续两个TS1中的Autonomous Change(Symbol 4 bit 6)为0,Link Bandwidth Management Status设为1

3)其他情况下Link Autonomous Bandwidth Status域设为1

Configuration.Complete

Flit_Mode_Enabled为0 + LinkUp为1,允许双方设备在进入本状态时,改变它们的支持速率列表和链路宽度恢复能力(upconfigure capability),但一旦进入本状态后,这些设置就不再允许修改。

Flit_Mode_Enabled为1 + LinkUp为0,允许双方设备在进入本状态时,改变L0p capability,但一旦进入本状态后,这些设置就不再允许修改。

如果use_modified_TS1_TS2_Ordered_Set1,需要注意:

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

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

Dsp:

1.在 Configuration.Complete 状态期间,DSP 将发送 TS2 序列,其中的链路和通道编号与接收到的 TS1 中的内容。(针对usp,在Configuration.Complete 状态期间,USP 将发送 TS2 序列,其中的链路和通道编号与接收到的 TS2 中的内容

2.如果该端口能够在当前分配的lane0上向下支持x1链路,并在LinkUp=1b时支持增加链路宽度恢复(upconfigure),那么允许dsp将置位TS2序列中的Upconfigure Capability/L0p比特设为1。-dsp/usp均满足

3.DSP 会记录接收到的 TS2 中的 N_FTS 域数值,其表示对端退出L0s状态必需的 FTS 数量,以备后续使用。-dsp/usp均满足

4.使用8b/10b编码时,必须在离开当前状态前完成通道间去偏移。-dsp/usp均满足

5.如果所有配置中的通道都收到了两个连续的 TS2,其中关闭加扰(Disable Scrambling)比特设置为 1'b1,那么停止对编码进行加扰(scrambling)。发送端发送TS2中Disable Scrambling比特为1的端口也必须停止加扰。在128b/130b 编码模式时,无法关闭加扰,因为添加的扰码对信号完整性的帮助不可或缺。-dsp/usp均满足

6.下个条件是Configuration.Idle状态如果满足如下条件:

当所有发送 TS2 的通道都接收到 8 个满足条件的 TS2 时,并且在接收到一个 TS2 后该通道已经发送至少 16 个 TS2 后,状态机将跳转至下一个状态:Configuration.Idle。这些条件指的是所有接收的 TS2 中都携带有匹配的链路编号和通道编号(非填充符号),匹配的速率标识符( rate identifier),以及匹配的链路 Upconfig Capability 比特。-dsp/usp均满足

7.如果设备支持 2.5 GT/s 以上的速率,那么它必须记录在任何已配置通道上的速率标识符,并覆盖所有此前记录的数值。“changed_speed_recovery” 用于在 Recvory 状态中追踪速率编号的变量,此时清除为 0。-dsp/usp均满足

8.Flit_Mode_Enabled为0的情况下,如果tx发出的TS2中的Link Upconfigure/ L0p Capability (Symbol 4 bit 6)域设置为 1b,并且接收到 8 个连续的 TS2 序列,TS2在该比特上的设置同样为1,变量upconfigure_capable设为1。否则,该变量清除为 0。-dsp/usp均满足

9.Flit_Mode_Enabled为1+ LinkUp=0b的情况下,如果tx发出的TS2中的Link Upconfigure/ L0p Capability (Symbol 4 bit 6)域设置为 1b,并且接收到 8 个连续的 TS2 序列,TS2在该比特上的设置同样为1,那么L0p_capable变量设为1,Device Status 3 Register中的Remote L0p Supported bit设为1;-dsp/usp均满足

10.任何没有配置为链路一部分的通道将与当前的 LTSSM 不再有关联,并且必须设置为下述各种状态中的一种:

(1)与新的 LTSSM 相关联;(针对usp,是指和新的crosslink LTSSM关联)

(2)转为电气空闲状态,这里涉及一种特殊的状态,即这些未被配置进链路的通道曾经在 L0 状态中被配置为链路的一部分,并且从那之后 LinkUp 状态位一直被设置为 1b。如果链路支持 upconfigure,那么它们需要仍然和原来的 LTSSM 相关联。这种情况下,协议建议这些通道仍然保持打开对接收端的终结(termination)特性,因为在 upconfigured 之后,它们又会重新变成链路的一份子。如果不保持终结特性打开,那么在LTSSM从Configuration.Complete 状态转为 Recovery.RcvrCfg 状态时,也需要再次打开(upconfigure_capable变量为1的情况下)。不过,如果这些通道并非曾经是链路的一部分,那么它们无法通过该过程成为链路的一部分。-dsp/usp均满足

对于可选配的 crosslink 特性,接收阻抗必须保持在这两者之间。-dsp/usp均满足

在 LTSSM 返回 Detect 状态后,这些通道会和LTSSM重新和其关联。-dsp/usp均满足

这些通道进入电器空闲状态之前无需发送 EIOS 序列,并且状态转变到Electrical Idle也并不一定需要发生在符号或者命令集的边界上。-dsp/usp均满足

11.

2ms超时后根据如下情况进行:

(1)如果当前状态是2.5GT/s或者5.0GT/s,那么下个状态时detect状态-dsp/usp均满足

(2)如果 idle_to_rlock_transitioned 变量小于 FFh,并且当前数据速率为 8GT/s,那么接下来转入 Configuration.Idle 状态。注意在这次状态跳变中,changed_speed_recovery 变量清除为 0。并且,变量 upconfigure_capable 也可能会被更新(非强制),当至少一个通道上收到8个连续的 TS2 序列,它们都携带有匹配的链路编号和通道编号(非填充符号),如果链路收发双方的 Upconfig Capability 比特都为 1,那么 upconfigure_capable 变量更新为 1b,否则清除为 0。-dsp/usp均满足

(3)任何没有配置为链路一部分的通道将与当前的 LTSSM 不再有关联,其他所需的条件与上述列出的非超时时的条件一致(也就是条件(2))。-dsp/usp均满足

(4)在超时后,如果未满足上一段的条件,则转入 Detect 状态。-dsp/usp均满足

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十七章总结

数据库基础 SQL语言 1、select 语句 select 语句用于从数据中检索数据。语法如下: SELECT 搜选字段列表 FROM 数据表名 WHERE 条件表达式 GROUP BY 字段名 HAVING 条件表达式(指定分组的条件) ORDER BY 字段名[ASC|DESC] 2、insert 语句 insert 语句用于向表中插入新…

Ubuntu20.04 install pnpm

npm install -g pnpm referrence link: Installation | pnpmPrerequisiteshttps://pnpm.io/installation

TrustAsia亮相Matter开发者大会,荣获Matter优秀赋能者奖

11月22日,由CSA(连接标准联盟)中国成员组主办,CSHIA承办的“Matter中国区开发者大会2023” 于杭州举行。 会上,连接标准联盟中国成员组主席宿为民博士、连接标准联盟亚洲区架构师杨莉女士、CSHIA秘书长|中智盟投资创始…

蓝桥杯官网练习题(最长子序列)

题目描述 我们称一个字符串S 包含字符串 T 是指 T 是 S 的一个子序列,即可以从字符串 S 中抽出若干个字符,它们按原来的顺序组合成一个新的字符串与 T 完全一样。 给定两个字符串 S 和 T,请问 T 中从第一个字符开始最长连续多少个字…

LangChain的简单使用介绍

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

idea里面常用插件

这里列出了一系列常用的 IntelliJ IDEA 插件,它们可以提高开发效率、简化操作,以及帮助进行代码分析和优化。以下是每个插件的简要介绍: GenerateAllSetter:生成对象的所有 set 方法和 get 方法,方便对象之间的转换。该…

微信小程序实现【点击 滑动 评分 评星(5星)】功能

wxml文件&#xff1a; <view class"wxpl_xing"><view class"manyidu">{{scoreContent}}</view><view><block wx:for{{scoreArray}} wx:for-item"item"><view classstarLen bindtapchangeScore data-sy"{{…

vuex中的常用属性有哪些?

在 Vuex 中&#xff0c;有一些常用的属性可以帮助你管理应用程序的状态。这些属性包括 state、getters、mutations 和 actions。 state: 用于存储应用程序的状态数据&#xff0c;是 Vuex 存储数据的地方。当应用程序中的多个组件需要共享状态时&#xff0c;就可以将这些共享的状…

力扣283:移动零(JAVA)

题目描述: 意思是将所有0移到最后的同时其余非0元素位置仍然不变 如 1 2 0 5 2 0 经过移动零后变为 1 2 5 2 0 0 思路:使用双指针的思路来写 fast:从左往右遍历数组 slow:非零元素最后的一个位置 将数组分为3个区间 [0,slow]为处理好的非0数据,slow永远指向最后一个非0数据 [s…

Java面向对象第一天

什么是类&#xff1f;什么是对象&#xff1f; 现实生活是由很多很多对象组成的&#xff0c;基于对象抽出了类 对象&#xff1a;软件中真实存在的单个的个体/东西 类&#xff1a;类型/类别&#xff0c;代表一类个体 类是对象的模板/模子&#xff0c;对象是类的具体的实例 类中…

docker mysql 宿主机挂载配置文件

官方文档摘录&#xff08;勿喷&#xff0c;仅供自己笔记&#xff09; 官方文档如下&#xff1a; The MySQL startup configuration is specified in the file /etc/mysql/my.cnf, and that file in turn includes any files found in the /etc/mysql/conf.d directory that e…

GoLang语言范围(Range)

目录 一、在数组、切片上使用‘range’ 二、在映射上使用range 三、在通道上使用range Go语言中的range关键字用于迭代数组&#xff08;数组、切片、字符串&#xff09;、映射&#xff08;map&#xff09;、通道&#xff08;channel&#xff09;或者在 for 循环中迭代每一个…

案例022:基于微信小程序的行政复议在线预约系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Django之中间件

引入 1、Django自带7个中间件&#xff0c;每个中间件都有各自的功能 2、django能够自定义中间件 3、使用场景&#xff1a; 1. 全局身份校验 2. 全局用户权限校验 3. 全局访问频率的校验 ...... 【1】什么是中间件 Django中间件是一个轻量级、可重用的组件&#xff0c;用于处理…

python运行jackhmmer二进制命令的包装器类

jackhmmer 是 HMMER 软件套件中的一个工具&#xff0c;用于进行高敏感度的蛋白质序列比对。HMMER&#xff08;Hidden Markov Model based on profile&#xff09;是一套用于分析蛋白质序列的工具&#xff0c;它使用隐藏马尔可夫模型&#xff08;HMM&#xff09;来建模蛋白质家族…

nodejs微信小程序+python+PHP -留学信息查询系统的设计与实现-安卓-计算机毕业设计

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

543. 二叉树的直径 --力扣 --JAVA

题目 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 解题思路 最长长度可以理解为左子树最长路径加上右子树最长…

MySQL错误之ONLY_FULL_GROUP_BY

报错信息&#xff1a; 翻译&#xff1a; 对该报错的解释 所以&#xff0c;实际上该报错是由于在SQL查询语句中有group by&#xff0c;而这个包含group by的SQL查询写的并不规范导致的&#xff0c;这个ONLY_FULL_GROUP_BY模式开启之后检查就会很严格&#xff0c;如果select列表…

uniapp为什么能支持多端开发?uniapp底层是怎么做的?

文章目录 前言uniapp为什么能支持多端开发&#xff1f;uniapp底层是怎么做条件编译uniapp的语法uniapp如何编译为不同端的代码uniapp的底层是如何做平台特性适配的呢&#xff1f;后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;uniapp &…

【lua】记录函数名和参数(为了延后执行)

需求背景 一个服务缓存玩家信息到对象里&#xff0c;通过对象的函数定时同步到数据库中&#xff0c;如果玩家掉线 清空对象&#xff0c;但是后续步骤导致对象数据需要变更&#xff0c;对象不存在&#xff0c; 就不方便变更了&#xff0c;怎么处理&#xff1f; 方案思考 1.临…