高速信号的眼图、加重、均衡
目录
- 高速信号的眼图、加重、均衡
- 眼图
- 加重
- 均衡
- 线性均衡器CTLE
- 判决反馈均衡器DFE
高速信号的眼图、加重、均衡
眼图
通常用示波器观察接收信号波形的眼图来分析码间串扰和噪声对系统性能的影响,从而估计系统优劣程度,因而眼图分析是高速互连系统信号完整性分析的核心。
另外也可以用此图形对接收滤波器的特性加以调整,以减小码间串扰,改善系统的传输性能。
首先需要了解一下什么是码间串扰,如下图所示,本来发送端传输的序列是二进制1011,由于信道传输过程中的干扰,最终效果如下。
从第二个数据(码元)开始,每个码元都会受到前后码元的影响,导致抽样点不仅有本码元的值,还有前后码元值的干扰。

下图是在网上找的一张示波器的眼图测试结果。

形成眼图的原理如下所示,眼图是通过测量三bit数据的采样结果,绘制而成的图形。
下图左侧表示三位二进制数据的各种采样结果,在实际传输中,边沿不是是垂直的,会有一定弧度。最终将左侧的8种状态叠加,得到右侧的波形图,被称为眼图。

眼图的中间部分被称为眼睛,眼睛张开越大,表示上升沿和下降沿变化的越快,码间串扰越小。在实际测试中,主要关心眼图的眼高和眼宽。

可以根据眼图的结果,去判断码间串扰和噪声对系统的影响,下图左侧是没有串扰的示波器眼图,右侧是有串扰的示波器眼图。

加重
首先需要知道为什么高速信号在发送端需要做加重处理,是因为信号在传输的过程中有衰减?
如果信道对所有频率分量的衰减是相同的,或者信道传输的是单频的正弦波,那么是不需要做加重、均衡等处理的,接收端只需要减小门限电压就行了。
然而信道对各个频段信号的衰减程度是不一样的,类似低通滤波器,对传输的高频分量衰减的比较大。另一个原因在于信道传输的信号是方波信号,含有多个频率分量,而高频分量衰减幅度很大,从而需要在发送端去通过加重来补偿信道的衰减。
如下图所示,左侧发送端的眼图比较标准,但是经过实际传输后,到达接收端时,眼图变得很混乱,已经无法准确采集信号。

如下图所示,上边没有进行预加重的信号在发送端的眼图虽然比较好,但是经过PCB传输之后,接收端的眼图已经闭合了。而经过加重处理的信号,在发送端的眼图虽然不好看,但是经过PCB传输后,在接收端眼图还是存在的。

加重是一种在发送端对输出信号高频分量进行补偿的信号处理方式,分为预加重(Pre-Emphasis)和去加重(De-Emphasis),目的都是尽量平衡高频分量和低频分量,减少传输链路对高频分量衰减大于低频分量对最终结果的影响。
-
预加重(Pre-Emphasis):保持信号低频分量幅度不变,增强信号的高频分量。由于信号的高频分量主要集中在上升沿和下降沿,因此就是增大上升沿和下降沿处的幅度。
-
去加重(De-Emphasis):保持信号的高频分量幅度不变,衰减信号的低频分量,即减小电平的幅度。

预加重(Pre-Emphasis)和去加重(De-Emphasis)区别在于去加重(De-Emphasis)的最大摆幅是恒定的,而预加重(Pre-Emphasis)的最大摆幅与加重有关。
如下图所示,是一个12Gb/S的信号,经过板卡传输前后的眼图信号,左侧表示发送端的眼图,右侧表示经过板卡传输后接收端的眼图,接收端的眼图已经完全闭合了。

在上述信号的发送端进行预加重处理,如下图所示,左侧是发送端原始眼图,中间是预加重之后眼图,最大电压由600mv增大到1V以上了,右侧是接收到的眼图。

