ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PCIe高速设计中AC耦合电容位置之争:从PCIe 1.0到6.0的演进与实战

PCIe高速设计中AC耦合电容位置之争:从PCIe 1.0到6.0的演进与实战 做PCIe信号完整性这些年被问得最多的一个问题其实不是“PCIe 6.0什么时候量产”而是“AC耦合电容到底该放靠近发射端还是靠近接收端”。这个问题看起来小但几乎每次评审都能吵起来而且随着PCIe从1.0一路走到6.0答案本身也在变。我见过不少项目因为电容位置没想清楚高速率训练上不去最后不得不改版。这篇文章就把这条线索完整聊透AC耦合电容起了什么作用为什么会有“位置之争”以及PCIe各代际里的信号补偿技术是怎么一步步把这个问题从“随便放”逼成“必须较真”的。1. 为什么一颗0.1微法的电容能吵这么多年1.1 先说清楚AC耦合电容去掉的是哪种“直流”高速差分信号在PCB上跑的时候驱动芯片和接收芯片的共模电压往往不一样。PCIe这类接口通常采用电流模式驱动器发送端输出的信号是“摆在一个发射极共模电平上的交流差模信号”接收端则有自己的接收偏置网络期望输入信号能落在自己设定的输入共模范围里。两颗芯片直接直流相连只要共模电压不匹配就会出现静态电流严重时甚至烧接口。AC耦合电容就是串联在差分信号路径上的一个高压通、直流断的元件。它把发送端的直流分量隔掉只让交流分量穿过再由接收端本地的偏置电阻网络把信号中心电平“拉”到接收器需要的共模电压上。用人话说就是发送端说话接收端听电容是中间那道只能过声音、不能过电线的门。这个元件还有个隐藏任务PCIe链路训练里有一个步骤叫接收检测Receiver Detection发送端要在极短时间内通过检测远端是否有电容负载来判断对端口是否存在。如果AC耦合电容缺失接收端呈现的直流阻抗完全不一样训练流程会直接判定链路无效。所以它不只是信号完整性元件事还参与链路建立过程。1.2 两派设计师的核心分歧既然要串一颗电容那就必然出现一个问题这颗电容离发射端近一点还是离接收端近一点支持“靠近发射端”的人认为发射端驱动器的输出阻抗通常较低电容产生的反射传到发射端后会被部分吸收不至于形成在接收端可见的大幅回波。支持“靠近接收端”的人则认为接收端芯片附近的封装参考、焊盘拓扑相对复杂电容放得近点可以把外部长走线先隔离掉至少能保护接收端不被上游直流偏置干扰。两边都拿得出自己的信号完整性仿真结果而且在小板互连、短走线、低速率的时候两种放法确实都能跑得很好。于是这事情就变成了一种“玄学”经验性很强规范又留了口子导致每家公司、每个硬件小组都有自己的内部约定。1.3 规范原文只说了“建议”没说“必须”PCIe Base Spec对AC耦合电容的位置描述历来都是建议性的。它明确要求电容必须存在于发送端和接收端之间的通道里但并没有把“必须贴着发射端”写成强制条款更多是说“recommended near the transmitter”。这意味着从规范层面看只要链路总体的回波损耗、插入损耗、串扰等指标满足预算电容放中间、放靠近接收端理论上都是允许的。问题恰恰出在“理论上允许”这句。链路工作良好时没人关心位置链路裕量不够时位置就成了背锅侠。而要真正解释为什么“靠近发射端”是更稳妥的工程选择必须把PCIe每一代速率下的信道损耗和均衡能力都拆开看。2. PCIe 1.0/2.0时代低速率掩盖了位置问题2.1 2.5GT/s和5GT/s下的裕量有多奢侈PCIe 1.0的时代单通道速率是2.5GT/s编码用的是8b/10b信号基频也就1.25GHz。PCIe 2.0翻倍到5GT/s基频2.5GHz。这个频段下普通FR4板材的插入损耗还不算可怕几英寸内的走线衰减相当温和回波损耗预算也远没有后面那么紧张。更重要的是2.5GT/s和5GT/s的单比特时间足够长一个UI是400ps或200ps。信号经过电容产生的轻微反射、振铃以及由电容和偏置电阻组成的高通网络带来的低频跌落都会被淹没在本来就很大的眼图裕量里。当时我们做很多卡在1.0/2.0跑不稳原因基本出在电源、时钟或连接器虚焊几乎没人会怀疑到AC耦合电容头上。2.2 位置和容值在低速时代的“任意行为”正因为裕量太大低速时代AC耦合电容的位置就真的可以“随便放”。放在芯片旁边、连接器旁边、中途一个测试点旁边只要没有搞出明显直角走线和超大焊盘都能通过一致性测试。容值也是五花八门0.1uF最常见但有人用0.22uF有人用0.01uF甚至有的老设计用1uF。1uF这种大电容的问题当时就存在只是没暴露电容值与接收端偏置阻抗构成了一个高通滤波器电容越大低频截止频率越低对长连续码流的水平跌落影响越小但电容越大接收检测时充放电时间越长加上封装寄生电感增大高频阻抗变差。低速下这个矛盾被淹没了到了高速时代才变成真正的坑。2.3 早期板卡设计习惯从何而来那个年代形成的一个普遍习惯是如果是标准PCIe插卡Add-in Card主板和板卡各自在靠近自己连接器的地方放电容如果是两个芯片直连的板内互连大家会顺手把电容放在接收端附近理由是离接收芯片的偏置电阻更近直流偏置链路更容易控制参考设计也经常这么画。这个习惯一直影响到后来的很多硬件工程师导致PCIe 3.0以后出了问题还按老经验排查方向就错了。其实从传输线理论看低速时代“靠近接收端没问题”很容易理解反射波的时延和幅度都小于判决裕量的容忍范围接收端的均衡器哪怕是简单去加重也足以纠正。但当时没多少人意识到随着速率上升这个裕量会以几何级数消失。3. PCIe 3.0/4.0时代均衡器登场电容位置开始“咬人”3.1 128b/130b换代和8GT/s/16GT/s带来的信号代价PCIe 3.0是转折点。编码从8b/10b改到128b/130b效率从80%提到98.46%单通道速率推到8GT/s基频4GHz。PCIe 4.0又翻倍到16GT/s基频8GHz。这个频段下FR4的趋肤效应和介质损耗把信号高频分量削得很厉害眼图张开度肉眼可见地变差。128b/130b编码的另一个影响是低频特性变了。8b/10b通过每10个比特最多连续5个相同bit来保证直流平衡低频能量偏上128b/130b用扰码保证随机性但仍可能产生比5个bit更长的同电平游程频率成分更靠近直流。于是AC耦合电容的低频截止特性第一次有了实际威胁一旦电容值偏小或偏置网络时间常数不足长游程出现时信号基线就会“掉下去”形成基线漂移接收端必须消耗更多均衡器增益去补偿。3.2 Tx预加重/去加重与Rx CTLE/DFE的分工逻辑要应对高频损耗PCIe 3.0/4.0时代形成了明确的“两端补偿”架构。发送端使用多抽头FIR均衡器常见是前游标抽头、主游标抽头和后游标抽头的组合也就是很多人口中的pre-cursor和post-cursor。它的基本思路是提前或推后若干比特生成反向码间干扰来抵消信道的拖尾和振铃相当于给信号做个反向整形。接收端则用连续时间线性均衡器CTLE拉高高频增益再用判决反馈均衡器DFE消除长尾ISI。CTLE有点像音响里的高音调节把信道压掉的高频补回来但它会把噪声和高频串扰一起放大所以只能放在前级配合DFE做二阶处理。DFE的思路更聪明它不再简单放大信号而是等一个比特判决完成后用判决结果去反推信道对这个比特后续造成了多少干扰再在下一个比特到来前把这个干扰减掉。这种“自适应反馈”对非线性损伤非常有效。这套组合的代价是训练复杂度上升。PCIe链路训练里新增了均衡器协商阶段发送端和接收端要反复交换测量结果找出一组让眼图裕量最大的系数。如果硬件上AC耦合电容造成了额外的低频跌落或反射这些补偿资源就有一部分被白白吃掉留给真正信道损伤的裕量自然减少。3.3 电容位置为什么从“习惯问题”变成“性能问题”PCIe 3.0/4.0的高速化让电容位置问题突显出来原因可以归结为三点。第一高频反射可以叠加在接收眼图上。电容本身的焊盘、本体和过孔会产生几十毫欧到几百毫欧的阻抗不连续。这种不连续产生的反射如果距离接收端很近时延就很短反射会混进主信号波形里相当于把主信号的边沿波形“揉皱”了。距离接收端越近这种干扰越难用DFE单独处理因为它不再表现为清晰的延迟脉冲而是嵌入在判决时刻附近的振铃。第二发射端低阻抗对反射有抑制作用。如果把电容放到靠近发射端反射波要先回到发射端窗口被驱动器输出阻抗多次反射吸收实际回到接收端的二次反射幅度大幅下降。更关键的是即使还有残余反射它在接收端视野里是跟随主信号后很短时间到达的从均衡器角度看更像主波本身形状变了一点接收端可以通过调整主游标和第一后游标来纠正而不会变成难以处理的远端回波。第三低频droop与位置相关。电容后面的走线如果长它的分布电容、信号返回路径都会和AC耦合电容串在一起影响等效低频截止点。电容放得离偏置网络太远偏置网络恢复共模电平的时间变长长游程后的基线回归就更慢。这在系统层面会造成一个很讨厌的现象PCIe 4.0链路短距离能跑稳但把板卡插到不同主板上同样的速率却时好时坏。因为主板侧和板卡侧的电容位置差异改变了整个链路的低频响应。3.4 低速截止频率、droop与均衡器裕量的联动这里给一个具体参考。假设差分走线特征阻抗100Ω接收端等效差分负载阻抗约100ΩAC耦合电容如果取0.1uF高通截止频率大约是f 1 / (2π × 100 × 0.1e-6) ≈ 16kHz。这个截止频率看起来比信号基频小得多似乎无所谓但对128b/130b之后的扰码流来说低频分量能量虽然少却实实在在存在。更麻烦的是电容不是理想元件。X7R这种陶瓷电容在直流偏压下容值会下降0402封装在偏压30%时可能只剩标称值的60%甚至更低。加上PCB焊盘、过孔寄生电感有效截止频率比理论值高一个量级。一旦接收端DFE的增益已经接近极限多出来的droop就直接变成误码。很多PCIe 4.0链路在25℃能跑到Gen4一到高温或长期工作就自动降速到Gen3排查到最后发现是AC耦合电容实际容值不足低频droop把接收端裕量吃光了。这种情况在PCIe 3.0之后变得越来越普遍。4. PCIe 5.0/6.0时代PAM4信号把位置之争推向了极限4.1 32GT/s NRZ的挣扎和64GT/s转向PAM4的必然PCIe 5.0把NRZ推到32GT/s基频已经到16GHz这时候FR4上加长走线几乎“寸步难行”。哪怕用低损耗板材几英寸内也能看到明显的眼图闭合。工程师靠更高阶DFE、更强的发送端FIR艰难维持但NRZ在功耗和信噪比上已经走到尽头。PCIe 6.0转而采用PAM4调制一个符号可以传2个比特单通道原始速率标称64GT/s实际是32GBaud的PAM4信号。PAM4的眼图有三个电平堆叠垂直裕量只有同速率NRZ的约三分之一而且信号高低电平等差关系一旦受到低频漂移影响三个眼睛的开度会一起恶化。这意味着以前在NRZ下可以忽略的低频droop、回波和多径反射在PAM4下都可能成为链路不可用的直接原因。4.2 反射、回波损耗与小尺寸电容的寄生之战PAM4对反射更加敏感因为反射叠加在主信号上时会把本来就不大的眼宽进一步压缩。而AC耦合电容恰恰是一个不可避免的反射源。电容的封装尺寸、焊盘宽度、过孔stub都会在GHz频段形成寄生电感寄生电感越高阻抗不连续越突出。PCIe 4.0时0402电容还算安全到PCIe 5.0/6.00201甚至更小的封装开始成为主流目的就是减小寄生参数。位置之争也因此收敛成一条新准则在保证工艺可生产的前提下AC耦合电容要尽量靠近发送端芯片出pin区域。把电容放在几十mil以内可以确保反射回到发射端时被低阻抗输出吸收同时让电容后的传输线尽量长、足够均匀接收端看到的通道至少是规则的。反之如果把电容放在靠近接收端等于在接收端“眼前”放了一个强反射源PAM4接收机再强的DFE也无法完美消除近端振铃。4.3 从Tx EQ到Rx DFE再到FEC补偿技术的一次“军备竞赛”PCIe 5.0时代发送端FIR和接收端DFE的设计空间已经被压得很窄。到了PCIe 6.0设计者不再只靠模拟域均衡开始引入数字域前向纠错FEC。PAM4信号即使做了均衡残余误码率仍然比NRZ高好几个量级单纯靠改善信道已经成本过高于是PCIe 6.0在协议层加入了基于Reed-Solomon类编码的FEC把一部分可接受的误码“修回来”。这背后是一个很重要的设计哲学转变早期PCIe靠高信噪比硬撑PCIe 3.0/4.0靠均衡器重构波形PCIe 6.0则是“均衡器先降低误码率FEC再兜底纠错”。AC耦合电容的位置在这一链条里的角色是尽量把反射和低频漂移控制在DFE能处理的范围内不要让错误量高到FEC纠不过来。任何位置的“任性”都会直接压缩系统从链路训练到用户数据的整体容错预算。4.4 PCIe 6.0 CEM设计中的新答案把电容放在发送端封装脚下PCIe 6.0对应的CEM规范对板卡互连提出了更严格的要求。在标准插槽结构里主板侧的发送回路和板卡侧的发送回路都要独立完成AC耦合每一颗电容都应当放在各自发送端附近。这样做的本质是让每一段互连的“所有权”清晰避免有人把电容丢到对端去导致对端接收器无法通过均衡手段消化这些额外反射。对普通硬件工程师来说这个结论意味着两件事。第一在PCIe 5.0/6.0的板卡设计里不要再讨论“电容靠中间放行不行”直接按照发送端封装出线的方向把电容放在差分对刚引出的位置。第二和连接器相关的参考板设计里AC耦合电容应该放在连接器和发送端之间且更靠近发送端而不是放在连接器外面。很多PCIe 6.0 CEM的参考设计已经把电容放在芯片BGA附近甚至封装基板上这就是位置之争在新时代的最终答案。5. 板卡量产前AC耦合电容应该怎么放、怎么选、怎么验5.1 位置选型一个可以抄作业的决策流程我给内部团队定过一个比较实用的决策流程也分享给准备做PCIe高速板卡的朋友参考。先判断是标准插卡互连还是板内直连。标准插卡的情况下发送端所在的板卡负责自己的AC耦合电容电容放在连接器和发送芯片之间优先靠近发送芯片和连接器最好保持超过一定距离避免两个阻抗不连续点靠得太近。板内直连的情况下直接采取“每颗发送芯片负责自己的电容”策略两颗芯片互连时链路两端各放一颗电容各自靠近各自的发送端中间用连续差分线贯通。再判断是否有retimer或redriver。retimer重新定时后相当于新的发送端它的输出方向也要重新放电容。很多人只放过第一级芯片旁的电容忘了retimer后的次级链路结果信号经过retimer后又变差了。规则很简单每一个“新的发送端”后面都要有一段AC耦合电容负责。最后看板卡空间。如果空间实在紧张电容和连接器不得不靠近那就要通过仿真确认反射叠加在回波损耗预算内并且要给接收端DFE留出更多裕量而不能把板卡的噪声预算全吃掉。5.2 容值、封装和焊盘布局的具体参数容值方面PCIe各代际规范给定的范围大体落在0.075uF到0.2uF区间工程上最常用的是0.1uF0.22uF也常见。0.1uF是一个兼顾低频截止、接收检测时间常数和封装尺寸的平衡点。到了PCIe 5.0/6.0我建议优先选0201封装的0.1uF或0.15uF额定电压16V或25V即可但一定要选温度特性稳定、直流偏置下容值跌落小的介质X7R比较可靠X5R勉强Y5V直接排除。焊盘布局有一个容易被忽略的细节不要在电容两侧都打via。如果紧贴电容焊盘打两个过孔等于在两个焊盘间人为加了一截短路线等效寄生电感更大。正确的做法是让差分线走表层进入电容电容之后再过孔换层或继续表层走线如果实在无法避免过孔要尽量靠近电容但不是紧贴焊盘并且把返回路径的gnd via补齐。所有这都是在给“位置之争”的胜利做物理保障。5.3 用TDR/VNA和压力测试验证电容位置是否合理Layout做完之后不要等到芯片调测才发现问题。先用TDR看整条差分链路的阻抗连续性AC耦合电容所在位置通常会表现为一个“凹陷”或“鼓包”如果这个阻抗偏差位置距离接收端很近基本可以预判高速裕量不乐观。再用VNA测Sdd21和Sdd11重点看阻抗不连续导致的回波损耗有没有在目标频率落在预算内PCIe 5.0/6.0的频率点下电容区域反射超标是最常见的问题。最直接的验证还是芯片实测。PCIe链路训练电路自带均衡系数协商很多分析工具可以读出Tx EQ系数和Rx端DFE系数。如果发现DFE系数已经拉到很高说明链路的线性损伤被信道消耗得不轻这时再去检查AC耦合电容位置往往会有发现。还有一招是压力测试专门跑带长游程的PRBS或系统级压力traffic观察是否出现偶发误码、丢包以及是否在高温下掉速。低频droop问题特别吃温度和电压变化压力测试能把它逼出来。5.4 我踩过的三个AC耦合电容设计坑第一个坑是看过一个PCIe 4.0板卡在室温下能稳跑Gen4接近70°C必然掉到Gen3。查了很久最后拿电桥一测0.1uF电容在0.9V偏压下实际容值只剩不到50nF。换用更高额定电压、偏压特性更好的电容后问题消失。这提醒我AC耦合电容的选型不能只看规格书室温值和标称容值。第二个坑是某设计为了把电容靠近接收芯片把电容放在了接收端封装旁边结果PCIe 4.0的眼图余量明显偏小接收端DFE第一阶系数异常大。把电容挪到发送端附近后同一条走线的眼图垂直张开度提升了明显一截。这个项目让我真正从测试上理解了“靠近发射端”的价值而不仅仅是背规范。第三个坑是电容本身选对了但焊盘下面地层被清空得太夸张导致返回电流绕大圈电容处等效电感反而变大。回波损耗测试里高频出现一个尖峰。后来把电容区域的地参考做完整、减小焊盘宽度、缩短到过孔的距离问题才消除。位置之争的落点从来不只是“电容坐标”而是电容所在那一小段物理区域的所有寄生参数。最后说一点个人体会。每次有人问我“AC耦合电容到底放哪”我都会回答先想清楚谁是发送端再想清楚这段链路归谁负责然后尽可能把电容放在发送端的门口。这个原则从PCIe 1.0到PCIe 6.0始终成立只是低速时代犯错代价小高速时代犯错的代价是上不了速率。信号补偿技术再强也只是给硬件设计买保险而不是给错误布局兜底。设计者真正该做的是别把补偿资源浪费在一颗可以放对的电容上。
返回列表