高速串行通道仿真
理论与物理
什么是通道仿真
老师,通道仿真是仿真什么内容呢?
简单来说,就是对收发器之间整个传输路径——IC封装→PCB布线→连接器→线缆→连接器→PCB→IC——用S参数连接起来,并预测包含均衡器的眼图的仿真。
是把整个传输路径放在一起仿真吗?不是逐个部件分析?
是的。例如PCIe 6.0是64GT/s的PAM4信号,奈奎斯特频率为16GHz。通道的插入损耗有时会超过30dB。用CTLE+DFE来补偿这种损耗的设计,没有仿真是无法实现的。将各部件的S参数进行“级联连接”,对发送均衡器→通道→接收均衡器的整体进行一致求解。
30dB,意味着信号衰减到原来的1/30左右吧。用软件来恢复这个,真是了不起的世界啊…
准确地说,电压振幅比是 $10^{-30/20} \approx 1/31.6$。从奈奎斯特频率处的信号几乎消失的状态,用均衡器来恢复。正因如此,“包含均衡器来验证设计”的通道仿真才变得必不可少。
通道模型的构成与级联连接
“级联连接”整个传输路径,具体是怎么做的呢?
将各构成要素建模为二端口网络(S参数),然后将它们串联连接。例如服务器的背板,构成如下:
| 要素 | 典型的插入损耗 @16GHz | S参数模型来源 |
|---|---|---|
| Tx IC封装 | 2〜4 dB | 半导体厂商提供(IBIS-AMI) |
| PCB过孔+布线(发送侧) | 3〜8 dB | 3D EM提取(HFSS等) |
| 背板连接器 | 1〜3 dB | 连接器厂商提供 or 实测 |
| 背板布线 | 8〜15 dB | 2D EM提取+传输线模型 |
| PCB过孔+布线(接收侧) | 3〜8 dB | 3D EM提取 |
| Rx IC封装 | 2〜4 dB | 半导体厂商提供(IBIS-AMI) |
分别用不同的工具提取S参数,最后全部连接起来对吧。连接的计算是简单的乘法吗?
直接用S参数不能做乘法。转换成T参数(传输矩阵)后,就可以用矩阵乘积进行级联。对于二端口网络:
S参数到T参数的转换公式如下:
原来如此,是T参数转换→乘法→转回S参数,这三个步骤对吧。工具会自动完成吗?
是的,ADS或Sigrity等工具会读取Touchstone文件(.s2p/.s4p)并自动计算级联连接。但有一点需要注意——当各S参数的频率点不一致时需要进行插值,这个插值精度有时会影响结果。特别是高频端的外推需要格外小心。
S参数的数学原理
通道仿真中使用的S参数,具体看哪些成分呢?S11、S21等等有很多,容易混淆。
通道仿真中最重要的有以下三个:
- $S_{21}$(插入损耗, Insertion Loss):信号通过的程度。频率越高衰减越大。直接反映了通道的“难度”
- $S_{11}$(回波损耗, Return Loss):输入端口反射的程度。阻抗失配的指标。目标通常是 $|S_{11}| < -15\text{dB}$
- $S_{\text{NEXT/FEXT}}$(串扰):来自相邻通道的干扰。用多端口S参数评估
通道整体的传递函数,最终是如何表示的呢?
将级联连接后的整个通道表示为一个传递函数 $H_{\text{ch}}(f)$,如下:
包含均衡器的端到端传递函数为:
DFE是无法在频域表示的非线性处理,所以不包含在这里。DFE是在时域另行计算的。
CTLE・DFE均衡器原理
CTLE和DFE经常听到,它们有什么区别呢?不都是“均衡器”吗?
根本区别在于,CTLE是线性滤波器,而DFE是非线性反馈。
CTLE(连续时间线性均衡器)是一种“提升”通道中衰减的高频成分的高通滤波器。其传递函数形式如下:
$f_z$ 是零点频率(提升起始点),$f_p$ 是极点频率(提升上限)。在零点和极点之间的频带,高频增益会提升。实际应用中常使用多级CTLE,通常提供10〜15dB的提升。
提升高频,意味着噪声也会一起被放大吧?
这正是CTLE的弱点。CTLE会伴随噪声放大(noise enhancement)。于是DFE(判决反馈均衡器)登场了。DFE利用过去已判决的比特来抵消码间干扰(ISI)的后光标部分:
$\hat{d}[n-k]$ 是过去判决的比特值,$c_k$ 是DFE抽头系数。重要的是,DFE不会放大噪声。因为它使用判决结果($\pm 1$),所以能够精确地只抵消信号成分。PCIe 6.0中DFE抽头数可能达到10〜24个。
啊,但是如果过去的判决错了会怎么样?错误好像会连锁下去…
问得好。这就是“错误传播(error propagation)”问题,是DFE的本质弱点。一旦发生判决错误,后续的ISI抵消也会出错,可能导致错误连续突发。实际的SerDes中,FEC(前向纠错)会覆盖DFE的错误传播。在通道仿真中,能否正确建模这种错误传播,会极大地影响BER预测的精度。
实际应用中也会使用Tx-FFE(前馈均衡器)。这是在发送侧对信号进行“预失真”的方式,以FIR滤波器实现:
利用前光标抽头($a_{-1}$等)和后光标抽头($a_1, a_2$等)预先抵消ISI。PCIe 5.0规定为3抽头,PCIe 6.0规定最大10抽头的Tx-FFE。
统计眼图
经常听到“统计眼图”,它和普通的眼图有什么区别呢?
通常的眼图是实际流过比特序列并将波形重叠绘制而成的。这称为“逐比特(bit-by-bit)仿真”。虽然直观,但要验证 $10^{-15}$ 的BER,需要流过 $10^{17}$ 比特以上,即使是64GT/s也需要约40分钟以上。
统计眼图分析是一种从脉冲响应计算概率分布,直接求出BER等高线的方法。
从脉冲响应怎么计算BER呢?
对阶跃响应 $s(t)$ 求微分得到脉冲响应 $p(t)$,提取采样时刻的脉冲响应值。得到主光标 $p_0$ 及其前后的值 $p_{-k}$(前光标ISI)、$p_k$(后光标ISI)。
每个ISI项由随机比特($\pm 1$)加权,所以所有ISI的总和是一个离散概率分布。对于NRZ,若有N个ISI项,则存在 $2^N$ 种组合。将此概率分布与噪声的高斯分布进行卷积,即可直接得到各电压、时刻的BER:
$P_i$ 是ISI组合 $i$ 的出现概率,$V_i(t)$ 是该组合下的接收电压,$\sigma_n$ 是噪声的标准偏差。Q函数是正态分布的尾部概率。这个计算几秒钟就能完成,因此可以立即评估 $10^{-15}$ 级别的超低BER。
逐比特仿真需要40分钟,而统计眼图只需几秒,差距好大!那是不是只用统计眼图就够了?
统计眼图对于线性通道+线性均衡器的范围非常精确。但是,对于DFE的错误传播,以及PAM4中限幅器阈值的非线性效应,则是近似处理。实际工作中,通常用统计眼图进行大量的设计空间探索,最后对最终候选方案用逐比特仿真进行精密验证。
COM(通道工作裕度)
COM(Channel Operating Margin)是什么?经常听到“COM大于3dB就算合格”之类的…
COM是IEEE 802.3定义的通道质量统一指标。它是用噪声、抖动、串扰归一化均衡后眼图开度的值,以dB为单位表示:
$A_{\text{signal}}$ 是DFE+CTLE均衡后眼图开度的一半,$A_{\text{noise}}$ 是所有噪声、抖动、残留ISI、串扰的有效值。COM > 3dB是一般的合格标准,这意味着以足够的裕度满足目标BER(如 $10^{-15}$)。
COM的计算,具体需要输入哪些参数呢?
COM计算的输入参数相当多。仅主要参数就有这些:
| 类别 | 参数 | 典型值(100GBASE-KR4) |
|---|---|---|
| 通道 | 直通S参数(.s4p) | 频率范围: DC〜奈奎斯特×2 |
| 串扰 | FEXT/NEXT S参数 | 所有干扰通道 |
| Tx-FFE | 抽头数、抽头约束 | 3抽头,$c_{-1}+c_0+c_1 = 1$ |
| CTLE | DC增益,峰值频率 | 0〜12 dB提升 |
| DFE | 抽头数、抽头约束 | 5〜14抽头 |
| 噪声 | $\sigma_{\text{Tx}}, \sigma_{\text{Rx}}$ | 规格书规定(mV rms) |
| 抖动 | DJ, RJ | DJ: 0.01UI, RJ: 0.01UI rms |
参数数量真多啊…手动计算这个绝对不可能。
所以自动化才重要。IEEE 802.3委员会公开了官方的MATLAB脚本(COM计算代码),这已成为事实上的行业标准。各厂商工具也实现了这个算法。关键在于,COM计算会自动优化Tx-FFE和CTLE的参数以寻找最佳的COM值。
COM计算的内部步骤(详细)
- 从通道S参数计算脉冲响应(IFFT)
- 枚举Tx-FFE抽头组合
- 对每个Tx-FFE设置,扫描CTLE提升值
- 计算CTLE后的脉冲响应,优化DFE抽头系数
- 概率性地合计残留ISI、串扰、噪声、抖动的影响
- 计算眼图开度,算出COM值
- 报告所有组合中的最大COM
数值解法与实现
脉冲响应的计算
なった
詳しく
報告