PCIE-变量总结
1.changed_speed_recovery:
表示链路双方已经将链路速率协商为更高的速率。
在configuration.complete状态下此变量会reset成0;
当前状态在recovery.rcvrlock状态:
在经过24ms的timeout之后,任何一个已经configured的lane(收到过TS1/TS2)收到了和自己发送的link/lane num匹配的TS1/TS2,并且速率自从进入recovery状态之后没有切到协商的速率后,下个状态是configuration状态,directed_speed_change也会被reset成0;
当前状态在recovery.speed状态:
如果tx在如下条件下(此时不在需要处于Electrical Idle),那么下一个状态是Recovery.RcvrLock状态。
(1)如果当前状态是从Recovery.RcvrCfg状态进入的,并且link的两侧均切速成功的话(速率是两侧协商的最高公共速率,successful_speed_negotiation = 1),那么changed_speed_recovery被设为1;
(2)没有速率成功切换的情况下,如果当前子状态是自从L0/L1进入recovery状态下第二次进入该状态(changed_speed_recovery = 1b),那么速率将会切到最初的从L0/L1进入recovery状态下的速率,changed_speed_recovery被设为0;
(3)否则其他情况下新的工作速率将是2.5GT/s,changed_speed_recovery被设为0;
当前状态在recovery.rcvrcfg:
在往Recovery.Idle状态跳转时,changed_speed_recovery,directed_speed_change变量需要reset为0(idle_to_rlock_transitioned小于’hff);
在往Configuration状态跳转时,changed_speed_recovery,directed_speed_change变量需要reset为0;
在往recovery.speed状态跳转时,如果当前速率自从L0/L1进入recovery状态没有切到双方协商的速率(changed_speed_recovery = 0b),并且EIOS已经被检测到了/Electrical Idle的条件在任意config的lane被检测到了,并且当前工作速率高于2.5GT/s,并且自从进入Recovery.RcvrCfg状态后没有config的lane收到了TS2,那么状态跳转到recovery.speed,注意此时changed_speed_recovery将会变为0;
2.direct_speed_change:
If greater than 2.5 GT/s data rate support has been noted, the Downstream Port must set the directed_speed_change variable to 1b if the Retrain Link bit of the Link Control Register is set to 1b and the Target Link Speed field in the Link Control 2 Register is not equal to the current Link speed. (l1也会存在)
3.successful_speed_negotiation
Recovery.Speed状态下,
Recovery.RcvrCfg状态下,会将其设为1;具体细节??
4.use_modified_TS1_TS2_Ordered_Set:
使用Modified TS1/TS2
5.Flit_Mode_Enabled
6.L0p_capable
7.SRIS_Mode_Enabled
8.upconfigure_capable:
支持带宽从小变大
9.idle_to_rlock_transitioned:
该变量记录了因为配置过程没有起作用,从而导致状态机从 Configuration.Idle 状态跳转到 Recovery 状态的次数。这可能是因为均衡设置不合适,或者当前选择的速率无法正常工作导致的,Recovery 状态内会采取措施尝试解决这些问题。该变量限制了从本状态跳转至 Recovery 状态的尝试次数,从而避免了永久的无限循环。如果链路在 256 次尝试后(变量计数至 FFh)仍然没法正常工作,那么跳转回 Detect 状态重新开始,并希望这次能有更好的结果。
10.start_equalization_w_preset:
为1表示使用预设值,这个变量仅仅在Recovery状态下使用:
(1)Recovery.Equalization: dsp进入phase1后start_equalization_w_preset设为0;usp进入phase0之后start_equalization_w_preset设为0;
(2)Recovery.RcvrCfg:
进入该子状态之后该变量reset为0;
对于usp来说,如果当前速率工作在2.5GT/s或者5.0GT/s下,8个TS2已经进行彼此之间的advertising(8.0 GT/s是支持的最高速率),那么必须要将start_equalization_w_preset设定为1,并且执行一些更新(这些更新包含:1. 用收到的连续的8个EQ TS2去更新更新tx的preset值,也就是Lane Equalization Control Register Entry寄存器中的域,2.用收到的连续的8个EQ TS2去更新8.0GT/s的Lane Equalization Control Register Entry中的Receiver Preset Hint fields);
对于usp来说,当前速率工作在2.5GT/s或者5.0GT/s下 -> 32.0 GT/s是支持的最高速率,并且equalization bypass to the highest NRZ rate在彼此之间已经协商成功(configuration阶段),那么start_equalization_w_preset设定为1,执行一些更新(仅更新tx preset,Lane Equalization Control Register Entry寄存器中的);
对于usp来说,当前速率工作在8.0GT/s下 -> 16.0 GT/s是支持的最高速率,收到的连续的TS2是128b/130b EQ TS2,那么start_equalization_w_preset设定为1,执行一些更新(仅更新tx preset,Lane Equalization Control Register Entry寄存器中的);
对于usp来说,当前速率工作在16.0GT/s下 -> 32.0 GT/s是支持的最高速率,收到的连续的TS2是128b/130b EQ TS2,那么start_equalization_w_preset设定为1,执行一些更新(仅更新tx preset,Lane Equalization Control Register Entry寄存器中的);
对于usp来说,当前速率工作在32.0GT/s下 -> 64.0 GT/s是支持的最高速率,收到的连续的TS2是128b/130b EQ TS2,那么start_equalization_w_preset设定为1,执行一些更新(仅更新tx preset,Lane Equalization Control Register Entry寄存器中的);
对于dsp来说,在如下条件之一满足的情况下,start_equalization_w_preset设定为1:
(1)equalization_done_8GT_data_rate 为0;
(2)彼此双方支持16.0 GT/s的速率,但是equalization_done_16GT_data_rate变量为0;
(3)彼此双方支持16.0 GT/s的速率,但是equalization_done_16GT_data_rate变量为0;
(4)彼此双方支持32.0 GT/s的速率,但是equalization_done_32GT_data_rate变量为0;
(5)彼此双方支持64.0 GT/s的速率,但是equalization_done_64GT_data_rate变量为0;
(6)link control3中的Perform Equalization bit被设定为1;
11.select_deemphasis:
a:detect.quit:The select_deemphasis variable must be set to either 0b or 1b based on platform specific needs for an Upstream Port and identical to the Selectable Preset/De-emphasis bit in the Link Control 2 Register for a Downstream Port.
b:recovery.speed:If the negotiated data rate is 5.0 GT/s, and if operating in full swing mode, -6 dB de-emphasis level must be selected for operation if the select_deemphasis variable is 0b and -3.5 dB de-emphasis level must be selected for operation if the select_deemphasis variable is 1b.
c:recovery.cfg:On entry to this substate, a Downstream Port must set the select_deemphasis variable equal to the Selectable De-emphasis field in the Link Control 2 Register or adopt some implementation specific mechanism to set the select_deemphasis variable, including using the value requested by the Upstream Port in the eight consecutive TS1 Ordered Sets it received. A Downstream Port advertising 5.0 GT/s data rate support must set the Selectable De-emphasis bit (Symbol 4 bit 6) of the TS2 Ordered Sets it transmits identical to the select_deemphasis variable.
Upstream Ports must register the Selectable De-emphasis bit (bit 6 of Symbol 4) advertised in these eight consecutive TS2 Ordered Sets in the select_deemphasis variable.
12.select_preset:仅仅用在Polling.Compliance状态中
13.equalization_done_8GT_data_rate
14.equalization_done_16GT_data_rate
15.equalization_done_32GT_data_rate
16.equalization_done_64GT_data_rate
相关文章:
PCIE-变量总结
1.changed_speed_recovery: 表示链路双方已经将链路速率协商为更高的速率。 在configuration.complete状态下此变量会reset成0; 当前状态在recovery.rcvrlock状态: 在经过24ms的timeout之后,任何一个已经configured的lane&…...
【iOS】AFNetworing初步学习
文章目录 前言OC的网络请求步骤单例封装网络请求使用AFNetworking进行网络请求 前言 在暑假,学习了一些简单的网络请求的内容,本周学习了AFNetworking的基本使用,通过本篇博客进行一个简单的介绍。 OC的网络请求步骤 简单的网络请求主要有…...
【数据结构】堆的创建
Heap.h #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<assert.h>//创建堆结构体 typedef int HPDateType; typedef struct Heap {HPDateType* a;int size;int capacity; }HP;//堆的初始化 void HPInit(HP* php);//堆的销毁 voi…...

