SNDR 分析与 BER 估算
SNDR 分析与 BER 估算
前言
最近在用 Infiniium 分析 PAM4 波形时,我一直没有完全想明白 SNDR 到底是怎么计算的。软件除了给出最终的 SNDR,还能显示 SNDR Input、Pulse Corrected、Error 和 Linear Fit Pulse Response 四条中间波形。乍看之下,好像就是用已知码型拟合一个脉冲响应,再用拟合波形与原始波形做差,但仔细看会发现事情没有这么简单:SNDR Input 并不是直接输入示波器的原始波形,而且它的眼图有时甚至比原始统计眼图张开得更好。
把整个计算过程捋顺以后,我发现 SNDR 的核心并不是简单计算一个“信号功率除以噪声功率”,而是先将测得的波形拆成三个部分:可以由线性系统解释的有效响应、不能由线性系统解释的失真,以及随机噪声。最后再根据这三部分计算信号质量。
SNDR 到底想测什么
SNDR 是 Signal to Noise and Distortion Ratio,即信号与噪声及失真之比。Infiniium 文档给出的计算式为:
其中:
- 来自线性拟合脉冲响应,代表有效线性信号的幅度或能量指标,具体算法取决于所选择的标准;
- 是线性拟合误差波形 的标准差,代表不能被最佳线性模型解释的失真;
- 是从 PAM 电平稳定区域测得的随机噪声。
这里最重要的是,SNDR 没有把所有误差混在一起计算,而是将随机噪声和线性拟合失真分开测量。理解这一点,后面的码型平均、脉冲拟合以及 Error 波形就都能串起来了。
第一步:利用长连码测量随机噪声
以 IEEE PRBS13Q 的测量方式为例,算法会在码型中寻找至少六个连续相同的 PAM4 符号,例如:
这里的 0、1、2、3 表示 PAM4 的四个电平,不是二进制比特。算法在这些长连码的第 3 个 UI 中心取样。之所以选择中间位置,是为了尽量远离长连码两端的跳变,减小前后符号和 ISI 对平台电压的影响。
对于某个电平,例如 Level 1,算法会找到码型中多次满足条件的位置,收集这些位置的电压:
然后计算这些采样值围绕平均电平的标准差:
四个电平分别得到 、、 和 ,再按照所选标准规定的方式合并,得到最终的 。
需要注意,这里的平均与后面生成 SNDR Input 时的“码型平均”不是同一回事。这里是在多个稳定平台位置上统计电压离散程度,目的是估计随机噪声;码型平均则是把多个完整码型周期对齐后逐点平均,目的是提取确定性的波形响应。
第二步:原始波形为什么要同步和码型平均
如果直接用拟合波形减去未经处理的原始波形,理论上似乎也能得到误差,但这个误差会同时包含失真、随机噪声、随机抖动、采样时刻偏差和触发漂移。尤其在信号边沿处,极小的时间偏移都会产生很大的电压差:
如果两条完全相同的波形只错开了一点时间,边沿处依然会出现很大的 Error。因此,在逐点相减之前,必须先让实测波形与已知码型处于同一个时间和码型坐标中。
这个过程可以分成三个层次。
首先是时钟恢复。示波器通过 CDR 或软件 PLL 从波形跳变中恢复符号时钟,确定每个 UI 的边界和相位参考。对于 PAM4,恢复的是符号时钟而不是比特时钟。例如 106.25 Gb/s PAM4 的符号率为 53.125 GBd,CDR 应按照 53.125 GBd 的 UI 工作。
其次是码型同步。仅仅知道 UI 边界还不够,算法还要知道当前 UI 对应 PRBS 序列中的哪个符号。软件会对判决后的 PAM4 符号与指定码型进行相关匹配,找到码型起点。时钟同步解决的是“每个 UI 在哪里”,码型同步解决的是“这个 UI 是码型中的第几个符号”。
最后是重采样与码型平均。软件按照 Points Per UI 将每个 UI 插值到统一的采样网格,再将多个完整码型周期循环对齐。假设设置 Number of Averages = M,则同一码型位置上的采样值被逐点平均:
这条平均后的波形就是 SNDR Input。
SNDR Input 到底消除了什么
码型平均会抑制与码型不同步的随机成分。对于独立随机噪声,理想情况下平均后的标准差约为:
因此,热噪声、随机电压噪声和部分非同步干扰会明显减小。CDR 能够跟踪的低频相位漂移,也会在时钟对齐和重采样过程中得到补偿。
但是,不能简单说 SNDR Input 已经“剔除了所有噪声和 jitter”。码型平均仍会保留与码型同步、每次重复都会出现的成分,例如:
- 线性带宽限制和线性 ISI;
- 数据相关抖动;
- 电平压缩和 PAM4 电平不等间隔;
- 上升沿与下降沿不对称;
- 与码型相关的非线性失真;
- 与码型同步的周期性串扰或干扰。
所以更准确地说,SNDR Input 是从原始采样中提取出的确定性代表波形。随机噪声并没有被 SNDR 忽略,而是被码型平均从拟合波形中压低,再通过前面单独测得的 加回 SNDR 分母。如果直接使用未经平均的原始波形计算 Error,随机噪声已经包含在误差中,最后再加一次 ,就可能造成重复计算。
为什么 SNDR Input 与原始波形看起来码型不一致
SNDR Input 来源于原始采样,但它并不是原始波形在相同横轴上的简单副本。原始波形按照示波器的采集时间排列,而 SNDR Input 按照恢复时钟和识别出的码型位置重新组织。软件可能将内部定义的码型起点放到横轴零点,因此两条波形很可能只是发生了循环移位:
除此之外,Linear Fit Pulse Delay、每 UI 采样点数、显示区间和独立的 Function Scaling 都会让两条波形看起来不一样。因此,不能只按照屏幕上的相同横坐标肉眼比较。更可靠的方法是分别在 UI 中心判决出 0、1、2、3 符号,再对两个序列做循环互相关。
在正确配置下,两条序列应该能够通过固定延迟或循环移位对应起来。如果无论怎样移位都无法匹配,就要检查:
- 实际输入是否真的是所选的 PRBS13Q;
- 自己生成的 PRBS13 到 PAM4 的 bit-to-symbol 映射是否符合标准;
- PAM4 极性和 Gray 映射是否一致;
- CDR 使用的是波特率还是误用了比特率;
- 自动码型检测是否因为严重闭眼而识别错误;
- 软件中设置的码型长度是否正确。
尤其需要注意,“用 PRBS13 驱动 PAM4”不一定等于标准规定的 PRBS13Q。如果是自己生成两路 PRBS13 再组合成 PAM4,码型顺序和映射规则可能与仪器内置标准不同。
为什么原始眼闭合,但 SNDR Input 的眼却可能张开
如果一个周期波形逐采样点完全重复,那么码型平均前后确实应该完全相同:
此时:
因此,确定性 ISI 导致的眼闭合不会被码型平均消除。对于同一个码型位置,如果前后符号造成的电压偏移每个周期都完全重复,这些轨迹在 SNDR Input 中依然存在。
但“数字码型周期重复”不代表“每次采到的模拟波形完全相同”。实际波形可以表示为:
其中 是确定性响应, 和 分别代表每次不同的随机噪声和随机抖动。原始统计眼图叠加了大量采集结果,所以会看到轨迹变粗、边沿横向扩散以及电平上下扩散;SNDR Input 则是在时钟和码型对齐后得到的平均代表波形,所以眼图可能明显变干净、变张开。
这说明原始眼图的闭合至少有一部分来自随机噪声、随机抖动或时钟漂移,而不全是确定性 ISI。可以将 Number of Averages 依次设置为 1、2、4、8、16 进行验证:如果固定的多轨迹结构不变,只是轨迹逐渐变细,说明确定性 ISI 被保留;如果眼图随平均次数明显张开,说明随机成分占比较大。
还要保证比较的是相同条件下的眼图,包括 CDR、PLL 带宽、UI 速率、均衡、滤波、显示比例、持续时间以及每 UI 采样点数。SNDR Function 波形有独立的自动缩放,仅凭视觉效果也可能产生误判。
第三步:根据 SNDR Input 拟合线性脉冲响应
得到 SNDR Input 后,算法利用已知 PAM4 符号序列 构造卷积矩阵 ,再通过最小二乘求一个脉冲响应 :
得到的 就是 Linear Fit Pulse Response。它不是直接测得的物理通道冲激响应,而是在所设置的 Linear Fit Pulse Length 范围内,最能够解释 SNDR Input 的等效线性脉冲响应。
如果测量没有做严格去嵌,它可能同时包含:
- 发射机输出带宽;
- 封装和电气通道响应;
- 调制器或光电链路的线性响应;
- 示波器和测试夹具响应;
- 其他能够由线性时不变模型解释的效应。
因此,把它直接叫作“通道脉冲响应”并不严谨。更准确的说法是当前测量参考面上看到的等效线性脉冲响应。
Linear Fit Pulse Length 也会影响拟合结果。如果脉冲长度太短,长尾 ISI 无法被 表示,本应属于线性响应的部分也会泄漏到 Error 中;如果长度足够,线性带宽限制、反射和长尾 ISI 会被拟合脉冲响应吸收。
第四步:Pulse Corrected 理想线性重构波形
将已知码型与拟合脉冲响应卷积:
得到的就是 Pulse Corrected。
这个名字很容易让人以为它是经过脉冲校正或均衡后的张眼波形,但其实不是。它表示的是:如果当前测得的系统能够完全由刚才拟合出的线性系统描述,这个码型理论上应该产生什么波形。因此它更接近“线性拟合重构波形”。如果拟合出的脉冲响应本身包含线性 ISI,那么 Pulse Corrected 也会包含对应的 ISI,并不是理想方波。
第五步:Error 与失真项计算
将 SNDR Input 与 Pulse Corrected 做差:
得到的 就是 Error 波形。然后对 Error 计算去除均值后的标准差或 AC RMS:
所以 Error 和 不是同一个东西:Error 是一整条误差波形, 是这条波形的一个统计量。
主要反映不能被最佳线性脉冲响应解释的成分,包括非线性、电平压缩、PAM4 电平不等间隔、上下边沿不对称、非线性码型相关失真,以及由于脉冲长度有限、系统时变或拟合不充分造成的残差。它不等于“全部链路失真”,因为可以由线性脉冲响应解释的 ISI 已经被划入有效线性响应中。
BER 估算
用一次实际测量理解电平间距和标准差
这里我拿到了一组单波 106.25G 的 PAM4 波形数据,均衡前
均衡后
这就是一个比较好的例子,原眼图闭合了,但 SNDR input 和 Pulse Corrected 的眼图略微睁开。这是因为原始眼图随机噪声或抖动,经过时钟同步与码型平均,在一定程度上被分离过滤了出去。当系统随机噪声和随机抖动较大时,可以利用 SNDR Input 减弱非码型相关随机因素的影响,再通过它与 Pulse Corrected 的对比,将链路问题大致分解为可由线性脉冲响应解释的确定性线性响应,以及无法由线性模型解释的确定性失真,从而判断眼图无法张开主要是由随机因素、线性 ISI,还是非线性失真造成的。
其中四个 PAM4 电平为:
三个相邻电平间距分别为:
如果判决门限位于相邻电平中点,则最差的电平到门限距离为:
测得:
按照 SNDR 分母的平方和合并:
最差门限裕量约为:
如果暂时将所有误差都看成零均值高斯噪声, 对应的单侧越界概率约为 0.47%。PAM4 的最外侧电平只有一个相邻门限,中间电平则有两个相邻门限,计算时不能混为一谈。
进一步分别考虑三个实际眼高,在四个电平等概率、门限位于中点、噪声标准差相同的假设下,可以粗略估算:
代入数据,SER 约为 0.5%。不过,这个结果只能用来判断数量级,因为 是整条 Error 波形的 AC RMS,并不一定等于最佳采样时刻的高斯电压噪声。Error 在跳变边沿处可能很大,而真实接收机只在 UI 中心附近做判决。
PAM4 BER 公式中的 SNR 与 分析得到的 SNDR
回顾光电链路训练中从 SNR 推导 BER 的证明,理想等间距 PAM4 的四个电平可以写成:
相邻电平间距为 ,平均符号功率为:
如果判决点高斯噪声标准差为 ,传统 PAM4 AWGN 模型中的 SNR 为:
Gray 编码 PAM4 在相邻误判占主导时,其 BER 近似为:
也可以写成:
这里的 SNR 与 SNDR 测量得到的 SNDR 不是同一个定义。传统公式的分子是 PAM4 四个电平的平均功率 ,而 SNDR 的分子是由线性拟合脉冲响应计算的 :
不同标准对 的计算方式还可能不同,例如取脉冲响应最大值、平方和形式或双脉冲拟合的有效值。因此,不能把示波器显示的 SNDR dB 数值直接代入传统 PAM4 BER 公式。即使两者都叫“信号与噪声之比”,分子的物理定义也不一样。
如果强行将 当作判决点高斯噪声,可以结合实际电平间距构造一个等效 SNR,再估算 BER,但这已经加入了高斯分布、等间距和最佳采样点等额外假设,不能视为标准 SNDR 到 BER 的严格换算。
BER 能否由 SER 得到
PAM4 每个符号携带 2 bit。采用 Gray 映射且误码率较低时,错误主要发生在相邻电平之间,相邻符号只相差 1 bit。因此一次符号错误通常只造成一个 bit 错误,于是:
如果前面粗略估算的 SER 约为 0.5%,则 BER 大约为 0.25%。但这只是相邻误判占主导时的近似。如果存在跨越两个甚至三个电平的错误,或者 PAM4 没有使用 Gray 映射,就必须知道完整的符号转移概率和 bit 映射,不能再简单除以 2。
从统计眼图估算 BER
如果示波器能够在统计眼图上直接绘制 BER 等高线,那么用它判断 BER 数量级通常比用 SNDR 反推更直接。
统计眼图描述的是电压与时间的联合概率分布:
在给定采样时刻和判决门限下,误码率来自错误判决区域内的概率积分。它能够反映三个眼的实际高度、电平不对称、不同电平的噪声宽度、时间与幅度的联合分布,以及最佳采样相位和门限。这些信息是一个 SNDR 单值无法完整保留的。
但需要区分 BER 等高线是直接统计还是模型外推。如果只采集了 个符号,直接统计能够分辨的最低概率大约只有:
例如只捕获 个符号,却显示 BER 等高线,那么 不可能来自真实观察到的误码,而是软件根据随机噪声、随机抖动、确定性抖动和尾部分布模型外推得到的。外推越远,结果越依赖模型是否正确,也越容易漏掉低频漂移、突发噪声和长记忆码型效应。
因此,如果目的只是判断 BER 大致处于 、 还是 数量级,正确配置下的 BER 等高线通常比 SNDR 换算更合适;如果要证明极低 BER,则仍然需要足够长时间的 BERT 实测。
还要确认示波器显示的究竟是 BER contour、SER contour、单眼越界概率还是普通 density contour。PAM4 有三个判决门限,有些软件会合成完整 BER,有些只显示某一只眼的概率,不能只看张得最好的一只眼。
总结
SNDR 完整流程
现在可以将 SNDR 的计算过程完整概括为:
- 在至少六个连续相同的 PAM4 符号中,选取稳定平台的第 3 个 UI 中心,统计各电平的随机电压离散程度,得到 ;
- 对原始波形进行时钟恢复、码型识别、重采样、周期对齐和码型平均,抑制非码型相关的随机噪声与部分抖动,得到 SNDR Input;
- 用已知码型对 SNDR Input 做最小二乘脉冲拟合,得到当前测量参考面上的等效线性脉冲响应 ;
- 将码型与 卷积,得到线性拟合重构波形 Pulse Corrected;
- 用 SNDR Input 减去 Pulse Corrected,得到 Error 波形 ,再对它计算 AC RMS,得到 ;
- 根据所选标准从拟合脉冲响应计算 ,最后代入 SNDR 公式。
用公式表示就是:
SNDR 分析实际上是在问:测得的波形中,有多少可以由一个最佳线性系统解释,又有多少属于随机噪声和线性模型无法解释的失真。它更适合评价发射端波形质量和线性可恢复性;至于接收机最终会产生多少 BER,还与采样相位、判决门限、均衡、CDR、误差分布尾部以及码型映射有关。统计眼图和 BER 等高线更接近这个问题,而真正的低 BER 结论最终仍应交给长时间误码测试。
SNDR Input:提取可重复的确定性波形
原始波形可以近似表示为:
经过时钟恢复、码型对齐和多周期平均后:
其中:
- 非码型相关的随机电压噪声被平均压低;
- 部分随机抖动和 CDR 能跟踪的时钟漂移被减弱;
- 线性 ISI、反射、带宽限制等确定性线性响应被保留;
- 非线性、电平压缩、上下边沿不对称、数据相关抖动等确定性失真也被保留。
所以,观察 SNDR Input 的眼图,可以近似回答:
如果先减弱随机噪声和随机抖动,这条链路本身可重复的确定性响应会把眼图变成什么样?
Pulse Corrected:最佳线性系统能够解释的部分
Pulse Corrected 是:
它表示已知码型通过最佳拟合线性系统后产生的波形,主要包含:
- 带宽限制;
- 线性 ISI;
- 反射和长尾;
- 频率相关损耗;
- 其他能被等效线性脉冲响应描述的效应。
它不是“修复后的波形”,也不是均衡后的结果,仍然可能闭眼。观察 Pulse Corrected 的眼图,可以回答:
假如链路完全是线性的,仅仅由当前拟合出的脉冲响应决定,眼图会闭合到什么程度?
两者一起看,可以进一步分辨问题来源
由于:
其中 Error:
就是无法由最佳线性模型解释的剩余确定性成分,以及平均后仍残留的噪声、抖动与拟合误差。
因此可以按照下面的逻辑判断。
| 现象 | 更可能的原因 |
|---|---|
| 原始眼闭合,SNDR Input 张开 | 随机噪声、随机抖动或同步漂移占主导 |
| SNDR Input 与 Pulse Corrected 都闭合,且两者接近 | 线性 ISI、带宽限制、反射或长尾占主导 |
| Pulse Corrected 张开,但 SNDR Input 闭合 | 非线性、数据相关失真、电平压缩或边沿不对称占主导 |
| 两者都闭合,但 SNDR Input 比 Pulse Corrected更差 | 线性 ISI 与确定性非线性共同作用 |
| SNDR Input 与 Pulse Corrected 接近且都张开 | 确定性链路质量较好,原始性能主要受随机项限制 |
总结起来,如果原始眼图闭合,而 SNDR Input 明显张开,说明闭眼主要来自随机噪声、非同步干扰或时钟波动。传统均衡器对随机电压噪声作用有限,但 CDR 仍可能补偿带宽内的抖动。
如果 SNDR Input 仍然闭合,说明存在明显的确定性问题。若 SNDR Input 与 Pulse Corrected 接近,问题主要属于线性 ISI、反射或带宽限制,FFE/CTLE/DFE 具有较大的开眼潜力;若 Pulse Corrected 明显优于 SNDR Input,则问题主要来自非线性或其他线性模型无法解释的失真,普通线性均衡的改善能力有限。