如下图所示,在发送端使用去加重,中间是经过去加重处理后的眼图,最大电压减小到400mv,而右侧是接收端的眼图信号,依旧能够使眼睛睁开。

加重的原理如下所示,Feed-Forward Equalizer(FFE)前向反馈均衡器,原理类似于FIR滤波器。前后多个bit的输入电压乘以抽头系数(校准因子),校准当前bit的输出电压。

C0表示当前位的抽头系数,控制信号的幅度,而C-n前n位的抽头系数,C+n后n位的抽头系数,发送端最常用的是3个抽头系数的加重。
使用上述参数来设置FFE的参数会比较麻烦,一般会使用Pre-Cursor和Post-Cursor来设置加重的参数。
Pre-Cursor是跳变沿的前一bit幅度与值为1或0的幅度的增益比值,一般是正数。Post-Cursor是值为1或0的幅度与跳变沿的后一bit幅度的增益比值,一般是负数。

相关公式如下所示,Vb表示值为1或0时的幅度值,Vc表示边沿前一bit的幅度,Va表示边沿后一bit的幅度。

上述公式只需要了解即可,在FPGA实际使用时,可以直接通过软件对Pre-Cursor与Post-Cursor的所有取值进行扫描,得到最好的值作为实际工作的数值,用户不需要手动计算参数值。
对于加重,用户需要掌握加重的原因,加重的作用,其余的东西了解即可。
均衡
为了弥补信道对传输信号的不同频段衰减程度不一样,在发送端通过加重进行补偿,那么接收端呢?
如下图所示,接收端有CTLE和DFE来弥补信道传输的缺陷。

线性均衡器CTLE
如下图所示,红色曲线是信道的频率响应曲线,呈现低通滤波器的特性,而CTLE(continuous time linear equalization)是一个模拟的高通滤波器,用于补偿信道对高频的衰减。
将信道和一个高通滤波器串联就能得到一个全通的滤波器,在实际的模拟电路中并不存在高通滤波器,但只要保证用户关心的带宽内呈现高通特性就能满足均衡的要求。

CTLE的模拟参考电路如下所示,CTLE的变化特性要尽可能与信道损耗随频率变化特性刚好相反,即当信道发生变化时,CTLE的参数可能需要进行修改,以适应新的信道的频率响应。
另外CTLE会放大高频信号,同时会放大高频噪声。

前文使用预加重和去加重使12Gb/S速率的信号经过板卡后的眼睛睁开,下图使采用CTLE的方式使眼睛睁开。
左侧是发送端的眼图,中间是接收端接收的眼图,右侧是接收端的信号经过CTLE处理后的眼图,CTLE恢复的结果比较好。

判决反馈均衡器DFE
DFE(Decision Feedback Equalizer)是一种非线性均衡器,将接收到的信号经过判决后,将判决信号延迟输入到滤波器中,通过滤波器输出的加权和来抵消码间串扰。

与FFE类似,DFE也是通过数字高频滤波器实现的,各个支路的权重决定均衡的强度。DFE可以对高频信号进行补偿且不会放大高频噪声。
DFE原理如下图所示,左图是采集的二进制010的波形,由于信道的影响,导致高电平之后的一段时间内,信号并不能马上衰减为0,DFE会把0.223、0.073这些值直接变为0,结果如右侧图形。

DFE是通过检测前面波形状态来补偿后续波形,导致其不能对前面的波形进行补偿。因此DFE能够消除Post-Cursor导致的码间串扰,不能消除Pre-Cursor导致的码间串扰问题,可以和接收端的FFE配合使用,来移除Pre-Cursor带来的码间串扰问题。
如下图所示,左侧是发送端眼图,中间是接收端没有经过处理的眼图,右侧是经过两个抽头的DFE处理后的眼图,眼睛张开了,但是边沿区域会有突起,这是因为DFE会将信号强行变为1或0,导致该区域比较尖锐。