Linux下Git操作
一、基本命令 1、创建 git 目录(工作区) mkdir gitcode 2、创建本地仓库,生成 .git 隐藏目录 git init 3、设置配置项 git config user.name "xxx" git config user.email "....." 4、查看配置项 git config -l …...

缺失d3dx9_42.dll如何修复,d3dx9_42.dll故障的6种修复方法分享
在电脑使用过程中,许多游戏玩家和软件用户可能都遇到过d3dx9_42.dll丢失的问题。这个问题会导致游戏或软件无法正常运行,给用户带来诸多不便。本文将详细解读d3dx9_42.dll丢失的原因、影响及解决方案,帮助大家顺利解决这个问题。 一、d3dx9_4…...

深入理解Android WebView的加载流程与事件回调
文章目录 一、WebView 加载流程时序图二、WebView 加载流程回调函数说明三、AwContents3.1 主要功能和职责3.2 架构和实现3.3 使用场景 四、利用WebView回调函数检测白屏4.1 使用onPageStarted和onPageFinished检测加载时间4.2 利用onReceivedError和onReceivedHttpError检测加…...
机器视觉相机自动对焦算法
第一,Brenner梯度法、 第二,Tenegrad梯度法、 第三,laplace梯度法、 第四,方差法、 第五,能量梯度法。 此实例通过使用Halcon实现5种清晰度算法函数: 1. 方差算法函数; 2. 拉普拉斯能量函数…...

