【PCIE体系结构十四】电气物理层之发送端FFE

news2024/10/2 4:09:29

👉个人主页:highman110

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

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

参考文章:https://www.eetop.cn/measurement/6948203.html

 电气物理层

        前面章节讲的是物理层的逻辑层面,本章节开始将物理层的电气层面。电气层面主要包括时钟、电平、眼图、阻抗、损耗、功耗、均衡等电气特性或技术,这里主要讲一下均衡技术,其他内容大家自行查阅规范。

 发送端均衡

        发送端均衡采用前向反馈均衡器(Feed forward Equalizer,FFE),分为预加重和去加重。这两个加重的概念大家应该不陌生了,这里不赘述,当前serdes发送端一般都采用去加重而不是预加重,我认为有以下几个考量:

        1、预加重是有意增强信号跳变沿的信号幅度,增高高频分量,去加重是降低跳变沿之外的信号幅度,削弱低频分量,很显然预加重的功耗会大一点。

        2、在经过连续相同电平的码元传输后,电容被持续充电,当下一个码元要翻转到相反电平时,这个翻转就可能无法达到目标电平,造成接收端错误。当然这种连续相同电平码元传输的情况已经通过编码、加扰等手段大概率避免了。

        3、预加重增高高频分量,其对外辐射的能量更大,更容易引起串扰。

        4、将信号放大的成本高于将信号减小的成本。

        PCIE2.0及1.0的去加重规则是,信号发生跳变后,第一比特不做去加重,若当前比特与前一比特相同,进行去加重,如下图所示:

        PCIE 1.0是-3.5dB去加重,PCIE 2.0有-3.5dB和-6dB两种可选,为什么2.0多了一个去加重更多的-6dB的选择呢,很好理解,输出速率提升了嘛,高频衰减更严重了,所以要把高频分量的比例提的更高点。在到PCIE 3.0之后,速率更高了,需要采用更加复杂的去加重技术,一般理解为,即除了跳变bit增⼤(这个增大指的是相对后面的相同电平比特而言)幅度发送(De-emphasis)以外,在跳变bit的前1个bit也要增大幅度发送,这个增⼤大的幅度通常叫做Preshoot,很好理解,增加preshoot的目的是为了进一步增加信号跳变时的高频分量。

        PCIE 3.0到5.0的发送端预加重,使用的是一个三抽头FIR滤波器,6.0的用的是四抽头的,这里我们把原理图都贴出来,只分析三抽头的,四抽头大家自行查阅5.0规范,在8.3.3.2章节。

 

        三抽头FIR均衡器如上图所示,该均衡器有三个输入,分别为当前发送比特、前一比特及后一比特,这三比特信号按照一定权重相加后作为输出,输出表达式如上图中下部。 其中,下一比特、当前比特及前一比特的权重系数 C-1、C0、C+1分别称为FIR方程的Pre-cursor、Cusor及Post-cursor系数。Pre-cursor又称Pre-shoot系数,Post-cursor又称去加重系数。收发端在均衡过程中调整这三个系数的值,来获得最佳传输性能。Pre-cursor、Cusor及Post-cursor 系数满足的规则在上图中下部也写了,一般只要设定Pre-cursor和Post-cursor系数,Cusor系数可以根据约束规则算出来。

        为实现粗粒度的发送均衡参数调节,PCIe3.0规范定义了11组FIR均衡器Preset 值,编号为P0~P11。在收发端均衡之初交换Preset编号即交换了一组FIR均衡器的系数。各组 Preset的编码、Pre-shoot、De-emphasis、Pre/Post-cursor及各种电平比率如下表所示:

        上面的注释中full swing mode一般指的是正常工作模式链路信号摆幅,reduced swing mode指的是低功耗模式的信号摆幅。

        上表中的P0、P1两种Preset就是PCIE 1.0和2.0用的de-emphasis值,可以看到表中的preshoot为0,C-1系数为0。另外,P4这种C-1、C+1系数均为0,C0为1的preset,可以理解为FIR均衡器数据前后没有变化(这种Preset一般用来间接测量各种Preset下Va和Vc的电平)。简单理解就是,通过设置C-1、C+1为0可以关闭De-emphasis和Pre-shoot;若不考虑前一比特的影响,则设置C+1为0,则关闭了去加重;若不考虑后一比特的影响,则设置C-1为0,就关闭了Pre-shoot(有些文章翻译为前冲)。

        那de-emphasis、Pre-shoot和boost的幅度怎么量化衡量的呢?毫无疑问就是通过不同的电平比值来衡量。我们看到上表中有Va、Vb、Vc、Vd四种电压,这是由于某个bit的前后bit的不同0、1场景,对应了4中不同的预加重电平调整结果,结合下图说明:

        举个Preset=P7的例子:当前比特为1,C+1=-0.2,C0=0.7,C-1=-0.1:

        连续3比特为011,输出电压为-C+1+C0+C-1=0.8,对应图中Va,称为Normal电平。

        连续3比特为111,输出电压为C+1+C0+C-1=0.4,对应图中Vb,称为De-emphasized电平。

        连续3比特为110,输出电压为C+1+C0-C-1=0.6,对应图中Vc,称为Pre-shoot电平。

        连续3比特为010,输出电压为-C+1+C0-C-1=1.0,对应图中Vd,称为Maximum-height电平,可以简单理解为不经过FIR均衡器发送端的正常摆幅。

        有了以上四种电平,就可计算出去加重、Pre-shoot及Boost幅度,表示为:

 

        若不加限制,那么C-1、C0、C+1形成的组合非常之多。但并不是所有的组合在实际应用中都是合适的。其中一个最重要的约束条件就是:去加重电压Vb不能过小,过小的去加重电压会导致输出信号在接收端的眼高过低。因此通过BOOST比值对去加重地电压幅值进行限制:对于full swing mode的Tx输出,规范要求BOOST≤9.5dB;对于reduced swing mode的Tx输出,规范要求BOOST≤3.5dB。系数的具体要求如下:

        1、系数必须支持上面的preset表中定义的所有11个预设值及其各自的公差;

        2、所有Tx必须满足Full-swing信号VTX-EIEOS-FS限制,VTX-EIEOS-FS:Minimum voltage swing during EIEOS for full swing signaling。定义见PCIE 4.0规范文档8.3.6 Data Rate Dependent Parameters章节。

        3、Tx可以选择性地支持Reduced-swing,支持Reduced-swing的话,必须满足 VTX-EIEOS-RS限制。VTX-EIEOS-FS:Minimum voltage swing during EIEOS for Reduces swing signaling。

        4、系数必须满足Boost和分辨率(VTX-Boost-FS:Maximum nominal Tx boost ratio for full swing、VTX-Boost-RS:Maximum nominal Tx boost ratio for reduced swing、EQTXCOEFF-RES:Tx coefficient resolution)限制。

        当以上约束均满足时,FIR系数空间可以映射到一个三角矩阵上。一个粒度为 1/24 的FIR系数三角矩阵如下图所示:

        该矩阵中,去加重系数C+1映射到X轴,Pre-shoot系数C-1映射到Y轴。矩阵中每个单元格由3个元素组成:Preset(左上)、De-emphasis(右上)及 Boost(下中),每个单元格都代表了一种有效的Pre-shoot、去加重、Boost系数组合。对角线元素(8/24-8/24)为最大Boost比率(9.5 dB),这条线右侧的系数,Boost超过了9.5dB,这些参数不能使用,为空白单元格。Full-swing需实现所有蓝色及橙色单元格,Reduced-swing必须实现蓝色单元格。

        发送端FFE就先介绍到这里,下一章讲述接收端DFE,敬请期待。

 

 

 

 

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

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

