PCIE Order Set
1 Training Sequence
Training Sequence是由Order Set(OS) 组成,它们主要是用于bit aligment,symbol aligment,交换物理层的参数。当data_rate = 2.5GT or 5GT 它们不会被扰码(scramble),当date_rate = 8GT or higher 根据特殊的规则决定是否对Order Set 进行扰码。
LTSSM中使用最多的训练序列为TS1 TS2,它们一般都是连续进行发送,只可以被SKP以及 EIOS(2.5GT除外,因为其不支持低功耗模式)打断。这里的连续的判定标准是:
1.对于使用8b/10b 的TS1 or TS2,symbol 6与前一个symbol 6是一致;
2.对于使用128/130b编码的TS1 or TS2, symbol 6~9与前几个symbol 6 -9是相同的,对于symbol 中Reserved field 需要按照如下的规则处理。发送时Reserved 字段全部填充为0,对于接收机必须对reserved bit进行奇偶性计算(parity computation)(如果reserved bit 进行了奇偶性计算), 如果明确指出相邻的symbol中所有的Reserved bit必须保持相同,则may 需要直接比较前后symbol中的reserved bit。
此外对于128b/130b的编解码每条lane能偶独立跟踪各自的DC Balance (dc balance指的是1 和 0 之间的差距),最大的differenct 为511,达到最大值之后会保持在511。
在两种情况下Dc Balance differentce会被 set to 0, (1) 发送机进入电气空闲状态[electrical idle] (2) 发送机在发送EIEOS退出电气空闲后发送了Data BLock。每发送8个TS1 or TS2 OS,发送机必须评估running DC Balance并设置TS 中的DC Balance Symbol ,设置的算法如下:如果需要降低对方发送 "1“ ,需要set 20h for symbol14 and 08h for symbol 15;如果需要降低发送”0“, 需要set DFh for symbol 14 and F7h symbol 15。note 任何DC Balance symbol(symbol 14、15) 禁止进行扰码。
runing dc balance > 31 DC Balance (symbol 14 and symbol 15) are not scrambld.
runing dc balance > 15 symbol 14 TS1 Identifier Symbol is scarmbled , DC Balance ( symbol 15) are not scrambld.
else symbol 14 and 15 TS1 Identifier Symbol is scarmbled .
2 Electrical Idle
在发送机进入电气空闲(Electrical Idle) 之前,它必须发送Electrical Idle Order Set Sequence(EISOQ)。EIOSQ 是1个EIOS symbol in data_rate 2.5T 8GT 16GT, 2个EIOS symbol in data_rate 5GT。在8b/10b编码下 EIOS = K28.5(COM)+ 3个K28.3(IDL) Symbol,发送时需要发送所有的4个symbol,在接受时只要收到 COM+2个IDL便认为识别到了一个EIOS Symbol;在128b/130b编码条件下EIOS 是一个order set block,正常发送时需要发送完整的symbol(但是如果在它发送接收进入电气空闲状态,个人理解它指的是最有一个EIOS,此时可以只发送EIOS 中的symbol 0-14),接收时如果一个OS block 的symbol 0-3 符合EIOS的定义则认为收到了一个EIOS 序列。
在发送Electrical IDLE OS 最后一个symbol ,发送机必须处于电气空闲状态。
EIEOS只有在data_rate > 2.5GT才可以使用,这种低频的EIEOS 信号可以保证电气空闲检测电路捕捉到退出电气空闲的。
当使用8b/10b编码时并且data_rate = 5GT ,EIEOS还可以被用作如下场景中:
(1) 在进入Configuration.Linkwidht.start的第一个TS1 OS之前;
(2) 在进入Recovery.Lock的第一个TS1 OS之前;
(3) 每隔32个TS1 or TS2 OS 需要发送一个EIOS(Configuration.Linkwidht.start Recovery.Lock Recovery.RcvrCfg );
当使用128b/130b编码时EIEOS也可以被用作Block Alignment,也可以用作在如下场景中:
(1) 在进入Configuration.Linkwidht.start的第一个TS1 OS之前;
(2) 在进入Recovery.Lock的第一个TS1 OS之前;
(3)在Data Stream 发送结束时候,如果不发送EIOS 也不进入Recovery.RcvrLock 则需要在EDS Frame Token 之后发送一个EIEOS;
(4) 每隔32个TS1 or TS2 OS 需要发送一个EIOS ;
(5) 如果Reset EIEOS Interval Count Bit =1 则避免将TS打断,则在Recovery.Equalizatoin 状态需要每隔65536个 TS1 OS 发送后需要发送一个EIOS ;
(6) 它是FTS OS, Compliance Pattern,or Modified Compliance pattern中需要使用。
3 Fast Training Sequence
FTS适用于从L0s(低功耗) --> L0时用于bit and symbol锁定的序列,它可以被Receiver用于检查测是否退出电气空闲状态,并对齐Receiver 's bit and symbol 电路应应对后续到来的数据。
在data_rate 是2.5GT and 5GT 条件下,FTS = K28.5 + 3个K28.1, number of FTSs (N_FTS)是组件可以请求FTSs 的最大数量,它是255。 如果data_rate = 5GT, 在发送第一个FTS之前,会先发送3个EIE symbol (主要是帮助Receiver 检测到 退出电气空闲) ,规范要求至多发送8个EIE symbol (帮助恢复发送机pin上的电压达到一个可接收的水平 )。如果Extended Sync Bit = 1 则需要发送4096个FTS,提供给link 监控工具足够的时间实现完成bit frame 同步。 SKP必须在FTSs之间发送,但是在第一个N_FTS FTSs 不可以发送中间不可以发送FTS。
在data_rate 是8GT or higher条件下,一个FTS 是130 bit的unscrambled 的Order Set Block,**number of FTSs (N_FTS)是组件可以请求FTSs 的最大数量,它是255。在退出至L0s,发送机需要发送1个EIEOS帮助Receiver 识别到退出电气空闲 **随后发送N_FTS个FTSs ,如果Extended Sync Bit = 1 则需要发送4096个FTS,每隔32个FTS则需要发送一个EIEOS 。在最后一个FTS 发送结束后需要发送1个EIEOS帮助receiver 完成block alignment。具体实现时可以在最后阶段发送2个EIEOS,但这需要N_FTS时32的整数倍。
Note EIEOS会复位Transmitter and receiver 的scrambler,在最后一个EIEOS后需要发送SDS order set ,这时为了帮助receiver 进行de-skew and 指示从Order Set向Data Stream的跳变。在SDS OS发送结束后,Data Block 必须被发送。
其中:N_FTS 字段可以通过Recovery状态宣告不同的值,也可以通过软件中Commmon Clock Configureation bit 完成更改
如果在L0s阶段,发送机已经完成所有N_FTS 个FTS的发送,但是Receiver还未完了lock de-skew操作,此时Receiver需要跳转到Recover状态,调整N_FTS的 以实现下次可以完成lock操作。
4 Start of Data Stream Order Set
它仅用于128b/130b编码使用,会在Congiguration.Idle Recovery.Idle Tx_L0s.FTS 状态 或者 LoopBack Master 发送,除此之外不可以在其他状态发送。它是Order Set Block 向Data Stream 的过渡阶段发送的数据,如果不是在Loopback状态,则SDS OS后需要发送Data BLock,且Data Block的第一个symbol是Data Stream的第一个symbol。
相关文章:

