前阵子团队评审一个新方案,信号完整性工程师把CTLE模块的spec递过来,上面赫然写着“背景自适应”四个字。我当场就问了一句:112G/224G这个速率档次,你们真的打算给模拟前端的CTLE做背景自适应?会议室安静了两秒,然后大家开始争论起来。其实这个争论背后,是高速SerDes接收机架构从模拟补偿走向ADC-DSP之后,CTLE角色定位的一次集体重置。
先把结论放这儿:在绝大多数112G/224G背板、中长距离铜缆和光模块DSP场景下,CTLE确实不需要背景自适应。链路训练阶段把参数定下来,跑起来之后就让它在固定档位上待着;真正负责“跟着环境变”的是后面的DFE或者数字域DSP。这个设计选择不是偷懒,而是基于均衡分工、训练流程、硅成本与收敛风险四方面权衡后的必然。这篇文章就把背后逻辑完整拆一遍。
1. 先搞清楚CTLE在接收机里到底管哪一段
1.1 CTLE补偿的是信道损耗,不是码间串扰
CTLE全称是Continuous Time Linear Equalizer,连续时间线性均衡器,本质是一个放在接收机模拟前端的宽带滤波器。它要解决的第一个问题,是信道对高频分量的衰减。
一根FR4材质的PCB走线,长度做到30到60厘米,在28GHz或者31.25GHz附近的插入损耗轻轻松松掉到20到35dB。这是什么概念?信号到了接收端,高频分量比低频分量小了两个数量级,时域上体现出来的就是上升沿变缓、脉冲展宽、相邻符号互相踩踏,也就是码间串扰。
CTLE的作用,就是用它的幅频响应在奈奎斯特频率附近做一个反向的抬升,把信道衰减掉的一部分能量拉回来。这相当于在模拟域先把信号“弄平一点”,让后级电路能够在信噪比相对可控的条件下处理数据。
这里有个关键点:CTLE是线性系统,它对信号和噪声一视同仁。抬升高频增益的同时,高频噪声和近端串扰同样被放大。所以CTLE不会也不该把信道损耗全部补回来,它能做的就是补一部分,剩下的交给后端。
1.2 CTLE只有几个旋钮可以拧
做模拟设计的工程师对CTLE的参数很熟,但做系统或软件的可能只见过它的寄存器接口。CTLE的工作点一般就由这么几个量决定:
- 低频增益:DC到第一个零点之间的增益值,通常接近0dB,用来配合后级ADC或采样器的输入摆幅。
- 零点频率:增益开始抬升的转折点,一般设计在奈奎斯特频率的1/3到1/2附近。零点频率太低会把带内低频也拉高,抬高噪声底;太高则抬升起步太晚,高频段来不及补偿。
- 峰值量(Peaking):高频增益相对低频增益的抬升量,典型范围6到15dB,具体取值看信道损耗曲线。
- 高频滚降特性:过了峰值点之后增益如何回落,这个决定了对带外噪声的抑制能力。
这四个量组合有限,档位再多也就是十几二十档。也就是说,CTLE本身能表达的自由度是非常有限的,它的“表达能力”决定了它做不了精细的均衡,只能做趋势性的粗补偿。
1.3 一个生活化类比
把CTLE想成眼镜的“度数”,DFE和DSP想成“戴好眼镜之后的精细对焦”。你配眼镜的时候会做一次完整的验光,拿到合适的度数之后不能说每五分钟就重新验一次光。除非你的视力在短时间内剧烈变化,否则固定度数就是最优解。高速链路里信道一旦定型,CTLE的“度数”也几乎是常数,需要频繁调整的概率极低。
2. 链路训练已经把CTLE的工作做完了
2.1 训练阶段到底发生了什么
现在的112G/224G系统,无论走的是哪套标准,启动时基本都有链路训练(Link Training)流程。接收机进入训练模式后,发送端会发一段已知的训练序列,通常是特定pattern或者PRBS类型的码型。接收端拿到这段已知码型之后,可以做很多事情:
- 测量当前的误码率或者信噪比;
- 扫描CTLE的各个增益/峰值档位;
- 对每个档位测量眼图高度、眼宽或者误差向量幅度;
- 选一个综合指标最好的档位,写入寄存器并锁存。
这个过程的本质,是在链路启动阶段用一个离线的、已知的参考信号做全局最优搜索。训练序列具有周期性且接收端完全已知,所以计算误差时可以把码间串扰和噪声分离得比较干净,评估结果比在线估算可靠得多。
更重要的是,训练阶段的搜索是穷举式或者准穷举式的,可以遍历CTLE全部档位,找出全局最优。这一点在线自适应往往做不到,在线算法只能在一个初始工作点附近做小范围扰动,一旦初始点选得不好,很容易停在局部最优。
2.2 温度漂移没有想象中那么可怕
有人会问,信道不是会随温度变化吗?PCB板材在高温下损耗增大,CTLE固定了还怎么跟着变?
我来给个具体数字概念。常见的FR4类板材,插入损耗随温度的变化率大约在每摄氏度百分之零点二到零点三。以28GHz处25dB插损为例,温度从25℃升到85℃也就是60℃温差,插损变化大概3到4dB。这个量级很大吗?
CTLE后级的DFE和DSP是吃干饭的吗?DFE可以补偿一部分低频和中频的残留码间串扰,ADC-DSP架构里的数字均衡器可以在训练后继续跟踪符号速率上的微小变化。换句话说,CTLE不动,不等于链路没有任何自适应能力,只是这个自适应任务被转移到了更适合它的地方。
另外一个容易忽视的点:CTLE档位本身是离散的,档位间隔通常有0.5到1dB甚至更大。温度引起的3到4dB变化,折算下来也就是需要调整几个档位的事。这种低频缓慢的漂移,远没有达到需要每秒钟都去拨CTLE的程度。
2.3 重训练机制是兜底方案
退一步讲,就算出现了训练时没见过的极端情况,比如连接器虚接、线缆被重新插拔、温度剧烈突变,链路一般也不会放任不管。很多系统会在误码率达到阈值时触发链路重训练,重训一次只需要几十到几百毫秒。链路中断一下总比在线自适应跑飞了要好。
所以结论很清晰:训练阶段已经完成了CTLE的参数寻优,运行中还有后级均衡器和重训练机制兜底,中间再塞一个背景自适应,从需求上看就站不住脚。
3. 接收机分层均衡:CTLE干粗活,DFE和DSP干细活
3.1 一张分工表说明所有问题
我习惯把高速接收机的均衡链路看成三个层次,每一层负责不同的频段和不同的任务。
| 层级 | 实现位置 | 典型补偿对象 | 自适应能力 | 硬件成本 |
|---|---|---|---|---|
| CTLE | 模拟前端 | 信道全局高频损耗 | 弱,基本训练后固定 | 低,一次成型 |
| DFE | 模拟或混合域 | 短后尾码间串扰,逐符号反馈消除 | 强,可用LMS在线更新 | 中高,抽头数每增加一个都是功耗 |
| ADC + DSP | 数字域 | 任意脉冲整形、串扰抵消、非线性补偿 | 最强,算法灵活度最高 | 高,但要换的是超高带宽ADC |
从表格能看出,越往后面的层级,自适应能力越强,灵活度越高。CTLE处在最前面,承担的是“把信号整体轮廓弄对”的任务,而不是“把每个符号都精确恢复”的任务。
为什么后级不适合把CTLE的活全包了?原因有两个。第一,模拟前端如果完全不整形,信噪比太差,后级ADC的动态范围会被浪费,量化噪声会被放大。第二,做完ADC之后再做全部均衡,需要强大的数字计算资源,在224G速率下每个符号只有十几个皮秒,数字逻辑跑在这么高的吞吐率上是极大的功耗压力。所以模拟前端保留一个粗均衡器,让后级不必面对极度衰竭的信号,是最经济的做法。
3.2 ADC-DSP时代,CTLE的角色已经变了
早期56G及以下速率时代,很多接收机采用纯模拟架构,CTLE后面直接接CDR和模拟DFE,没有ADC也不是全数字处理。那时候如果信道缓慢变化,确实有厂家会给CTLE加自适应,不让信号性能随温度漂移而劣化。
但到了112G/224G,主流高性能方案基本已经是ADC-DSP架构了。接收信号先经过模拟前端(包括CTLE、可变增益放大器和抗混叠滤波器),再由超高速ADC采样,之后全部进入数字域。这时候发生了一个角色变化:CTLE的功能不再是传统意义上的“均衡主力”,而是更接近一个模拟预处理器。
在这个架构下,ADC前的CTLE只需要做两件事:一是把频谱适当地整形,别让ADC输入端的眼图完全关门;二是提供抗混叠滤波,配合ADC的采样带宽。数字域里的均衡器无论是收尾均衡、判决反馈均衡还是最大似然序列检测,都能完成最终的性能收敛。数字域的自适应更新只需要改寄存器值,不需要碰模拟电路,实现难度和成本都低得多。
既然数字侧已经无所不能,非要让模拟CTLE保持在线自适应就显得很奇怪了。模拟可调电路本身就有电容、电阻失配和寄生问题,改成可变结构还会有额外的插入损耗和噪声,这笔账怎么算都不划算。
3.3 后级自适应到底在补偿什么
我再说得具体一点,运行过程中后级DSP/DFE在时刻跟踪的是哪些东西。
首先是高频插损的缓慢漂移,这就像前面说的温度变化,数字均衡器的系数可以跟着更新,效果等价于CTLE调整但实现代价小得多。
其次是串扰的变化,相邻走线的信号幅度和相位会随温度和供电变化,数字域的串扰抵消器可以连续更新系数来实现自适应均衡。
再就是发射端和接收端的时钟相位漂移。这个主要是CDR负责,但均衡器也需要配合补偿相位变化引入的幅度变化。
这些跟踪需求,无论是频域还是时域,数字域的表达能力都远超模拟CTLE那三四个旋钮。硬要让CTLE去做背景自适应,就好像在高端手机影像系统上非要靠转动一个前置光学透镜的曲率来变焦,而明明主摄、长焦、计算摄影已经覆盖了全部焦段。
4. 背景自适应的成本,远超你的想象
4.1 硬件开销不是加几根线那么简单
真正的背景自适应,需要有一套完整的观测和控制闭环。观测端要有监控器,比如眼图监视器、误差采样器,或者从ADC数据里抽出一路并行计算误差指标。控制端要有一套控制逻辑,能根据误差指标去调整CTLE的档位。
先把观测端拿出来看看。224G系统里PAM4符号速率大约56G Baud甚至更高,单符号周期不到18皮秒。要对这个速度的信号做在线质量监控,ADC或者采样器必须能实时评估眼图开口或者信噪比,这本身就需要额外的采样前端和大量数字逻辑。误差采样器要想不干扰主数据通路,就得在时间和幅度上做一个辅助判决,这会给模拟前端引入额外寄生电容,直接影响主通路的带宽和噪声。
数字监控部分也不能小看。想评估眼图开度,必须统计大量符号,然后做直方图或者浴盆曲线拟合,这些逻辑在112G/224G吞吐率下要并行化处理。有的方案还会跑LMS梯度算法,每个符号都要做乘加运算。算下来功耗轻松增加几百毫瓦,这个数字在每瓦比特效率寸土寸金的SerDes里是很有分量的。
控制端也没那么简单。CTLE档位切换不是瞬间完成的,模拟电路有建立时间,切换瞬间还会在输出端引入毛刺。如果控制逻辑在边界振荡,一会儿切上去一会儿切下来,接收机性能会变得极不稳定。为了消除这种振荡,必须设置滞后比较器或者死区,这又增加了设计复杂度。
4.2 在线收敛的风险可能更糟
背景自适应最大的隐患其实不在成本,而在可靠性。在线自适应是在未知数据流上估计信道质量,这个过程本质上是一个随机逼近问题,天然存在收敛失败的可能。
我举一个非常现实的例子。在PAM4信号里,如果我们用某种误差准则做自适应,很难保证误差面是单峰函数。信道串扰、前向纠错码的游程特性、接收机采样偏差都会让误差面出现局部极小值。训练阶段因为收发双方知道码型、可以做全局搜索,所以能绕开局部极小;运行中的数据流是随机的,自适应算法只能做梯度下降或者扰动搜索,一旦掉进局部极小,CTLE就跑偏。
跑偏的后果是什么?可能是眼图开口变小,误码率抬升几个数量级。更麻烦的是,自适应环路会把它当成“最新最优的解”,其他后级均衡器也会跟着调整去配合这个错误工作点,最终整个接收机稳定在一个错误状态,而且没有任何告警机制能告诉你它错了。相比之下,一个固定参数的CTLE反而很简单可控,链路质量和预期一致,不会出现不可预测的跳变。
4.3 场景对比:谁才真正需要背景自适应
我也要把话说全,CTLE背景自适应不是完全没有存在价值。在下面这些场景里,它是有意义的:
- 可插拔光模块、线缆等信道特性随温度和环境显著变化的场景,特别是多模光纤和铜缆长短混插时;
- 没有数字基带DSP的纯模拟接收机架构,所有均衡只能靠模拟电路完成;
- 极低功耗、低复杂度目标下不愿意做ADC-DSP的短距链路,用一个带自适应的CTLE满足基础需求;
- 需要快速相应的动态信道场景,比如车载总线在振动、温度、电源波动下运行。
但请注意,上面这些场景的共同特点是:要么信道变,要么没有数字后级。而112G/224G背板链路天然具备相对静态的信道特性,接收机又普遍采用ADC-DSP架构,两个条件都不满足,所以背景自适应自然就不需要了。
5. 实操:为一个112G/224G链路确定CTLE参数
5.1 测试台架怎么搭
不纸上谈兵,讲讲实操。我在实验室里确定CTLE档位的时候,一般按下面这个流程走。
第一步,先把物理层测试环境搭好。用真实的背板或者测试PCB走线,保证信道S参数和实际设计一致。很多人用一段随时可换的线缆代替背板,测出来的结果跟批产状态完全两码事,这个坑我踩过。
第二步,连接误码仪。接收机进入训练模式,误码仪发送PAM4信号,速率按Spec要求跑满。注意要让信号源和接收端的时钟恢复环都能锁定,避免测试配置本身引入额外误码。
第三步,遍历CTLE档位。通过寄存器接口把CTLE的低频增益、零点、峰值量依次扫描,对每个组合统计误码率。扫描时建议保持其他模块的默认配置,因为我们要看到CTLE单变量对性能的影响。
第四步,记录关键指标。误码率是最终结果,但中间状态也要看眼图。用高速示波器在接收端测试点采样,记录每个CTLE档位下的眼图高度、眼宽和抖动值。PAM4信号还要看每个眼睛的高度,特别是内眼和外眼是否均衡。
5.2 档位选择的判断标准
扫完数据之后,选择档位的原则有三个。
第一,误码率优先。挑出误码最低或者达到目标BER以下且余量最大的档位。如果多个档位误码都达标,选择峰值量较小的那一个,因为峰值量越大,噪声增强越明显,温度漂移时余量掉的越快。
第二,考虑温度和供电极限。实验室常温下最优不代表全温度范围最优。我会把关键的几个档位拿到高温箱里再测一遍,选一个在25℃和85℃性能都够用的中庸档位,而不是极端最优档位。
第三,留出后级均衡器的调整空间。CTLE档位选完,后面的DFE和DSP的初始系数都要跟着设。选择CTLE时不要追求让CTLE单独把眼图拉到最大,更好的做法是让CTLE只把信号补偿到后级均衡器能正常工作的水平,把剩下的余量交给DFE和DSP去优化。
5.3 几个容易踩的坑
- 盲目加大Peaking:现场看到CTLE档位越大高频提升越多,就觉得更好。实际上峰值增大后带外噪声也被放大,误码率可能不降反升。判断方法很简单,看高频段信噪比测试结果,别只看眼高。
- 忽略了DFE配合问题:CTLE和DFE是联合优化的,分开调你会得到一个“看起来各自最优但整体不是最优”的组合。正确做法是链路训练时整体搜索,或者至少做一轮CTLE固定后微调DFE的迭代。
- 拿不插损耗补偿完当目标:前面说了CTLE别试图全部补信道。让它在奈奎斯特频率处只补一部分(比如60%到70%),剩下的交给后级,余量和稳定度反而更好。
- 寄存器值不固化:有的测试软件支持CTLE在线切换,开发阶段容易写成每次进入工作态都重新跑一遍训练搜索。这会拖慢启动时间,并且可能每次搜到的档位都不一样,造成产品行为不一致。定版之后要让链路训练结果以寄存器方式固化下来。
这些经验花了我不少时间才摸清,写出来希望大家少走弯路。现在我做新项目的时候,拿到芯片手册第一件事就是找CTLE的可调档位和训练流程描述,搞清楚它在整个架构里承担的角色,再决定要不要费劲做自适应。
5.4 训练固化的延伸操作
链路训练固化CTLE档位之后,还有一个小技巧值得做。把不同温度下的最佳档位映射表建一份,比如在25℃、55℃、85℃下各训练一次,记下每个温度点的最优档位。即使运行时不实时调整CTLE,这张表也能帮你在研发阶段评估温度余量,还能用来判断哪些后级DSP系数变化量是在合理范围之内。
如果最终产品对温度极端敏感,可以考虑一种折中方案:CTLE不常驻自适应,但固件里用一个温度传感器查找表,当温度变化超过一定阈值时,通过I2C或者固件控制重新设置CTLE档位。这种慢速的查表切换没问题,因为它不是连续背景自适应,不会引入收敛风险,成本也低得多。不过这已经是系统级的定向补偿思路,不再属于CTLE自适应范畴了。
6. 个人体会
踩过这么多坑之后,我对CTLE自适应的态度很明确:能用训练解决的事,别留给运行期;能用数字后级解决的事,别麻烦模拟前端。
112G/224G系统里CTLE不做背景自适应,不是因为模拟设计做不出来,而是因为它不值得。链路训练已经拿到了全局最优解,数字后级完全跟得上信道缓慢漂移,背景自适应反而引入功耗、收敛风险和不确定的系统行为。设计高速链路时,把CTLE当成一个固定整形网络,认真对待它的档位选择和训练流程,远比在上面加一个华而不实的自适应环路更有价值。
下次再有人拿着“背景自适应CTLE”的方案来评审,我会建议他先画一张接收机架构框图,看清楚谁负责粗调、谁负责细调,然后算一算硅面积和功耗预算。算完之后,大多数人心里的答案自然就和我一致了。