从波形恢复眼图
从波形恢复眼图
前言
这次讲 ADS 的一个非常实用的工具——Tx Wav AMI,以及 matlab 里的 sndr 函数。
之所以讲这个工具,是因为实际工程实验中,每天都会拿到一堆乱七八糟的波形。这个时候你能获取到的信息,只有 AWG 里设定的码型和示波器中导出来的波形。
不出意外的话,手头上拿到的数据都是很烂的数据,烂到什么程度呢?别说看到眼,连哪块地方凹下去的痕迹你都找不到!
但你不确定眼的消失,究竟是 ISI,还是噪声,或者其他非线性原因导致的。
这个时候我们就希望有一条工具链,能帮我们分析噪声(SNDR),分析 DSP 究竟能对这坨烂波形恢复到什么样的程度。
波形分析
假如我们刚做完实验,从示波器上将波形导出来了。如果是我,第一时间会选择以前我自制的 WaveformEye 软件,导入波形看看能不能画出眼图。但 ADS 里本就提供了一个非常实用的工具——Tx Wav AMI,能够画出波形并提供给 Rx AMI 进行时钟恢复、均衡、判决等操作。
首先用 Tx Wav AMI 查看波形:

波形生成
如果没有实验测到的烂波形,可以自己生成个玩玩儿。这里用的波形是我用 IQtool 工具产生的。这个工具可以直接从是德官网下载,打开该工具需要 MATLAB runtime,具体操作和参数如下

很明显,这里我通过提高噪声与 ISI,将眼图关闭了。此时的波形很烂,无法拿来直接做判决,需要通过 DSP 处理。
接下来,需要将波形下载并转成 csv 格式,还需要将 Pattern 保存下来(如果你知道码型是 PRBS13 或者别的,也可以不用保存直接用现成的)

由于保存下载的波形是 mat 格式的,因此还需要转成 txt 或者 csv。这里我直接在 MATLAB 里转
1 | X = XStart+XDelta.*(1:length(Y))'; |
最终,我们得到两个文件,一个 wave.csv,一个 pattern.txt。
波形载入
回到 ADS,对 TX Wav AMI 进行设置(Rx 就随便找个直通的 AMI 用来看波形即可)

可以看到原波形眼图不忍直视

SNDR分析
这一步很关键,AMI 能不能恢复出眼图,全看波形能不能通过码型将通道响应拟合出来!
因为咱们 AMI 是脉冲自适应 / pulse based,CTLE/VGA/FFE/DFE 的系数全部在 AMI_Init 里计算,所以必须要找到确定的脉冲响应作为输入才行。
利用 MATLAB 刚出没多久的 sndr 函数,该函数在 Signal Integrity Toolbox 里。
波形相关参数,IQtools 导出的 mat 文件里都有,因此只需要额外导入一个 pattern.txt 文件

MATLAB 分析代码
1 | sndrObj = sndr('Wave',Y,... |
注意这里由于同一个符号最多出现 6 次,因此设置 MinimumRunLength=6,否则按照 PCIe 的标准是跑不了的。
得到 SNDR 的分析结果

在这个工具里,SNDR 可以粗略理解成:
其中:
Pmax是有效信号幅度,或者说有效脉冲响应峰值,单位是 V;SigmaNoise是随机噪声标准差,单位是 V;SigmaError是拟合误差标准差,也就是非理想失真项;- 分母整体代表噪声 + 失真。
详细解释一下 report 里每个参数的意思:
Pmax 不是简单的最大电压 - 最小电压,也不是眼图里的最大 swing,它更接近于工具根据你的码型和波形,反推出一个等效脉冲响应,然后取这个脉冲响应中代表主游标强度的有效峰值。
SigmaNoise 是随机噪声标准差,它通常来自同一个 pattern 重复多次时,同一个 symbol 位置采样点的随机波动。
SigmaError 是 pulse response 拟合误差的标准差。通俗说,工具会尝试用一个线性或多脉冲拟合模型去重构输入波形:
其中:
Y是真实输入波形;X是由码型构造出来的矩阵;P是拟合出来的 pulse response;- 误差就是:
SigmaError 就是这个误差的标准差。它反映的是:你的真实波形,有多少部分不能被理想的 pulse response 模型解释。
RLM 是 Ratio of Level Mismatch,电平失配比。这里三个电平间隔是:
1 | V1 - V0 = 269.123 mV |
中间眼比上下眼略大,所以不是完全等间隔。这里的 RLM 计算公式是从 802.3bs 中来的
这类定义的核心不是只看最小眼高,而是看两个内电平相对理想 偏了多少。
代入数值:
于是:
取最小值:
这就和 report 里的 RLM = 0.938602 完全对上了。RLM 越接近 1,说明三个眼的高度越均匀。
用绘图函数 plotLPFR(sndrObj) 画图

能拟合出脉冲响应,AMI 就能做均衡了!
波形均衡
确保脉冲响应能找到了,这时候就需要一个厉害的 Rx AMI 来对这一坨烂波形进行 DPS 处理了。我们将直通的 AMI 换成能对波形做均衡的 AMI(确保 AMI_Getwave 能用)

重新再跑一次

如果还需要对发射机的 TDECQ 进行测量,可以使用 FlexDCA

结语
这里用的是生成出来的烂波形,实际波形数据可能比这还要差!需要注意一点的是,AMI 能做到的极限是补偿 ISI 和很小一部分的非线性或者噪声。如果噪声太大,AMI 也无能为力,所以得看 SNDR 的水平来判断信号是否能恢复出来。
最后再强调一遍,不是所有波形数据都能将眼图恢复出来的,甚至脉冲响应都不一定能拟合出来!





