PCIe扫盲(九)

news2024/9/21 7:54:07

在这里插入图片描述

系列文章目录


PCIe扫盲(一)
PCIe扫盲(二)
PCIe扫盲(三)
PCIe扫盲(四)
PCIe扫盲(五)
PCIe扫盲(六)
PCIe扫盲(七)
PCIe扫盲(八)
PCIe扫盲(九)


文章目录

  • 系列文章目录
  • 物理层电气部分基础(一)
    • L0 模式下的链路结构图(状态图)如下:
    • L0s 模式下的链路结构图(状态图)如下:
    • L1 模式下的链路结构图(状态图)如下:
    • L2 模式的链路结构图(状态图)如下:
    • L3 模式的链路结构图(状态图)如下:
  • 物理层电气部分基础(二)之 De-emphasis
  • Lattice ECP3/ECP5 SerDes 简介
    • 参考阅读:
  • 转载链接


物理层电气部分基础(一)

  之所以把物理层电气部分的文章放在链路初始化与训练文章的后面,是因为这一部分涉及到一些相关的概念,如 Beacon SignalLTSSM 等等。

  前面已经多次提及,由于本次连载的文章主要是基于 Gen2 的,所以关于 Gen3 的相关内容只会提及,但是并不会深入的介绍,如果有兴趣的可以自行阅读 Gen3 的 Spec 。

  关于链路初始化与训练的文章中提到过,PCIe Spec 规定,支持新的标准的 PCIe 设备应当能够向前兼容。即 Gen2 的设备必须同时支持 2.5GT/s5GT/s

  注:当然这也不是绝对的,当每一个设备只支持 5GT/s 速率时,可以通过将 Link Capability 2 Reg 中的 Supported Link Speed 置为全 0,同时将 Link Control 2 Reg 中的 Hardware Autonomous Speed Disable1 。来禁止系统尝试将速率降为 2.5GT/s

  PCIe Spec 规定,PCIe 设备必须是 Short-Circuit Tolerant 的,这可以让 PCIe 卡支持热插拔的功能。此外,由于 PCIe 总线是一种高速的差分总线,因此,其收发两端是交流耦合的(AC-Coupled)。一般情况下,靠近发送端的链路上放置电容来滤除直流信号,如下图所示:

在这里插入图片描述

  详细的差分收发对模型如下图所示:

在这里插入图片描述

  当然,如果 PCIe 设备把电容集成到 Silicon(芯片)中,也是可以的(不过一般不会这么做,因为在芯片内部集成大电容成本很高)。使用交流耦合的另一个优势是,可以允许链路两端的设备使用不同的电源和地。

  注:关于半导体中的电容,以及芯片周围的一堆退耦电容是什么鬼,打算找个时间单独写一篇文章来详细地聊一聊。

  注:关于 PCIe 的热插拔实现机制,后续单独写一篇文章来介绍。有兴趣的读者也可自行阅读 PCIe Card Spec 的相关章节。

  需要注意的是,PCIe 总线采用的是嵌入式时钟,即只有数据 Lane,并没有时钟 Lane(对于Gen1/Gen2,是通过 8b/10b 编码来嵌入和恢复时钟的;对于 Gen3 及之后的版本,是通过扰码和 128b/130b 来实现嵌入和恢复时钟的)。

在这里插入图片描述

L0 模式下的链路结构图(状态图)如下:

在这里插入图片描述

L0s 模式下的链路结构图(状态图)如下:

在这里插入图片描述

L1 模式下的链路结构图(状态图)如下:

在这里插入图片描述

L2 模式的链路结构图(状态图)如下:

在这里插入图片描述

L3 模式的链路结构图(状态图)如下:

在这里插入图片描述

