PCIe总线的链路训练

news2024/11/27 11:29:51

目录

概述

链路训练的目的

几个关键概念

Lane reveral :

Polarity inversion:

De-skew:

link number:

Lane number:

Bit lock:

Symbol lock:

几个特殊序列:

TS1和TS2:

IDLE;

FTS:

Skip:

LTSSM状态机

Detect状态:

Polling:

Cfg:


概述

PCie链路的初始化过程较为复杂,Pcie总线进行链路训练时,将初始化Pcie设备的物理层,发送接收模块和相关的链路状态信息,当链路训练成功结束后,PCIe链路两端的设备可以进行通讯。

链路训练主要由硬件逻辑完成,而无需系统软件的参与。此外当PCie设备从低功耗状态返回到正常工作模式时,或者PCie出现错误时,也需要进行重新连接。

链路训练的目的

主要是进行PCie物理层,端口配置信息,相应的链路状态,并了解链路对端的拓扑结构,以便PCie链路两端的设备进行通信。

几个关键概念

Lane reveral :

PCie链路两端的设备所使用的的lane可以错序进行连接

Polarity inversion:

在单lane上,差分的极性也可以进行错序连接

De-skew:

PCI总线可以使用多个lane进行数据交换,而数据报文经过不同的lane的延时并不完全相同,PCie总线进行训练时,需要处理这些不通lane的延时差异,并进行补偿

link number:

在一个switch中存在多个下游,并使用0~n,进行编号,这些编号存在swith的硬件逻辑中,而不再配置空间中,

Lane number:

分为两类,一类时物理lane number(链路训练之前) 另一类是逻辑lane number(链路训练之后,)应为PCIE容许错序连接,因此,逻辑lane和物理lane并不一定相同,因此在总线链路训练时,需要对rc或者sw的link初始化。

Bit lock:

pcie总线进行数据传输时,需要进行时钟同步,但是pcie链路并没有这个时钟信号,因此在进行总线训练时,接收端需要从发送端的数据报文中提取接受时钟,这个过程称为bit lock

Symbol lock:

在链路训练中,PCIe链路需要首先确认COM字符。11000001010,00111110101

几个特殊序列:

TS1和TS2:

TS1主要检测PCie的链路配置信息,而ts2确认TS1序列的检测结果;

(仅仅时第6到15的字符含义不通)

0:COM控制字符,表示ts1和ts2序列的开始,字符序列将复位LF-SR序列。

1:在链路的初始化阶段,第一个字符放置pad,即为空;而在链路配置阶段,该字符放置

端口的link number。

2:在链路训练阶段,第一个字符放置pad,即为空,而在链路配置阶段,该字符放置端口的lane number;

3:FTS的个数,不通的PCIe链路需要使用不通德FTS序列,才能使接收端的PLL锁定接受时钟。

4:存放当前PCie设备支持的数据速率。

5:存放命令,第一位为hot reset; 第二位式:loopback;第三位式:disable scrambling 第四位是:compliance receive。当接受逻辑收到TS1/TS2序列后,将根据该字符进行对应操作。

IDLE;

在正常情况下,在发送端进入到electrical idle 状态,必须向对端进行eios序列。

FTS:

单个FTS序列由一个com和三个FTS组成,该序列的主要目的是使接受逻辑重新获得bit/symbol lock;

Skip:

由一个com和三个skip、字符组成,主要目的是进行时钟补偿,PCIe的时钟2.5G+-300ppm,其中300ppm意味着。一百万个时钟,会出现300个偏移。如果PCIE不使用skip序列,本地时钟与从报文中提取存在飘逸,可能导致数据传输失败。

在PCIe设备接受逻辑中,使用了两个时钟,一个时钟是从PLL报文中恢复,一个是本地时钟。在总线中,使用elastic buffer 技术处理者这两个时钟之间的频率差和相位差,elastic buffer由一个buff组成,该FIFO的一端使用本地时钟域,另一端使用恢复的时钟域。由于时钟的不匹配,将出现overrun和underrun。总线规定在1190-1538字符之后,必须发送skip序列进行补偿。

LTSSM状态机

LTSSM是链路训练里面一个比较重要的状态机。

