热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

理解SerDes之三

3.抖动和信号集成(Jitter,SI)抖动是指信号的跳边时刻偏离其理想(ideal)或者预定(expected)时刻的现象。噪声,非理想的信道,非理

3.抖动和信号集成( Jitter, SI )

抖动是指信号的跳边时刻偏离其理想(ideal)或者预定(expected)时刻的现象。噪声,非理想的信道,非理想的电路都是产生抖动的原因。

3.1 时钟的抖动(clock jitter)


理解SerDes <wbr> <wbr>之三
Figure 3.1  Clock Jitter

 

对于时钟信号&#xff0c;根据应用场景的不同&#xff0c;对抖动的定义也不一样。比如数字逻辑计算时序余量的时候&#xff0c;关心的是周期抖动。而时钟设计人员更喜欢相位抖动&#xff0c;因为可以利用频谱评估相位抖动&#xff0c;并可以用频谱来评估具体的干扰对总相位抖动的贡献。
参考图3.1,介绍一下几种抖动的定义。

l  相位抖动(phase jitter)
Jphase(n)&#61; tn – n*T。理想时钟的每个周期T都是相等的&#xff0c;没有抖动。真实时钟的跳边沿相对于理想时钟的偏离称作相位抖动。

l  周期抖动(period jitter)

 Jperiod(n)&#61; (tn- tn-1)– T。周期抖动是实际时钟的周期相对于理想周期的偏离(deviation)。显然Jperiod(n) &#61; Jphase(n) - Jphase(n-1)。

l  Cycle-to-Cycle jitter

Jcycle(n) &#61; (tn- tn-1) - (tn-1- tn-2)。前后相邻的两个周期的偏差是Cycle-Cycle抖动。显然Jcycle(n)&#61; Jperiod(n) – Jperiod(n-1)。

假设相位抖动的最大值为 &#43;/-Jp, 而且抖动的频率fjitter &#61; 0.5fclock &#61; 0.5/T&#xff0c;也就是&#xff0c;

tn-2时刻的相位抖动为最大值&#43;Jp &#xff0c;tn-1时刻的相位抖动为最小值-Jp

tn时刻的相位抖动为最大值&#43;Jp &#xff0c; tn&#43;1时刻的相位抖动为最小值-Jp

那么&#xff0c;周期抖动最大值        Jperiod&#61;&#43;/- 2* Jp

那么&#xff0c;Cycle-Cycle抖动最大值  Jcycle  &#61;&#43;/- 4* Jp


3.2. 数据的抖动(data jitter)

在高速SerDes领域每个人都在说抖动&#xff0c;因为抖动直接和误码率(BER)相关。

SerDes发送端的一个重要要求是抖动(jitter generation)----针对特定的码型(pattern)&#xff0c;速率和负载情况下&#xff0c;发送端所生成的抖动。
    信号经过信道(channel)到达接收端时&#xff0c;又会进一步放大抖动&#xff0c;不同的码型(pattern)包含的频率成分也不一样&#xff0c;信道对不同频率成分的传输延时也不一样(非线性相位), 产生和数据pattern相关的确定性抖动。阻抗不连续产生的反射&#xff0c;相邻信号的串扰和噪声都会引起数据抖动。
    SerDes接收端的一个重要指标是抖动容忍能力(Jitter Tolerance)----针对特定的码型和误码率要求(BER<10-12)&#xff0c;SerDes接收端能够容忍的抖动大小。对抖动评估时&#xff0c;会使用眼图(eye-diagram),浴缸曲线(bath curve),抖动分布柱状图(PDF),抖动频谱(jitter spectrum)等图形手段。

有一点需要说明&#xff0c;在谈论高速SerDes的数据抖动时(Tj,Rj,Dj etc.)&#xff0c;是不包括低频率抖动的。这是因为低频率的抖动被认为是一种wander&#xff0c;可以被CDR跟踪&#xff0c;不会引起误码。在用示波器(SDA)测量数据抖动的时候&#xff0c;可以设置示波器内嵌的CDR环路带宽&#xff0c;示波器测量的抖动数据已经滤掉了低频抖动。

根据抖动产生的原因和概率密度函数&#xff0c;常常将抖动分为几类。对抖动进行分类的意义在于某些类型的抖动可以被校正&#xff0c;而其他类型的不能被校正。经典的&#xff0c;总抖动Tj(Total Jitter)被分类为确定性抖动Dj (deterministic jitter)和随机抖动Rj (random jitter)。抖动以UI或者ps为单位&#xff0c;可以是均方根值&#xff0c;或者峰峰值。


3.2.1 Dj

Dj被进一步细分,

l  DCD(Duty cycle distortion)