PCIE Order Set
1 Training Sequence Training Sequence是由Order Set(OS) 组成,它们主要是用于bit aligment,symbol aligment,交换物理层的参数。当data_rate 2.5GT or 5GT 它们不会被扰码(scramble),当date_rate 8GT or higher 根据特殊的规则…...

nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和源码分析(下)
目录 7. 实现一个UDP健康检测功能7.1 功能定义7.2 定义一个新的健康检测类型7.3 增加udp特定的健康检测需要的配置指令7.3.1 ngx_http_upstream_check_srv_conf_s结构体的扩展7.3.2 check_udp_send的实现7.3.3 check_udp_expect的实现7.3.4 16进制解码代码的实现7.4 ngx_http_u…...

基于SSM的网络在线考试系统(有报告)。Javaee项目。ssm项目。
演示视频: 基于SSM的网络在线考试系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring …...

【Flink状态管理(二)各状态初始化入口】状态初始化流程详解与源码剖析
文章目录 1. 状态初始化总流程梳理2.创建StreamOperatorStateContext3. StateInitializationContext的接口设计。4. 状态初始化举例:UDF状态初始化 在TaskManager中启动Task线程后,会调用StreamTask.invoke()方法触发当前Task中算子的执行,在…...

python+flask人口普查数据的应用研究及实现django
作为一款人口普查数据的应用研究及实现,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多…...