在进行总线链路训练时,将使用LTSSM状态机。总共由11个状态组成,如下图。

各个状态:

Detect状态:

简介:当PCie链路被复位或者数据链路层通过填写某些寄存器后,ltssm将进入该状态,该状态也是LTSSM的初始状态,当PCIe链路处于该状态时,发送逻辑TX并不知道对端接受逻辑RX的存在,因此使用Receive Detect识别逻辑判断对端接受逻辑rx是否可以正常工作,之后进入其他状态。

详情:detect由detect.quiet/ detect.active 两个子状态组组成,当PCIe设备进入复位,首先进入quiet状态,(发送逻辑处于idle,差分线为共模电压状态,为相同的值,此时发送逻辑功耗最低),当PCie设备处于quiet状态时,缺省使用2.5G速率,当12ms过后或者任何一个lane退出idle时,PCIe进入active阶段,

Polling:

当PCie链路进入该阶段时,将向对端发送ts1和ts2,并接受对端的ts1和ts2

以确定bit/symbol,lane的极性,处于该状态,将进行loop测试,确定当前pcie可以正常工作。

Cfg:

当进入该状态时,将确定链路的宽度,link number,lane reveral/porarity inverion,laneto lane的延时,该状态ltssm状态机最重要的状态,值得注意的时,在cfg状态。统一使用2.5g,知道进入l0状态。

L0状态:PCie正常工作状态。

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

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

相关文章

深度学习系列8——分类模型评估指标

1. 概述 1.1 分类 分类:标签为离散值。 回归:标签为连续值。 2. 混淆矩阵 二分类的混淆矩阵: TP 和 TN 为网络预测正确的部分,FP 和 FN 为网络预测错误的部分。 3. 二级指标 准确率: 针对模型的整体评估&#xf…

Java基础之复习笔记(上)

目录 一、Java是什么? 💖Java概念 💖Java运行机制 二、Java的语言基础 💖关键字 💖基本数据类型 💖运算符 三、Java逻辑控制 💖分支结构 💖循环结构 四、Java的方法 &#…

嵌入式基础知识-系统调度

系统调度是操作系统重要功能,在嵌入式开发,也要了解系统调度的基本原理。对于嵌入式Linux开发,一般使用多线程和多进程开发,对于运行RTOS的嵌入式系统,一般使用多任务开发。这些线程、进程、任务的调度,有许…

RS232转Profinet网关怎么设置

大家好,今天我要给大家带来一个很有意思的案例分享。你们猜猜,这回我们要用远创智控的一款神奇的网关YC-RSPN-002做什么呢?没错,我们要把一台扫码枪设备通过这个RS232转PROFINET网关,接入到一台西门子S7-1200PLC的Prof…

在这个高度自动化的时代,为什么自动化测试取代不了手功测试?

在这个高度自动化的时代,为什么自动化测试取代不了手功测试?06:1101自动化测试和手工测试的概念 自动化测试和手工测试都是软件测试的两种基本方法。 自动化测试是基于脚本或工具自动执行测试用例的过程。测试人员可以使用自动化测试工具来编写测试脚本…

【美团面试】软件测试面试题