占空比失真抖动。差分信号的正端负端的偏置电压不一致&#xff0c;或者上升沿和下降沿时间不一致会导致占空比失真。因为DCD和数据pattern相关&#xff0c;是可以被校正的抖动。

l  DDJ(Data dependent jitter)

数据码型相关的抖动&#xff0c;也称 码间干扰ISI(intersymbol interference)。DDJ是由于不理想的信道导致。是可以被均衡器校正的抖动。

l  Pj(Periodic jitter)

周期性抖动。Pj由电路上周期性干扰源导致。比如开关电源的开关频率&#xff0c;时钟信号的串扰等。虽然电源的开关频率一般在CDR的跟踪范围内&#xff0c;但是低次谐波成分可能会落在环路带宽外&#xff0c;或者jitter peaking区域, 更重要的是电源谐波对CDR内VCO的干扰是不能被抑制和跟踪的&#xff0c;所以对于基于Ring VCO的CDR一定要尽可能的使用LDO供电。Pj不能被均衡器校正.

l  BUJ(Bounded uncorrelated jitter)

BUJ由非时钟的干扰源引起。如果干扰源aggressor和victim是异步的&#xff0c;抖动的概率分布为有界的高斯分布&#xff0c;此时也称作CBGJ(Correlated Bounded Gaussian Jitter)。BUJ/CBGJ不能被校正。


3.2.2 Rj

Rj有半导体本身的噪声引起&#xff0c;一个重要特征就是Rj的概率密度函数是高斯分布的&#xff0c;没有边界&#xff0c;且和数据pattern无关。只有在一定误码率约束下&#xff0c;才可以被认为是有界的。


3.2.3 Tj

数学意义上&#xff0c;抖动的概率分布函数可以近视为高斯分布和双底拉克分布的卷积。

对高斯分布有贡献的抖动为&#xff1a;

n  Rj为高斯分布

n  大量Pj叠加的效果也为高斯分布

n  部分BUJ也为高斯分布

对双底拉克分布有贡献的抖动为&#xff1a;

n  DCD被近视为双底拉克概率分布

高斯分布和双底拉克分布的卷积:

理解SerDes <wbr> <wbr>之三

其中&#xff0c;W被认为是确定性抖动的峰峰值&#xff0c;δ是高斯分布的均方差。见图3.2, 可以看到&#xff0c;随着确定性抖动W的增加&#xff0c;概率密度分布曲线的顶部出现了双峰。一般来讲顶部曲线反映了确定性抖动的大小程度。
理解SerDes <wbr> <wbr>之三

           Figure 3.2 PDF of Tj with different Dj and Rj

把一个UI内的两个跳变沿处(0 UI处和1UI处)的概率分布函数放在一张图中&#xff0c;就是抖动的浴缸曲线(bathtub curve)。因为对数的宽动态范围&#xff0c;Y坐标以对数显示。图3.3为确定性抖动W&#61;0.05UI, 高斯抖动方差0.05UI的浴缸曲线。

理解SerDes <wbr> <wbr>之三

     Figure 3.3  Bathtub Curve of Tj with 0.05 Dj peak and 0.05 Rj RMS

 

 

浴缸曲线还会标出对应的误码率BER坐标,比如图中BER&#61;10^-12的峰峰值抖动为Tj(p-p)&#61;0.373*2 &#61; 0.746 UI。曲线下面的面积占总面积的比率就是误码率。比如图中&#xff0c;

理解SerDes <wbr> <wbr>之三

 浴缸曲线的顶部主要为确定性抖动Dj的贡献&#xff0c;越靠近底部&#xff0c;高斯抖动的贡献越大&#xff0c;并以高斯曲线的斜率衰减&#xff0c;也因此常利用高斯分布的特性进行估算。下表为高斯分布 理解SerDes <wbr> <wbr>之三

和均方差关系。       

理解SerDes <wbr> <wbr>之三

在规定的BER内&#xff0c;利用该表可以快速估算均方差值和峰峰值之间的关系。比如高斯抖动的均方根0.05UI&#xff0c;误码率要求为10^-12 BER&#xff0c;查表可知Q&#61;7&#xff0c;那么高斯抖动的峰峰值要求是0.05UI*7*2 &#61; 0.7UI。

如前所述&#xff0c;W&#61;0.05UI,Rj&#61;0.05UI计算出的总抖动Tj&#61;0.746UI&#xff1b;
    利用高斯特性估算的高斯抖动为0.7UI。
    如果按Tj &#61; Rj(0.7UI)&#43;Dj(0.05UI)计算得到0.75U&#xff0c;基本是一致的,差异是因为画图程序有量化误差。

 


4.信号集成(SI)及仿真


4.1信道channel