C语言:函数
C语言:函数 函数的概念库函数自定义函数实参与形参return语句数组做参数声明与定义externstatic 嵌套调用 函数的概念 在C语言中,存在一个函数的概念,有人也将其翻译为子程序。 在数学中,函数是一个完成特定功能的公式࿰…...

jmeter-问题一:关于线程组,线程数,用户数详解
文章目录 jmeter参数介绍1.线程数2.准备时长(Ramp-up)3.循环次数4.same user on each iteratio5.调度器 场景一:当你的线程组中线程数为1,循环为1场景二:当你的线程组中线程数为2,循环为1场景三:当你的线程组中线程数为1ÿ…...

golang 通过 cgo 调用 C++ 库
思路 将 C 库包装成 C 库 -> golang 通过 cgo 调用 C 库 C 相关文件 目录列表 include/ some.h C 库头文件some_wrapper.h < 用于将 C 库包装成 C 库的头文件 lib/ libsome.a C 库 src/ some_wrapper.cpp < 用于将 C 库包装成 C 库的源码文件 源码示例 some.h…...

使用 IDEA 开发一个简单易用的 SDK
目录 一、什么是 SDK 二、为什么要开发 SDK 三、开发 SDK 的详细步骤 四、导入 SDK 进行测试 附:ConfigurationProperties 注解的介绍及使用 一、什么是 SDK 1. 定义:软件开发工具包 Software Development Kit 2. 用于开发特定软件或应用程序的工…...

CSS transition(过渡效果)详解
CSS过渡效果(Transition)是一种在CSS3中引入的动画效果,它允许开发者在元素状态变化时(如鼠标悬停、类更改等)平滑地改变CSS属性值,从而创建出平滑的动画效果。过渡效果可以应用于多种CSS属性,如…...

Android13多媒体框架概览
Android13多媒体框架概览 Android 多媒体框架 Android 多媒体框架旨在为 Java 服务提供可靠的接口。它是一个系统,包括多媒体应用程序、框架、OpenCore 引擎、音频/视频/输入的硬件设备,输出设备以及一些核心动态库,比如 libmedia、libmedi…...

一文读懂:MybatisPlus从入门到进阶
快速入门 简介 在项目开发中,Mybatis已经为我们简化了代码编写。 但是我们仍需要编写很多单表CURD语句,MybatisPlus可以进一步简化Mybatis。 MybatisPlus官方文档:https://www.baomidou.com/,感谢苞米豆和黑马程序员。 Mybat…...

C语言--------指针(1)
0.指针&指针变量 32位平台,指针变量是4个字节(32bit/84)--------x86 64位平台,指针变量是8个字节(64bit/88)--------x64 编号指针地址;我们平常讲的p是指针就是说p是一个指针变量; ************只要…...

Vite 下一代的前端工具链,前端开发与构建工具
一、Vite 简介 官方中文网站:Vite | 下一代的前端工具链 官方定义: Vite,下一代的前端工具链,为开发提供极速响应。 Vue3.4版本,Vue新版本使用Vite构建、开发、调试、编译。 Vite的优势 极速的服务启动 使用原生…...

【SpringBoot】FreeMarker视图渲染
目录 一、FreeMarker 简介 1.1 什么是FreeMarker? 1.2 Freemarker模板组成部分 1.3 为什么要使用FreeMarker 二、Springboot集成FreeMarker 2.1 配置 2.2 数据类型 2.2.1 字符串 2.2.2 数值 2.2.3 布尔值 2.2.4 日期 2.3 常见指令 2.3.2 assign 2.3…...

巴尔加瓦算法图解:算法运用。
树 如果能将用户名插入到数组的正确位置就好了,这样就无需在插入后再排序。为此,有人设计了一种名为二叉查找树(binary search tree)的数据结构。 每个node的children 都不大于两个。对于其中的每个节点,左子节点的值都比它小,…...

