【PCIE体系结构十一】部分物理层发送接收逻辑细节

👉个人主页:highman110

👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 

参考书籍:《PCI.EXPRESS系统体系结构标准教材 Mindshare》   

目录

 物理层逻辑框图

 发送多路复用器  

 字节拆分器的位置

 通道间的相位补偿


物理层逻辑框图

  

 发送多路复用器  

  

        从上图可以看到,进入到多路复用器的内容有以下四种:

        发送数据缓冲区的TLP和DLLP:当数据链路层提供了需要发送的数据包时,多路复用器会选通数据包码流通过字节拆分逻辑。发送缓冲区内的字符是数据或“D”字符,因此选通发送缓冲区的内容时,D/K#信号被驱动为高电平。

        开始和结束字符:这些控制字符被附加到每个TLP和DLLP的开始和结束位置。这些成帧字符使接收器能够轻松地检测数据包的开始和结束。有两类开始字符,一类是开始TLP字符(STP),另一类是开始DLLP字符(SDP)。结束字符也有两类:结束好TLP(End Good TLP)或DLLP字符(END)和结束坏TLP(End BadTLP)字符(EDB)。来自数据链路层的控制信号与数据包的类型一起决定着选通哪类成帧字符。开始和结束字符是控制或“K”字符,因此当开始和结束字符分别在数据包的开始和结束位置被选通输出时,D/K#信号被驱动为低电平。

        有序集(Ordered-Set):有序集的长度是4字符序列的倍数,它以逗号(COM)控制符开始,后面跟有其他字符。在如下所述的特殊事件期间才发送有序集。

        1、链路训练期间在链路上发送定向序列1和2(TS1和TS2)有序集。基本复位、热复位或出现某些错误状况后都会出现链路定向。有关TSI和TS2有序集的详细内容后面会讲。

        2、多路复用器以固定的间隔为字节拆分逻辑选通SKIP有序集,以便在链路另一侧端口的接收器电路中进行时钟的容差补偿。

        3、一台设备要将其发送器置于电气空闲状态时,它必须通知位于链路另一端的远程接收器。为此,该设备要选通一个电气空闲有序集。

       4、 一台设备要将其链路电源状态从L0s低功耗状态改为L0工作电源状态时,它要向接收器发送快速定向序列(Fast Traning Sequence,FTS)有序集。接收器使用该有序集来重新同步其PLL与发送时钟。

        有序集以K字符开始,并且根据有序集的类型,它可能包含D或K字符。因此在有序集传输期间,可能某个时钟驱动D/K#信号为低电平,然后可能又将其驱动为高电平。

        逻辑空闲序列:链路上不发送数据包时(称为逻辑空闲链路)会选通逻辑空闲字符,而不是让链路处于悬接状态(floating state)或什么也不做。这样做就保证链路上有信号转换,从而使接收器的PLL能够与发送时钟保持时钟同步。另外,接收器能够维持比特和符号的锁定。逻辑空闲序列由发送00h字符所组成。它由D类型的字符组成,因此在多路复用器选通逻辑空闲序列时,D/K#信号为高电平。

 字节拆分器的位置

        从上面的物理层框架图可以看到,发送端字节拆分在扰码和8B/10B编码之前,这里就有疑问了,拆分之后每一条lane都有扰码和8B/10B编码单元,这不是增加了芯片面积和成本吗?为什么不先统一做完扰码和8B/10B编码再拆分到多个lane?其实这么做的目的是为了使接收端能检测到每一条lane上无效的10b字符,如果发现某条lane有错误,可以禁用该通道,并用剩下的通道来重新初始化链路。

 通道间的相位补偿

        在多条lane的情况下,每条lane上的延时常常是难以控制一致的。如果在每条通道上同时发送的数据在不同时间到达接收器的每条通道,然后被反串行化并送人字节反拆分逻辑部件,那么肯定会引起混乱,所以必须要做通道间的相位补偿。

        在链路训练时,ordered sets TS1/TS2、FTS是同时在每条lane上传输的,所以使得接收器的相位补偿逻辑可以使用这两个有序集来确定通道之间的相位偏移量。规范并未定义实现多通道对齐的方法。举个例子,接收器逻辑可以通过微调一个自动延迟电路(位于每条通道的接收器中)来补偿相位偏移,如下图所示:

        仅在最初的链路定向或链路重新定向期间(也就是恢复期间)才传输TS1和TS2有序集,在退出L0s期间才传输FTS有序集。因此只在这些时间内接收器才执行相位补偿,而不是定期进行相位补偿。 

        后面再细讲物理层控制字符和链路训练相关内容。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【复杂网络建模】——通过图神经网络来建模分析复杂网络

