ARTICLE DETAIL

资讯详情

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

PCIe电学规范第8章拆解:从链路预算到信号完整性实战

PCIe电学规范第8章拆解:从链路预算到信号完整性实战 做PCIe硬件或者信号完整性工作的同行几乎都经历过这样的时刻项目从Gen3升到Gen4仿真一跑链路就发现眼图余量不够翻PCIE SPEC第8章想找依据结果被一堆电压范围、抖动分量、插损回损的表格和曲线砸得头晕。第8章在整本BaseSpec里号称“电学指标坟场”它不关心TLP怎么封装也不管LTSSM怎么跳状态但它决定了信号从一颗芯片的引脚跑到另一颗芯片的引脚时哪些参数由谁负责、做到什么程度才算合格。这篇是PCIe Electrical PHY系列的第4篇我打算把这一章的指标体系从头到尾做一个拆解式讲解顺带把仿真和调试过程中真正用得上的判断方法整理出来。我见过的工程师对第8章的用法通常分成两种一种是等板子回来了、示波器接上才发现某个指标不对再去翻规范这时候基本只能靠调驱动强度、改串阻、碰运气另一种是在方案设计阶段就把第8章的参数当成链路预算的一部分来分账——发射端分多少、通道分多少、接收端留多少事先算清楚。这篇文章显然更希望你成为第二种人。下面我会顺着发射端指标、接收端指标、通道指标、参考时钟、一致性测试这条主线往下走每一块都解释清楚“这个数字为什么存在”“它和相邻参数怎么互相约束”再补一些专用测试里容易踩的坑。1. 第8章的本质一条差分链路上的“责任划分书”把第8章通读一遍之后你会发现这章里的所有指标都在干同一件事为链路中的每个环节划定责任边界。它不像数据链路层那样描述“怎么做”而是像合同一样描述“谁要做到什么程度”。只要理解了这套分账逻辑后面看任何一张参数表都不会再觉得散乱。1.1 五类指标各有各的“管辖范围”第8章从内容上可以粗略分成五块发射端TX指标、接收端RX指标、通道指标、参考时钟指标以及把前面四块串起来的一致性测试定义。这五块不是并列清单而是一条完整信号链上的五道工序。就好比一套广播系统TX是主持人负责把话说清楚声音够大、口齿清晰通道PCB走线、连接器、线缆是传声环境要求它别太嘈杂、别把原话扭曲太多RX是听众负责在信号已经很烂的情况下还尽可能听懂而参考时钟是双方的“节拍器”要求大家都按基本一致的节奏说话一致性测试则是裁判拿同一把尺子去量所有产品。指标类别责任主体管的事典型参数TX发送端芯片信号从引脚发射出去时的初始质量差模电压、去加重、TX眼图、TX抖动RX接收端芯片在通道衰减和噪声之后仍能恢复数据RX眼图、抖动容限、均衡能力Channel互连链路两点之间允许损耗和干扰的预算插损、回损、串扰、模式转换Refclk/SSC时钟源与两侧芯片收发双方频率与相位协调100MHz精度、抖动、扩频范围Compliance测试方与被测方统一的测量方法和判定规则测试点、参考均衡器、夹具要求理解了这张表的对应关系你再去看第8章里的某一张曲线图第一反应就应该是这个参数管的是链路哪一段它和前后段是怎么衔接的而不是急着去记数字。1.2 TP1、TP2、TP3测量点决定了你看问题的角度第8章里反复出现的TP1、TP2、TP3不只是三个物理位置它们是责任边界的标记线。TP1在发送端芯片的封装引脚处TP2在接收端芯片的封装引脚处TP3通常指板级连接器位置。同样一个眼图你在TP1看看到的是发射端本身的素质在TP2看看到的是信号被通道“虐待”之后剩下的残骸在TP3看则是板级互连段的责任范围。一致性测试里选哪个点等于在回答“这一项到底考核谁”。BaseSpec的芯片间电气指标主要用TP1和TP2做参考而CEM规范由于面向插卡和主板的配合很多测试会在金手指也就是TP3附近做并且把从连接器到芯片之间的走线预算单独拿出来约束。很多初学者的困惑就来自这里明明在TP1量出来的眼图又大又漂亮怎么到了TP2就闭合了这不是测试者弄错了而是TP1到TP2之间本来就包含了通道的全部损耗预算。你先把“量的是谁”这个问题搞清楚再谈余量才是有意义的。1.3 为什么指标都是“范围”而不是“定值”细看第8章的表格你会发现绝大多数电参数都给出的是一个范围而不是一个精确值。比如TX差分输出电压是典型值800mV到1200mV之间去加重也有-3.5dB和-6dB两档可选。这不是规范偷懒而是因为三个原因第一芯片厂商的工艺不同PVT工艺、电压、温度变化会让同一款驱动器的实际摆幅有先天差异规范只能框定一个可接受的窗口。第二链路需要权衡同样的TX摆幅放在短走线上可能过大、加剧串扰放在长走线上又可能不够用所以规范把选择权留给设计者。第三后端指标是一个系统问题比如发射端稍微小一点接收端均衡器做得强一点整条链路依然可以合格。所以读第8章的正确姿势是不要孤立地看某个参数有没有达标而是把TX、通道、RX看成一个互相补偿的整体。这也是后面几节我会反复强调的“预算思想”。2. 发射端TX指标电压摆幅、去加重与眼图模板的联动发射端是整个信号链的起点第8章对TX的约束也是最明确的。这一节我们把TX相关的三个核心概念讲透差模输出电压、去加重/预加重、眼图模板与抖动分解。2.1 差模输出电压为什么是0.8V到1.2V差模输出电压VTX-DIFFp-p指的是差分对两根线上电压差的最大值。PCIe是差分信号A线上送正相信号B线上送反相信号接收端只关心A减B的差值。这种做法的好处是外界噪声如果同时耦合到两根线上差值里会自然抵消掉这就是共模抑制。规范把TX差模电压的典型范围定在800mV到1200mV这一档原因前面也提过是让发射端在“信号够大”和“别太吵”之间取平衡。信号太小经过通道衰减之后到了接收端可能低于灵敏度门限信号太大不仅功耗上升还会加剧对相邻lane的串扰同时带来额外的EMI辐射。实际项目中长走线场景我会倾向把驱动强度配高短走线场景则配低一点减少串扰和过冲。还有一个容易被忽略的点TX电压摆幅不是恒定的。开了去加重之后连续相同比特的幅度会被压低真正摆出去的波形是一高一低的所以规范里描述TX摆幅时会区分“非去加重电平”和“去加重电平”。这一点在测眼图时特别重要如果示波器上看到的不是高低两层清晰电平先别急着怀疑通道得检查TX的均衡配置是不是被训练算法调到了一个你不认识的预设上。2.2 去加重与预加重先给信号“打个预防针”去加重De-emphasis是理解PCIe TX指标最核心的概念。通道的本质是一个低通滤波器高频成分也就是快速翻转的边沿在走线里衰减得比低频成分长时间不变的那串1或0更厉害。可以这么理解连续发一串“111111”时接收端看到的电平会渐渐被“充”到接近高电平突然来一个从1翻到0的跳变这个跳变到来时的摆幅其实是被上一串1拉偏了的所以接收端看到的跳变幅度比发射端原本发出的要小很多。去加重的思路就是反着来我在发射端故意把连续相同比特的幅度压低一点这样一来跳变发生时接收端看到的高低电平差反而更接近理想值。PCIe Gen1和Gen2时代规范给出了-3.5dB和-6dB两档去加重默认推荐-3.5dB。到了Gen3及以后发射端均衡升级成了一组“预设”Preset从P0到P9那套编号每个预设规定了前标量Pre-cursor和后标量Post-cursor的比例。链路训练时两端会互相协商用哪组预设这也是为什么PCIe的均衡调整是个自适应过程而不是板子贴完就焊死的。实测经验是这样如果发现长距离链路的接收端眼图上下沿不对称往往是去加重开得太浅如果发现眼图中心区域出现了明显的“内陷”或过冲又可能是预冲补偿过度。调试时最好从规范推荐的默认预设开始再用接收端的均衡训练结果反推别直接一上来就拉满。2.3 TX眼图模板与抖动分解有了电压和均衡发射端整体的“画质”最终要用眼图来验收。第8章定义了TX眼图模板一个在时间和电压两维上都标了禁区的菱形框。测试时把采集到的所有跳变沿堆叠在一起画成眼图如果波形任何部分闯进了模板的禁区这一项就不合格。眼图模板的意义在于把“好不好看”变成了一个可量化的Pass/Fail判定。但注意模板里的水平方向并不是随便画的它和抖动指标强相关。PCIe把抖动分解成确定性抖动DJ和随机抖动RJ其中DJ又包括占空比失真DCD、数据相关抖动DDJ和周期性抖动PJ。规范里提到抖动时经常带一个“BER1e-12”的前缀这是关键——随机抖动是高斯分布理论上没有绝对的上限所以总抖动TJ不能简单地用峰峰值描述而是要用统计模型外推出对应误码率下的抖动边界。实测中最容易犯的错是用示波器上抓了几十万个UI的眼图就去和模板比。几十万个UI远不足以覆盖BER1e-12对应的统计尾巴正确的姿势是使用示波器自带的一致性测试软件或者直接用误码仪配合眼图分析工具在足够长的时间窗里完成统计。这个细节决定了你的“眼图余量3%”到底是真余量还是测量噪声换来的假数据。3. 接收端RX指标均衡、抖动容限与“参考均衡器”衡量下的真实能力接收端是信号链的最后一棒。发射端和通道已经把预算用得差不多了接收端要想把数据救回来靠的是均衡器这也是第8章RX指标里最值得深挖的内容。3.1 CTLE与DFE听力补偿的分工接收端均衡主要有两种手段CTLE和DFE。CTLE全称连续时间线性均衡器本质是一个模拟高通滤波器把高频分量额外放大。它的优点是结构简单、不引入时序决策但缺点是它放大信号的同时也会放大噪声所以CTLE的峰值增益不能无限制加。DFE全称判决反馈均衡器思路完全不同它根据前面判决出来的是1还是0把已经知道的后标干扰量从当前信号里减掉。因为减掉的是已知的码间干扰它不会像CTLE那样同步放大噪声代价是存在误码传播的风险——一个bit判错后面几个bit的补偿也跟着错。PCIe在Gen3时代引入的接收端结构主流就是CTLE加1阶DFEGen4、Gen5为了应对更大的通道损耗DFE阶数和CTLE的调整范围都在增加。这给了硬件设计者一个重要启示接收端的“能力”不是在示波器上测出来的而是由这套均衡架构决定的。做芯片选型时不要只看接收端灵敏度多少mV要问清楚CTLE可调峰值范围、DFE阶数、训练算法收敛速度这些参数才是长链路项目的真实瓶颈。3.2 抖动容限曲线低频抖动为什么给那么大抖动容限是接收端最重要的一张Pass/Fail曲线它描述的是在输入信号上人为叠加一定幅度和频率的正弦抖动接收端能否仍然保证误码率低于规定门限。把这张曲线画出来你会发现低频部分的抖动幅度给得特别大能到零点几个UI甚至更高然后随着频率升高容限逐渐下降到高频部分又稍微回一点。这个形状和接收端CDR时钟数据恢复的工作方式直接相关。CDR本质上是一个窄带跟踪环它对缓慢变化的相位偏移有很强的跟随便能力所以低频抖动对它来说“不算事”即使幅度很大也能追得上当抖动频率接近CDR环路带宽时跟踪能力开始变弱容限就掉进谷底再往上抖动频率高到不影响采样判决窗口容限又会略回升。调试时如果发现某条链路在特定抖动频率点附近总是丢包不要一头扎进PCB走线里找问题先回头查接收端PLL的环路带宽、参考时钟的相位噪声以及电源纹波是否落在了这个敏感频段。这类问题往往不是“通道变差了”而是“接收端在某个频点上变聋了”。3.3 参考均衡器与RX灵敏度一致性要怎么“对齐围观”接收端有个让初学者很困惑的地方每个厂家的接收机内部电路不同CTLE和DFE的配置也不一样那规范怎么统一考核“接收端合不合格”答案是用一个“参考均衡器”。第8章定义了一个标准化接收机模型包括固定的信道负载、一条参考CTLE增益曲线以及一个指定阶数的参考DFE。测试时把接收端芯片换成这个参考模型用规定的测试通道和被注入的抖动去激励它再量参考模型输出端的眼图和误码率。这样做最大的好处是公平大家用同一套标准来比较接收能力而不受各芯片内部实现差异的影响。这也解释了为什么接收端指标里会有“参考通道”的说法。做RX一致性测试时信号不是直接怼到芯片引脚上就完事而是要经过一段规范定义的有损通道让接收端面对近似真实应用的恶劣条件。做系统设计时你最好向芯片厂商要他们确认过的“接收端均衡能力参考曲线”再对照你实际链路的插损来决定要不要加转接驱动器或重定时器这是比看灵敏度数值更靠谱的选型依据。4. 通道指标插损、回损与串扰预算是怎么被“瓜分”的通道是PCIe链路里最“身不由己”的一段它的损耗和干扰直接决定了前端TX要花多大力气补偿、后端RX要配多强的均衡。第8章对通道的约束本质上是在告诉你一段走线到底“烂”到什么程度还能被原谅。4.1 插损预算从“攒盒子”到“拆盒子”的链路设计插损就是信号从A点走到B点后幅度衰减了多少专业上叫SDD21。PCIe速率越高工作频点越高通道插损越吓人。业内常说的预算大致是Gen3时期系统级预算在20dB4GHz附近Gen4到了23dB~28dB8GHz这个量级Gen5动不动就是30dB以上16GHz。当然具体数值要看你用的控制器和PHY IP的设计指南这里给的是工程经验区间。插损从哪来主要四块PCB介质本身的损耗、铜箔表面粗糙度带来的高频损耗、过孔残桩引起的谐振损耗、以及连接器和封装引脚的贡献。做预layout时我会先用叠层信息估算单位长度的损耗常数乘上总走线长度得到第一版预算看看还剩多少余量给via stub和连接器post-layout之后再从S参数里提取真实插损曲线逐段核对。这里要强调一个认知插损预算不是“走线越短越好”这么简单通道是有最小长度概念的特别是Gen3以上如果走线太短反射和符号间干扰会以另一种方式出现所以规范里对通道的要求既有最大损耗上限也有对阻抗连续性的要求。设计时不要只压长度更要把阻抗匹配和过孔结构做干净。4.2 回损与串扰反射和“隔壁老王”都要算账插损管的是“信号变小”回损管的是“信号反射”。当差分阻抗在走线某处突变一部分能量会反弹回发射端反弹的能量会和后续到达的比特叠加造成二次符号间干扰。第8章里回损用SDD11曲线描述同时还会限制差分转共模的转换量因为反射产生的共模分量是辐射和串扰的重要来源。串扰则是相邻lane之间的“隔音问题”。一条主线路上跑着数据旁边几条lane也同时在跑电磁耦合会让隔壁信号串进来。PCIe规范里用PSXT功率和串扰和ICR综合串扰比这类指标来约束。ICR的意思是把期望信号强度与串扰噪声强度做个比值业内常见要求是希望ICR在20dB以上串扰折算成有效眼高之后不能把预算吃掉太多。在实际调试中最容易被忽略的是多lane并发场景。单lane测试时信号品质看着很好一旦8条lane同时全速跑眼图明显恶化这种case八成就是串扰或同步开关噪声的问题。所以仿真阶段一定要做多lane耦合仿真测试阶段也要跑满带宽并发才能暴露这类隐性风险。4.3 设计中的常见认知偏差差分等长、85Ω与“看起来好看”关于通道网上问得最多的问题之一是发送差分对内部需不需要严格等长我的答案是需要控但别把它当成唯一指标。差分对内两根线的长度差会直接转换成共模分量规范里对模式转换是有严格限制的所以等长当然要做。但同时等长做好了不代表通道就合格插损、回损、串扰每一项都可能成为短板。我见过有人为了等长在走线上画了一堆蛇形绕线结果蛇形线带来的耦合和时延偏差反而比不等长更糟。按PCIe规范要求差分对内偏斜一般控制在几mil以内足够没必要强迫症式地追求绝对相等。另外一个大众误区是阻抗。很多人一提到差分线就是100Ω但PCIe在Gen3以后的规范方向是85Ω差分阻抗这主要是为了改善串扰和优化连接器设计。做板子之前一定要先跟芯片厂商确认目标阻抗别拿100Ω的老经验直接套Gen4、Gen5设计。还有一点“看起来好看”的误导仿真软件里画出来的眼图如果只包含差模信号的理想激励通常会比实际情况漂亮得多。真正可信的通道仿真一定要包含封装模型、串扰源、电源噪声和参考时钟抖动否则仿真余量全是乐观误差。5. 参考时钟与SSC-5000ppm的“心率波动”到底由谁兜底参考时钟在PCIe系统里的地位就像合唱团的指挥。第8章对参考时钟的要求看似简单——一个100MHz的方波/正弦波——但它背后的频率精度和扩频机制直接影响CDR能否锁得住、数据能否不间断地传下去。5.1 100MHz ±300ppm为什么定在这个精度PCIe要求参考时钟频率为100MHz总频率精度在±300ppm以内。这个数值是怎么来的300ppm在16GT/s下意味着约4.8MHz的频率偏移这对CDR来说是可以接受的跟踪范围同时普通晶振加PLL要稳定做到±300ppm并不难成本可控。所以这个数不是拍脑袋定的是“接收端能不能锁住”和“晶振做不做得到”之间的妥协。设计时要特别注意参考时钟的jitter和频率精度是两回事。精度差导致的是频率偏差CDR能慢慢纠正而jitter尤其是高频jitter直接叠加到数据采样时刻上会压缩眼图裕量。很多项目里遇到的问题不是100MHz频率超了300ppm而是这100MHz上有开关电源带来的纹波或者被旁边的clock走线串扰污染了。5.2 SSC扩频过EMI的招数由弹性缓存来收拾SSC扩频时钟是为了过电磁干扰测试而引入的。原理很简单把100MHz的时钟按一个三角波规律从标称频率向下扫最多偏移-0.5%也就是-5000ppm。频率在变能量就不会集中在一个单频点上而是被摊开到一个小频带里EMI的峰值就降下来了。但代价也很明显参考时钟频率一直在变发射端和接收端的速率也就一直在变。如果收发双方用的是同一个参考时钟两边同步变化还好如果各用各的时钟接收端就要面对一个持续漂移的频差。这时弹性缓存Elastic Buffer就出场了。弹性缓存的原理可以理解成一个带调节阀的水池发送端按时钟节奏往池子里注水接收端按自己的本地时钟节奏往外放水。两边频率略有差异水位就会慢慢升高或降低。为了防止水池溢出或抽干PCIe协议规定发送端要周期性插入SKP有序集就是一组特殊字符接收端检测到水位偏高就悄悄删掉一个SKP水位偏低就悄悄补一个SKP相当于往流水线上塞进或抽走一个“缓冲垫块”让两侧时钟始终能对上。这也是为什么PCIe会有“两个SKP之间最多隔多少个symbol”的约束——缓冲深度有限需要及时补水或放水。理解了这个机制再回头看网上那句“别再被时钟频偏搞懵了”就不难了。频偏不可怕可怕的是你不知道弹性缓存怎么处理它以及SKP有序集的插入/删除策略会被哪些配置影响。调试时如果看到链路偶发性丢包怀疑时钟频偏先抓一下接收端弹性缓存的水位状态和SKP删除/插入的触发率比盲目换晶振更有效。5.3 时钟架构CC、SRIS、SRNS各有各的账要算PCIe系统里参考时钟的分配方式主要有三种规范里对它们的电气约束和测试要求不完全一样。时钟架构含义优点代价Common RefclkCC两端共用同一个100MHz频差几乎为0实现最简单时钟走线要跨板级分布抗噪要求高SRIS两端各自参考时钟各自带独立SSC省掉长距离时钟走线/时钟芯片频差由弹性缓存兜底对缓冲深度要求高SRNS两端各自参考时钟独立而不扩频成本最低灵活弹性缓存和CDR要承受更大的静态频差在做服务器主板或者多PCIe设备互连时时钟架构的选择直接决定是否能省一颗时钟缓冲器。SRIS现在在NVMe、显卡这类自带振荡器的设备上很常见因为设备端不必再接收主板的100MHz。选择SRIS时务必确认端点芯片的弹性缓存深度足够覆盖两端SSC相位差的最大范围否则就会出现长时间运行后偶发误码的诡异现象。6. 从Spec到实测一致性测试里那些“卡住”人最久的坑前面讲的是“理论分账”这一节落地到实际操作。一致性测试看起来是拿设备跑一下、出份报告实际上里面每个细节都可能在替你挖坑。我把这些年遇到最多的三类情况和一个固定评估流程放在这里供你参考。6.1 测试点与夹具先确认“量的是谁”很多人在实验室里折腾半天测不过最后发现根本不是板子的问题而是测量链路本身就没搭对。PCIe一致性测试对测试点有严格定义BaseSpec面向芯片级的是TP1/TP2而CEM规范面向插卡时会要求在金手指处测量这时候必须用规范指定的测试夹具。夹具和探头的质量决定了你在测“真实信号”还是在测“夹具的反射”。我见过不止一次SMA连接器焊接不良、测试线缆弯折半径超标导致高频段回损恶化最后眼图模板失败的case。正确的做法是测量之前先用通过式校准件或者2x-Thru方式把夹具和线缆的S参数提取出来做去嵌入处理确保你看到的波形是去掉测试装置影响后的信号。夹具都没校准后面全是白测。6.2 三个“看着合规却过不了测试”的经典现场第一类TX眼图在某个边沿处恰好蹭到模板禁区。先别急着怀疑芯片驱动强度优先检查测试夹具和探头的接触点阻抗以及差分探头的前端地线长度。很多时候只是接触不良造成的高频反射被叠加进了眼图。第二类RX抖动容限在某个中间频段掉链子。排查重点放在参考时钟的纯净度和接收端PLL环路带宽上。我曾经遇到一个案例问题根源是REFCLK旁边过了一组电源走线开关纹波恰好落在PLL带宽附近导致周期性抖动被放大器放大。把时钟走线挪开、做好包地之后容限立刻恢复。第三类单lane测试全过多lane并发测试眼图闭合。这是最典型的串扰和同步开关噪声问题。单lane测试滤掉了真实使用场景所以PCIe一致性测试发展到后面越来越强调多lane同时激励、加扰码的测试条件。做板级验证时一定不要只跑single lane的“好看报告”要主动加满应力条件去看余量。6.3 可落地的PHY评估流程从选型到量产怎么用这一章如果你要在一个新项目里把第8章真正用起来我建议按这四步走首先是选型阶段把候选芯片的TX摆幅、去加重档位、RX均衡能力、参考时钟要求做成一张对比表和你实际链路预算做匹配。这一步能过滤掉一半不合适的器件。其次是设计阶段用仿真提取整条链路的S参数把第8章里的插损、回损曲线作为目标曲线卡控每一段走线和连接器。同时利用IBIS-AMI模型把发送端和接收端的均衡行为纳入时域仿真看最终眼图余量。然后是Bring-up阶段上电后的第一件事永远先量参考时钟的实测频率和抖动再量TX眼图模板最后才做接收端的抖动容限和BIST误码测试。顺序反了你很难判断问题出在发送端还是接收端。最后是量产阶段把一致性测试脚本固化下来做抽样监测。PCIe链路会随着温度、老化、连接器磨损而变化固定周期的回归测试能帮你提前看到余量衰退的趋势。我个人在做过的项目里体会最深的一点是“别等到板子回来才想起第8章”。这一章所有的数字本质上都是给设计阶段用的预算建议。你在原理图评审时如果能拿着TX摆幅、去加重档位、通道插损、参考时钟抖动这四组数字对着checklist过一遍后面实验室里的意外会少一大半。哪怕不能逐条背下规范只要建立起“每一段链路都有责任边界、每一个指标都在为某一段边界服务”的意识你就已经比大多数只会看眼图漂亮不漂亮的人往前走了一大步。
返回列表