SerDes信道关注的频率范围是0Hz到奈奎斯特频率&#xff0c;也就是2倍的信号基频。信号的基频是信号线速率的一半&#xff0c;也就是说信号的奈奎斯特频率就是线速率。信道对信号的损伤包括插入损失(insertion loss),反射 (reflection),串扰(crosstalk)等。这些损伤可以用S-parameter信道模型来表达。S-parameter可以有矢量网络分析仪测量(Vector Network Analyzer)得到。信道不是一个纯阻性网络&#xff0c;还包括容性和感性。这样对不同频率里成分的时延也不一样&#xff0c;从而产生和data pattern相关的抖动。

信道上的每一个不连续阻抗点都会产生反射&#xff0c;根据反位置的不同&#xff0c;反射信号会以不同的相位叠加在原始信号上&#xff0c;增加或者减小信号的幅度。

SerDes信号为差分形式&#xff0c;对共模干扰有较强的抑制。如果在&#43;/-端上的干扰有差异&#xff0c;就会引入串扰。通常外部PCB可以保证SerDes数据和干扰源保持足够的距离&#xff0c;但是芯片内部由于考虑到经济性&#xff0c;很难保证SerDes信号和干扰源足够的隔离距离&#xff0c;尤其是一个通道自己的发送信号干扰自己的接收信号。


4.2 芯片封装Package

   封装package也是信道的一部分。芯片外部的信道可以通过VNA测量的到&#xff0c;而封装的S-parameter通常有芯片制造商提供&#xff0c;仿真时可以把两者级联起来。封装package由于距离较短&#xff0c;insertion loss通常不是主要问题&#xff0c;主要考虑的是阻抗匹配问题。


4.3 SI仿真

    信号集成性(SI)仿真可以通过把SerDes发送端SPICE模型&#xff0c;封装和信道的S-parameter模型&#xff0c;接收端SPICE模型级联起来搭建仿真平台&#xff0c;利用仿真工具对不同的激励在不同的测试条件作电路仿真。通过测量SerDes接收端的眼图来评估是否满足设计需求。也可以通过实测接收端眼图&#xff0c;检验是否满足接收端的眼图模板&#xff0c;或者协议规定的眼图模板。图4.1为一个实测的3.125Gbps信号的眼图及模板&#xff0c;同时也包含了浴缸曲线和统计图。

    Figure 4.1 Rx-end Eye-diagram of A 3.125Gbps SerDes

对于高速SerDes(>5Gbps)&#xff0c;这种传统的电路仿真方法已经不能满足设计的需求。首先&#xff0c;过量的码间干扰ISI导致接收端眼图完全闭合&#xff0c;但是通过芯片内的DFE均衡后&#xff0c;眼图可能是很好的。其次&#xff0c;电路仿真(SPICE)的速度非常慢&#xff0c;即使是有办法把DFE均衡加入仿真&#xff0c;由于DFE仿真需要足够长时间的bits来训练&#xff0c;此时&#xff0c;电路仿真的仿真时间是不可接受的。

对于高速SerDes的仿真需要借助统计分析 (statistical analysis) 的方法。统计分析的方法把发送端-信道-接收端的连接近视为线性系统&#xff0c;计算系统脉冲响应h(t)&#xff0c;加入噪声源来模拟抖动&#xff0c;然后用激励对脉冲响应进行卷积&#xff0c;得到接收端的信号&#xff0c;这种方法可以把厂家私有的FFE,DFE自适应算法加入仿真。

统计分析 (statistical analysis)方法不能仿真电路的非线性和时变特性&#xff0c;所以高速SerDes往往要两者结合起来仿真SI。更多关于统计分析 (statistical analysis)方法可以参考。

 


5. 结尾

有人讲过&#xff0c;现在的汽车是如此复杂&#xff0c;以至于虽然每一个零件都有人懂&#xff0c;但是合起来作为整车却没人能够全懂。近些年来&#xff0c;FPGA变的越来越复杂,对工程师的要求也越来越高。要成为一个合格的FPGA应用工程师&#xff0c;不仅要擅长数字电路的设计&#xff0c;还要懂得高速SerDes, 信号集成SI, DSP算法, 多核CPU, 嵌入式操作系统等。每一项技术背后都是一个专业领域&#xff0c;一个人不会在每一个领域内都是专家&#xff0c;只要比别人多学习一点&#xff0c;关键时候就会突出你的价值。本篇主要介绍了SerDes的基本结构和用好SerDes需要掌握一些的知识,希望对你的工作有所帮助。


推荐阅读
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了解决Facebook脸书面试题中插入区间的方法,通过模拟遍历的方式判断当前元素与要插入元素的关系,找到插入点并将新区间插入。同时对算法的时间复杂度和空间复杂度进行了分析。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有