ARTICLE DETAIL

资讯详情

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

SerDes眼图测试实战:从PRBS激励到示波器设置与判读

SerDes眼图测试实战:从PRBS激励到示波器设置与判读 很多刚接触高速串行接口的工程师第一次把探针戳到SerDes差分线上看着示波器屏幕上那团像毛毛虫一样的波形都会懵书上说的漂亮眼睛呢为什么我看到的是一堆乱糟糟的线我当年也经历过这个阶段后来才明白一件事——眼图不是随便抓一段波形就有了它是用一种名叫PRBS的伪随机序列去轰链路再经过示波器内部无数次的累积叠加最终呈现出来的一张统计性照片。这篇文章我想用我自己实际调试中的思路带你完整走一遍为什么要用PRBS、怎么搭链路、示波器上怎么设置、眼图出来之后怎么看的全过程全程有参数有步骤你可以直接照着操作。1. 为什么SerDes眼图测试非用PRBS不可1.1 眼图本质是一场统计压力测试一个简单的道理眼图不是某一段真实波形的截图而是上万个比特周期按符号率对齐之后叠加出来的统计图。眼图想告诉你的是——接收端在任意一个时刻采样看到的电压到底是什么水平有没有足够的余地避开误码。如果激励信号是000111000111这种规律数据叠加出来的结果只有有限的几种跳变眼图里永远是干净的两条线链路里真正的短板根本不会被逼出来。而PRBS的意义在于它模拟了一串在每个比特上随机取值、但统计特性高度确定的二进制序列。它包含了极短的跳变、极长的连续相同比特、各种频率成分的组合相当于把链路逼到最极限的工作状态这时候才会出现码间干扰ISI、抖动、噪声导致的眼图变差。1.2 PRBS的阶数到底怎么选从PRBS7到PRBS31PRBS的名称末尾数字表示移位寄存器长度。n阶PRBS的序列长度为2^n - 1个比特最长连续相同比特最长游程为n个。这个最长游程直接决定了信号里最低频率成分有多低链路能不能扛住低频衰减。PRBS阶数序列长度(比特)最长游程(UI)典型应用场景PRBS712778B/10B编码链路PCIe Gen1/2、GigE、SATA眼图初测PRBS95119需要稍长于7的游程部分背板测试PRBS15327671564B/66B编码10GbE常用游程和真实数据接近PRBS23约838万23高倍数编码场景物理层压力更大PRBS31约21亿31无编码或低开销量链路极长游程低频压力测试为什么8B/10B编码链路首选PRBS7因为8B/10B编码后的数据最长游程不会超过5个用PRBS7最长游程7已经能覆盖并超过实际编码数据的最差情况再往上加阶数压力增加有限但序列长度变长、测试时间变慢。而PCIe Gen3之后的128B/130B编码几乎不做游程限制就要用PRBS9甚至PRBS11来模拟极长的低频成分。1.3 为什么不能用K28.5码型或真实业务数据代替K28.5是8B/10B编码里的逗号码带连续的跳变适合做帧同步但它缺少长游程低频分量测出的眼图会偏美无法暴露链路的真实情况。真实业务数据虽然最接近实际工作状态但它不满足可重复性——你今天抓的业务数据里正好有一串长游程测出眼图很差明天换个数据包又可能测出很好。做调试和验收要的是一个具备确定统计特性的激励PRBS恰恰是像随机数据但完全可重复的标准选择。2. 测试链路怎么搭示波器和探头不是随便接的2.1 带宽和采样率先算清楚别让仪表吃掉信号眼图测试的示波器带宽选择有个经验原则示波器带宽至少要达到被测信号基频的3到5倍才能保留足够的谐波成分让上升沿失真尽量小。以常见的一路10.3125Gbps SerDes为例信号基频约为5.16GHz比特率的一半取5倍谐波分量示波器带宽需要25GHz以上。所以现在做10G级别SerDes一致性测试常用26GHz到33GHz的实时示波器。如果被测信号是25.78125Gbps如100G以太网基频近13GHz至少要配33GHz以上带宽工程上更推荐63GHz级别否则测出来的上升沿本身就钝了眼图高度和宽度都会被系统带宽砍掉一截。采样率方面实时示波器一般需要满足奈奎斯特以上但做眼图测试推荐采样率不小于带宽的2.5倍并且最好选择单次采集就能覆盖足够UI数量的机型否则需要靠重复采集拼图效率低还容易引入时间基准误差。2.2 探头选择差分端接探头比普通单端探头强在哪SerDes信号是差分对探针点上去一定要用差分探头而不是拿两个单端探头分别点P和N然后做数学减法。原因有两个一是共模噪声在真差分探头里会被直接抑制掉而单端探头减法做不到严格对称把噪声折回来二是差分探头有锗化硅前端输入电容极小对电路负载影响小。连接方式上分三种带手工焊尖的差分探头适合焊接好测试点以后长期监测稳定可靠焊入式SMA连接最稳信号完整性最好适合一致性测试手持探针手持点测只适合快速定位问题因为手不稳会造成寄生电感抖动眼图会有假劣化2.3 PRBS信号源误码仪、FPGA还是示波器自带码型测试SerDes的前提是先有路PRBS信号打进去。常见三种来源专用误码仪/码型发生器PPG最标准速率可调好一点的误码仪直接内置PRBS7、PRBS9、PRBS31适合做标准一致性测试FPGA/开发板自带的SerDes IP很多FPGA内部有PRBS生成器比如Xilinx IBERT就能发送和接收PRBS码型适合自家板卡调试示波器自带信号源只能做低速验证一般很少用于真SerDes眼图因为高速信号源带宽跟不上有一种情况要注意如果DUT是完整链路发送端到接收端都在板上可以用环回方式让发送端发PRBS接收端再回送或者用时钟恢复设备跟踪发送端时钟。如果是单纯测试一段传输线或一个通道直接把PRBS信号源接在通道入口示波器挂在出口即可。3. 示波器上的完整操作过程一步步把眼图逼出来3.1 清零统计设定正确的时间基准和触发源先把一切变量归零。示波器面板上找到Clear或者复位统计把之前的测量积累清掉。然后把水平和垂直缩放调到合适的眼图参考范围通常是先自动设置让波形出现在屏幕上再手动微调时间轴让1个UIUnit Interval单位间隔长度占据屏幕宽度的5%到10%。注意眼图模式的时间基准不是固定的示波器进入眼图/时钟恢复模式后时间轴会自动变成以UI为单位。触发源一般不需要用示波器外触发而是让示波器从本信号中恢复出时钟来也就是CDR模块提供触发。3.2 通道垂直刻度的正确打开方式垂直刻度的设置标准是差分信号眼图的峰峰值应该占到屏幕垂直高度的70%左右。太小了看不到噪声细节太大了顶部底部削波。一个例子如果10.3125Gbps差分信号的单端幅度是500mV差分摆幅就是1V此时示波器垂直刻度设在100mV/div到150mV/div之间比较合适。还需要打开输入通道的带宽限制到被测信号本身需要的带宽范围型号上通常有20GHz、33GHz可选选和测试需求一致那一档不要选满带宽。满带宽带来的额外本底噪声也会叠加进眼图让眼高变小。3.3 时钟恢复CDR设置锁不住一切白搭示波器进入眼图模式时会让用户选择时钟恢复类型。这是操作过程里最核心、也最容易出问题的一步。实时示波器常提供两类时钟恢复方式PLL类型模拟接收端时钟恢复电路指定一个环路带宽和增益。比如选择PLL 10MHz代表CDR等效环路带宽为10MHz示波器用这个环路从数据里跟踪时钟。适合做带接收端CDR的系统级测试。恒定时钟Constant Clock不跟踪频率抖动直接把线路标称速率作为基准。这种方式适合测发送端本身的抖动比如完全由发射端PLL输出的信号因为它可以如实反映信号相对理想时钟的偏差不受CDR跟踪能力掩盖。PCIe、USB等发送端一致性测试往往用恒定时钟模式。设置时必须确保恢复出的时钟频率和链路标称速率一致尤其要注意是否打开了分频因子误设后眼图会出现两条垂直方向错位的眼睛俗称半眼错位其实是锁到了双倍频率上。3.4 让眼图真正显示出来余辉、彩色分级和采集规模实际操作里有人设置完通道和触发屏幕上却不出现眼图只有一个细线的连续波形——这多半是没把显示模式切到余辉/无限余辉。正确做法是显示类型选Eye部分示波器在采样类型里选余辉时间设置为Infinite无限这样才能累积历史波形打开彩色分级或色温显示让出现频率高的轨迹显示为暖色红黄低频瞬态显示为冷色蓝绿。为什么要看颜色因为眼图最关心的不是轨迹的边界而是密集部分的位置——眼图中心区域的色温越高说明大量跳变集中在这里信号越稳定而边缘出现冷色拖尾说明有少量极端抖动事件这类信息灰度模式根本看不到采集规模上一致性测试标准里通常要求至少捕获100万个UI或者一定数量的波形。实时示波器一般通过设置统计样本数量来限定比如设1e5到1e6个比特。样本太少眼图边界毛刺多测量结果抖动样本太多测试时间拉长如果余晖有残留还可能掩盖瞬态问题工程上先看形状用1e4数量级做最终判读用1e6。3.5 测量项添加眼宽、眼高、Q因子和抖动直方图示波器会自动识别眼图的水平中心眼图中央最宽位置和垂直中心眼图中央最高点位置在此基础上测量眼高和眼宽。选哪个位置很有讲究眼高示波器在眼睛中心最大开口处沿着垂直方向测量上下轨迹之间的电压差单位通常是mV。这个值必须大于接收端灵敏度阈值。以10Gbps背板为例差分眼高一般要求至少100mV以上才稳妥眼宽眼睛中心水平方向开口的UI比例单位可以是ps或UI。单端信号有数据判决时钟眼宽代表可采样的时间裕量Q因子一种信噪比度量Q 垂直开口 / (上支路噪声 下支路噪声)。工程上Q因子越高越好一般要求Q大于6对应的误码率约在10^(-10)量级大于7约10^(-12)要在示波器上添加测量项通常在Measure菜单里找到Eye类的Eye Height / Eye Width / Q Factor部分高带宽示波器还可以同时添加眼图模板测试Eye Mask和浴盆曲线Bathtub显示后面我会说模板怎么用。4. 眼图出来之后怎么判读别被好看的眼睛骗了4.1 眼高眼宽达标不代表万无一失眼高和眼宽是静态裕量指标它们告诉你眼图的物理开口有多大但没有告诉你这个开口在时间轴上稳不稳。举个例子同一个眼宽数值一个来自高频抖动PJ叠加一个来自长期的低频漂移对接收端CDR跟踪能力的影响完全不同。所以判读眼图一定要结合抖动分解结果。绝大多数示波器眼图测量向导里都有抖动分析功能输出四类核心抖动参数TJTotal Jitter总体抖动通常按指定误码率比如1e-12外推RJRandom Jitter随机抖动呈高斯分布无界是制约高速链路的重要因素DJDeterministic Jitter确定性抖动有界包含ISI、串扰、PJ等DDJData-Dependent Jitter与数据码型相关的抖动主要是链路带宽不足引起的ISI眼图上怎么看出这几类抖动注意观察眼图交叉点的厚度交叉点横向越宽总的眼宽越小。把抖动直方图调出来在上升沿和下降沿位置看分布如果是单峰且高斯分布为主那主要是RJ如果直方图出现双峰或多峰说明存在有界的PJ或ISI。4.2 眼图模板测试一类例行的通过/不通过一致性测试标准比如IEEE 802.3、PCIe CEM规范会在眼图的正中间定义一个模板区域模板通常是六边形、菱形或一组矩形。测试时把眼图和模板叠加眼图任何部分的轨迹进入了模板区域测试即失败。模板边界对应的是系统能容忍的眼高/眼宽下限。示波器执行模板测试前要确认两点模板对应标准和速率要选对比如10GBASE-KR和PCIe Gen3的眼图模板完全不同测的通道数是否被正确映射模板测试通常是针对发送端或通道输出而不是接收端芯片引脚模板测试是一票否决项但它有个缺点它只看你压没压边界不看裕量。即使通过模板如果眼图边缘离模板非常近温度一变化或批次一换料就可能挂所以我的习惯是除了模板测试再单独量一次眼高眼宽并记录裕量百分比留足余量。4.3 浴盆曲线和误码率预估把眼图翻译成BER很多示波器能从眼图统计里外推误码率并把结果画成浴盆曲线Bathtub Curve。浴盆曲线横轴是采样相位纵轴是对数误码率两侧高中间低像浴缸的截面中心平坦区域越宽说明采样裕量越大。实际用法很简单在曲线上找目标误码率比如1e-12对应的水平开口宽度这个宽度就是达到指定BER时你能用的眼宽。如果这个宽度足够覆盖接收端采样窗口链路就大概率能跑稳。做这个外推的时候要注意示波器默认假设抖动分布中RJ是高斯分布、DJ是统计有界如果信号里有大量非高斯特性的突发性抖动外推结果会偏乐观。我一般把示波器外推的BER结果当作参考值最终判定还是靠误码仪实测。4.4 眼图交叉点、占空比失真信号眼图交叉点位置也值得关注。理想的差分信号交叉点位于眼高的50%处如果交叉点明显上移或下移说明信号占空比失真DCD严重这通常与发送端的摆率失衡、偏置设置错误或驱动器上升沿和下降沿不对称有关。交叉点位置偏移给接收端造成的直接影响是采样时钟恢复电路可能产生静态相位偏置压缩水平裕量。5. 实测中最容易踩的坑假眼图、假通过、假失败5.1 时钟恢复速率设置错误的双眼错位我见过最多的一个现象是眼图出来两排上下错开像两个半截的眼睛叠在一起。出现这种情况九成是CDR设置里的数据速率或分频系数选错了。比如把速率设成被测信号速率的两倍示波器每半个UI就恢复出一个时钟沿眼图自然被拆成两片。解决方式先把示波器自动查出数据率很多机器有Auto Clock Recovery按钮再手工核对该速率的波特率数值务必精确到小数点后三位。5.2 地线过长造成的假性闭合手持差分探头点测时探头前端有个地线夹如果地线夹的尾巴拖得很长这条地线本身就成了一个电感在GHz频段上会出现严重的振铃。表现是眼图交叉点附近出现明显的上下过冲眼高反而变大但眼宽和抖动指标很差——这种现象本质是探头地环路引入的共振不是DUT的真实行为。解决办法只有一个尽量用SMA连接或焊接式短脚探头如果用夹子夹地也要把地线夹减到最短。当年我在测一块12.5Gbps板卡时用长地线夹测眼图交叉点抖动有600fs换短脚探头后降到220fs差距就是这么明显。5.3 衰减值和探头偏置造成的幅度错误有些示波器探头有10x或4x的衰减比测试前必须先检查通道的探头倍率设置和探头本身是否一致。如果探头是10x示波器设成1x眼图幅度会显示成真实值的十分之一眼高直接判不合格。另外差分探头的偏置Offset要设置在信号共模电压附近否则内部放大器会饱和眼图上下沿被削平形成假平顶。5.4 余辉时间和统计量不够造成的假干净把采样数量设得太少比如只有几百个UI眼图看起来又尖又细边界线像刀刃一样整齐然后你兴奋地认为链路好极了。这种情况多发于快速预览模式下。鉴别方法很简单看一眼屏幕上显示的波形捕获数或者统计样本数如果不到一万个比特这个眼图对抖动和噪声根本没统计意义。做一致性测试的时候我至少积累到1e5个UI若抖动指标波动较大会再攒到1e6再下结论。6. 我平时做SerDes眼图测试的几个进阶习惯6.1 先用PRBS7快速看趋势再用PRBS31做极限压测日常调试没必要上来就跑二十亿比特的PRBS31等待时间长性价比低。我习惯分两步先用PRBS7快速看整体链路有没有明显问题比如通道连续性、焊点是否虚焊、接收端灵敏度是否正常。PRBS7周期短示波器一秒内能积累上百万个比特眼图形状很快稳定链路基本通了之后切换PRBS31或PRBS23做极限测试重点观察眼高和RJ有没有明显下降。如果PRBS7眼图完美如画换到PRBS31眼高掉了50%说明链路里存在严重的低频损耗或游程相关干扰这是高速背板设计中很常见的问题6.2 眼图测量永远和误码率数据对照有示波器外推BER作为预估还不够如果你的板卡有误码仪通道或者FPGA IP内部有误码统计寄存器一定要把两边的结果加起来看。示波器眼图告诉你的是裕量有多大误码率告诉你实际工作有没有错。我曾遇到过眼图测出Q因子很高、模板完美通过但误码仪测到零星误码的情况后来定位发现是接收端CDR的跟踪带宽太窄导致的偶发失锁眼图上根本看不出来因为示波器恢复时钟的带宽和接收端实际带宽不完全一致。6.3 温度电压边角条件下的眼图测试正规的硬件验收流程里眼图测试不能只在常温常压下做一次。链路衰减受温度变化很明显尤其是有源驱动器和无源PCB走线温度升高后介质损耗和导体损耗都会增加眼图会变差。我会在最低温和最高温两个边角重测一遍眼图主要看眼高和眼宽的变化幅度。如果高温下单测眼宽比常温收窄超过20%说明链路裕量可能不够需要调整预加重或均衡参数。6.4 把示波器测得的下冲振铃和仿真对照眼图里交叉点处的过冲和下冲也可以用TDR或者S参数仿真来预先估计。我自己的习惯是先跑一遍通道的S参数仿真看看在目标速率下回损和插损的频响曲线再上示波器实测眼图。如果仿真显示某个频率点有强烈的谐振峰但实测眼图却看不到明显振铃那多半是测试系统探头、焊点、电缆的带宽把谐振滤掉了——这种被仪表掩盖的问题后期上系统反而会暴露。所以眼图测试报告里最好附一版测试系统本身的带宽和频响校正记录给别人看的时候也更有说服力。6.5 记录测量环境和测试点位置最后一条经验比较琐碎但很实用每次出眼图测试报告我都会在文档里记录测试时的温度、电压、使用的PRBS阶数、示波器型号和带宽档位、探头型号、测试点在板上的物理位置比如是否靠近发送端、差分过孔之后还是连接器之后。这些信息对后续复测和多人协作非常重要。眼图是一个受测试装置影响很大的测量项同样一块板子在两套不同的测试系统上测出的眼高可能差20%以上可追溯的记录能省去大量扯皮时间。眼图测试这件事本质上是用尽可能贴近极限的信号加上正确设置的测量系统去量化一条链路在真实工作环境里的余量。PRBS、示波器、CDR这些工具组合起来并不复杂但每一个环节的细节和误操作都会直接影响你拿到的眼图是否真实可信。我做完测试流程之后最大的感受是眼睛图不是一次性测出来就完事的它的价值往往体现在你换了PRBS阶数、改了CDR设置、换了探头接法之后的那几次对比里。希望这套从原理到操作再到判读的完整流程能帮你少走几步我走错过的弯路。
返回列表