Docker的镜像和容器的区别
1 Docker镜像 假设Linux内核是第0层,那么无论怎么运行Docker,它都是运行于内核层之上的。这个Docker镜像,是一个只读的镜像,位于第1层,它不能被修改或不能保存状态。 一个Docker镜像可以构建于另一个Docker镜像之上&…...

忘记 RAG:拥抱Agent设计,让 ChatGPT 更智能更贴近实际
RAG(检索增强生成)设计模式通常用于开发特定数据领域的基于实际情况的ChatGPT。 然而,重点主要是改进检索工具的效率,如嵌入式搜索、混合搜索和微调嵌入,而不是智能搜索。 这篇文章介绍了一种新的方法,灵感…...

利用路由懒加载和CDN分发策略,对Vue项目进行性能优化
目录 一、Vue项目 二、路由懒加载 三、CDN分发策略 四、如何对Vue项目进行性能优化 一、Vue项目 Vue是一种用于构建用户界面的JavaScript框架,它是一种渐进式框架,可以用于构建单页应用(SPA)和多页应用。Vue具有简单易学、灵…...

【Scala】1. 变量和数据类型
1. 变量和数据类型 1.1 for begining —— hello world 新建hello.scala文件,注意object名字与文件名一致。 object hello { def main(args:Array[String]): Unit { println("hello world!") } }运行后打印结果如下: hello world!Pr…...

何时以及如何选择制动电阻
制动电阻的选择是优化变频器应用的关键因素 制动电阻器在变频器中是如何工作的? 制动电阻器在 VFD 应用中的工作原理是将电机减速到驱动器设定的精确速度。它们对于电机的快速减速特别有用。制动电阻还可以将任何多余的能量馈入 VFD,以提升直流母线上的…...

消息中间件:Puslar、Kafka、RabbigMQ、ActiveMQ
消息队列 消息队列:它主要用来暂存生产者生产的消息,供后续其他消费者来消费。 它的功能主要有两个: 暂存(存储)队列(有序:先进先出 从目前互联网应用中使用消息队列的场景来看,…...

Rust开发WASM,浏览器运行WASM
首先需要安装wasm-pack cargo install wasm-pack 使用cargo创建工程 cargo new --lib mywasm 编辑Cargo.toml文件,修改lib的类型为cdylib,并且添加依赖wasm-bindgen [package] name "mywasm" version "0.1.0" edition "…...

Vue3编写简单的App组件(二)
一、Vue3页面渲染基本流程 1、入口文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"icon" href"/favicon.ico"><meta name"viewport" content"widthde…...

java Servlet 云平台教学系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc
一、源码特点 JSP 云平台教学系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 系统采用serlvet dao bean,系统具有完整的源代码和数据库 ,系统主要采用B/S模式开发。开发 环境为TOMCAT7.0,Myeclipse8.5开发,数据…...

QT初始程序
#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);Widget w;w.show();return a.exec();} 解释: Qt系统提供的类头文件没有.h后缀Qt一个类对应一个头文件,类名和头文件名一致QA…...

ubuntu22.04@laptop OpenCV Get Started: 001_reading_displaying_write_image
ubuntu22.04laptop OpenCV Get Started: 001_reading_displaying_write_image 1. 源由2. Read/Display/Write应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 过程分析3.1 导入OpenCV库3.2 读取图像文件3.3 显示图像3.4 保存图像文件 4. 总结5. 参考资料 1. 源由 读、写、显示图像…...

51单片机之LED灯模块篇
御风以翔 破浪以飏 🎥个人主页 🔥个人专栏 目录 点亮一盏LED灯 LED的组成原理 LED的硬件模型 点亮一盏LED灯的程序设计 LED灯闪烁 LED流水灯 独立按键控制LED灯亮灭 独立按键的组成原理 独立按键的硬件模型 独立按键控制LED灯状态 按键的抖动 独立按键…...

springboo冬奥会科普平台源码和论文
随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理平台应运而生,各行各业相继进入信息管理时代…...

改进神经网络
Improve NN 文章目录 Improve NNtrain/dev/test setBias/Variancebasic recipeRegularizationLogistic RegressionNeural networkother ways optimization problemNormalizing inputsvanishing/exploding gradientsweight initializegradient checkNumerical approximationgrad…...