下图是在接收端同时使用CTLE和一个抽头系数的DFE眼图,使用CTLE之后,眼睛只张开了一点,在经过一级DFE之后,眼睛已经张开,并且边沿区域也没有上图尖锐。

在使用FPGA的GTX收发数据时,也需要设置Pre-Cursor、Post-Cursor、接收幅度、滤波器类型等等,但是xilinx给用户提供了眼图扫描IP,只需要将所有参数扫描一遍,选择最优参数即可,不需要用户去计算各个参数的数值。
即使工具能够得到最佳参数,用户也需要知道眼图的原理,码间串扰的原因、为什么要进行加重、均衡处理。
相关文章:
高速信号的眼图、加重、均衡
目录 高速信号的眼图、加重、均衡眼图加重均衡线性均衡器CTLE判决反馈均衡器DFE 高速信号的眼图、加重、均衡 眼图 通常用示波器观察接收信号波形的眼图来分析码间串扰和噪声对系统性能的影响,从而估计系统优劣程度,因而眼图分析是高速互连系统信号完整…...
2024年PMP考前冲刺必背的学习笔记,整理好给你!
项目的四大特点:临时性、独特性、变革驱动性和创造商业价值。 项目管理:将知识、技能、工具与技术应用于项目活动,以满足项目的要求 Pestle:P政治,E经济,S社会,T技术,L法律,E环境 …...
增加服务器带宽可以提高资源加载速度吗?
答案是可以的 ,增加服务器带宽通常能够提高资源加速速度。带宽是服务器与互联网之间传输数据的速率,它决定了在单位时间内可以传输的数据量。以下是增加带宽如何提高资源加速速度的几个方面: 1.更快的数据传输:带宽增加后…...
汽车EDI: NAVISTAR EDI对接
Navistar International Corporation 是一家美国商用车辆制造公司,总部位于伊利诺伊州的Lisle。公司以生产中型和重型卡车、公共汽车、柴油发动机和底盘闻名,其产品广泛应用于运输、建筑、和农业等行业。Navistar 的历史可以追溯到1831年,由国…...
【Word多级标题完整设置】设置各级标题样式将多级列表链接到各级标题样式中
Word多级标题完整设置 一、设置各级标题样式主标题样式设置中英文字体、字形以及字号设置段落设置(缩进、间距和行距) 一级标题样式设置中英文字体、字形以及字号设置段落设置(缩进、间距和行距) 二级标题样式设置中英文字体、字形…...
不同分辨率下vue页面的高度自适应
1. 使用视口单位 .element { height: 100vh; /* 使得元素高度等于视口高度的100% */ /* 可以减去一部分高度以适应页眉或页脚 */ height: calc(100vh - 100px); } 2. 使用百分比(%)高度 .parent { height: 100vh; /* 父元素高度等于视口高度 */…...
“野生钢铁侠 “ 稚晖君一连亮出5 款智元人形机器人,地表最强!
打麻将、拆快递、纽扣穿针,还能做 30KG 重物提拉! 沉寂一年,稚晖君带着他的二代机器人全家桶重磅回归,秀出的各种新技能令人眼前一亮。 智东西 8 月 18 日报道,今日," 野生钢铁侠 " 稚晖君一连亮…...
JSON Web Token (JWT): 理解与应用
JWT(JSON Web Token)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象的形式安全地传输信息。JWT通常用于身份验证和授权目的,因为它可以使用JSON对象在各方…...
LeetCode面试题Day12|LC209 长度最小的子数组、LC30 串联所有单词的子串
题目一: 指路: . - 力扣(LeetCode)209 长度最小的子数组 思路与分析: 滑动窗口,目的在于降低算法的时间复杂度,每次只维护一定长度的数组而非原数组的全部元素。那么既然需要长度࿰…...
【开端】JAVA泛型类的使用
一、这是一个类 public class CommonVo<D extends CommonDao> implements Serializable { 我们来探讨一样 CommonVo<D extends CommonDao> 这个尖括号里到底能写啥。 首先这是一个泛型类型D ,D类继承了CommonDao,说明尖括号里只要放入一…...
mp3转换器免费有哪些?6个音频转换器助你一键转换各种音频
音乐如同生活的调味剂,让每一个平凡瞬间都跃动着不凡的旋律。 但有时候,当你想把这些歌曲放到你的设备上时,却发现格式不兼容,无法播放。 别担心!接下来,我们将介绍几款免费mp3转换工具,它们能…...
力扣爆刷第174天之TOP200五连刷136=140(最小k数、字典序、跳跃游戏)
力扣爆刷第174天之TOP200五连刷136140(最小k数、字典序、跳跃游戏) 文章目录 力扣爆刷第174天之TOP200五连刷136140(最小k数、字典序、跳跃游戏)一、LCR 159. 库存管理 III二、450. 删除二叉搜索树中的节点三、440. 字典序的第K小…...
蚁群算法原理与实战(Python、MATLAB、C++)
蚁群算法 1.蚁群算法来源 蚁群算法(Ant Colony Optimization,简称ACO)是一种模拟自然界中蚂蚁寻找食物路径行为的优化算法,主要用于解决组合优化问题。它的灵感来源于意大利学者Marco Dorigo在1992年提出的蚂蚁系统模型。 蚁群算…...
HTML静态网页成品作业(HTML+CSS)——非遗阜阳剪纸介绍设计制作(1个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…...
如何做萤石开放平台的物联网卡定向?
除了用萤石自带的4G卡外,我们也可以自己去电信、移动和联通办物联网卡连接萤石云平台。 1、说在前面 注意:以下流程必须全部走完,卡放在设备上才能连接到萤石云平台。 2、大致流程 登录官网→下载协议→盖章(包括骑缝章&#…...
ptrade排坑日记——定时任务执行后,文件权限会变化。
前言 今天要和大家分享的是使用ptrade的定时任务过后,执行的时候,文件权限会发生变化! 一、问题描述 定时任务执行后, /home/fly/data/fundamentals_daily/all.pickle、/home/fly/data/valuation_new/all.pickle 文件权限会从…...
TILs 评分:TCGA 肿瘤浸润淋巴细胞病理切片深度学习评分!图片下载与可视化
生信碱移 病理切片的TILs评分 TCGA 数据库是最大的肿瘤组学公开数据库之一。尽管如此,更多的研究往往仅局限于关注 TCGA 中各类肿瘤样本的上游组学信息或基本病理特征,而忽略了对样本数字化 H&E 病理染色图像的进一步应用。 ▲ TCGA中肿瘤样本的病…...
【运维】如何在浏览器中查看和管理 Cookie 信息?
如何在浏览器中查看和管理 Cookie 信息 引言 Cookie 是我们日常浏览网页时经常遇到的一个重要概念。它们用于存储用户的登录状态、偏好设置以及其他相关信息,帮助网站提供个性化的体验。然而,很多人并不清楚如何在浏览器中找到并查看这些 Cookie 信息。本文将带您了解如何在…...
Selenium实战:深度解析Python中嵌套Frame与iFrame的定位与切换技巧,解决Selenium定位不到的问题
在Web自动化测试中,处理网页中的Frame和iFrame是常见的挑战之一。这些元素在网页中扮演着承载独立HTML文档的角色,使得直接定位或操作其中的元素变得复杂。Python的Selenium库提供了强大的工具来应对这些挑战,本文将详细介绍如何使用Selenium…...
机器学习笔记六-朴素贝叶斯
朴素贝叶斯(Naive Bayes) 是一种基于贝叶斯定理的简单而强大的分类算法,特别适用于文本分类等高维数据集。它被称为“朴素”,因为它假设特征之间是相互独立的,这在现实中可能不完全成立,但这种假设在许多实…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
