PCIe物理层详细总结-PCIE专题知识(一)

news2024/12/23 11:56:01

目录

    • 一、简介
      • 二、PCIe物理层结构及功能
      • 2.1 PCIe端对端连接方式
      • 2.2 PCIe组成
      • 2.2.1 逻辑层(Logic)
        • 1 发送逻辑
        • 2 接收逻辑
      • 2.2.2 电气层(Electrical)
        • 1 物理层-电气(Physical Layer Electrical)
        • 2 数据传送----差分方式
      • 2.2.3 PLP介绍
    • 三、其他相关链接
      • 1、PCI总线及发展历程总结

一、简介

本文主要对PCIe物理层的组成、功能进行详细的总结,通过图文的方式方便读者快速掌握。
物理层物理层是PCIe总线的最底层,将PCIe设备连接在一起。PCIe总线的物理电气特性决定了PCIe链路只能使用端到端的连接方式。
PCIe总线的物理层为PCIe设备间的数据通信提供传送介质,为数据传送提供可靠的物理环境,发送端数据链路层(Data Link Layer)的DLLP和TLP报文通过物理层(Physical Layer)发送至接收端的物理层,再传送至接收端的数据链路层。物理层是PCIe体系结构最重要,也是最难以实现的组成部分。
PCIe总线的物理层定义了LTSSM(Link Training and Status State Machine)状态机,PCIe链路使用该状态机管理链路状态,并进行链路训练、链路恢复和电源管理。PCIe总线的物理层还定义了一些专门的“序列”,有的书籍将物理层这些“序列”称为PLP(Phsical Layer Packer),这些序列用于同步PCIe链路,并进行链路管理。值得注意的是PCIe设备发送PLP与发送TLP的过程有所不同。对于系统软件而言,物理层几乎不可见,但是系统程序员仍有必要较为深入地理解物理层的工作原理。
在这里插入图片描述

二、PCIe物理层结构及功能

2.1 PCIe端对端连接方式

与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端。PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而接收端接收数据时也使用这些层次。PCIe总线使用的层次结构与网络协议栈较为类似。下图端到端的数据传递PCIe链路使用“端到端的数据传送方式”,发送端和接收端中都含有TX(发送逻辑)和RX(接收逻辑),其结构如下图所示。在这里插入图片描述

2.2 PCIe组成

物理层又分为两层:逻辑层(Logical)和电气层(Electrical)。逻辑层主要负责与数据链路层之间的数据交互,由发送逻辑Tx和接收逻辑Rx组成。电气层是物理层的模拟接口,包括了差分信号驱动和接收器。

2.2.1 逻辑层(Logic)

1 发送逻辑

1、 从发送端数据链路层下发的DLLP/TLP在到达物理层后,会先放入Tx Buffer中。在Tx buffer中,DLLP/TLP被加上前缀Start和后缀End封装帧;
2、 多路复用器(MUX):DLLP/TLP通过多路选择器MUX;
3、 字节拆分(Byte Stripping)逻辑:由于PCIe总线可能包含多个Lane, Byte Stripping组件将DLLP/TLP数据报文按照各个字节(character)依次分发到不同的Lane;
4、扰频器(Scramble):数据进入每个Lane之后都会做加扰,使用一种算法,产生伪随机数,以便伪随机的加扰数据包的每个字节(异或);
在这里插入图片描述
5、8b/10b编码器:将已加扰的的字符变为10比特的符号(symbol),8/10b编码( Only for Gen1/2), 128b/130b编码(Only for Gen3);
6、并行到串行转换器:将10比特的符号转化为串行比特流。8b/10b编码器250MHz的频率输出到转换器,转换器以2.5GHz的频率定时输出串行比特流,最后发送到PCIe链路中。
具体流程图如下:

请添加图片描述

2 接收逻辑