相关文章

Docker 安装 Nginx,并实现负载均衡

1、获取 nginx 的镜像 # 默认是latest版本docker pull nginx 2、运行 nginx 容器 docker run --name nginx-80 -p 80:80 --rm -d nginx# --name nginx-80 设定容器的名称# -p 80:80 端口进行映射,将本地的80端口映射到容器内部的80端口# --rm 表示容器退出后直接…

云安全技术——Hyper-V虚拟化技术

目录 5-1 了解Hyper-V 5-2 安装Hyper-V 5-3创建虚拟机 Hyper-V虚拟化技术 实验目的 了解 Windows 虚拟化的概念 了解 Hyper-V的背景及发展 了解 Hyper-V 的功能特性 了解 Hyper-V的体系架构 实验要求 能描述 Hyper-V 的功能特性 能在 Windows 2012 R2系统下部署 Hyper-V 能使…

SpringBoot整合MyBatis分页

SpringBoot整合MyBatis分页 一、pagehelper分页1、添加相关依赖2、添加相关配置3、添加分页配置4、添加代码5、测试 二、拦截器分页1、添加相关配置2、添加拦截器代码和配置3、添加代码4、测试4、测试 本文目标: SpringBoot整合Mybatis分页的两种方式,一…

Python基础八

目录 一、Python条件控制语句 1.执行过程 2.if 语句 if中常用的操作运算符: if 嵌套 3.match...case语句 二、Python循环控制语句 1.while循环 while无限循环 while 循环使用 else 语句 2.for 循环语句 for...in...循环 for循环使用else语句 for...in range()…

2023年3季度DAMA-CDGA/CDGP数据治理认证即将开班

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

你知道ai绘画生成器怎么弄吗

在数字时代,艺术也开始走向了自动化。随着人工智能技术的进步,ai绘画软件已经开始逐渐普及。它们可以利用先进的神经网络算法,学习人类艺术家的风格和技巧,从而生成出高度逼真的艺术作品。这些作品虽然没有人类艺术家的创意和灵魂…