物理层电气部分基础(二)之 De-emphasis

  这一篇文章中,我们主要来聊一聊 PCIe 中的信号补偿技术(Signal Compensation)—— De-emphasis。需要注意的是,Gen1&Gen2 与 Gen3De-emphasis 实现机制差别较大,而本文只介绍 Gen1&Gen2 相关内容。如需了解 Gen3 的相关内容,可自行查阅 Gen3 的 PCIe Spec 。

  高速信号传输中有一个非常棘手的问题,就是当传输速率变得越来越高的同时,数据间隔单元(Unit IntervalUI)也会变得越来越小。这导致前一个 bit 的数据会对后面 bit 的数据造成影响,如果不去除这些影响,将会导致误码率飙升,甚至通信无法继续。

  此时,还存在另一个问题,如果系统中出现几个连续的 1(或者 0 ),而接下来的信号为 0(或者 1)时,信号的电压可能达不到要求,如下图所示。这种前面的信号会影响后面的现象,我们称之为 ISIInter-Symbol Interference)。产生这种现象的罪魁祸首是传输线的介质损耗,具体会在 SerDes 的专栏文章中详细介绍。

在这里插入图片描述

  注:虽然 PCIe 采用了 8b/10b 编码,但是仍然会出现连续的 5 个 0 或者 5 个 1 (一些控制字符,如 COM )。

  为了解决这个问题,PCIe 采用了一种叫做 De-emphasis 的技术,具体细节如下:

  • 当前后电平极性变化时,不使用 De-emphasis

  • 连续相同极性电平的第一个 bit,不使用 De-emphasis

  • 只有连续相同极性电平的第一个 bit 之后的 bit ,才使用 De-emphasis

  • 对于 2.5GT/sDe-emphasis 将电压较少 3.5dB 。对于 5GT/s ,则是 6dB;

  • Beacon 信号也需要进行 De-emphasis,但是规则稍有差别。

  注:Beacon 信号在之前关于 LTSSM 的文章中介绍过。

  如下图所示:

在这里插入图片描述

  一个 De-emphasis 的例子如下图所示:

在这里插入图片描述

  采用 De-emphasis 之后的 PCIe 设备接收端信号如下图所示:

在这里插入图片描述

  差分的例子:

在这里插入图片描述

  此外,对于部分使用低摆幅(Reduced Swing)的 PCIe 设备来说,一般不需要使用 De-emphasis。考虑到,这种低摆幅的设备一般传输线都比较短(甚至是同一颗芯片/封装里面),介质损耗相对较小。

在这里插入图片描述

Lattice ECP3/ECP5 SerDes 简介

  FPGA 发展到今天,SerDes (Serializer - Deserializer) 基本上是标配了。从 PCIPCI Express,从 ATA 到 SATA,从并行 ADC 接口到 JESD204,从 RIO 到 Serial RIO,……等等,都是在借助 SerDes 来提高性能。SerDes 是非常复杂的数模混合设计,用户手册的内容只是描述了森林里面的一棵小树,并不能够解释 SerDes 是怎么工作的。而本文也主要是基于 Lattice ECP3ECP5SerDes UG,来简单地介绍一下 Lattice ECP3&ECP5 SerDes 的一些基本特性。如需深入了解 SerDes ,可以参考一下我之前转发的博客:SerDes 扫盲 ,以及本文附件中的硕博论文。亦或者是到 IEEE Xplore 下载相关论文资料。

  废话不多说,进入正题。

  Lattice 的 ECP3/ECP5 系列 FPGA 内部集成了 SerDes/PCS 的硬核(Hard Core),其速率最高可达 3.2Gbps,而 ECP5-5G 系列的 SerDes 最高可达 5GbpsLatticeSerDes 是基于 CML 信号的,借助 PCS(物理编码子层,Physical Coding Sublayer)可以支持 PCI Express、JESD204A/B、SD-SDI、HD-SDI、3G-SDI、GbE、CPRI、Gigabit Ethernet (1GbE and SGMII)XAUI 等多种串行通信协议,具体如下图所示。

在这里插入图片描述

  就 PCIe(PCI Express)而言,ECP3/ECP5 可支持 1.0/1.1 版本(2.5Gbps),而 ECP5-5G 还可支持 2.0 版本(5Gbps)。借助 Lattice 提供的 PCIe 相关的 IP (Endpoint & Root),可以快速的完成基于 FPGAPCIe 设备的开发。

  Lattice ECP3,ECP5(ECP5-5G)的 SerDes/PCS 结构基本相同,区别主要在于 ECP5 将两个 SerDes/PCS 通道合并到一个叫做 DCU 的模块中去。ECP5 的每一个 DCU 均包含一个 AUX 通道(以及 TxPLL),而 ECP3 每四个 SerDes/PCS 通道才包含一个 AUX 通道。ECP3 和 ECP5 的结构图分别如下图所示:

