ARTICLE DETAIL

资讯详情

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

SerDes仿真中Tx_Diff均衡器参数如何影响眼图质量与优化方法

SerDes仿真中Tx_Diff均衡器参数如何影响眼图质量与优化方法 做SerDes仿真的朋友十有八九都跟眼图较过劲。我最近在调一套28Gbps NRZ背板链路前端用ADS搭了完整的发射端模型反复扫描Tx_Diff均衡器(EQ)参数眼图从一开始的完全闭合一点点拉到满足协议要求的水平。这个过程表面上看是在改几个数字背后却是发送端均衡、信道损耗、接收端均衡三方博弈的完整链路。先跟刚入门的读者对上号。ADSAdvanced Design System是Keysight的高速电路仿真平台做SerDes领域通常用来搞通道仿真、眼图评估和一致性分析。SerDesSerializer/Deserializer就是并行数据转串行、再转并行的收发系统PCIe、USB、以太网、光模块里都有它。Tx_Diff是发送端的差分输出级EQEqualizer是均衡器负责在发送端对信号做预失真处理用来补偿信道对高频分量的衰减。这篇文章就围绕Tx_Diff均衡器参数展开为什么它能改善眼图、参数到底怎么设、在ADS里怎么实操、有哪些坑是文档里不会写的。适合正在调SerDes链路的新手也适合想系统理解EQ参数含义的硬件工程师。1. 链路仿真到底在仿什么从Tx_Diff到眼图的完整路径1.1 一条真实的SerDes发送链路是由什么组成的很多刚接触SerDes仿真的人以为就是在ADS里拖一个理想脉冲源再接一段S参数最后放个眼图探针就完事了。真实链路远没有这么简单。一条典型的SerDes发送链路从数字侧到模拟侧依次是并行数据源、串行器/编码器、发送端均衡器也就是Tx EQ、差分驱动级Tx_Diff、封装模型、然后是信道PCB走线、过孔、连接器、背板再往后才是接收端的CTLE、DFE和时钟恢复。这里面Tx_Diff作为发送端最后一级模拟输出直接决定了信号的幅度、上升时间、过冲特性和抖动底噪。为什么单独把Tx_Diff拿出来讲因为在ADS里你可以把Tx均衡器看成一个信号处理模块把Tx_Diff看成实际驱动电路。前者负责“预失真”的算法实现比如去加重和FFE前馈均衡抽头系数后者负责把这些处理后的信号真正推到信道里。两者配合不好眼图一定出问题。我做这套仿真时发送端用的是ADS自带的系统级Tx模型后面接了一个封装S参数再接信道。如果链路里出现与预期不符的眼图结果第一步就应该检查是不是Tx_Diff的输出参数设错了而不是急着去怪信道模型。1.2 眼图指标到底在衡量什么眼图本质上是把一串高速数字波形按单位间隔UI叠加在一起形成的图案。为什么要叠因为单个波形只能看到电压随时间变化叠加之后才能看出统计意义上的噪声裕量和时间裕量。最核心的指标有四个眼高Eye Height、眼宽Eye Width、峰峰抖动Pk-Pk Jitter和BER眼图等值线。眼高对应电压噪声裕量眼宽对应时间采样裕量抖动是水平方向上的波形漂移BER眼图则是把误码率推导到眼图的边界上。除了这些上升时间、过冲、共模偏移也会影响最终系统表现但在EQ参数调试阶段优先看眼高、眼宽和抖动三个维度就够用了。我习惯先看无EQ基线的眼图再对比加EQ之后的变化。因为只有知道“原始状态有多差”才知道均衡器补了多少信号也才能判断是不是补过头了。1.3 为什么EQ能在发送端“预补偿”信道损伤信道本质上是一个低通网络。高频损耗大低频损耗小比如FR4板材的背板走线在14GHz处插损可能到-9dB甚至更多。信号经过这样的信道高频分量被大幅衰减波形上升沿变缓前后码元之间互相干扰这就是码间干扰ISI。ISI严重时眼图会直接闭合。EQ的出发点很简单既然信道会衰减高频那就在发送端反向操作把高频分量相对加强或者把低频分量相对压低。信号经过信道之后高频被砍掉的部分和发送端预加的部分互相抵消接收端得到的频谱就相对平整了。这个过程在通信原理里叫预失真在高速SerDes里体现为De-emphasis去加重和Pre-emphasis预加重。你不需要把均衡量做得和信道损耗完全一样大因为过大的预加重会成倍放大噪声、引入过冲反而让接收端的线性工作范围被突破。这就是EQ参数优化的核心矛盾补少了不够补多了坏事。2. Tx_Diff均衡器(EQ)参数详解每一项都不是随便填的2.1 Tx_Diff均衡器的参数全景在ADS的Tx模型里Tx_Diff均衡器相关的参数看着不少但归类之后其实就几类输出幅度类、时序类、均衡类。输出幅度类包括差分输出摆幅Vppd常见400mV、800mV、1200mV和输出共模电平时序类包括上升时间、下降时间均衡类则包括De-emphasis值、Pre-emphasis值、FFE前馈均衡的抽头系数以及部分模型里的直流增益或者高频提升比例。这里要特别提醒一点很多人上来就去调均衡参数却忽略了Tx_Diff本身的输出摆幅和上升时间。如果输出摆幅本身就低于接收端灵敏度要求后面EQ怎么调都救不回来如果上升时间设置得太慢高频分量天然不足EQ的补偿空间也会被压缩。所以正确顺序是先定好幅度和边沿再调均衡。2.2 De-emphasis和Pre-emphasis到底有什么区别这个问题是高频翻车点。De-emphasis是压低低频分量让高频分量的相对比例变大Pre-emphasis是直接放大高频分量。工程上两种做法最终效果类似都是让高频/低频比例变大但在实现上有差异De-emphasis更容易控制输出共模电平功耗表现也更好所以大多数高速接口的发送端都喜欢用去加重。在ADS里De-emphasis值通常以dB为单位比如-3.5dB、-6dB。这个表征的是高频分量和低频分量之间的幅度差低频被压得越多dB绝对值越大。这里有个历史遗留坑有些模型里De-emphasis参数填-3.5dB有的模型填3.5dB还有的模型里用了另一种定义比如20log10(Vhigh/Vlow)和10log10(Power ratio)的差异。我吃了大亏之后养成一个习惯拿到新模型先看帮助文档里De-emphasis的数学定义再在Tx输出端加一个探针实测波形确认。2.3 FFE抽头系数与De-emphasis的对应关系现代Tx均衡器更多用FFE结构实现也就是多个抽头对历史码元做加权和。一个典型的二抽头FFE可以写成y[n] c0×x[n] c1×x[n-1]其中c0是主抽头c1是后标抽头。当c1为负值时后一个码元会被前一个码元“拉低”实现去加重效果。经常有人问De-emphasis的dB值和FFE抽头系数怎么换算工程上有个近似关系De-emphasis(dB) ≈ 20×log10((c0c1)/c0)。比如主抽头c00.75后标抽头c1-0.25则(c0c1)/c00.667算出来约-3.52dB。这个公式是工程近似实际需要看模型实现细节但用来做参数初值估算非常方便。实际操作中我一般先估一个De-emphasis目标值换算成FFE抽头系数再在ADS里微调。比如28Gbps链路信道在Nyquist频率14GHz插损约-9dB我通常会试着把-3.5dB到-5dB的去加重作为扫描区间而不是一上来就上-6dB以上。2.4 从信道插损曲线反推EQ方向EQ参数不是拍脑袋定的核心依据是信道的插损曲线。信道在Nyquist频率处的损耗越大需要的补偿量就越大。比如PCIe Gen4是16GT/sNyquist是8GHzPCIe Gen5是32GT/sNyquist是16GHz。如果只在8GHz看到3dB插损去加重做到-2dB都算多如果16GHz下插损到了12dB以上-6dB的去加重也只能算中等水平。我的方法很简单先取信道S参数画出插入损耗随频率变化的曲线找到Nyquist频点上的损耗值然后把它除以二到除以三作为去加重量的初步参考。为什么不是全补因为信道不只在高频损失幅度还会带来群延时不均匀和反射这些不是单纯EQ能完全补偿的补太多反而放大噪声。这条经验帮我避免了无数次“越调越差”的死循环。3. ADS实操从搭建链路到Tx_Diff EQ参数扫描3.1 搭建一条可仿真的Tx→Channel→Rx链路我这里用的是ADS自带系统级模型配合S参数信道的方式。新建一个Schematic之后从元件库拖出Tx模型、信道模型和负载模型把它们串联。Tx模型选差分输出类型信道用Touchstone格式的S参数文件接收端先用一个理想负载或者放一个简单的CTLE模型视仿真目的而定。有一件事强烈建议做在Tx差分输出端、信道输出端各放一个探针。因为只看接收端眼图你很难分清当前的问题是出在Tx_Diff本身还是信道还是接收端。多点探针可以一层一层剥开来定位问题。在ADS中还可以用Channel Simulator等更专门的流程但Transient配合眼图探针的方式更直观适合逐项观察EQ参数变化。对于刚上手的人来说这种方式能建立对波形变化最直接的感知。3.2 把Tx_Diff均衡器参数设成变量为了扫描EQ参数我需要把关心的参数设为变量而不是写死。打开Tx模型的参数对话框把De-emphasis或FFE抽头系数设置成Design Variable比如deemph_dB。这样后面可以用Parameter Sweep控制器也可以直接建多组变量集来批量仿真。这里有个经验点如果你用ADS的Symbol模式变量的定义位置可能在模型内部不是直接可见的需要在模型原理图里找到EQ模块的实例名和参数名。我刚开始总是找不到De-emphasis字段后来确认了Tx_Diff的EQ参数通常放在发送器的均衡子模块里并不直接出现在顶层Tx符号上。耐心往下一层找就对了。3.3 眼图探针的正确配置方式在ADS里用Eye Diagram探针配置项不少最容易出错的几个是数据速率和UI必须正确设置否则眼图横轴完全对不上采样点数要足够否则眼图轮廓粗糙时钟恢复模式要合理如果没有加独立的时钟恢复模块探针也要选择等效的恢复方式。没有时钟恢复时眼图叠不拢是个经典问题。波形不是不漂亮而是每周期都相差一点相位叠加起来就是一团模糊。这时候不是EQ的锅是探针设置的问题。你可以在设计里加一个Clock Recovery模块或者把Eye Probe里的恢复模式打开。这个坑我踩了整整一个下午最后发现只是少勾了一个选项。3.4 参数扫描策略先基线、再粗扫、后细调我的扫描策略分三步。第一步跑无EQ基线记录眼高、眼宽和抖动作为后续所有对比的基准。第二步粗扫De-emphasis比如在0dB到-8dB之间取4到6个点看趋势。第三步在最优区间内细调比如-3dB到-4.5dB之间按0.5dB步进扫同时配合FFE抽头微调。为什么先粗后细因为EQ参数扫描是多目标问题眼高和眼宽往往不在同一个点上同时最优先看总体趋势比纠结单点更有效率。实测下来粗扫能快速摸清可行区间细调再做最终确认省时省力得多。3.5 如何读取和记录眼图指标在ADS的Data Display里Eye Diagram可以自动计算眼高、眼宽、峰峰抖动等指标但我建议在记录数据之前先想清楚采样位置是哪里。有些工具默认在眼图中心点采样有些则按最小误码率位置采样。不同定义会带来几毫伏或几皮秒的差异对结论影响不算大但团队评审时口径必须一致。我常备一个Excel表格模板列项包括无EQ基线、不同De-emphasis值、不同的FFE主抽头/后标抽头组合、对应的眼高、眼宽、峰峰抖动、备注比如是否观察到明显过冲。这样一轮扫描下来结论一目了然。4. 参数扫描结果分析EQ参数是如何改变眼图质量的4.1 无EQ基线的惨状先说我用的示例链路28Gbps NRZUI约为35.7ps信道在14GHz附近插损约-9dB还带了一个连接器的回波损耗尖峰。这个信道的损耗不算极端但足以让无EQ的眼图相当难看。无EQ基线时Tx_Diff输出摆幅800mVppd信道输出端的眼高只有约45mV眼宽约26ps峰峰抖动约8ps。眼图轮廓能看清但上下眼皮已经快要碰在一起。最明显的问题是波形拖尾很长前一码元的尾巴直接叠到后一码元上这就是典型的ISI主导型眼图闭合。在这个状态下如果后面再加接收端的采样抖动和噪声误码率大概率上不去。4.2 调整De-emphasis从-2dB到-6.5dB的变化趋势粗扫阶段我把De-emphasis分别设为-2dB、-3.5dB、-5dB、-6.5dB其他Tx_Diff参数不变。结果是比较典型的“倒U型”曲线一开始随着去加重增加眼高和眼宽同步改善到了某个点之后眼宽继续增加或保持但眼高开始回落。-2dB时眼高约95mV眼宽约28ps比基线好一些但改善有限说明-2dB对这个信道来说偏轻了。-3.5dB时眼高跳到约185mV眼宽约33ps峰峰抖动降到约5.5ps这个点给我的第一感觉就是“接近当前信道的甜点”。-5dB时眼高反而降到约155mV眼宽略增至34ps但波形上出现了明显过冲说明补偿过头了。-6.5dB时眼高进一步掉到约120mV过冲更明显接收端看到的信号边缘振荡很剧烈。4.3 FFE抽头组合的精细调整从dB值到抽头系数粗扫锁定-3.5dB附近后我改用FFE抽头微调。用前面的近似公式-3.5dB去加重大约对应主抽头0.75、后标-0.25的组合。我在这个基础上尝试了主抽头0.7/后标-0.3和主抽头0.8/后标-0.2两组对比这个区间内的眼图细节。实测结果是主抽头0.7/后标-0.3时等效去加重约-4.3dB眼高比主抽头0.75/后标-0.25时略低但眼宽和抖动略好主抽头0.8/后标-0.2时等效约-2.7dB眼高不够高眼宽也收窄。这说明在这个信道上-3.5dB到-4dB附近是一个比较均衡的区域具体选哪个值要看系统对电压裕量和时间裕量的偏好。我还试着加了一个前标抽头pre-cursor用来调整接收端采样点附近的相位干扰。前标抽头对眼宽的影响比对眼高更明显但量级不能太大否则容易引起信号前沿振荡。这里我建议用很小的系数起步比如-0.05到-0.1逐格加。4.4 扫描数据汇总一张表格看明白所有趋势下面是我当时记录的一组典型数据不同链路结果会有差异但这个趋势非常具有代表性Tx_Diff EQ配置等效De-emphasis眼高(mV)眼宽(ps)峰峰抖动(ps)备注无均衡0dB45268.0ISI严重拖尾明显De-emphasis -2dB-2dB95287.2改善有限De-emphasis -3.5dB-3.5dB185335.5综合表现最优De-emphasis -5dB-5dB155345.8出现过冲眼高回落De-emphasis -6.5dB-6.5dB120346.5过冲明显边缘振荡FFE 0.75/-0.25≈-3.5dB185335.5与De-emphasis等效FFE 0.70/-0.30≈-4.3dB170345.2时间裕量更好FFE 0.80/-0.20≈-2.7dB110297.0补偿不足看完这张表我心里基本有数了对于这个信道Tx_Diff侧的最优EQ配置在-3.5dB到-4.3dB之间。这个结论也正好和“Nyquist损耗约-9dB取三分之一左右作为去加重初值”的经验法则对上了。表里的数值都是示例不一定适用于你的信道但“先粗扫看趋势再细扫找甜点”的流程是通用的。5. 常见问题与排查技巧实录5.1 为什么眼图看起来像一坨毛线这是新手最常遇到的“故障”。波形本身可能很正常但眼图就是叠不拢整个屏幕糊成一片。原因通常是时钟恢复没做好叠加时的参考时钟频率、相位和数据流没对齐。解决办法是在接收端加时钟恢复模块或者把Eye Probe的时钟恢复方式设置正确。还有一种情况是PRBS码型太短周期性太明显叠加出来的眼图虽然能叠拢但边界上有明显的重复图案看起来就像“三眼皮”容易被误判为时序问题。建议发送端至少用PRBS7以上码型码型短了就跑不出真实ISI统计效果。5.2 加了EQ反而眼图更差是为什么最常见的原因是过均衡。De-emphasis加太大低频分量被压得过低接收端看到的信号幅度整体下降眼高自然回落同时过冲会把接收端前端的限幅放大器或EQ推入非线性区进一步恶化波形。我在扫-6.5dB时就遇到了这种情况时域波形上能看到明显的振铃做完FFT还能看到高频分量比低频分量大了不少这就是典型的补偿过度。另一个原因是补偿方向搞反了。有些模型的De-emphasis用负值表示更大的去加重有些用正值。你以为是加上去实际上是在削弱结果越调越差。遇到这种情况先在Tx输出端直接看波形调整参数前后观察单比特脉冲的形状变化确认方向对不对再回去看眼图。5.3 仿真特别慢甚至跑不动高速SerDes链路仿真耗时是常态但有些慢是设置不合理造成的。比如仿真步长设得太小远小于需要的最小时间尺度比如UI数量设了几百万个数据量大到内存爆掉。我一般先把UI数量控制在几千到几万个先确认波形趋势正常再做更精细的仿真。如果信道S参数特别长或者阶数特别高瞬态仿真里卷积运算会非常耗时。这种情况下我会考虑把信道模型降阶处理或者在ADS里开启通道仿真模式用频域方式加速。还有一个小技巧把发送端和接收端的模型简化成行为级先用算法级仿真验证EQ参数方向再用电路级模型做最终验证。5.4 眼图指标挺好但BER就是达不到要求有时眼高眼宽看着都还行但放到BER限制线下去看眼图显示的等高线并不理想。这是因为眼图的统计尾巴很大也就是抖动里的随机成分或者确定性成分没有被眼图的中心采样位置完全反映出来。这时候光调Tx_Diff的EQ参数已经帮助有限了要回到时钟恢复环路、电源噪声和串扰上面去找原因。EQ能解决的是ISI主导问题不是所有眼图问题的万能药。5.5 一份可以避坑的快速排查清单根据我这些年的调试经验列一份速查清单适合每次仿真出问题时对照检查码型和速率是否与信道分析频率一致De-emphasis符号方向是否按模型文档确认过时钟恢复是否已启用参考频率是否正确Tx_Diff摆幅和上升时间是否在合理区间采样点数和UI数量是否足够信道S参数是否包含了封装和连接器频段是否覆盖到Nyquist以上是否在不同变量下都保留了统一探针位置和测量口径。6. 实操心得与后续扩展做完这一整轮Tx_Diff均衡器参数扫描我自己最大的体会是EQ参数永远不是孤立设置的。同样的De-emphasis值在一条短走线上可能是过度补偿换到一条长背板上可能又不够用。所以在任何项目里我都会先跑一遍信道损耗分析再决定EQ扫描中心再结合接收端的CTLE和DFE一起看联合效果而不是在发送端单点优化到底。另一个很实用的经验是调试过程一定要留痕。每一组参数对应的眼图、指标、波形都要整理成表格哪怕当时看起来是“废组”后面换信道时可能会重新有用。我见过太多工程师在ADS里反复改参数改到后面自己都忘了哪组是最优的回头找数据找半天。养成顺手记录的习惯效率会高出很多。这套方法本身还有很大扩展空间。比如信道模型可以换成从版图提取的S参数结合EM仿真做更精细的联合验证接收端也可以加入不同带宽的CTLE和不同tap数的DFE与Tx_Diff EQ参数一起做联合扫描。再往后还可以导入真实的IBIS-AMI模型做系统级BER仿真把眼图指标换成效能更强的误码率预测。从单点EQ调优走向全链路协同设计这其实是每次SerDes调试最终都要走到的路。
返回列表