ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

56G PAM4 SerDes RX:16抽头数字FFE设计与实现要点解析

56G PAM4 SerDes RX:16抽头数字FFE设计与实现要点解析 开头56G PAM4 SerDes RX16抽头数字FFE这在高速接口设计里头算是一个既硬核又绕不开的模块。56Gbps的PAM4信号符号率28GBaud一个UI只有17.86ps信道插损在这个频段下已经非常夸张FR4走线超过10cm就别指望还能收到一张干净的眼图。这种场景下接收端除了模拟前端要提供一定增益之外剩下的均衡工作基本就落在数字域FFE负责把主路径的码间干扰压下去DFE负责处理长尾CDR负责把时钟相位锁定到最优采样点。而FFE是数字均衡的第一道关口它做得好不好直接决定后级DFE和CDR的上限。这篇文章我会把一个56G PAM4 RX中16-tap数字FFE从架构选型、抽头分配、LMS自适应算法、RTL实现要点到仿真实测那些容易踩的坑逐层拆开讲清楚。内容适合做SerDes的工程师、搞FPGA高速接口开发的同行以及刚入门想系统理解数字均衡器到底怎么落地的新人。我先说结论16个抽头看起来不多但真正设计起来从系数更新数学推导到定点化精度控制再到和CDR联调时的收敛行为每一层都有门道。1. 整体设计思路与架构拆解1.1 为什么PAM4对FFE的要求比NRZ苛刻这么多56Gbps用NRZ做基本已经到头了28GBaud的NRZ在14GHz奈奎斯特频率处常规背板的插损轻松超过25dB到30dB这还没算上连接器和过孔的反射。所以56G这一代普遍转向PAM4用4个电平在同一个符号周期内携带2bit信息符号率降到28GBaud奈奎斯特频率仍然是14GHz但每个维度的信噪比预算却大幅缩水。PAM4的4个电平把原本NRZ的一整段电压摆幅平均分成3个眼眼高理论上是NRZ的1/3信噪比直接损失约9.5dB。这意味着接收端对噪声、串扰和残余ISI的容忍度都非常低。FFE如果把信道主脉冲拖尾压不干净或者把噪声放大得太多后级DFE就算有再好的收敛算法也挽回不了。在PAM4系统里FFE的首要目标是让信号托在判决器前面的眼图“看起来足够开”眼高和眼宽至少要满足芯片恒定误码率BER目标的要求。1.2 接收端均衡链路的分工CTLE、FFE、DFE各自干什么一个典型的高速SerDes RX模拟前端信号进来先经过连续时间线性均衡器CTLE做高频提升再经过可变增益放大器VGA把幅度拉到ADC满量程附近之后进入ADC数字化再交给数字均衡器。CTLE的好处是不放大噪声的同时补偿一部分高频损耗但它的频响形状固定没法精细地抵消多个反射峰和长尾。数字FFE则是时域均衡器每个抽头系数对应一个等间隔采样的脉冲响应分量可以非常灵活地把主径前后的ISI“扣掉”。DFE放在FFE后面专门处理post-cursor ISI。DFE的一个关键特性是理论上不放大噪声因为它用历史判决结果重构干扰再减回去。但DFE有两个大问题一是pre-cursor串扰处理不了二是PAM4多电平判决的错误传播error propagation会让突发错误变长。所以FFE必须先处理前标以及一部分后标减轻DFE的压力整个链路才能稳定工作。这个分工理解透了就明白为什么16-tap FFE通常分配成1个pre-cursor加15个post-cursor或者2个pre-cursor加14个post-cursor。1.3 为什么选数字FFE而不是纯模拟模拟FFE在更早的SerDes里出现过用延迟线和可变增益放大器叠加来实现抽头加权。问题在于工艺偏差、温度漂移和电压波动都会让抽头系数漂移校准回路又贵又复杂。数字FFE把这些全部搬到CMOS数字逻辑里只要ADC精度足够系数精度是可控的时域响应可以精确复现而且自适应算法可以直接用HDL实现不需要额外的模拟校准电路。另外数字FFE还带来很大的灵活性。芯片需要在不同的信道长度、不同温度下工作同一颗芯片可能要适配从中距离芯片到芯片chip-to-chip到长距离背板long reach backplane的多种场景。数字FFE的抽头系数可以在运行中实时更新甚至在上电初始化之后由固件写入预置系数再做自适应微调。这种重配置能力让一颗芯片覆盖多种应用产品化价值很高。从实际工程角度看数字Ffe在65nm以下工艺里功耗和面积也可控16个抽头的乘加树加自适应更新逻辑几十万门规模在SerDes这种大芯片里只占很小的面积换来的却是巨大的均衡性能收益。1.4 16-tap这个数字怎么来的16个抽头不是拍脑袋定的。28GBaud符号率下一个UI大约是35.7psNRZ的UI是17.86psPAM4由于2bit/符号一个符号周期是17.86ps的2倍——这里要小心PAM4的符号率是28GBaud一个符号周期约35.7ps不对56Gbps PAM4符号率是28GBaud单位间隔UI是1/28GHz 35.7ps让我算下1/28e9 3.57e-11 s 35.7ps。对PAM4一个符号对应2bitNRZ 56Gbps则是56GBaudUI是17.86ps。所以PAM4的UI是35.7ps。在这个速度下16个抽头如果间隔1个UI覆盖总跨度约571ps大约对应16个符号周期的信道延续响应。如果实际信道的主反射出现在几个纳秒之外那确实需要更多抽头但绝大多数中短距离场景16个UI的覆盖范围已经能抓住主脉冲和早期反射。但实际设计里抽头间隔不一定都取1UI。有些方案用1/2 UI或1/4 UI间距也就是分数间隔FFEfractionally spaced FFE这么做的好处是对采样相位不敏感CDR的抖动容忍度更好。缺点是抽头数要翻倍或翻两番面积和功耗上去。16-tap在这个语境下更像是一个“工程最优折中”整数UI间距覆盖16个UI跨度抽头数量级适合做乘加树流水线LMS更新也容易收敛。具体到不同芯片抽头间隔设定和总数会有差别但16个抽头作为均衡器的“中等配置”确实是业界常见的中间档位。2. 核心细节解析与实操要点2.1 抽头分配方式前标和后标怎么分前标pre-cursor是指当前符号之前的码间干扰也就是说之前发送的符号对当前时刻的影响还没结束在采样点上留下残余。pre-cursor的存在意味着FFE需要“预判”之前的若干个符号所以给它分配抽头时要往前看。一般1到2个pre-cursor抽头足够因为信道的主要能量都集中在主脉冲附近更远的前标已经衰减到可以忽略。剩下14到15个抽头全部给post-cursor补偿主脉冲之后的拖尾。拖尾通常来自于信道的高频损耗损耗越大脉冲被展得越宽需要的post-cursor抽头数量也越多。有一种经验判断方法看信道的冲激响应有多少个UI之后能量衰减到峰值的5%以下这个UI数就是你需要的post-cursor抽头数。在背板信道里由于存在过孔stub和连接器谐振有时冲激响应会出现好几个“次峰”这时候需要更长的抽头列表来捕获这些反射。如果16个抽头不够则要引入DFE来兜底DFE的post-cursor抽头可以做到几十个因为它没有噪声放大问题功耗也相对小。2.2 FFE的数学表达与关键公式数字FFE本质上是一个有限冲激响应FIR滤波器。设输入ADC采样序列为x[n]抽头系数为c[k]抽头索引k从-k1到k2k1个prek2个post输出y[n]y[n] sum_{k-k1}^{k2} c[k] * x[n-k]在自适应模式下系数根据误差信号e[n]和输入采样x[n-k]做最小均方LMS更新c k c k μ * e[n] * x[n-k]这里μ是步长控制收敛速度和稳态失调的平衡。注意这里输入x[n-k]就是对应第k个抽头位置的历史采样值所以实现上要有一个延迟链来保持这16个历史采样。误差信号e[n]怎么定义最简单的判决导向LMSDD-LMSe[n] y[n] - d[n]其中d[n]是对应发送符号或者判决后的最近符号电平的期望值。在PAM4中标准信号电平是{-3, -1, 1, 3}L电平判决器把y[n]映射到最近的L电平d[n]就是这个判决值。这个方案实现简单但初始收敛阶段误判率高所以更稳妥的做法是先用数据辅助方式用已知的训练序列PRBS算理想目标值来做LMS等眼图初步张开后再切到DD-LMS。很多芯片的启动流程就是这么设计的先发预设PRBS、跑训练模式再切到自适应跟踪模式。2.3 步长、泄漏与系数稳定性的工程考量μ选择有一个经典矛盾μ大了收敛快但稳态系数在最优值附近抖动也大μ小了稳态精度好但收敛时间拉长。实际操作里我不会只用一个固定步长而是用“两段式”粗收敛阶段用较大的μ比如2^-8量级让系数快速冲到最优解附近检测到误差均方值下降到某个阈值之后切换为小步长μ比如2^-12进入跟踪阶段。这种“自适应变速”思路在数字实现里很简单只需要一个状态机控制多路选择器却能在启动时间和稳态误码率之间拿到很好的折中。另一个容易被忽略的问题系数漂移。如果信道的直流分量很小某些抽头的输入信号均值接近零LMS更新时它们既得不到足够大的梯度也可能因为噪声累积慢慢漂到不合理的位置。更严重的是如果某个抽头系数在无信号期间被异常事件推到很大的数值FFE可能会自激。解决办法是加泄漏因子leaky LMSc k (1 - λ) * c k μ * e[n] * x[n-k]λ通常很小比如2^-16量级只起到把系数慢慢“拉向零”的作用防止系数积分饱和。流片实测中没有泄漏项的工程版本曾经在环回loopback场景下出现系数缓慢增长、最终导致误码率抬高的现象加上泄漏之后马上就稳定了。这类细节文档里一般不写但对产品可靠性非常关键。2.4 定点化设计位宽和量化误差怎么控制仿真模型里都用浮点数字实现必然要定点化。数据通路的主要瓶颈在乘加累加器的位宽。ADC输出一般是6bit到7bit56G这种速率下功耗限制很少用8bit以上FFE输出经过16次乘加之后动态范围会放大。16个抽头的系数幅度各不相同如果主抽头系数是0.5其他衰减抽头是0.01到0.05那么16个乘积相加之后结果主要集中在主抽头附近加上一串小值。累加器位宽我建议做到乘法和加法分开算。乘法的输入是6bit数据和8bit系数乘积14bit。累加16个最坏情况下总和的位宽需要14bit加上log2(16)4bit即18bit。为了留裕量通常做到20bit之后再按需截位回8bit或9bit给判决器用。截位时直接舍尾会引入直流偏置最好用“就近取整”或者“加抖动再截位”的方式把量化噪声白化掉避免在眼图上形成可观察的固定偏移。另一个容易出问题的地方是系数的定点范围。PAM4信号的幅度大约在满量程的±1之间主抽头系数通常接近1其他系数有正有负所以系数表示要用有符号数并且预留一个整数bit表示大于1的值。比如系数用S1.8格式即1bit符号1bit整数位8bit小数位范围是[-2, 2)精度1/256。如果系数绝对值可能超过2比如前端增益不足FFE需要额外放大就要扩容。否则主抽头系数在LMS更新过程中一旦超过最大值发生饱和整个均衡器性能会突然劣化而且这种问题在仿真里往往要跑很多用例才能暴露出来。3. 关键模块设计与实操过程3.1 数据通路延迟链、乘加树与输出截位16-tap FFE的核心数据通路分为三块延迟链、16路并行乘法器、加法树。延迟链直接采用寄存器打拍实现。28GBaud符号率对应28GHz采样率但实际SerDes中ADC通常以半速率或1/4速率并行输出也就是多通道并行处理。比如用4路并行架构每路处理7GHz数据每一路内部有一个16抽头的FIR。这里的延迟链不再是简单的串行寄存器而是多路之间的交叉延迟需要留意数据顺序对不对。搞错了你会发现FFE输出波形完全错乱但静态时序检查又查不出来只能靠仿真波形眼睛看。我自己的习惯是在设计文档里画一张多路数据的时钟波形图每根延迟链标清楚哪个时钟沿取哪一路数据再配合定向测试向量做验证。乘法器方面16个6bit乘8bit的乘法器在28GHz半速率下做并行展开硬件开销并不大。真正要关心的是加法树的时序收敛。16路乘积做并行加法如果直接串行加16次关键路径会很长通常要排成4层加法树第一层8个加法器第二层4个第三层2个第四层1个每层之间插入寄存器。这样关键路径只有1个乘法器加1个加法器再加1个寄存器时序很容易满足。3.2 自适应模块的工程实现自适应更新模块跑LMS公式每个符号周期要算16次乘法μ * e[n] * x[n-k]然后把结果加到原系数上。μ在定点里通常用右移实现比如μ * e[n]这一步可以用e[n]右移8个bit来实现不用真正的乘法器。这样一来每个系数更新只需要一个乘法器e的位宽乘x的位宽加一个移位器加一个加法器。注意LMS更新的是历史系数还是当前系数这个时序细节很关键。理论上应该用当前时刻的系数来计算当前时刻的输出y[n]然后误差e[n]再更新系数给下一个符号用。写RTL时会发现如果更新模块和主数据通路操作同一个寄存器组相当于一边在乘加一边在改写系数产生一个环。更顺的做法是把系数双备份一份R/W Register给LMS更新一份Read-Only Register给乘加树使用两个寄存器之间的数据在每符号周期结束时打一拍同步。这样既避免组合环也让时序检查干净。工程上更常见的是采用“延迟LMS”变体误差信号从FFE输出到判决器再到误差slicer本身已经占了好几个时钟周期所以更新所用的x[n-k]也必须对应延迟同等周期的那一版历史采样。如果忽略了这条延迟对齐自适应算法会不收敛或者收敛到错误解。这个坑在系统仿真里很容易查出来跑自适应观察误差收敛曲线正常的应该是一条单调下降然后趋平的曲线如果看到发散或震荡优先检查是不是延迟失配。3.3 与CDR的环路交互谁来先收敛FFE自适应的收敛过程和CDR的收敛过程是耦合的。采样相位如果不对FFE看到的是一个歪斜的脉冲响应LMS会努力补偿这个歪斜结果就是系数向奇怪的方向偏。反过来说FFE系数不对眼图不开CDR也锁不准。所以启动顺序非常重要。一般流程是这样先让CDR跑到一个初步锁定位置推荐用一个固定的、预置的FFE系数组由固件根据信道类型加载产生一张勉强能接受的眼图CDR在这个相位下继续收敛。等CDR稳定后再启动FFE的自适应这时候FFE在正确的采样相位上做精调。如果芯片支持训练序列更稳妥的做法是收发双方同时进入训练模式用PRBS训练序列跑LMS眼图质量达标后再切换为正常业务数据。实测中我遇到过一种奇怪现象单独看FFE收敛曲线是好的单独看CDR锁定也是好的但两个环路同时工作时系统不稳定呈现自激振荡。原因是FFE改变系数之后均衡器输出的脉冲形状改变了CDR的相位检测器比如Mueller-Muller感受到的零点位置也随着移动于是CDR调整相位相位一变FFE的LMS又跟着调整系数形成正反馈。这种环路耦合问题通常很难通过加大步长或者加快CDR带宽解决反而是要限制环路带宽——让CDR慢一点、FFE收敛也慢一点两个环路的时间常数拉开10倍以上系统就稳定了。这个经验在我做过的多个SerDes项目里反复验证有效。3.4 回环测试与外部通道测试的区别芯片验证阶段最常用的测试是内部回环loopbackTX输出经过一小段PCB走线直接连回RX。这种场景信道损耗很小FFE几乎不需要均衡主抽头系数接近1其他系数接近0。回环测试主要验证数字通路功能完整性跑通PRBS误码率测试但均衡能力基本没有展现。真正验证FFE性能必须上外部通道常见的有标准背板信道、直连电缆或者专门的信道仿真板channel board。这时候信道损耗、反射、串扰全部上来16个抽头的系数分布会呈现典型的“主峰是最中间那个抽头前后各有几个衰减抽头”的形态。还有一类更苛刻的测试是加抖动源和噪声注入评估系统BER的余量。FFE设计得好不好在这种测试里一眼就能看出来均衡前的眼图完全闭合均衡后的眼图眼高至少恢复到一定mV级别、眼宽恢复到一定UI比例。4. 仿真建模与眼图计量4.1 仿真链路怎么搭起步阶段我会在MATLAB或Python里搭一个行为级链路。信道用S参数文件Touchstone格式转成脉冲响应或者在缺少S参数时先用解析信道模型近似。数据源用PRBS13或者PRBS31调制映射到PAM4电平经过TX模型考虑有限带宽、抖动和信道模型再加噪声。FFE模型在行为级仿真里就是那个FIR公式LMS用浮点跑然后对比不同抽头数、不同步长对眼图的影响。这里有个小技巧先用“信道脉冲响应直接反卷积”得到一个理想的FFE抽头系数初值代替从全零开始的自适应可以大大缩短仿真时间也能验证LMS最终收敛到的解是不是接近全局最优解。因为LMS是梯度下降类算法某个局部极小点可能导致最终系数不是最优但实际信道下FIR误差曲面通常是单峰的从理想初值起步基本能收敛到最优。在行为级阶段还需要计算两种指标MMD眼高/眼宽与BER估计。BER估计常用基于统计的方法比如高斯近似把均衡后信号输出信号幅度分布和高斯噪声叠加算每个电平边界处的误码概率。这个指标对FFE设计评估很重要因为有时眼图看着还行但边缘概率已经超标了。4.2 PAM4眼图计量为什么和平常NRZ不一样PAM4眼图有三个垂直眼计量的关键指标包括眼高eye height、眼宽eye width、以及按IEEE 802.3规范定义的EH6和EW6分别对应6级电平界面的眼高眼宽对PAM4则是4电平中间两个眼作为权威代表。不同BER目标对应不同的“掩码”区域比如超短距离VSR和中距离场景会用不同的眼图模板。严格对标IEEE 802.3cd/802.3ck定义来算就行但很多芯片公司在内部还会定义自己的一套“最小眼高眼宽”指标。实际测试中PAM4眼图计量的一个坑在于如何从示波器上正确恢复参考电平。PAM4有4个电平测量眼高时要从上层眼的下沿减去下层眼的上沿不能直接看最大振幅。如果用BERT扫描误码率来做浴盆曲线bathtub curve则要分别扫4个阈值的误码率。很多示波器自带PAM4分析套件但用之前一定要校准参考电平不然测出来的眼高会偏大或偏小误导调试方向。眼图计量环节还会用到均衡器输出信号的眼图和“预编码”概念。PAM4有时候会加Gray编码或者更好的“旋转编码”让相邻符号间的误码只产生一个bit错误这种影响在LMS误差信号定义中也需要考虑——如果判决器输出是Gray码映射的符号值误差计算还在线性幅度域做问题不大但如果把判决值直接当线性幅度使用就可能出现误差方向错乱。实现时建议把幅度域和编码域分开处理判决器输出线性电平给误差计算再单独把比特映射给后续FEC逻辑。4.3 收敛曲线的评估方法和判断标准自适应FFE调试时我会同时看三样东西误差均方值收敛曲线、系数收敛曲线和均衡后眼图演化。误差均方值收敛曲线是最直观的。横轴是符号数或时间纵轴是e^2的滑动平均。理想情况下这条曲线从初始值开始先快速下降然后进入一个平台期。平台期的水平就对应系统的稳态MSE。如果曲线发散或持续振荡就要回头查步长是否太大、数据是否有饱和、延迟对齐是否错误。平台期波动的幅度和步长成正比如果波动太大说明需要减小步长或加泄漏。系数收敛曲线更能看出问题。正常的系数收敛是每条曲线平滑过渡到稳定值主抽头系数应该收敛到接近1的位置。如果某个post-cursor系数收敛后为零说明那个位置本来就没有ISI这没问题。如果某个系数收敛到非常大的值超过正常信道所需的补偿范围大概率是出现了“系数竞争”通常意味着步长太大或者信道噪声太大LMS把噪声当信号来补偿了。在观测中我还会画一条“系数变化范数”的曲线如果稳定后范数仍然持续增长基本可以判定泄漏因子不够或者固定点饱和边界在作怪。4.4 蒙特卡洛仿真必须覆盖什么在流片之前至少要做PVT和失配两轮蒙特卡洛。FFE本身是数字逻辑PVT对它的影响很小但ADC、模拟前端和时钟产生都受影响。FFE的LMS收敛速度在这种扰动下能不能跟上需要仿真验证。具体做法是把ADC的INL/DNL、时钟抖动、模拟前端带宽和增益偏差加进行为级链路批量跑几百上千个样本统计均衡后眼高眼宽的分布。这个阶段发现的问题大多是边界场景比如某个工艺角下ADC的有效位数下降到5bitFFE输出噪声明显增加需要调低LMS步长来保证稳态误码率再比如时钟偏斜导致采样相位偏离最优FFE的pre-cursor抽头会“自动”做出补偿但代价是噪声放大增加。通过蒙特卡洛统计可以在流片前确定FFE各项参数的可配置范围甚至可以固化成默认配置的查找表这样芯片回来之后在不同温度、不同电压下都能用同一套初始参数快速启动。5. 常见问题与排查技巧实录5.1 FFE自适应不收敛或发散症状误码率很高误差均方值曲线不下降甚至上升系数波形发散。排查顺序第一步看误差信号的极性定义是否反了这是最容易错的地方第二步检查延迟对齐把FFE数据通路级数和LMS更新用的x历史采样对齐可以通过在固定信道下注入单个脉冲来验证第三步看步长如果步长太大误差更新会跳过最优解不断来回振动表现为系数曲线像锯齿一样上下跳第四步看ADC输出是否饱和前端增益如果太大ADC削顶导致误差信号非线性LMS也会异常。我建议在RTL里加“coefficient freeze”和“force coefficient”调试寄存器这两个寄存器可以说是FFE调试的两条命。问题无法快速定位时先用冻结功能让系数固定在一个已知值如果固定系数下误码率正常那问题一定在自适应环路如果固定系数下误码率还是不行就回头检查数据通路和模拟前端。5.2 长尾信道下16抽头不够怎么办简单粗暴的答案是加一个DFE。大多数56G PAM4 RX的标配里FFE只是第一道均衡DFE才是处理长尾的主力。FFE把最严重的头几个符号间干扰消掉DFE用十几个反馈抽头把剩余的后标清干净。如果DFE能力也不够就要检查模拟前端CTLE是不是补偿过度或不足。一个经验规律CTLE补偿程度越高FFE的post-cursor抽头数可以适当减少但高频噪声放大也越大形成一个三角制约关系。综合性能最优的工作点通常不是均衡器能力最强而是FFE和CTLE之间噪声增益最小的点。还有一种工程办法不增加抽头总数而是调整抽头间距。比如把16个抽头前半段按1/2 UI间距后半段按1 UI间距这样既保留近距离高分辨率的补偿能力又把覆盖总跨度拉大一倍。代价是不再是等间距FIR系数的物理含义不再是简单的信道冲激响应采样点LMS仍然能工作但调试复杂度和解释难度上升。如果产品上允许我优先推荐FFEDFE的组合因为它调试起来更容易理解也更容易在测试中定位性能瓶颈。5.3 定点化和浮点仿真性能差距过大行为级仿真眼高50mVRTL仿真只剩30mV这种落差通常来自三个地方ADC有效位数不够、内部数据通路截位过多、系数更新定点化精度太低。ADC位数是物理决定的如果是6bit ADC噪声折算是硬上限数字均衡器只能尽量恢复没法突破量化噪声限制。内部数据通路截位则是可以优化的加法树里的累加器不要过早收窄宁可保持20bit一路算到底最后输出时再一次性截位比每级都截位引入的量化噪声小得多。系数更新定点化精度也要检查LMS的μ乘以误差时如果误差本身的低位已经被截掉相当于给更新项引入了额外的量化噪声稳态MSE会整体抬升。一个直观的检验方法把RTL里的系数位宽和内部位宽翻倍跑一遍比如用仿真器参数化配置如果性能显著提升说明位宽是瓶颈需要拉宽如果性能没有明显变化说明当前位宽已经够用问题可能出在别的地方。5.4 CDR和FFE联动时的异常振荡这是整个系统调测里最头疼的问题之一。单独测FFE完全正常单独测CDR也正常两个一起开就振荡。前面说过环路时间常数拉开10倍以上是通用解法具体操作上我会先固定FFE系数单独调好CDR的带宽然后固定CDR相位单独调FFE步长确认两个单独域都稳定之后再按1/10的带宽比例放开。注意判断是谁在振荡看FFE系数波形有无周期性变化再看CDR相位字的波形有无同频变化哪个先起振就先压哪个的环路带宽。还可以在FFE和CDR之间增加解耦FFE自适应只在高频分量做补偿不让它调整信号的直流或低频分量因为低频分量通常由CDR采样相位来管。这种“分工策略”对系统稳定性非常有帮助。5.5 PCB和测试环境带来的仿真之外问题仿真里不会出现的问题在实验室里很常见。电源噪声和地弹会让ADC参考电压抖动FFE的输出眼图边缘抖动随之增大散热不良导致芯片温度升高信道高频损耗又变大了原先收敛好的系数在小温度范围内还不明显但高低温箱跑下来性能大跳水。实验室调FFE有个很实用的技巧把芯片内的“统计寄存器”用起来。Maintaining计数器统计每秒钟有多少个误码、FFE误差信号的均方值、系数变化量用这些数据配合示波器眼图能判断问题是出在算法上还是出在外部环境上。通常我拿到一块新板子第一步不是调算法而是先把电源完整性和时钟质量测一遍这两个基础不稳FFE怎么调都白搭。5.6 常见问题速查表现象可能原因排查顺序与对策误码率居高不下系数未收敛或初始化错误强制固定系数验证数据通路再查LMS自适应条件误差均方值持续震荡步长过大降低μ或切换两段式步长模式收敛后眼高小于预期定点截位过多或ADC位数不足检查累加器位宽、输出截位策略确认ADC ENOB高温下误码率陡增前端增益漂移或信道损耗变大检查AGC是否重新适配FFE自适应是否有足够裕量CDRFFE同开自激双环路耦合时间常数拉开10倍调整环路带宽优先级回环正常、背板测试差信道反射超过FFE覆盖范围增加DFE补偿检查CTLE提升量确认S参数模型系数长期漂移不停止泄漏因子缺失或过小打开leaky LMS设置合适的泄漏系数6. 项目衍生与扩展思路写完上面的设计很多人会问这16-tap FFE做完就算完事了吗当然不是。数字均衡器这个方向还有很多可以延伸的玩法比如MLSD最大似然序列检测作为均衡后级的增强或者在FFE之前加一个盲均衡器来适应更复杂的信道环境。另一个趋势是“深度学习辅助”的初始系数预测用离线训练好的神经网络根据S参数快速给出FFE初始系数替代固件里的查找表。这个思路我在原型验证阶段试过收敛速度确实比传统最小二乘初值快不少但功耗和面积目前还不太适合量产。对FPGA原型验证的同仁们一个小建议网表实现时把16路乘法器中的一半替换成时分复用跑两拍如果带宽允许可以节省不少乘法器资源代价是增加了一些控制复杂度。FPGA上LUT和DSP资源有限这种方案能让原型跑得更轻松。最后再分享一个经验做FFE调试时准备一张“眼图演变海报”其实是很有用的把启动后每隔一定时间采样到的眼图截图并排打出来肉眼可见地看到眼图一张比一张开那种感觉比任何指标数字都让人踏实。这张海报还能作为项目评审中的汇报材料领导看着也直观。技术之外这算是我的一个小习惯吧。
返回列表