在这里插入图片描述
在这里插入图片描述

  其中,ECP5SerDes/PCS 的单个通道的详细结构图如下图所示:

在这里插入图片描述

  ECP5SerDes 时钟结构图如下:

在这里插入图片描述

  注:本文只是对 Lattice ECP3/ECP5 器件中的 SerDes/PCS 进行了简要的介绍,具体还请阅读参考阅读中的相关 UG

参考阅读:

  1. Lattice ECP3 SerDes/PCS User Guide:
    LatticeECP3SerdesPCS UsageGuide.pdf

  2. Lattice ECP5/ECP5-5G SerDes/PCS User Guide:
    ECP5 and ECP5-5G SERDESPCS Usage Guide.pdf

  3. 10Gbps-SerDes中的高速接口设计:
    10Gbps-SerDes中的高速接口设计.pdf

  4. 高速SERDES接口芯片设计关键技术研究:
    高速SERDES接口芯片设计关键技术研究.pdf

转载链接

  1. 物理层电气部分基础(一)
  2. 物理层电气部分基础(二)之 De-emphasis
  3. Lattice ECP3/ECP5 SerDes 简介

  
 


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

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

相关文章

支持异步线程自动传递上下文(例如当前请求)的工具类(支持自定义上下文传递逻辑,支持拦截所有异步操作)

文章目录 支持异步线程自动传递上下文(例如当前请求)的工具类(支持自定义上下文传递逻辑,支持拦截所有异步操作)使用示范ContextSupportedAsyncUtil .java自动拦截所有异步线程池操作ContextSupportedExecutorAspect.j…

【Python基础】Python文件处理

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、打开文件三、读取文件内容四、写入文件内容五、高级文件操作六、总结 一、前言 ​ 在Python中&am…

VMware安装飞牛私有云fnOS并挂载小雅Alist实现异地远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

地平线4登录xbox后提示需要登录档案怎么解决

这个游戏是真nt(在联机上),典型搞联机2小时游玩半小时,多半时间都花费在联机上了,不是为了联机和朋友跑车,早给他卸载了。 本人的游戏问题:看了一些视频感觉没什么作用,我的现象就是…

防火墙配置变更管理

在任何组织中,当涉及到网络安全时,频繁地更换防火墙是必要的,实施简化的防火墙更改管理策略模板可以减少管理时间,还可以减少每次变更引入新的安全性或合规性问题的可能性。典型的防火墙变更管理流程将包括以下步骤: …

【Finetune】(一)、transformers之BitFit微调