目录 一、复杂网络介绍 二、复杂网络建模分析方法 三、基于图神经网络来建模 1、数据准备 2、构建图神经网络模型 3、学习节点和边的表示 4、特征提取和预测 5、模型评估和优化 四、可视化建模分析 1、初始网络可视化 2、特征可视化 一、复杂网络介绍 复杂网络是指…

软件测试专业应届生应如何提高职场竞争力

一:巩固专业知识 背景:笔者已经做了几年的打工人,以个人经验给软件测试专业应届生一些建议。 推荐需要掌握的知识: 1、软件测试基础知识(软件生命周期每个阶段工作需了解) 2、熟悉SQL/MySQL/Oracle数据库&…

【C++】哈希/散列详细解析

前言:上篇文章介绍了unordered_set和unordered_map序列关联式容器,它们之所以效率比较高,是因为其底层使用了哈希结构。,所以这篇文章我们就来详细讲解一下哈希表。有关unordered序列关联式容器的知识,请移步至这篇文章…

python3+pytest+requests+allure+yaml测试框架搭建

目录 设计框架的原则 1.框架整体结构 2.框架各个模块说明 3.示例 3.1 先写一个测试用例 3.2 对上面的用例进行分层封装(可根据业务复杂度分两层或者三层,此处演示分三层) 3.3生成allure测试报告并查看 设计框架的原则 封装基类方法 对…

山东移动:全业务域核心系统升级,实现大幅降本增效

本文介绍了山东移动引入 OceanBase 到山东省 BOSS/CRM 核心系统领域的相关情况。欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 中国移动通信集团山东有限公司(以下简称"山东移动") 隶属于中国移动通信集团公司…

发现一个国产BI软件,做财务数据分析效果绝了

如果是一般的财务数据分析,BI软件们都能做,但如果真要深入了解财务痛点,逐个击破财务数据分析难点,实现多维立体自助式的财务数据分析,那就难。就目前而言,财务数据分析做得好的国产BI软件也就一个奥威BI软…

java版Spring Cloud+SpringBoot+mybatis+uniapp b2b2c 多商户入驻商城 直播 电子商务

J2EE企业分布式微服务云快速开发架构 Spring CloudSpring Boot2MybatisOauth2ElementUI 前后端分离 1. 鸿鹄Cloud架构清单 2. Commonservice(通用服务) 通用服务:对spring Cloud组件的使用&封装,是一套完整的针对于分布式微…

原神QQ机器人BOT搭建教程Ubuntu系统

原神QQ机器人BOT搭建教程Ubuntu系统 大家好我是艾西,今天跟大家分享的是YUAN神qi鹅群机器人bot搭建方式以及详细的操作步骤。跟上艾西的节奏准备发车啦! 前言:(xxxx即为xxxx)(zzz即为zzz) qi…

RK 平台MIPI 点屏注意事项

转自:https://www.cnblogs.com/chorm590/p/11658360.html rk 平台关于 MIPI 屏幕的点屏流程已经非常完善了,基本上只要确定了硬件没问题、接线没问题、屏幕没问题,再稍稍配置一下 dtsi 里的参数就可以的了。 MIPI 点屏流程大致可以概括为以下…