1、接收时钟恢复:在串行比特流中,有频繁的1-0,0-1的转换,因此接收器PLL可以用来同步接受时钟与发送时钟。根据恢复的时钟定时发送10b的符号,并不断调整两个时钟之间的微小时钟频率变化(恢复时钟与本地产生的相关时钟);
2、弹性缓冲区:接收端的逻辑层从PCIe链路的各个Lane中获得串行数据,10b的符号被定时输入到弹性缓冲区;
3、8b/10b解码器:将10b的符号转换回8b的字符,同时检查进入的10b数据是否有错误;
4、去扰频器(De-Scramble):将加扰数据包再现为去除加扰的数据包流;
5、反字节拆分(Byte Un-Stripping):将每个通道的字节进行反拆分形成字节流,送入过滤器;
6、过滤器逻辑:将串行字节流中的逻辑空闲系列,各类有序集去除;将TLP和DLLP和其对应的开始结束边界字符一起送到接收缓冲区;
7、接收缓冲区:检查Start和End标识后送入Rx Buffer,保存TLP和DLLP,准备发送至数据链路层;
接收逻辑流程图如下:
在这里插入图片描述

2.2.2 电气层(Electrical)

1 物理层-电气(Physical Layer Electrical)

链路上的物理发送器和接收器AC 耦合的,如下图。AC 耦合电容器的大小在 75~200nF 之间。发送器的 DC 共模电压时在链路定向和初始化期间确定的。DC 共模阻抗通常是 50Ω,而差动阻抗通常是 100Ω。

术语"交流耦合”仅表示设备之间的物理路径中放置有电容,并用于通过信号的高频(AC交流)分量,同时阻塞低频(DC直流)部分。许多串行传输都使用这种方法,因为它允许发送器和接收器的共模电压(信号的正负交叉的电平,即0, 1电平之间)不同,这意味着它们不需要具有相同的参考电压。

在这里插入图片描述

2 数据传送----差分方式

PCIe链路使用差分信号进行数据传送,在PCIe总线的物理链路的一个数据通路(Lane)中,由两组差分信号,共4根信号线组成。其中发送端的TX部件与接收端的RX部件使用一组差分信号连接,该链路也被称为发送端的发送链路,也是接收端的接收链路;而发送端的RX部件与接收端的TX部件使用另一组差分信号连接,该链路也被称为发送端的接收链路,也是接收端的发送链路。一个PCIe链路可以由多个Lane组成。高速差分信号电气规范要求其发送端串接一个电容,以进行AC耦合。该电容也被称为AC耦合电容,具体 如下图所示。
在这里插入图片描述
差分信号的应用:
一个差分信号由D+和D-两根信号组成,信号接收端通过比较这两个信号的差值,判断发送端发送的是逻辑“1”还是逻辑“0”。与单端信号相比,差分信号抗干扰的能力更强,因为差分信号在布线时要求“等长”、“等宽”、“贴近”,而且在同层。因此外部干扰噪声将被“同值”而且“同时”加载到D+和D-两根信号上,其差值在理想情况下为0,对信号的逻辑值产生的影响较小。因此差分信号可以使用更高的总线频率。此外使用差分信号能有效抑制电磁干扰EMI(Electro Magnetic Interference)。由于差分信号D+与D-距离很近而且信号幅值相等、极性相反。这两根线与地线间耦合电磁场的幅值相等,将相互抵消,因此差分信号对外界的电磁干扰较小。当然差分信号的缺点也是显而易见的,一是差分信号使用两根信号传送一位数据;二是差分信号的布线相对严格一些。

在这里插入图片描述

具体计算如下图:
在这里插入图片描述

2.2.3 PLP介绍