Linux系统编程(终端和进程的关系)

文章目录 前言一、终端和控制台二、TTY和PTY三、终端的类型四、Gnome Terminal伪终端总结 前言 本篇文章带大家学习终端和进程的关系,终端相信大家都听过,那么真的理解终端是什么吗?应该有很多同学对于终端只是有一个模糊的概念。那么这篇文…

【算法题】合并两个有序链表、删除字符串 s1 中在字符串 s2 中出现的字符、求一个论坛一天的在线人数分布

合并两个有序链表、删除字符串 s1 中在字符串 s2 中出现的字符、求一个论坛一天的在线人数分布 一、合并两个有序链表1.1、题目描述1.2、思路1.3、代码实现1.4、小结 二、删除字符串 s1 中在字符串 s2 中出现的字符2.1、题目描述2.2、思路2.3、代码实现2.4、小结 三、求一个论坛…

项目进度类知识要点

单代号网络图 六标时法正推法逆推法 六标时法最早开始时间(ES)工期最早完成时间(EF)活动名称/活动编号最迟开始时间(LS)浮动时间(总时差)最迟完成时间(LF) 关键路径、计算项目的总工期 关键路径是最大长度关键路径上的活动是关键活动关键活动之和为总工期 关键路径变化问题…

华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解)

前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ,非常复杂。学的时候就浑浑噩噩,真正到了实践中更是糊里糊涂,一旦工作中遇到了网络问题,除了会简单地 ping 几下 ,基本没有…

安装Jmeter

Jmeter是Java语言开发,所以需要java环境,所以先安装jdk 1.安装JDK(1.8版本以上) 下载: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 找到对应的版本: 点击exe文件安装,跟着向导下一步 2.安装jmeter 下载 Jmeter : 版…

【Java】JVM(六)

垃圾回收 分代回收理论 当前商业虚拟机的垃圾回收器,大多遵循“分代收集”的理论来进行设计,这个理论大体上是这么描述的: 1、绝大部分的对象都是朝生夕死。 2、熬过多次垃圾回收的对象就越难回收。 根据以上两个理论,朝生夕…

【Java】JVM学习(四)

对象的分配 JVM中对象的创建过程 对象的内存分配 虚拟机遇到一条new指令时,首先检查是否被类加载器加载,如果没有,那必须先执行相应的类加载过程。 类加载就是把class加载到JVM的运行时数据区的过程。 1)检查加载 首先检查这…

从选题、创作、编辑、推广到优化,23个必用的内容营销工具

咱们做内容营销的,要懂营销懂产品,看得懂技术语言,写得了行业洞察,做出来的内容要有创意还要接地气,专业内容也不能落下,除了会写,还要会运营会设计会剪视频,简直就是全才嘛。 但是…

你知道游戏配音怎么制作吗?教你游戏配音教程怎么做

曾经,有一个叫小明的游戏迷,他对于游戏世界充满了热爱和想象。每当他控制着自己喜爱的角色在游戏中冒险时,他总是希望能够为这些角色赋予独特的声音,让它们真正活起来。然而,他却面临一个问题:游戏配音教程…

【CTF-Reverse中的加密算法】密码算法特征识别,变种密码算法分析

上一章中我们带领大家了解了加密算法——RC4,TEA,Base64算法的原理,但是加密算法远不止这些,需要大家自行去学习,在这一章中,我来带领大家了解密码算法特征识别,变种密码算法分析。 一.密码算法特征识别 1.什么是特征…

详解MySQL的常用数据类型

文章目录 一、MySQL 数据类型1.1、mysql中编码和字符 二、数值类型2.1、整数类型的长度2.2、浮点型 三、字符串类型3.1、字符串类型长度 四、日期和时间类型4.1、DATETIME 五、二进制数据类型六、使用建议 一、MySQL 数据类型 MySQL支持很多数据类型,以便我们能在复…

实现定时任务

1 问题 定时任务中,每天统计一下今日博客的各项数据,并以邮件的形式发送给自己。 2 方法 .首先在某目录下新建任务文件 crontest.cron,用于存在定时任务语句。.相同目录新建 hello.py 文件,并且编辑这个文件写一句简单的 print(He…

【JUC进阶】05. 偏向锁

目录 1、前言 2、偏向锁 2.1、基本原理 2.2、使用场景 3、获取偏向锁 4、何时撤销 4.1、到达安全点 4.2、其他线程尝试竞争偏向锁 4.3、重新计算hashcode 5、小结 1、前言 偏向锁是Java并发编程中一种重要的锁机制,它针对特定的线程进行优化,…

项目集活动—项目集收尾阶段活动

项目集收尾阶段活动从项目集组件完成了所有输出的交付,且项目集开始交付预期效益。某些情况下,项目集治理可能决定在所有组件完成之前就提前执行项目集收尾。无论哪种情况,此阶段项目集活动的目标都是释放项目集资源,支持将剩余项…