眼图分析
理论与物理
概述 — 什么是眼图
老师,“眼图睁开”具体是什么意思?前辈说“眼图闭上了,要重做电路板”,我完全不明白是什么情况…
问得好。先从原理说起。在数字通信中,发送端将“0”和“1”的比特序列作为电压波形发送出去。接收端则对这个波形进行采样,以判定是“0”还是“1”。
眼图是将所有比特模式的波形按1UI(单位间隔 = 1比特宽度的时间)为单位切割出来并叠加绘制而成的。这样在中央就会形成一个像“眼睛”一样的开口区域。这个开口越大,接收端就越容易正确判定比特。
原来如此,是叠加绘制啊!但是为什么会形成“眼睛”的形状呢?如果只是叠加理想的矩形波,不会形成长方形吗?
如果是理想的矩形波,确实会形成长方形。但现实的传输路径存在带宽限制。高频成分会衰减,导致波形的上升沿和下降沿变得平缓。此外,前后的比特模式还会使波形发生微妙变化——这就是ISI(码间干扰)。
例如,“0→1→1→1”模式和“0→1→0→1”模式中,第二个“1”的到达电压是不同的。前者能充分充电,而后者则很快转为放电,电压无法完全上升。将所有这些模式叠加起来,轨迹就会扩散开,形成“眼睛”的形状。
啊,所以才会说眼睛“闭上”了!如果ISI很严重,轨迹就会重叠,眼睛就塌陷了。
正是如此。眼睛睁开,意味着即使存在噪声或时序偏差,也仍有正确判定比特的裕量。对于PCIe Gen5(32 GT/s),均衡后的眼图开口高度要求至少15 mV以上,抖动要求在3.5 ps以下。Gen6(64 GT/s,PAM4)的要求则更加严格。
眼图开口的量化指标
“眼睛睁开”的程度可以用数值来衡量吗?
当然可以。眼图有两个基本指标。
眼图开口高度(Eye Height),是采样时刻“1”电平的最低电压与“0”电平的最高电压之差:
$V_{\text{high,min}}$ 是所有比特模式中“1”电平的最小电压,$V_{\text{low,max}}$ 是“0”电平的最大电压。这个值越大,噪声裕量就越大。它表示接收缓冲器的阈值电压有多少余量。
眼图开口宽度(Eye Width),是左右交叉点之间的时间差:
$T_{\text{UI}}$ 是1UI的时间宽度,$\text{Jitter}_{\text{pp}}$ 是交叉点的峰峰值抖动。这个值越大,时序裕量就越大。
例如,PCIe Gen5(32 GT/s)的 $T_{\text{UI}} = 1/32 \times 10^9 \approx 31.25\,\text{ps}$,如果有3.5 ps的抖动,则 Eye Width 约为 27.75 ps。这样就可以知道相对于接收端CDR的锁定范围有多少余量。
高度对应噪声,宽度对应时序,是这样吗?是不是只要一个方面好也不行?
没错。在实际工作中,会在眼睛中央定义一个眼图模板(六边形的禁止区域),并确认所有波形轨迹都不触碰该模板。必须同时满足高度和宽度两方面的要求,否则就不符合规格。USB4或PCIe的规格书中会明确规定模板的坐标。
抖动分解(RJ/DJ)
我一直以为抖动就是波形的简单晃动,把它分成RJ和DJ是为了什么?
抖动分解对于BER(误码率)估计是必不可少的。抖动主要分为两类:
- DJ(确定性抖动):原因可确定的有界抖动。包括ISI、串扰、占空比失真(DCD)、周期性抖动(PJ)等。其峰峰值存在上限。
- RJ(随机抖动):由热噪声或散粒噪声引起的高斯分布抖动。理论上没有上限。
总抖动(TJ)是针对特定BER目标,用以下公式估算的:
这里 $Q(\text{BER})$ 是正态分布的逆累积分布函数(Q函数的逆)。BER = $10^{-12}$ 时 $Q \approx 7.03$,BER = $10^{-15}$ 时 $Q \approx 7.94$。
举个例子。假设某个通道的 $\text{DJ}_{\text{pp}} = 5\,\text{ps}$,$\sigma_{\text{RJ}} = 0.3\,\text{ps}$。BER = $10^{-12}$ 时的TJ为:
即使RJ看起来很小,但乘以Q函数的倍数后影响还是很大啊…!相对于 DJ 5 ps,RJ 0.3 ps 就额外增加了4.2 ps。
是的。所以降低RJ是高速串行设计最重要的课题之一。PLL的抖动性能、电源噪声抑制、电路板的接地完整性都会直接影响RJ。DJ有很多部分可以通过均衡器补偿,但RJ无法补偿。
BER浴盆曲线
BER浴盆曲线经常出现,它和眼图有什么关系呢?
浴盆曲线是采样相位(横轴)对BER(纵轴)的绘图。正如其名,形状像浴缸的截面。左右壁陡峭上升,中央有BER最小的“底部”。
从数学上讲,采样相位 $\phi$ 处的BER,可以通过RJ的高斯分布与DJ分布的卷积求得。单侧BER(例如左壁)为:
右壁也类似求得,总BER为:
浴盆“底部的宽度”就是该BER目标下的时序裕量。例如,BER = $10^{-12}$ 时底部宽度为 0.3 UI,就意味着CDR的采样相位有 0.3 UI 的余量。PCI-SIG的规格中,将这个底部宽度规定为“BER = $10^{-12}$ 时的最小眼图宽度”。
也就是说浴盆的底部越深越宽越好。普通眼图难以看到的BER信息,通过浴盆曲线就能一目了然。
是的。眼图是波形的叠加,所以看起来是“最坏情况”,但从统计角度看,它只包含大约BER $10^{-5}$ 级别的信息。要评估 $10^{-12}$ 或 $10^{-15}$ 的BER,抖动分解和浴盆曲线是必不可少的。
通道的传递函数模型
眼睛是睁开还是闭上,归根结底是由通道特性决定的吧?通道是如何建模的呢?
通道(传输路径)用S参数来表征。对于双端口网络,基本参数是插入损耗 $S_{21}(f)$ 和回波损耗 $S_{11}(f)$。如果是差分对,则使用 $S_{dd21}$(差分插入损耗)。
时域的脉冲响应 $h(t)$ 可以通过 $S_{21}(f)$ 的逆傅里叶变换得到:
接收波形 $y(t)$ 是发送波形 $x(t)$ 与通道脉冲响应的卷积:
在实际工作中,通常使用测量仪器(VNA)实测S参数,或者通过3D电磁场求解器(HFSS、CST)仿真获取。将PCB布线、连接器、过孔、封装的S参数级联起来,构建端到端的通道特性,这是普遍做法。
也就是说,如果通道的频率特性不好(高频衰减),脉冲响应的拖尾就会变宽,ISI增加,眼睛就会闭上,对吧?
理解得非常完美。例如,在FR-4电路板上走10英寸的差分对,在奈奎斯特频率(PCIe Gen5 @16 GHz)处的插入损耗超过 -20 dB 也并不罕见。如何补偿这种损耗,是均衡器设计的核心。
在设计阶段观察“眼睛闭上”——眼图的诞生
眼图这个名字,源于叠加的比特波形看起来像人的眼睛(eye)。这种显示方法在20世纪60-70年代电话线路数字化的时代,随着示波器触发同步技术的发展而广泛使用。能够在设计阶段通过仿真预测眼图开口,则是从90年代基于SPICE的IBIS模型普及开始的。从“制作电路板并用测试机测试才能知道质量”到“通过仿真预先预测闭合程度”的转变,是高速串行设计历史上最大的转折点。
各项的物理意义
- 眼图高度 $V_{\text{high,min}} - V_{\text{low,max}}$:接收缓冲器能够判别“0”和“1”的最小电压差。表示即使存在噪声(电源波动、串扰、电路板的介质损耗),也能正确进行比特判定的裕量。用汽车来比喻,相当于对向车道之间的中心线宽度——太窄会增加正面碰撞的风险。
- 眼图宽度 $T_{\text{UI}} - \text{Jitter}_{\text{pp}}$:CDR(时钟数据恢复)对数据进行采样的时序裕量。抖动越大,每个比特的最佳采样相位偏移就越大,会导致判定错误(BER增加)。可以比作地铁门的开关时机,停靠在站台的时间越短,上下车就越困难。
- Q函数 $Q(\text{BER})$:根据BER目标从正态分布的尾部概率求出的缩放系数。BER越小(可靠性要求越严格),Q值越大,RJ的影响就被放大了。
假设条件与适用范围
- 线性通道假设:S参数模型假设系统是线性时不变的。发送驱动器的非线性(压摆率限制、电源压降)需要另行建模。
- RJ的高斯性:抖动分解基于RJ服从高斯分布的假设。当PLL的抖动(非高斯)占主导时,精度会下降。
- 稳态:BER浴盆曲线假设CDR锁定后的稳态。不适用于启动时或链路训练期间。
- NRZ信号:基本公式适用于NRZ(二进制)信号。对于PAM4,需要对三个眼图开口分别应用指标。
量纲分析与单位制
| 物理量 | 单位 | 典型值(PCIe Gen5) |
|---|---|---|
| UI(单位间隔) | ps | 31.25 ps(32 GT/s) |
| 眼图高度 | mV | ≥ 15 mV(均衡后) |
| 抖动(TJ @ BER=$10^{-12}$) | ps | ≤ 3.5 ps |
| RJ(rms) | ps | 0.1 〜 0.5 ps |
| DJ(pp) | ps | 1 〜 8 ps |
| 插入损耗 $S_{dd21}$ | dB | -20 〜 -35 dB @奈奎斯特 |
数值解法与实现
统计性眼图分析
在实际分析中,真的会仿真所有比特模式的时间波形吗?像 $2^{20}$ 比特这样的计算量似乎非常庞大…
问得好。时域仿真(逐比特时间域仿真)虽然直观,但要直接验证BER = $10^{-12}$,需要 $10^{13}$ 比特以上,这不现实。
因此,使用的是统计性眼图分析。这种方法从通道的脉冲响应中解析地求出ISI的概率分布,再与RJ的卷积结合,生成BER图。计算复杂度是 $O(2^N)$($N$ 是影响ISI的游标数),但实际上可以将有效游标数截断到10~20个左右,所以几秒钟就能完成。
ISI卷积计算
“解析地”求出ISI的概率分布,具体是怎么做的呢?
对通道的脉冲响应(SBR: 单比特响应)进行采样,可以得到每个UI处的游标值 $c_k$。$c_0$ 是主游标,$c_{-1}, c_{-2}, \ldots$ 是前导游标,$c_1, c_2, \ldots$ 是后置游标。
接收信号的采样值 $y_n$ 为:
$a_{n-k} \in \{-1, +1\}$ 是比特值。除去主游标 $c_0 \cdot a_n$ 后的部分就是ISI。ISI的每一项取 $\pm c_k$ 两个值,概率各为 1/2。由于所有游标相互独立,ISI的概率分布就是各游标两点分布的卷积。
如果有 $N$ 个游标,就有 $2^N$ 种组合,从而得到离散概率分布。再与RJ的高斯分布进行卷积,就能得到采样值的连续概率密度函数,从而计算出任意BER目标下的眼图开口。
原来如此…是反复卷积啊。可以用FFT加速吗?
很敏锐。实际上,商用工具(Keysight ADS、Ansys HFSS Transient等)使用了基于特征函数(概率分布的傅里叶变换)的快速算法。将每个游标的特征函数 $\Phi_k(\omega) = \cos(c_k \omega)$ 全部相乘,再通过逆FFT变回概率分布。计算复杂度是 $O(N \cdot M \log M)$($M$ 是离散化点数),比 $2^N$ 的穷举法快好几个数量级。
均衡器(FFE/CTLE/DFE)的数学原理
なった
詳しく
報告