PLP(Physical Layer Package)是物理层封装的数据包,源于发送器设备的物理层,终止与接收器设备的物理层。PLP 是一种非常简单的数据包,开始是 1 字节的 COM 字符,后面是定义 PLP 类型以及含有其它信息的 3 个或多个字符。PLP 的大小是 4 字节的整数倍,规范将这种数据包成为有序集(Ordered Set),PLP包在链路上两个直接连的数据链路层之间传输(没有路由功能),主要用于链路训练过程(LinkTraining process),时钟容差补偿(Clock Tolerance Compensation,CTC)以及更改链路功耗状态(Changing Link Power States,包结构如下图所示。在这里插入图片描述命令集/有序集(Ordered Sets)

设备之间发送的流只使用物理层。尽管这种信息对于接收端来说很容易进行识别,但是它并没有被封装成数据包的形式,原因是它没有包起始字符和包结束字符。因此作为一种替代方法,这种信息被组织成了一种被叫做”命令集(OrderedSets) ”的东西,如上图所示,对于Gen1和Gen2的数据率下,一个命令集使用一个单独的COM字符作为起始,然后后面接着3个或以上的其2他字符用于定义要发送的信息。命令集的大小总是4byte的整数倍,下图展示了一个命令集的例子。在Gen3操作模式中,命令集的格式就不同于上述的Gen1/Gen2格式了。
在这里插入图片描述
物理层会对DLP或者TLP包进行封装加上start和end,如下图所示:
在这里插入图片描述

三、其他相关链接

1、PCI总线及发展历程总结

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

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

相关文章

ChatGPT 和 Elasticsearch:OpenAI 遇见私有数据(一)

作者:Jeff Vestal 结合 Elasticsearch 的搜索相关性和 OpenAI 的 ChatGPT 的问答功能来查询你的数据。 在此博客中,你将了解如何使用 Elasticsearch 将 ChatGPT 连接到专有数据存储,并为你的数据构建问答功能。 ChatGPT 和 Elasticsearch&…

【react从入门到精通】React JSX详解

文章目录 前言React技能树什么是JSXJSX的基本语法规则1.JSX必须有一个顶层元素2.JSX标签必须有一个结束标记,或者是自闭合的3.JSX中可以使用JavaScript表达式4.JSX中的样式和HTML中的样式有所不同5.JSX中的class属性必须写成className6.JSX中的style属性必须使用对象…

JavaWeb-HTML常用标签了解(一)

这里写目录标题 注释标签标题标签段落标签换行标签格式化标签图片标签超链接标签外部链接与内部链接 注释标签 <!-- 有注释 -->无注释ctrl / 快捷键可以快速进行注释/取消注释. 注意 注释不能传达负能量!!! 标题标签 有六个, 从 h1 - h6. 数字越大, 则字体越小. <h…

读SQL进阶教程笔记14_SQL编程要点

1. 消灭NULL 1.1. NULL惹人讨厌的原因 1.1.1. 进行SQL编码时&#xff0c;必须考虑违反人类直觉的三值逻辑 1.1.2. 指定IS NULL、IS NOT NULL的时候&#xff0c;不会用到索引&#xff0c;SQL语句执行起来性能低下 1.1.2.1. 1 NULL NULL2- NULL NULL3 &#xff0a; NULL …

BrainStat:用于全脑统计和多模态特征关联的工具箱

BrainStat工具箱在茗创科技往期推文【点此阅读→资源分享 | 利用机器学习进行高级MRI分析】中作过简单介绍。近日&#xff0c;NeuroImage杂志发布了题为BrainStat: a toolbox for brain-wide statistics and multimodal feature associations的预印版文章。这篇文章详细阐述了B…

测试开发备战秋招面试5-牛客刷题之链表篇

趁着5.1假期把牛客网的必刷的TOP101过一遍&#xff0c;额&#xff0c;题目量有点大&#xff0c;争取5天给刷完吧&#xff0c;哈哈&#xff0c;加油啦。再用雷布斯的那句话来激励自己吧&#xff1a;努力了那么多年,回头一望,几乎全是漫长的挫折和煎熬。对于大多数人的一生来说,顺…

学习Python需要注意什么?分享一下如何提升写代码的质量

作为程序员&#xff0c;每天都会面对各种各样的问题和挑战。需求的变更、代码的维护和修复、测试的问题&#xff0c;以及线上出现的各种异常等等&#xff0c;这些都需要我们不断地投入精力去解决。但是&#xff0c;我们不能只关注在解决问题上&#xff0c;还需要关注代码质量。…

IDE - Android Studio/Xcode历史版本下载

文章目录 前言Android Studio1. 历史版本下载2. 文件完整性校验 Xcode1. 历史版本下载2. 网络环境模拟工具2.1 下载2.2 安装2.3 卸载 最后 前言 最近升级开发工具老是遇到各种兼容性问题导致需要降回老版本&#xff0c;Xcode历史版本下载方便倒还好&#xff0c;Android Studio…

使用pands.rolling方法实现移动窗口的聚合计算

一个问题举例 假设有一个5天的收益数据&#xff0c;需要每3天求出一次平均值来达成某个需求&#xff1a; daterevenue2023-05-01102023-05-02202023-05-03302023-05-04402023-05-0550 1号、2号和3号的数据求一次平均值&#xff0c;2号、3号和4号的数据求一次平均值&#xff…

Ucore lab4

实验目的 了解内核线程创建/执行的管理过程了解内核线程的切换和基本调度过程 实验内容 练习一&#xff1a;分配并初始化一个进程控制块 1.内核线程及管理 内核线程是一种特殊的进程&#xff0c;内核线程与用户进程的区别有两个&#xff1a;内核线程只运行在内核态&#x…

内网渗透(六十一)之Kerberosating攻击

Kerberosating攻击 Kerberosating攻击发生在Kerberos协议的TGS_REP阶段,KDC的TGS服务返回一个由服务Hash 加密的ST给客户端。由于该ST是用服务Hash进行加密的,因此客户端在拿到该ST后可以用于本地离线爆破。如果攻击者的密码字典足够强大,则很有可能爆破出SPN链接用户的明文…

JAVA入坑之GUI编程

一、相关概述 GUI编程是指通过图形化的方式来实现计算机程序的编写&#xff0c;它可以让用户通过鼠标、键盘等设备来操作计算机&#xff0c;而不是通过命令行来输入指令。在Java中&#xff0c;GUI编程主要使用的是Swing和AWT两种技术 二、AWT 2.1介绍 AWT是Java提供的用来建立…

【构造】CF851div2 C. Matching Numbers

Problem - C - Codeforces 题意&#xff1a; 有1~2*n的一个排列&#xff0c;进行数与数之间两两匹配&#xff0c;问如何组合可以使n个 数对 aibi排列起来是一个连续序列&#xff0c;如果无解输出No 思路&#xff1a; 构造题&#xff0c;考虑将构造的条件特殊化 手推样例可知…

【数据生成】——Semantic Image Synthesis via Diffusion Models语义分割数据集生成论文浅读

语义分割&#xff0c;数据生成 摘要 Denoising Diffusion Probabilistic Models (DDPMs) 在各种图像生成任务中取得了显著的成功&#xff0c;相比之下&#xff0c;生成对抗网络 (GANs) 的表现不尽如人意。最近的语义图像合成工作主要遵循事实上的基于 GAN 的方法&#xff0c;…

QT QHBoxLayout 水平布局控件

本文详细的介绍了QHBoxLayout控件的各种操作&#xff0c;例如&#xff1a;新建界面、添加控件、布局控件、显示控件、添加空白行、设置间距 、添加间距、设置位置、设置外边距、设置边距、添加固定宽度、方向上、方向下、方向左、方向右等等、 样式表等操作。 实际开发中&#…

无距离障碍:远程桌面Ubuntu实现全球办公【内网穿透】

目录 前言 视频教程 1. ubuntu安装XRDP 2.局域网测试连接 3. Ubuntu安装cpolar内网穿透 4.cpolar公网地址测试访问 5.固定域名公网地址 [TOC] 转载自远程穿透文章&#xff1a;Windows通过RDP异地远程桌面Ubuntu【内网穿透】 前言 XRDP是一种开源工具&#xff0c;它允许…

范数详解-torch.linalg.norm计算实例

文章目录 二范数F范数核范数无穷范数L1范数L2范数 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 范数是一种数学概念&#xff0c;可以将向量或矩阵映射到非负实数上&#xff0c;通常被…

Python使用pytorch深度学习框架构造Transformer神经网络模型预测红酒分类例子

1、红酒数据介绍 经典的红酒分类数据集是指UCI机器学习库中的Wine数据集。该数据集包含178个样本&#xff0c;每个样本有13个特征&#xff0c;可以用于分类任务。 具体每个字段的含义如下&#xff1a; alcohol&#xff1a;酒精含量百分比 malic_acid&#xff1a;苹果酸含量&a…

Python之硬汉巴特勒

一、前言 2023年4月27日&#xff0c;NBA季后赛热火4:1淘汰雄鹿&#xff0c;实现黑八。全NBA联盟最硬气的男人——巴特勒&#xff0c;再次向全世界证明了他是NBA最硬气的男人。上一场刚狂轰56分大比分逆转雄鹿&#xff0c;这一场又是带领球队打出了血性&#xff0c;超高难度绝平…

快速搭建简单图床 - 远程访问本地搭建的EasyImage图床【内网穿透】

文章目录 1.前言2. EasyImage网站搭建2.1. EasyImage下载和安装2.2. EasyImage网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 一个好的图床&#xff0c;是网站或者文章图片能稳定显示的关键&#xff0c;…