i春秋 Misc Web 爆破-1

打开链接是PHP源码 代码审计: include "flag.php"; 表示文件中包含flag.php文件,即根目录下存在flag.php $a $_REQUEST[hello]; 命名一个变量a来接收超全局变量$_REQUEST(接收表单’hello’数据,请求一个为hello的参…

顶级白帽黑客必备的十大黑客技术

1.熟悉Linux系统和命令行操作: Linux是黑客的基石,几乎所有黑客工具和技术都是在Linux平台上运行的,熟悉Linux系统和命令行操作是必须的。 2.掌握网络协议和TCP/IP模型: 了解TCP/IP模型、网络协议和通信流程是黑客攻击的基础&a…

Java并发编程:并发问题和多线程技术的应用和优化

章节一:引言 在当今的软件开发领域中,多线程编程是一项至关重要的技术。随着处理器核心数量的增加和计算机系统的并行性的不断提高,充分利用多核心处理器的能力已成为现代软件开发的关键要素之一。Java作为一种强大的编程语言,在…

世界超高清大会发布重大技术成果:博冠自主创新推动8K摄像机攻关

一、世界超高清大会背景介绍: 近日,由工业和信息化部、国家广播电视总局、中央广播电视总台、广东省人民政府主办的2023世界超高清视频产业发展大会在广州越秀国际会议展览中心盛大召开。自2018年创办以来,大会已成功举办四届,成…

安装Ubuntu18.04双系统、干净卸载,并在Ubuntu系统中安装CARLA模拟器

Ubuntu系统安装 Ubuntu系统安装参照流程 Ubuntu 双系统安装流程_ubuntu双系统_地球被支点撬走啦的博客-CSDN博客 Ubuntu系统卸载 1.将开机启动项设置默认为Windows,进入BIOS设置界面调整BootDevice中Windows和Ubuntu的顺序,将Windows调整在Ubuntu前边…

PMP课堂模拟题目及解析(第11期)

101. 一家咨询公司的负责人启动一个项目来扩大公司提供的服务数量,这公司具有竞争优势、出色的企业知识以及卓越的声誉,高管团队担心与增加新服务相关的负面业务结果的可能性。若要评估负面业务结果的可能性和影响,项目经理应该使用什么&…

Protell99SE祭文

Protell99SE祭文 大概是在21年前的今天,我和你结合在一起,陪伴走过无数的设计。 我的感觉,大概是在2021年吧,你逐渐离我远去。啊,Protel99SE时代一去不复返了。 我用了你21年,虽着AD软件的到来&#xff…

Word控件Spire.Doc 【文本框】教程(5): 插入、读取和删除表格

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

Linux基本指令和操作(3)

目录 一. date指令 -- 显示时间 二. cal指令 -- 日历打印指令 三. find指令 -- 查找文件 四. grep指令 -- 行过滤指令 五. zip/unzip指令 -- 压缩和解压缩 六. tar指令 -- 解压/打包 或 查看压缩包内文件 七. bc指令 -- 计算器 八. uname指令 -- 获取电脑和操作系统相关…

JAVA - 字符串工具类StringBuilder和StringBuffer

文章目录 目录 文章目录 前言 二.常用方法演示 1.append()用于将指定的字符串添加到当前StringBuilder对象的末尾 2.delete():用于删除StringBuilder对象中指定位置的字符。 3.insert():用于在指定位置插入指定字符串。 4.replace():用于替换…

中睿天下成为国家信息安全漏洞库(CNNVD)一级技术支撑单位

近日,中国信息安全测评中心公布2023年度国家信息安全漏洞库技术支撑单位名单,中睿天下荣获中国信息安全测评中心颁发的“国家信息安全漏洞库(CNNVD)技术支撑单位等级(一级)证书”,成为该领域最高…
最新文章