EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 alexwang 于 2018-7-2 14:50 编辑
# U; u! o8 r2 s, S0 E( h7 c4 S" y$ ]. C. ]+ X' I5 C* h0 V
抖动的分类与测试,看不懂是正常情况,要继续努力!# F( Q; u2 w" p% `2 k2 T: Q0 I
C- j' u7 ?8 G5 ^5 A. O
: ]0 W4 P/ B+ Q& t
前言 在现在的协议一致性测试中,“抖动”似乎已经成为了一个绕不开的名词,它是评估信号质量的一个关键指标。然而,各个通信协议对抖动似乎有着不同的要求,到底抖动的各个分量有什么意义呢?它们又是如何测量得到准确的结果呢?在系统设计中又该如何改善抖动指标呢?希望看完本文之后您能够得到一些帮助。 ; J# ~) Q9 u E# g) i8 r0 Z' F
4 r7 u8 y9 H6 G" c, z1抖动的定义1 t1 l, t1 E( L
过去,时钟频率只有10MHz。电路板或者封装设计的主要挑战就是如何自双层板上布通所有的信号线以及如何在组装时不破坏封装,在那个时代,数字信号基本上不需要考虑“信号质量”的;然而随着时钟频率的提高,信号周期和上升沿也已经普遍变短,这个时候,信号完整性就变得十分重要。特别的,当时钟频率超过1GHz时,由于时钟周期变短,“抖动”这个指标在信号质量也变得十分重要。 : ?4 X4 {- O) N( S k, o$ S
抖动是指信号与理想时钟之间的偏差[1]。如下面图1和图2两个时序中,可以明显看出,图2中信号与理想时钟之间偏差相对较图1比更大,若两个信号时钟频率相同,我们就可以说图2中的抖动比图1中大。 - D4 B: _) N8 E/ J& T
图1信号和理想时钟之间的偏差
K8 v1 h" o% M1 y7 w) L. I图2更“大”的抖动 9 \7 n3 ~$ m6 n; r2 _; w! o( G- e
需要注意的是,抖动和频偏并不是不是相同的概念,一般讨论抖动是要在一段时间内实际信号和理想时钟之间速率相同或者相差很小的情况。图3中,这段时间内,实际信号和理想时钟之间的频率偏差约为7%,一般来说我们讨论抖动的时候频偏不会超过5000ppm(即0.5%),图3这种情况不再我们的讨论范围之内。 6 N' K4 s9 F9 i J
注释[1] FibreChannel - Methodologies for Jitter and Signal Quality Specification
* a& l8 j* s o( }8 L7 b3 ~# r图3“频偏”并不是我们所讨论的抖动 " ~' w' I- B0 X1 E- O% ^/ |' s6 d
另外,抖动的绝对值在有些情况下参考意义并不太大。假若是10MHz的时钟频率,每个周期为100ns,1ns的抖动似乎对信号没有太大的影响。然而当频率为500MHz时,1ns的抖动就很的能会影响信号信号质量,使得信号在传输过程在出现误码。所以我们在很多情况下会用UI这个相对单位;1UI即为1个时钟周期所花费的时间。若信号的时钟周期为10MHz时,1UI对应为100ns。相应的还有mUI,1mUI即0.001UI。相对单位比绝对时间单位更能看出抖动对信号质量的影响。
l: H. x9 s: S, W5 c& u$ I$ S' w& q
7 u$ z) j, F% G1 o! ]$ k- O# X2抖动的分类
# N2 T) d, H# T 在说抖动分类之前,首先我想说一下源同步与时钟恢复技术。想必大家在学习和使用单片机的时候应该对同步通信和异步通信有比较深刻的认识;同步通信的典型代表就是SPI,特点就是同时传送时钟和数据;异步通信的经典代表是UART,只需要两根线就可以实现全双工。源同步和SPI类似,在通信的时候同时传输时钟和数据,但是高速的时钟信号在传输过程中衰减很大,而且容易引起EMI,所以一般会对同步时钟进行分频,源同步的代表有HDMI,其时钟频率是信号速率的1/10。时钟恢复技术可以在串行数据中提取出时钟,然后用恢复出来的时钟对信号进行采样,克服异步通信中由于不同源带来的的频偏和抖动,时钟恢复的代表有USB,万兆以太网等。
( w4 z$ X+ `- a" G7 A) ~) c4 C
9 O/ C8 F8 n! S# H3 w 首先,我们需要明确的一点就是——抖动是时间的函数,确切的来说,抖动是和时钟周期相关的。 9 }! x- S- G3 i: j/ { C% m
在讨论抖动分类的时候,我们一般会从三个维度去讨论。
) @5 P' Z# a6 x7 S5 I0 ?$ c/ w- z7 L" Y! q
2.1从关注抖动参数的类型,可以分成TIE (Timeinterval error),Periodjitter和Cycleto cycle jitter。# B9 [) S r/ |: g
2 ~/ {$ P( }, v! q |6 _
这种分类是根据不同的关注点对同一信号的不同描述,如图所示,这三类抖动的计算公式如下,其中T是理想的时钟周期,Tn-1和Tn分别是第n-1和n个信号的周期,tn是信号前n个周期的总时间。 + R% V8 D2 Q( F. f* F
7 G3 I) O- Y% W$ C
& z; @; d0 G, C j不难看出,这三者之间有如下的关系:PeriodJitter是TIE的微分,Cycle to cyclejitter是Period jitter的微分;Period jitter是Cycle jitter的积分,TIE是Period jitter的积分。 . w- W2 ^7 c6 y& @; c4 o: i
图4 TIE、Period jitter和Cycle to cycle jitter t% y5 G) M+ o) ]* e# l! G
其中,TIE表示某时刻信号与理想时钟的偏移量,我们常说的抖动一般是指的TIE,Period jitter表示某时刻信号与理想时钟的瞬时频偏;Cycleto Cycle jitter表示信号频率的变化快慢程度,如果信号的Cycle to cycle jitter很大的话,说明信号边沿位置变换很快,信号将变得难以追踪。 Z8 E$ o9 Q2 {* P1 H, `3 b6 ]; a6 \) L
: M& {) Z% W% k
2.2从被测信号的类型,可以分为时钟抖动和和数据抖动7 f" g% K6 b7 `
其实,抖动和我们日常生活中的运动一样,是是有一定的参照的,正如,我们在说车速或者说步速是多少的时候,一般都默认是以地球为参照系;前面我们在提到抖动的时候,都是以理想时钟作为参照系。其实,在很多的情况下,我们是不需要关心“我们自己”所看到的抖动,而是需要关心“设备接收端”所看到的信号。 6 D! S4 U2 i8 P8 U1 l
使用同源时钟进行采样的信号,一方面对时钟的信号质量有要求,即需要测量时钟抖动,另一方面需要测量使用同源时钟做参考时钟时数据的信号质量,即数据抖动。 使用时钟恢复技术的信号,一般只涉及到数据抖动的测试,但是没有了同源时钟作为参照系,我们应该如何测量“设备接收端”所看到的信号呢?
, `8 D" \0 `( z$ T* m设备的接收端会有CDR(Clock& data recovery)模块,用CDR恢复出来的时钟对数据进行采样;CDR会对数据中的低频抖动进行跟踪,这样就能过滤掉一些低频的抖动。但是CDR的恢复时钟基本上不会引出来,所以需要使用标准的CDR进行测试;不同的通信协议对与CDR的参数有不同的要求,比较普遍的一种就是GoldenPLL,即用波特率/1667对抖动进行高通滤波,这也就是我们常见的示波器上的1/1667设置。 : `) }3 j/ Y3 z; C3 Q& y
在测试过程中,如果没有有特殊说明,我们所说的抖动,都是相对于协议要求的参考时钟来说的。
! B3 _( w- l. N0 \) B: `7 P9 ?4 a7 F; G
2.3根据抖动的测量结果,一般可以分为TJ(Total Jitter-整体抖动)、DJ(Deterministic Jitter-确定性抖动)、RJ(Random Jitter-随机抖动)等。; u! q; A0 P, E) a& ]% S( |
这是我们最常见到的抖动分类维度。其中TJ指的是一段确定的时间内信号TIE的最大值。TJ是在高速信号水平方向测试当中最重要、最关键的一个参数,TJ是否满足要求决定了通信是否会产生误码。在测试的时候,如果大家注意观察的话,TJ后面都会跟随着“(1E-12)”之类的备注,其中(1E-12)是对数据传输过程中误码率的要求,也是对测量时间的定义;比如说对与1Gbps的信号,TJ(1E-12)=200ps就意味着1000秒时间内TIE的最大值等于200ps。对于消费类产品,误码率的要求一般在1E-12左右,对于通信类的产品,误码率要求会更高,需要达到1E-15甚至1E-17。 传统的TJ可以用余辉模式进行测量,图5就是使用余辉模式测量TJ的结果,这种测试方法直观明了,能够很容易地得到想要的TJ。
4 z9 h; ^$ z1 Z: F# Z9 u" F
" ]$ L+ C5 b8 N0 S 图5 余辉模式测量抖动
" {( c! s6 H b& f# d# [+ K7 }5 m" {8 i+ w9 y
7 G7 Z* o- I* C7 ~, ?: y) i 但是如果使用传统的方法测量TJ的话,对于1个1bps的信号,如果要测到1E-12的误码率,需要花费进17分钟,如果需要测到1E-15的误码率,则需要11天以上,速率越低相应的测试所需时间就越长。在实际测试过程中,我们无法花费这么多的时间来测一个TJ,另外,示波器也无法连续捕获这么多的数据,需要分段捕获和处理,这样的话耗费的时间就更加长了。 : Y: }- M8 Q& X. L; t4 \
现在在测量TJ的时候会将TJ进行分解,这样的做法有两方面的优点:一方面可以先算出各个抖动成分的值,然后通过各个分量再计算出TJ,这样可以用较短的时间计算出低误码率条件下TJ的大小;另一方面,如果TJ超标的话,可以再根据各个组成成分进行分析,看看主要由什么问题导致TJ超标,根据问题对系统进行整改。
2 ?9 v: `" Y" E$ I$ W' H经典的抖动分类法会把TJ按照如图6所示进行分解。首先根据抖动是否有界,分成DJ和RJ。在DJ中,按照抖动是否和码型相关,分成DDJ和BUJ两种,以下是各抖动成分的详细介绍:
6 y/ e3 C; Y9 K% w; Y }2 B; p1)RJ:RJ是Random Jitter的缩写,RJ又被称为GaussianJitter(GJ),它主要是由集成电路中的热燥声造成的,是芯片的固有特性;RJ无界而且和发送的码流不相关,RJ服从高斯分布。需要注意的是RJ是无界的——RJ的峰峰值是随着时间的增长会不断增加,所以我们在说RJ峰峰值的时候也会像TJ一样加上像(1E-12)表示时间;但是RJ呈高斯分布,所以能够以有效值(RMS)的形式表示,我们一般看到的RJ都是以RMS表示的。另外RJ随时间的增长会导致TJ 过大,也就是说,由于RJ的存在,只要时间足够长,一定会导致通信产生误码,所以RJ是衡量高速集成设计的的最关键技术指标之一。需要注意的是,参考时钟的质量也会直接影响RJ的测量结果,如果要获得一个“干净”的信号,请使用低噪声的参考时钟。
; `- w* h9 Q* [9 A0 W图6 Jitter分解
$ m1 C9 j' Q+ z. B2)DJ:DJ是DeterministicJitter的缩写,它的特点是有界的,如果没有RJ的存在,我们能较为容易地测得DJ的峰峰值,所以DJ又被称为HighProbability Jitter(HPJ)。根据是否和码流相关,我们又可以把DJ分为DDJ和BUJ。
9 w7 i9 h9 g2 q( t, o8 k3)DDJ:DDJ是Data DependentJitter的缩写,有些地方也会把DDJ叫做Correlated Bounded High ProbabilityJitter(CBHPJ),它的特点是和发送的码流相关,DDJ又可以分为ISI和DCD。 6 e" V1 K7 P& y$ z
4)ISI:ISI是Inter SymbolInterference的缩写,有时候在对抖动进行分类的时候,会把ISI和DDJ进行等同,因为在通信过程中,ISI是DDJ最主要的组成部分。ISI主要是由通道的不理想因素造成的,通道的介质损耗会使得高频成分比低频成分衰减更大,例如在一串如’1111101’这样的信号,先出现了长串’1’,然后在1个’0’之后再是’1’,由于’101’这三个信号高频成分大,放电时间不足,以至于’0’、’1’信号的中心点偏离垂直参考电平,这样会导致ISI的产生,如图7所示,两白线间就是ISI。减小这部分抖动的最好方法就是均衡,发送端的预加重和接收端的均衡都会有效的削减低频,放大高频,使得任意上升沿和下降沿的中点接近垂直参考电平(一般为零电平),有效减小ISI。
* @) T3 b( v- A' v' n0 r4 ~图7 ISI jitter产生的示意图 + |6 e5 h5 Z5 |( S$ M
5)DCD:DCD是Duty Cycle Distortion的缩写,主要来源于芯片的时钟,一般来说对TJ的贡献很小,如果在测试过程中发现DCD偏大,可以尝试调节示波器测试的参考电平。图8是用同一个信号在不同的垂直参考电平的分析结果。 ; v+ H" G) l6 {
图8 垂直参考电平对DCD的影响
6 m; \' H+ M: V+ W1 P; p7 T6)PJ:PJ是Periodic Jitter的缩写,这里需要注意的是PJ和我们之前所说的Periodjitter是完全不同的两个概念。Period jitter指的是每个周期都对信号和我们的参考时钟进行一次比对,是瞬时频偏的一种表达方式;而PJ是指信号相对与参考时钟的偏移呈现出周期性的变化规律,Sine Jitter(SJ)是非常常见的一种PJ,这时信号边沿相对参考时钟边沿呈现正弦型的周期变化。PJ主要来源于参考时钟上的Spur或者电源上的中高频纹波,如果使用CDR的话,PLL能够过滤高频的PJ,CDR能够追踪低频的PJ,一般来说,中频的PJ对系统的威胁最大。 9 I# d1 |+ U- K. |
7)BUJ:BUJ是BoundedUncorrelated Jitter的缩写,广义上的BUJ是指所有的有界且和数据不相关的抖动,包括PJ;狭义上BUJ是不包括PJ的,一般来说BUJ专指狭义的BUJ,又称UncorrelatedBounded High Probability Jitter(UBPHJ),系统中的BUJ主要来源于通道之间的串扰。有些协议会把BUJ和RJ统称为UJ (UncorrelatedJitter)。BUJ和RJ一样呈高斯分布,但是是有界的;BUJ不能通过均衡和滤波的方式进行消除,所以BUJ超标对系统影响很大。
6 Z r6 @8 u9 p, T! U5 ]' Y: c% v5 i% Q4 _# o) q. {* b1 Q# @% m
3抖动的测量' U/ d# D( y/ z9 d B8 }& i
前面我们说过,抖动中最重要的是TJ,所以准确地获得在规定误码率下的TJ是我们主要目标。但是由于RJ的随机性,我们很难直接测量到TJ的大小。假若我们知道抖动的分布方式,我们就可以根据抖动分布规律计算出TJ。下面我们说说概率密度函数(Probability density function,缩写为PDF)。. m/ Q1 g: k& h8 e0 N
g, ` H/ F# @8 ` u: U
如果我们以相邻两个参考时钟边沿的中点为中心,把每个信号周期相对于参考时钟的边沿都记录到一个时钟周期内,会得到一个像眼睛一样的图形,这种方式叫做眼图,如图9所示。其中眼图“眼睛”的睁开程度代表了信号的质量。把眼图的各个边沿在垂直参考点上出现的次数做直方图,横轴代表水平方向的位置,即时间;纵轴表示在各个位置累计出现的次数。如果把整个纵轴全部除以测量的总次数N,那么直方图包络曲线上每个点的纵坐标就代表了边沿在各个位置出现的概率,这就是N次测试的PDF,其中测试次数N越大,测得的PDF曲线就会越接近信号边沿的分布情况,当N→∞时,我们就能获得抖动的的PDF。PDF函数有如下3个特点: 4 ]4 }, b$ Y1 H7 [# B+ G
' O1 h2 h" r# `4 t6 W/ Q! D5 o* z
+ ~, T- P6 `5 _ \5 s) G
图9 眼图和TIE的统计直方图 $ [4 Y% \+ I! M+ r1 G4 J, A6 o) ?! X
图9是由一个叠加了大量SJ的高质量时钟信号,其中TJ的绝大部分成分是我们故意叠加的SJ。从上到下分别是采集到的波形、眼图、垂直参考电平上的统计直方图以及对TIE的追踪结果。 假若我们已经通过1000,000次对参考点的采样,已经知道了抖动的PDF为f(x),如果我们需要知道在特定误码率β下的TJ,我们可以通过下述方程解出x1和x2,x2-x1即为我们所需的TJ。 图10是集中常见波形的PDF示意图,其中前三种是频率和幅度都相同的正弦、方波和三角波的PDF,需要提到的是,理想的方波信号不是正向最大就是负向最大,不会出现中间情况所以理想方波的PDF就是两个能量为1/2的狄拉克函数(又称冲激函数或者δ函数)。 图10 常见波形的PDF分布图 : Q* \; L+ R" k5 Z% W7 ~, ]$ V8 l6 K
但是,在绝大多数情况下,我们基本上没有办法直接根据PDF的曲线形状来推导出PDF的数学表达式,因为实际的信号中,可能会包含多种抖动的分量,我们不知道各分量的成分,而且PDF对于各个分量是按照卷积的方式进行叠加的,获得的PDF在大多数情况下都无法用基本初等函数去表达,跟不用说去解(8)式中的方程了,所以在测试的时候我们需要对TJ的PDF模型进行简化。 9 U+ g' |4 V2 C
图11是三种频率和峰峰值相等的PJ(分别为正弦、方波和三角波分布)和两个不同RMS值不同的RJ所叠加而成的PDF。其中下方RJ的RMS值是上方的两倍。 6 H7 b5 a; {+ h4 W0 [& \# H% A
从图11中我们可以看出两点信息: 1)在靠近参考边沿(抖动的中心位置)的时候,PDF由DJ其主要作用,在远离参考边沿的时候,RJ所占用的成分更明显。 2)频率和峰峰值相同的不同PJ和同一个RJ进行叠加的时候,在相同的误码率下,方波拥有更大的TJ。
& m8 x7 I1 n+ A1 U' O图11 常见波形与高斯噪声的叠加
: A/ \7 P1 l D" I* x3 k% V 在抖动测量中的重点和难点都是低误码率条件下TJ的测量,而低误码率的情形都是远离中心点,这时候RJ占主要的成分,如果我们用其中一种简单的DJ和RJ进行卷积去逼近期望测量的抖动的PDF,这样在目标误码率条件下的TJ就比较容易计算出来了。 图12就是用双狄拉克函数和高斯分布的卷积去对TJ的PDF进行尾部拟合,双狄拉克函数就是方波分布的概率密度函数。,狄拉克函数在卷积运算中有如下的特点:对于任意的函数f(x), f(x)*δ(x-x0)=f(x-x0)。 $ ?& p) f4 x" T
图12双狄拉克模型 使用双狄拉克模型逼近计算TJ最大的优势就是把复杂卷积和积分运近似简化成了简单的加法运算,简化后的TJ的表达式为: ) u3 ]6 {/ }4 j9 U$ h
+ [1 B; r2 M. g' e; ^) t 其中TJpk-pk就是TJ在目标误码率下的峰峰值,RJpk-pk是RJ在目标误码率下的峰峰值,DJδ-δ是把DJ等效成方波分布时的峰峰值。一般来说,示波器上显示的DJ的测量值,如果没有明确说明是DJpk-pk的话,指的都是DJδ-δ。 RJpk-pk是无界的而且不易直接测量,但是RJ的有效值却比较容测量,一般在测试时候的RJ都是以有效值的方式显示的。可以使用下面的方式计算RJ的峰峰值: % Y" n, _2 B8 K/ [- B4 d1 k
2 q) {- R; t& m3 N
4 j6 j6 T* n) n8 }% V5 I: {7 Z- ? _
一般来说,在1E-12的误码率时α≈7,在1E-15误码率时α≈8。将上述等式代入等式(8)中,我们可以得到常用的TJ计算公式: 需要注意的是,DJδ-δ仅仅是用于TJ的估算,它和DJpk-pk并没有直接的关系,而且,用双狄拉克模型去逼近TJ的PDF尾部的时候,本来就会放大RJ的作用而弱化DJ的作用,所以DJδ-δ的测量值是比DJpk-pk要小的。如果PJ(或者DDJ这两者之一)在DJ的成分中占据绝对优势时候,这时候会出现PJ(或者DDJ)>DJ的情况,这是正常的情况,并非测试错误。 / p/ J) S) f3 M O& D$ t/ J8 S
抖动测试的具体步骤如下所示 / @9 R2 _: g- M1 [3 ~- ^' F- R, I
第一步:TIE测量 首先使用示波器捕获大段波形,确定所需的垂直参考电平。然后在确定的垂直参考电平上每个参考时钟周期把边沿记录下来,这样就能测量到这段波形的TIE值。需要注意的是,垂直参考电平一般选择信号50%电压所对应的电平;为了获得每个周期信号边沿在垂直参考电平上的位置,我们需要测量到的信号进行插值,如图13所示: 图13 通过插值获取准确的TIE
# g: ^: p/ j) g/ M第二步:按照码型提取DDJ 要测量抖动,需要先把RJ提取出来,然而RJ并不容易直接提取,需要以其他的方式将DDJ、PJ和BUJ一一剔除,然后得到RJ。首先需要提取出来的就是DDJ。在测试的时候,如图14所示,将捕获的波形按照重复的码型分段,然后分别提取每段的TIE,之后将每段进行平均,由于抖动中的PJ、RJ还有BUJ相对于参考时钟边沿的期望值是0,而DDJ是和码型相关的,我们按照提取的TIE做多次平均之后就只剩下DDJ了,将DDJ剔除后,TIE中残余的是PJ+BUJ和RJ。
* ]$ u* V5 A; r图14 通过多次平均获取DDJ . G# r% i8 W2 m$ A
需要注意的是,使用这种方法提取DDJ必须是重复码型(非重复码型不在今天的讨论范围内),而且需要采集到足够多的重复次数,这样才能够将PJ、BUJ和RJ这些数学期望为0的抖动剔除。在示波器中有个Min Patt. Reps选项,在单次累计的重复码型数目低于这个阈值的,不会显示测试结果;如果码型太长且存储深度不够的话,可以减小阈值来获得测试结果,但是会牺牲测试精度。
1 ]0 y: C) `6 |/ _6 r6 R, M8 n3 @
" g: N3 r, q N/ E! z* b& v图15 最小重复周期数阈值设定
" q( B) W E" G; P% @第三步:从残余的PJ+RJ+BUJ中将各个分量提取出来 力科示波器提供三种方法(SDA II只提供第二种和第三种)方法对这三种抖动进行分离。 3 D9 O- i. p8 y
1)第一种就是直接频谱分离法,用这种方法将残余的抖动进行频谱分析,频谱上的Spur就是PJ,底噪部分就是BUJ+RJ。这种方法只能将PJ分离出来,并不能把BUJ从RJ中分离。 2)第二种方法在第一种方法上再对抖动的PDF进行尾部拟合,由于BUJ和RJ都服从高斯分布,但是BUJ是有界的,所以在较低的误码率下TJ的PDJ的尾巴主要就是由RJ贡献的。 图16 用频谱法分离PJ和RJ
, L4 ]( y5 ]/ c U) G& T7 I3)NQ--Scale是力科独有的抖动分解方案,这种方案方案能够有效的将由Crosstalk引起的BUJ从RJ中分离出来,这种方法主要用于串扰较大的场景。 第四步:计算出TJ
) }" O' e# N# \* W用前几个步骤测得的RJ和DJ,计算出相应误码率条件下TJ,并将各个抖动成分显示在示波器上。
1 ^2 J8 P8 V: g3 B4 p. N3 r在使用示波器测量抖动的时候,需要注意以下几点: 1)参考时钟的选择,需要根据测试需求选择PLL的传递函数或者是选用外部参考时钟对信号进行触发。 2)垂直参考电平的选择,需要选择合适的垂直参考电平(一般为信号幅度的50%位置),否则的话可能会造成DCD偏大。 3)选择合理的RJ分离算法,如果在串扰比较大的情况下推荐使用NQ-Scale算法进行测试。 4)如果有条件的话,尽量用简单的重复码型(0101、PRBS7等)去对RJ进行评估和测量。 - Q% L9 @$ K2 V1 p- d
) ^+ o* c( p* L: ^
# T; s# P# D! Y8 U( G |