StarTowerChain:开启去中心化创新篇章
官网: www.startower.fr 在当今创新驱动的时代,StarTowerChain 以其独特的去中心化创新模式,为我们带来了新的希望和机遇。去中心化,这个充满活力与创造力的理念,正引领着我们走向未来的创新之路。 StarTowerChain …...

SpringCloudStream使用StreamBridge实现延时队列
利用RabbitMQ实现消息的延迟队列 一、安装RabbitMQ 1、安装rabbitmq 安装可以看https://blog.csdn.net/qq_38618691/article/details/118223851,进行安装。 2、安装插件 安装完毕后,exchange是不支持延迟类型的,需要手动安装插件,需要和安装的rabbitmq版本一致 https:…...
MATLAB中head函数用法
目录 语法 说明 示例 显示矩阵的前八行 显示表的前三行 返回表的前八行 head函数的功能是获取数组或表的顶行。 语法 head(A) head(A,k) B head(___) 说明 head(A) 在命令行窗口中显示数组、表或时间表 A 的前八行,但不存储值。 head(A,k) 显示 A 的前 k …...
golang 基本数据类型
1. go语言的数据类型简介 golang的数据类型分为两大类,一类是基本数据类型和符合数据类型; 按照传递的内容分:传递本身数据和传递地址; golang和java很相似,都是值传递,不过分为传递的值和传递的地址&a…...

各种查询sql介绍
1. 关联查询(JOIN) 关联查询用于从多个表中检索数据。它基于两个或多个表之间的共同字段(通常是主键和外键)来组合数据。 内连接(INNER JOIN): sql SELECT a.name, b.order_date FROM custome…...
Guava防击穿回源-异步防击穿
异步防击穿策略 在高并发环境下,缓存击穿(Cache Stampede)是一种常见的问题。当缓存中的热点数据失效或未命中时,大量并发请求同时访问后端数据源(如数据库),可能导致后端系统压力骤增,甚至出现崩溃。为了有效防止这种情况,可以利用Guava提供的异步缓存加载机制(类似…...

人工智能正在扼杀云计算的可持续性
可持续性曾是公共云计算中备受推崇的优势。企业和云提供商大肆宣扬他们的绿色计划,推广采用可再生能源的数据中心,以减少碳足迹。 近几个月来,这个话题已悄然淡出人们的视线。罪魁祸首是什么?对人工智能功能的无限需求正在推动云…...

C# 条形码、二维码标签打印程序
1、条码标答打印主界面 2、打印设置 3、生成QR代码 private void GetBarcode_T(string lr) { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();//创建一个对象 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //设置编码测量…...

嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)
0 系列文章入口 嵌入式入门学习——0快速入门,Let‘s Do It! 首先新建基于Arduino UNO的protues工程,见本系列第3篇文章 1 点“P”按钮找器件 2 输入“seg”或“digit”查找数码管器件 3 找到我们想要的6位7段数码管 4如图A、B…DP都是段码…...

poisson过程——随机模拟(Python和R实现)
Python实现 exponential()使用,自动poisson过程实现。 import numpy as np import matplotlib.pyplot as plt# Parameters lambda_rate 5 # rate parameter (events per time unit) T 10 # total time# Generate Poisson process times np.random.exponential(…...

100 种下划线 / 覆盖层动画 | 终极 CSS(层叠样式表)集合
还在为你的菜单项和链接寻找动画效果而感到疲惫吗? 不用再找了!这里列出了 100 多种不同的动画。从简单的到更复杂的,你肯定能找到自己想要的。 无需 SVG(可缩放矢量图形),无需 JavaScript(脚…...

华为ICT大赛2024-2025网络赛道考试分析
华为ICT大赛2024-2025正在报名中,网络赛道的同学如何备考,了解考试内容呢? 一、考试概况 华为ICT大赛分为4个赛段,分别为省赛初赛、省赛复赛、中国总决赛,全球总决赛。其中对应的能力级别分别如下: 省赛…...

linux 效率化 - 输入法 - fcitx5
安装 Fcitx5 1. 卸载 ibus 框架 由于 ibus 和 fcitx 可能会冲突,先卸载 ibus(暂未确认原因) sudo apt remove --purge ibus2. 安装 fcitx5 输入法框架 sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...