文章目录 0、参数微调简介1、常见的微调方法2、代码实战2.1、导包2.2、加载数据集2.3、数据集处理2.4、创建模型2.5、BitFit微调*2.6、配置模型参数2.7、创建训练器2.8、模型训练2.9、模型推理 0、参数微调简介 参数微调方法是仅对模型的一小部分的参数(这一小部分可…

Java lambda表达式的变量捕获

有人看到这个lambda表达式能够访问isQuit这个变量而且还是可以被修改的变量,就发出疑问了,之前不是说lambda不能不或变量吗? 1.规则 java的lambda表达式变量捕获规则只是针对于外部作用域的局部变量来说的!!&#xf…

3D虚拟商城是什么?有哪些优势?

在数字化转型的澎湃浪潮中,3D虚拟商店作为一股革新力量,正逐步构筑起商业展示与交易的全新维度,成为企业及商户不可或缺的战略资产。视创云展为品牌搭建3D虚拟商城提供技术支持,凭借高度精细的三维模拟空间,不仅为顾客…

vue2项目实现国际化(若依框架示例)

本文主要梳理vue2项目实现全项目格式化,在导航栏中切换,页面中所有的组件的默认语言随之切换,搭配vue-i18n插件 文章目录 基础准备引入插件vue-i18n 实现示例流程1. 创建国际化文件1.1 element文件夹1.2 locales文件夹1.3 index.js1.4 change…

设计模式之访问者模式:灵活访问对象结构的强大工具

访问者模式 访问者模式(Visitor Pattern)是一种行为型设计模式,允许在不改变数据结构的前提下定义在这些结构上的新操作。它将操作行为与对象结构分离,使得可以在不修改对象结构的情况下添加新的操作行为。 访问者模式的应用场景…

在网络环境中怎么保护个人信息安全?

在网络环境中保护个人信息安全非常重要,以下是一些基本的建议来帮助您保护自己的个人信息: 使用强密码:确保您的所有在线账户都使用强密码。强密码通常包含大写字母、小写字母、数字以及特殊字符,并且长度至少为12位以上。 启用双…

【Node.js】初识微服务

概述 Node.js 的微服务架构是一种通过将应用程序分解为独立的、松耦合的小服务的方式进行系统设计。 每个微服务负责处理一个特定的业务功能,并且这些服务可以独立开发、部署、扩展和管理,并且可以通讯。 它的核心思想就是解耦。 微服务和微前端是类…

《中国数据库前世今生》观后感:数据库与中国IT的崛起

文章目录 1. 数据库技术的演进与挑战2. 开发者眼中的数据库3. 数据库未来展望4. 结语 作为一名程序员,观看了《中国数据库前世今生》纪录片后,我感受到了数据库技术在中国发展的巨大变化。中国IT行业的快速崛起,数据库技术无疑扮演了重要角色…

2.C++中程序的语法基础--关键字与分隔符

现在回过头来看上一篇中所写的程序&#xff1a; #include <bits/stdc.h> using namespace std; int main() {// 程序主体cout << "HelloWorld" << endl; return 0; } 我们会看到许多英文单词&#xff0c;像"include"、“using”&…

智能车镜头组入门(四)元素识别

元素识别是摄像头部分中难度最大的一部分&#xff0c;也是我花时间最长的一部分&#xff0c;前前后后画了很长时间&#xff0c;最后还是勉勉强强完成了。 基础的元素识别主要有两个&#xff1a;十字&#xff0c;圆环&#xff0c;和斑马线。十字要求直行&#xff0c;圆环需要进…

科技修复记忆:轻松几步,旧照变清晰

在时间的长河中&#xff0c;旧照片承载着无数珍贵的记忆与故事。然而&#xff0c;随着岁月的流逝&#xff0c;这些照片往往变得模糊不清&#xff0c;色彩黯淡&#xff0c;令人惋惜。 幸运的是&#xff0c;随着科技的发展&#xff0c;我们有了多种方法来修复这些旧照片的画质&a…

【Python基础】Python模块(提高代码可维护性与重用性的关键)

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、什么是Python模块&#xff1f;三、创建模块四、导入模块五、使用if __name__ "__main__&quo…

(黑马点评) 五、探店达人系列功能实现

5.1 发布和查看探店笔记 5.1.1 发布探店笔记 这块代码黑马已经完成了&#xff0c;在发布探店笔记界面&#xff0c;有两块内容是需要上传的。一是笔记内容&#xff0c;二是笔记配图。其中笔记配图部分黑马使用的是上传到本地前端服务器上面的。我我觉得可以将图片文件发布在阿里…

开始你的博客之旅:从零到一的详细指南

创建博客不仅是表达自我的方式&#xff0c;更是与世界分享知识、塑造个人品牌、甚至实现商业变现的强大工具。本文将详细介绍从确定主题到实际运营的每个步骤&#xff0c;帮助你顺利开启个人博客的旅程。 确定博客的主题和目标 在开始博客之前&#xff0c;首先要明确博客的主…

windows环境下安装python第三方包

python环境下&#xff0c;通常通过Anaconda来管理多个python环境&#xff1b; 即通过Anaconda创建python不用的虚拟环境&#xff1b; 1. 安装更新python第三方包&#xff0c;打开Anaconda&#xff0c;在右侧的搜索需要的python包并进行安装&#xff1b; 2.如果没有搜索到&…