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

news/2024/7/7 20:46:21

👉个人主页: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://lihuaxi.xjx100.cn/news/1146088.html

相关文章

后台管理系统中数据库存储文章用什么类型,mysql数据库中怎么存储大段文字呢?(1000个中文字符以上)

问题 一个小型的文章系统的网站,用来存储内容content的字段,我选择的是varchar(8000),最多可容纳4000汉字,对绝大多数用户来说,应该够用了。但是一个问题是允许用户输入代码(HTML,JS,CSS等&…

随想010:该在哪里花费时间

这篇短文写于 2023 年 5 月。 X Window 至今几乎仍是 UNIX/Linux 所有 GUI 的基础。先来看一下 X Window 历次版本变更,重点关注发布的时间。 1984 年 6 月,X Window 第一个版本 X1 由麻省理工学院发布;1985 年 1 月,X Window 版…

Spring Security 6.x 系列【43】授权服务器篇之设备授权模式

有道无术,术尚可求,有术无道,止于术。 本篇Spring Boot 版本 3.0.6 本篇Spring Security 版本 6.1.0 本篇Spring Authorization Server 版本 1.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. 概述3. 交互流程3.1 设…

js实现分片上传

代码贴过来就能用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><metahttp-equiv"X-UA-Compatible"content"IEedge"/><metaname"viewport"content"widthdevice-wi…

浅谈谈谈OTA召回2023

近日&#xff0c;国家市场监督管理总局发布特斯拉召回公告&#xff0c;一下子掀起了互联网热议&#xff0c;这次召回的范围是在2019年1月12日至2023年4月24日期间国内销售特斯拉汽车&#xff08;含国产和进口共计110万辆车&#xff09;&#xff0c;在这个召回公告中有两点值得关…

Bed Bath and Beyond EDI 需求分析

Bed Bath and Beyond&#xff08;Bed Bath and Beyond&#xff09;是一家美国的家居用品零售商&#xff0c;成立于1971年&#xff0c;总部位于新泽西州Union。该公司在美国、加拿大和墨西哥拥有超过1500家门店。其产品涵盖了床上用品、浴室用品、厨房用品、家居装饰等领域&…

分布式锁解决方案_Zookeeper分布式锁原理

通过召zk实现分布式锁可靠性时最高的 公平锁和可重入锁的原理 取水秩序&#xff1a; &#xff08;1&#xff09;取水之前&#xff0c;先取号&#xff1b; &#xff08;2&#xff09;号排在前面的&#xff0c;就可以先取水&#xff1b; &#xff08;3&#xff09;先到的排在…

thinkphp6 消息队列think-queue(完整版)

1.安装队列依赖 如果是在Linux上&#xff0c;进入thinkphp项目的think文件所在目录&#xff0c;执行安装命令 composer require topthink/think-queue 2.修改queue的配置文件&#xff0c;文件位置config/queue.php(安装成功后自动生成) <?php return [default >…