ARTICLE DETAIL

资讯详情

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

PCIe 5.0均衡技术详解:Tx FFE、CTLE与DFE的协调调优

PCIe 5.0均衡技术详解:Tx FFE、CTLE与DFE的协调调优 做高速信号完整性这些年经常有朋友听到“均衡”两个字第一反应是音频软件里那个“响度均衡”或者手机播放器里自动增强低音的功能。但PCIe 5.0里的均衡完全是另一码事——它是让已经闭合到几乎看不见的接收端眼图硬生生重新睁开的关键手段。这篇内容算是我把自己做PCIe 5.0链路调优时关于均衡的部分整理成了一份可读的版本重点讲清为什么要均衡、发射端和接收端分别做了什么、实际操作时怎么判断参数好坏以及我踩过的几个坑。先把结论放前面PCIe 5.0单通道速率到了32GT/s一个比特的持续时间只有31.25ps基频到16GHz。在这个速率下PCB走线、过孔、连接器造成的损耗和反射会把信号弄得面目全非。如果不做均衡接收端看到的基本不是眼图是一条模糊的带状波形。那么这套均衡体系到底怎么工作从哪里入手调下文一步步说。1. 为什么PCIe 5.0对均衡的要求突然变高了1.1 32GT/s到底意味着什么一个UI只有31.25ps很多人看PCIe的速率只关注“多少GT/s”但对高速链路设计来说更重要的是信号在物理信道里的退化程度。PCIe从Gen1到Gen5的演进非常直观Gen1是2.5GT/sGen2是5GT/sGen3是8GT/sGen4是16GT/sGen5跳到32GT/s后面Gen6更是到了64GT/s。每一代都把比特周期缩短一半以上到了Gen5一个符号周期也就是一个UI只有31.25ps。这个时间短到什么程度呢一个普通的FR4 PCB走线如果长度为10到12英寸信号在16GHz这个频率附近的插入损耗可能超过30dB。插入损耗30dB意味着接收端拿到的信号幅度只有发射端的3%左右。3%的幅度再加上过孔残桩、连接器阻抗突变带来的反射噪声接收端拿到的波形早就没有正常的“高”和“低”有的只是来回震荡、拖尾叠加。所以在PCIe 5.0时代链路设计的思维方式必须改变。过去Gen3、Gen4还能靠版图优化和基础的预加重撑一撑到了Gen5如果不把发射端均衡、接收端线性均衡、判决反馈均衡整套体系都用上链路根本跑不到目标误码率。规范对误码率的要求通常是1e-12以下也就是说每传输10的12次方个比特错误不能超过1个这和“眼图基本闭合”是完全矛盾的。1.2 眼图闭合的元凶信道损耗与符号间干扰眼图闭合的根本原因不是噪声而是符号间干扰也就是常说的ISI。信号在信道中传播时高频分量衰减远大于低频分量。一个方波脉冲经过低通特性的信道后前沿变缓、后沿拖长前一个比特的能量会泄漏到后面几个比特的时间里多个比特的“尾巴”叠加起来就把原本清晰的电平窗口填成了迷雾一片。这里可以打个比方你在安静房间里说一句短促的话听的人能清晰听出每个字。但如果房间回音很重你每秒连续说30个字每个字的尾音都盖到下一个字上听的人就分不清了。PCIe信号在FR4走线上的处境就是这个“回音室”16GHz基频的分量衰减太严重而反射和串扰又把这个过程进一步恶化。均衡的作用就是在这个“回音室”里人为地对不同频率分量做幅度补偿并主动预测、消除掉相邻比特带来的干扰。发射端把信号预先“整形”一下接收端再对收到的信号做“解码式”补偿两边配合才能把已经闭合的眼图重新打开。所以PCIe 5.0的均衡不是可选项而是跑满速率的必要条件。2. 三类均衡逐个拆解Tx FFE、Rx CTLE、Rx DFE2.1 发射端FFE把补偿做到信号出去之前发射端均衡在PCIe里叫Tx FFE也就是前馈均衡器。它的做法是在信号发出去之前根据相邻几个比特的极性对本比特的信号幅度进行微调。说得再直白一点就是预先知道信道会怎么“抹平”信号所以在发射端先把高频分量加强或者把低频分量相对压低一点让信号经过信道后恢复成接近理想的样子。PCIe里提到的FFE系数通常用pre cursor、cursor、post cursor来描述。用三抽头模型举例可以写成y[n] C(-1) * x[n1] C(0) * x[n] C(1) * x[n-1]这里的C(-1)对应前一个符号对当前符号的影响C(1)对应后一个符号对当前符号的影响C(0)是主抽头。我们可以根据信道特征把C(-1)、C(1)设成负值表示要抵消相邻符号在信道中拖尾带来的干扰。FFE的抽头数、具体权重不同芯片实现不完全一样但PCIe规范把这套协商机制标准化了。从PCIe 3.0时代开始规范就整理出了一组预置组合也就是大家经常在BIOS或者调测工具里看到的P0到P10。这些preset其实就是一组已经算好的FFE系数比如低预加重、中预加重、高预加重之类的组合方便训练过程中快速相互协商。具体每个P编号对应的系数以PCI-SIG规范和所用CPU、交换芯片的PHY手册为准不同平台开放出来的可选项也有差异这个后面实操部分还会提到。2.2 接收端CTLE与DFE一前一后两道保险发射端已经把信号做了预整形但信号经过信道后依然不完美所以接收端还有两道处理环节分别是CTLE和DFE。CTLE是连续时间线性均衡器本质上是一个模拟滤波器在通道损耗大的高频段做增益提升曲线的峰化频率和增益大小通常可以配置。很多时候接收端需要根据链路损耗情况去选择合适的CTLE档位档位选得太低高频补偿不够选得太高高频噪声和串扰也被一起放大反而让眼图质量下降。DFE是判决反馈均衡器它的原理就更聪明一些接收端先对当前比特做一个初步判决判决出是“0”还是“1”之后用反馈抽头重建出后面几个比特对当前比特产生的干扰然后从输入信号里把这个干扰减掉。DFE只能抵消后光标干扰也就是本比特对后续比特的拖尾对于前光标干扰也就是来自未来比特的干扰DFE无能为力这正好需要发射端FFE来配合。接收端的DFE抽头数量各个IP实现不同但大方向都是抽头越多能抵消的干扰时间越长代价是训练复杂度和功耗更高。通过CTLE先把高频损耗提上来通过DFE把决策后的“历史尾巴”消掉再加上发射端FFE的预补偿三者配合PCIe 5.0接收端的眼图才能达到误码率要求。2.3 链路训练时的“谈参数”过程PCIe的均衡参数并不是固定不变的而是每次链路训练时动态协商出来的。这套协商过程发生在LTSSM状态机里的Recovery阶段工程师常说“链路均衡训练”实际上就是收发双方在互相试探、调整和确认。简单理解这个过程可以分成几步先由接收端根据自身能力给出一个想要的发射端preset hint发射端按这个hint设置一个初始系数然后接收端持续检查眼图质量如果不满足要求就向发射端发系数更新请求也就是常说的Request Equalization发射端更新系数后接收端自己再调整CTLE和DFE继续评估直到双方都认为当前参数组合可以满足链路要求训练就完成后续维持这套参数工作。这里有个容易忽略的点链路训练时的均衡协商既受物理信道影响也受对端芯片能力限制。比如PCIe Retimer、Switch和CPU的PHY实现细节各不相同有时候CPU侧默认给出的preset并不是接收端最想要的就会出现协商速度不稳的情况。后面常见问题部分我会专门讲排查思路。3. 影响均衡效果的设计细节从PCB到时钟3.1 PCB走线和过孔均衡救不了反射均衡能补偿的是可控的、可预测的损耗和拖尾但遇到阻抗不连续造成的反射均衡的效果非常有限。PCIe 5.0链路走线中过孔残桩是最典型的反射源。残桩越长在16GHz附近产生的谐振频点越容易落在信号带宽内反射回来的能量会和主信号叠加造成幅度波动和时间上的抖动。所以做PCIe 5.0 PCB设计时一定不能抱着“反正有均衡走线差一点也能跑”的心态。后端均衡可以把损耗的一部分补回来但反射造成的非线性失真没法靠线性均衡完全抵消DFE也只能处理一部分后光标拖尾没法处理因为反射产生的前后沿振铃。通道设计该做的还是要做差分走线阻抗控制在85欧姆或者100欧姆按规范要求过孔尽量用背钻把残桩打掉连接器选型时考虑Gen5等级的插损和回损指标。我在实际项目中见过不少案例仿真阶段看链路损耗刚好压线以为靠均衡扫一组好参数就能过结果板子回来后接上Retimer测试怎么训练都是降速。查到最后问题出在一个高速过孔残桩太长回损在整个频率范围内都不达标。后来改板背钻均衡参数几乎没有大调链路就稳了。这说明了均衡和通道设计的关系均衡是弥补手段不是无效设计的遮羞布。3.2 AC耦合电容、参考时钟与电源噪声除了走线和过孔AC耦合电容也对均衡效果有直接影响。PCIe链路一般在发射端和接收端之间放置AC耦合电容电容值、封装尺寸和寄生参数会改变信号的低频拐点和高频特性。选型时必须按PCIe规范要求来常见用到的是0402或者0201封装的电容容值通常在0.1uF到0.22uF这个范围具体以设计规范为准。千万不要忽略电容本身的谐振特性。有些低成本电容的寄生电感大在16GHz附近会产生明显阻抗峰让本来就不宽的眼图打上“凹坑”。我这里踩过一次坑早期做Gen5参考设计时AC耦合电容选了一款参数看起来凑合的普通X7R仿真时曲线差异不大实际测试时均衡怎么调都有一项抖动指标过不了后来把电容换成低插损射频类电容问题立刻消失。参考时钟的抖动也同样关键。均衡处理的是信道引起的确定性干扰但时钟抖动带来的是不同源的随机性时间偏差DFE和CTLE对这种抖动几乎无能为力。PCIe Gen5对参考时钟的相位噪声要求比Gen4严格得多如果参考时钟源的抖动超标你在均衡参数上花再多时间也补不回来。电源噪声也是一样PHY内部的均衡电路对电源敏感供电纹波大会直接影响CTLE的增益稳定性这一点在调试时容易被表象迷惑看到眼图抖就以为是均衡没调好其实问题在电源域。3.3 预算分配多少损耗留给均衡做系统级链路设计时大家习惯用“链路预算”说话。比如PCIe CEM规范给出的通道损耗预算Gen3时代大约按20dB左右做前期估算Gen4到23dB左右Gen5已经是28dB以上这里的损耗一般是看奈奎斯特频率点的插入损耗。数值并不是绝对死板但能反映出一种趋势每一代速率翻倍留给物理通道的损耗预算并没有等比例增加因为均衡技术在顶上托底。但如果把链路损耗推到极限并且同时叠加了过多的反射、串扰和时钟抖动均衡也只能勉强维持眼图打开一点点量产余量几乎为零。这种设计在实验室“能跑”到了高低温、批次漂移后就会原形毕露。我的建议是前期预算一定要留出至少2到3dB的裕量不要卡着28dB这种上限去设计均衡参数的调节范围也要尽量覆盖正常链路损耗的上下浮动否则后期测试会非常痛苦。4. 实操从仿真到实验室的PCIe 5.0均衡调优4.1 仿真阶段先把均衡参数扫一遍实际做PCIe 5.0均衡调优我习惯的思路是“仿真先行实验室收尾”。仿真阶段需要准备几样东西整个通道的S参数模型包含发射端封装、PCB走线、过孔、连接器、接收端封装发射端和接收端的IBIS-AMI模型这是芯片厂商提供的带均衡行为的模型还有一套扫描脚本或者工具用来批量跑均衡参数组合。我常用的做法是先建立基础通道S参数验证回损、插损、串扰是否在目标范围内。跑一组“无均衡”的基线仿真看眼图到底闭合到什么程度。开启Tx FFE扫描P0到P10这些preset先看发射端预加重对眼图的影响。固定一个尽量靠谱的Tx preset再扫描接收端CTLE档位和DFE抽头数量。对最优的几组参数组合做批量BER仿真看误码率是否低于1e-12并能留有余量。这里有个经验不要单独看眼图高度和宽度还要关注Bathtub曲线。PCIe 5.0这种速率下单靠眼图掩码判断并不充分抖动分布很复杂Bathtub曲线能反映出在不同时间偏移下的BER水平。我一般会要求在目标BER位置留出至少20%左右的UI裕量如果达不到继续调整参数或者优化通道。4.2 实验室阶段抓眼图、读LTSSM仿真定完预选参数后实验室阶段再做实际确认。实验室调试用到的主要工具是高带宽示波器、对应的差分探头或者探针台、PCIe协议分析仪和误码仪。32GT/s的信号示波器带宽建议至少30GHz以上有条件直接上50GHz级别带宽不够会把本来正常的高频分量衰减掉容易误判成均衡不足。实验室调试第一步不是直接测眼图而是先读LTSSM状态和链路协商结果。通过协议分析仪或者主板调试接口看当前PCIe链路工作在Gen1、Gen2还是Gen5再看均衡训练有没有报错训练到的最终Tx preset和Rx均衡参数是什么。很多情况下问题在训练阶段就已经暴露了比如始终协商不到Gen5或者协商成功后训练失败这些信息比眼图更直接。眼图测量时测量点选择也很关键。你可以测连接器处、接收端封装引脚处或者芯片内部经过均衡后的眼图。不同测量点看到的眼图大不相同连接器前可能眼图还勉强到了接收端引脚就完全闭合而如果是用示波器看芯片输出口那是一点意义都没有。做Gen5调试我更看重接收端经过均衡后恢复出来的眼图质量这就需要芯片把均衡后的数据眼图输出出来或者用接收端测试模式配合误码仪判断。4.3 我的参数选取思路均衡参数选取没有“一招鲜”但也有规律可循。我一般先根据链路长度和损耗预估一个大方向短链路、损耗小时Tx FFE不需要太强的预加重过强的预加重反而会增加过冲和EMI长链路、损耗大时把预加重和去加重档位调高同时把接收端CTLE的峰化频率往高抬DFE抽头适当多开。实际项目里我倾向于先用接收端芯片自带的自适应均衡训练让芯片自己收敛一轮。大多数PCIe PHY都有自适应均衡算法能根据实际链路自动调整CTLE和DFE。训练完成后再把训练出来的参数读出来和仿真结果对比。差异如果在合理范围内说明通道模型建得准差异很大的话先别急着改均衡回头检查通道模型和实际板子的差异。手动固定参数一般放在量产前测试阶段。产品不能每次开机都靠自适应慢慢爬训练时间长了体验差而且自适应收敛结果可能受到瞬时噪声影响。所以量产固件里会固定一组在典型条件下测试过的均衡参数同时保留自适应能力作为备用。这里要注意温度影响高温下FR4损耗会变大均衡余量会变小如果条件允许最好在高低温下分别跑一遍均衡训练取一组能覆盖全温范围的中点参数。5. 常见问题与排查技巧实录5.1 问题一链路协商不过或者总降速PCIe 5.0链路最常见的故障现象是设备明明支持Gen5但协商结果只有Gen1或者Gen2偶尔能到Gen5但跑一段时间掉速。这时候很多人第一反应是加大均衡实际上不一定对。我的排查步骤是先看LTSSM停在哪一步是卡在Speed Change还是Recovery.Equalization。如果是均衡训练阶段反复失败优先检查发送端和接收端的preset协商。有些主板BIOS里可以手动指定Tx preset你可以固定一个P7、P8附近的常用组合关闭自动协商再看链路能不能稳定。如果能稳定说明自适应训练的初始条件有问题可以通过固件调整训练初始化参数。如果固定preset还是训练失败回去查物理层量AC耦合电容焊盘是否虚焊差分走线是否等长过孔和连接器回损是否超标以及参考时钟的ppm频偏和相位噪声。PCIe规范对时钟ppm有明确要求扩频时钟也要检查开关状态很多奇怪的不协商问题最后都是时钟源配置错误。5.2 问题二眼图余量偏低眼图能睁开但余量不够这类问题在仿真的Bathtub曲线上就能提前发现。如果在实验室遇到先试着把Tx FFE的预加重提高一档看眼高有没有改善。如果眼高有改善但眼宽变差说明预加重带来了额外的高频能量把抖动放大了这时候需要权衡。接着调CTLE。CTLE档位扫描比Tx FFE更敏感经常出现一个档位差别眼高差了十几个毫伏。我建议是在固定Tx preset后把机器支持的CTLE档位全部扫一遍画出“档位-眼高/眼宽”曲线找出最优区间。DFE方面抽头越多理论上抵消后光标越彻底但每条链路需要抵消的主要干扰位置不一样先用自适应DFE判断需要多少个有效抽头再手动固定比盲目全开更合理。5.3 问题三均衡调过头信号反而变差均衡参数不是越大越好这个坑很多新手最容易踩。发射端预加重太强会让信号产生明显过冲过冲在接收端不仅不会增加眼高反而会刺激CTLE的非线性导致低频分量损失眼图出现“眼睛中间凹陷”的奇怪形状。过强的均衡还会增加EMI辐射实验室做认证时可能让你悔不当初。判断均衡是否过头最简单的方法是看接收端均衡后的眼图是否干净。如果均衡后的波形在高低电平区域有明显的前后沿振铃而且幅度超过正常电平的10%到20%我一般会先把发射端预设往回退一档看看整体BER表现。有时候退到比仿真最优值稍弱一点的档位反而把量产稳定性提上来了。5.4 排查速查表现象可能原因排查方向协商速度低于Gen5链路损耗超过预算、均衡训练失败检查LTSSM状态固定Tx preset测量通道插损训练成功但BER不达标均衡参数余量不足、时钟抖动大扫描CTLE/DFE档位检查参考时钟和电源眼图睁开但有严重振铃均衡过强、阻抗不连续降低Tx均衡强度检查过孔残桩、连接器高温下掉速FR4损耗随温度变化、均衡余量不足高温下重新训练预留温度裕量多次重启结果不一致自适应均衡收敛点不稳定改为手动固定均衡参数保留慢速自适应这个表我平时写测试报告时也经常引用排查思路清晰很多。最后再分享一个我在实际调试中反复体会到的经验PCIe 5.0均衡调优本质上是发射端、接收端、物理通道三者之间的平衡。任何一方单点最优都不代表系统最优与其花几天时间死磕一个参数不如把通道模型、参考时钟、电源完整检查一遍再回头动均衡。均衡能做很多事但它挽回不了一个先天不良的链路设计。这也是我把这套内容整理出来最想表达的一句话。如果你正好在调PCIe 5.0链路建议从头把预加重、CTLE、DFE的分工关系理一遍再对照上面的排查步骤逐步试。调通一次之后再回来看这套均衡协商流程会顺畅很多。
返回列表