一、设计登录界面测试用例 功能测试(Function test) 0. 什么都不输入,点击提交按钮,看提示信息。(非空检查) 1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。(正常输入&#xff0…

C语言 替换gets函数

目录 替换gets函数gets()用处gets()的危险之处gets()的几种替代方法一、用%c循环输入直到遇到换行结束二、用getchar()循环输入直到遇到换行结束三、scanf的另一种用法四、c中的getline()方法五、解决方案使用fgets代替 替换gets函数 gets()用处 gets从标准输入设备读字符串函…

noSQL的小练习

目录 Redis: 1、 string类型数据的命令操作: 2、 list类型数据的命令操作: 3、 hash类型数据的命令操作: MongoDB: 1. 创建一个数据库 名字grade 2. 数据库中创建一个集合名字 class 3. 集合中插入若…

Redis分片集群有什么作用?怎样读取和存储信息

分片集群主要解决的是,海量数据存储的问题,集群中有多个master,每个master保存不同数据,并且还可以给每个master设置多个slave节点,就可以继续增大集群的高并发能力。同时每个master之间通过ping监测彼此健康状态&…

Selenium中如何抓取网络请求响应及WebSocket信息

目录 获取Chrome性能日志 获取请求及响应信息 我们在使用Selenium测试Web或Electronjs/Cef框架应用时,有时候操作一个元素需要判断是否发送了请求以及请求的参数是否正确 我们可以通过,开启Chrome的性能日志来然后配合driver.get_log("performan…

qgis添加地理地图书签,快速定位到想要的位置

我们打开qgis软件,一般这个功能区域默认在左侧的中间位置,如图: 如果没有的话,我们需要调出来,在软件上方的菜单栏的空白处,右键显示面板调试框,勾选空间书签管理器面板,即可&…

6.3.4 利用Wireshark进行协议分析(四)----ARP协议解析

6.3.4 利用Wireshark进行协议分析(四)----ARP协议解析 我们知道对于单跳网络内部的数据传输,使用的是网络接口层的技术,比如以太网技术,以太网将报文数据封装在数据帧中进行传送,帧头指明发送方网卡的地址…

初学者必看!PLC转型C#上位机编程学习路线和方法

一.通过线上学习C#,机器视觉,运动控制卡,工程案例,我迈向工控软件开发的转型之路 大家好,我是华山编程培训中心的学员——李工,今天分享下我是如何从电气工程师成功转型上位机开发的经历,希望我…

【10】STM32·HAL库开发-MAP文件解析 | STM32启动过程

目录 1,MAP文件浅析(了解)1.1MAP文件概念和作用1.2MAP文件组成1.3MAP文件实操 2.STM32启动过程(了解)2.1STM32启动模式(F1/F4/F7/H7)(也称自举模式)2.1.1STM32启动模式&a…

MybatisPLus3-Activerecord

不用注入数据层对象&#xff0c;就可以实现对数据的访问和操作 具体步骤 1.实体类继承Model<实体类名> 2.mapper接口继承BaseMapper<类名> 3.通过实例化实体对象&#xff0c;就可以通过对象调用CRUD的方法 增 删除/修改/查找的方式都和上面一样

《TCP IP网络编程》第六章

《TCP IP网络编程》第六章&#xff1a;基于 UDP 的服务端/客户端 UDP 套接字的特点&#xff1a; 通过寄信来说明 UDP 的工作原理&#xff0c;这是讲解 UDP 时使用的传统示例&#xff0c;它与 UDP 的特点完全相同。寄信前应先在信封上填好寄信人和收信人的地址&#xff0c;之后…

力扣142. 环形链表 II

题目 给定一个链表的头节点head&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回null。 链接&#xff1a;142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 题解 方法一&#xff1a;设置两个指针&#xff0c;一个指针指向链表头结点&#…

重生之我要学C++第一课

时隔三月&#xff0c;继C语言之后&#xff0c;博主学成C归来&#xff0c;欲重开博客&#xff0c;与诸位分享经验&#xff0c;共同学习&#xff0c;今天就开始我们的c第一课——入门篇。 既然要开始学习c&#xff0c;就要了解 什么是c&#xff1a; C 语言是结构化和模块化的语言…

Vue2 ➔ Vue3 都做了哪些改变?

不是吧&#xff0c;兄弟&#xff0c;Vue3 都出来多久了&#xff0c;你还对这个感兴趣&#xff0c;说&#xff01;是不是没好好卷&#xff1f;&#x1f60f; 俺也一样 &#x1f602;&#xff0c;Vue3 出来之后只是简单了解了一下&#xff0c;然后还是转头一直在写 Vue2。当然&a…

如何升级iOS17/iPadOS17公测版?iOS17公测版升级教程

苹果官方发布了iOS 17/iPadOS 17系统首个公测版更新&#xff0c;其版本号及更新内容与iOS 17 beta 3一致&#xff0c;版本号为21A5277j。 对于想升级iOS 17/iPadOS 17 公测版的用户&#xff0c;可以参考本教程进行操作。 升级注意事项&#xff1a; 1. 为防止意外情况&#xf…