CTLE 原理:连续时间线性均衡器的工作方式与零点极点配置
CTLE,全称 Continuous Time Linear Equalizer,连续时间线性均衡器。名字挺长,但说白了就是一个高通滤波器。
我刚开始接触 SerDes 时,觉得这玩意儿名字起得玄乎。后来调了几次链路,才明白它到底在干啥——就是补高频,压低频。
为什么需要 CTLE?
信号在 PCB 走线、封装、连接器上跑,频率越高,损耗越大。你想想看,一个干净的数字方波,经过几十厘米的走线后,边沿变缓,幅度变小。这就是典型的信道损耗。
UCIe 链路的速率动辄 16 GT/s 甚至更高。信号的基频在 8 GHz 以上,三次谐波跑到 24 GHz。高频分量衰减得厉害。如果不做补偿,接收端眼图就闭合了,根本没法正确采样。
CTLE 就干一件事:把高频分量的增益提上来,把低频分量的增益压下去。最终让整个通带内的幅度响应趋于平坦。
核心观点:CTLE 不是放大器,而是“频域整形器”。它不增加信号的总能量,而是在不同频率上重新分配增益。
工作原理:高通滤波器的直观理解
CTLE 的电路实现通常是源极退化差分对,带一个可调的 RC 网络。这里不深究晶体管级细节。我们直接看它的传输函数:
H(s) = A * (1 + s / ωz) / (1 + s / ωp1) / (1 + s / ωp2)
这里面主要就三个关键点:一个零点 ωz,两个极点 ωp1 和 ωp2。
- 零点 ωz:决定了高频补偿的起始频率。零点以下,增益受控;零点以上,增益开始抬升。
- 主极点 ωp1:限制了高频增益带宽。一般是低频增益和带宽的折中。
- 第二极点 ωp2:用于抑制高频噪声。通常在 Nyquist 频率之外,把不必要的噪声滤掉。
我习惯把 CTLE 的频率响应记成三个区域:
- 低频区(f < fz):增益平坦,接近直流增益。这里主要是补偿没有意义,反而会放大噪声。
- 补偿区(fz < f < fp1):增益随频率上升。每十倍频抬升 20 dB(如果只有一个零点)。
- 滚降区(f > fp2):增益开始下降。防止高频噪声被过度放大。
零点极点配置的经验法则
参数怎么配?我调过几次之后,总结了一个经验:先把零点放在信道损耗拐点附近。
举个例子。某次我在调试一个 32 GT/s 的 UCIe 链路,走线长大概 30 cm。通过仿真看到,信道的 -3 dB 带宽大约在 12 GHz 左右。这意味着什么?12 GHz 以上,信号衰减很严重。
我当时把 CTLE 的零点设在 10 GHz。为什么?因为零点位置要在信道开始明显衰减之前“起效”。如果零点在 12 GHz,那信道已经开始滚降了,CTLE 才刚开始补偿,效果会打折扣。
主极点 fp1 放在 20 GHz 左右。这样从 10 GHz 到 20 GHz 之间,CTLE 提供大约 6-8 dB 的增益抬升。第二极点 fp2 放在 30 GHz,把 32 GHz 以上的噪声压住。
经验值:UCIe 链路(NRZ 调制)的 Nyquist 频率 = 码率 / 2。比如 32 GT/s 的链路,Nyquist 频率 = 16 GHz。零点通常放在 Nyquist 频率的 60%-80%,主极点放在 Nyquist 频率附近。
我把几个常用速率下的参考配置整理了一下:
| 信号速率 (GT/s) | Nyquist 频率 (GHz) | 零点 fz (GHz) | 主极点 fp1 (GHz) | 第二极点 fp2 (GHz) |
|---|---|---|---|---|
| 16 | 8.0 | 4.8 - 6.4 | 8.0 - 9.6 | 14.0 - 16.0 |
| 24 | 12.0 | 7.2 - 9.6 | 12.0 - 14.4 | 21.0 - 24.0 |
| 32 | 16.0 | 9.6 - 12.8 | 16.0 - 19.2 | 28.0 - 32.0 |
注意:这个表只做参考。具体最优值取决于信道长度、介质损耗、封装寄生参数。我曾经遇到过一个极端情况:零点放在 10 GHz,结果链路 Resonant Peaking 爆了,眼图比不调还差。后来把零点推到 12.5 GHz,峰值才压住。
调零点的几种典型场景
为什么我说零点最敏感?因为它的位置直接影响过冲和振铃。
- 零点偏低(比如 fz < 0.5 * fNyquist):补偿开始得太早,低频也被放大了一截。眼图的下眼沿可能会上扬,形成“双线”,误码率反而升高。
- 零点偏高(比如 fz > 0.9 * fNyquist):补偿来得太晚。高频分量已经衰减了,CTLE 才开始“发力”。眼图打开不足,抖动很大。
- 零点正好:补偿和信道衰减的斜率匹配。眼图左右对称,高度和宽度都达到最优。
我个人习惯在仿真阶段先扫零点,步长取 Nyquist 频率的 5%。扫完零点,再调主极点和第二极点。主极点调峰值增益的大小,第二极点调高频噪声的抑制程度。
三个关键参数的权衡
CTLE 的调优本质是三个维度上的折中:
增益 vs. 噪声:增益给得越大,高频噪声也被放大得越厉害。UCIe 链路里,噪声源包括串扰、电源噪声、量化噪声。CTLE 不能光看眼高,还要看抖动。
带宽 vs. 相位:极点频率越高,带宽越宽,但群延迟波动也变大。群延迟波动大,会导致符号间干扰(ISI)残留,等化器后续压力大。
低频增益 vs. 直流偏移:低频增益越低,对直流偏移的抑制越好。但低频增益太低,信号的低频分量也被压制,眼图底部可能“翘起来”。
我在一个项目中遇到过特别棘手的情况。链路很短,只有 10 cm,按道理 CTLE 随便设一下就行。但封装寄生参数在 28 GHz 附近产生了一个谐振峰。CTLE 的零点正好落在这个谐振峰上,结果高频增益爆表,眼图直接塌了。后来我把主极点从 20 GHz 降到 14 GHz,同时把第二极点从 32 GHz 降到 24 GHz,才把谐振峰压住。
// 调优序列参考(伪码)
1. 设定初始零点 fz = 0.7 * fNyquist
2. 扫零点:fz 从 0.5*fNyquist 到 0.9*fNyquist,步长 0.05*fNyquist
3. 选眼高最大时的 fz 值
4. 固定 fz,扫主极点 fp1:从 1.0*fNyquist 到 1.4*fNyquist
5. 选眼宽最大时的 fp1 值
6. 固定 fz 和 fp1,扫第二极点 fp2:从 1.8*fNyquist 到 2.2*fNyquist
7. 选抖动最小时的 fp2 值
8. 验证:恢复眼图 + 误码率仿真
总结一个调优口诀
嗯,我自己倒是编了个口诀,虽然不太押韵,但干活时挺有用:
零点调位置,补偿起始点。
极点调峰值,高低两手抓。
第二极压噪声,别让高频炸。
最终看眼图,高度和宽度。
CTLE 是 UCIe 均衡链路的第一级防线。它干得好,后续的 DFE 和 CDR 才能发挥正常。调不好,后面怎么补都补不回来。
为什么我这么说?因为 DFE 只能消除低频 ISI,而 CTLE 负责的高频补偿要是没到位,DFE 输入端信号的 SNR 太低,噪声会把误差传播效应放大,误码率一路飙上去。
实战提醒:调 CTLE 时,不要只测 PRBS7 码型。用 PRBS31 走一遍,长连抖动才看得出来。短码型下 CTLE 看起来很好,长码型下低频 ISI 暴露出来,CTLE 的零点可能就需要微调。
CTLE 的零点极点配置,说白了就是找一个平衡点。信道衰减多,就多补一点;高频噪声大,就少补一点。没有一刀切的公式,但掌握了原理,扫一遍参数,总能在三五次收敛到最佳值。