ARTICLE DETAIL

资讯详情

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

走线长度与信号质量:传输线、时序与等长设计实战

走线长度与信号质量:传输线、时序与等长设计实战 1. 走线长度对信号质量的影响先把“为什么”讲透很多人第一次听到“走线长度会影响信号质量”这句话时直觉反应是——线又不是电阻长短跟信号好不好有什么关系我当年画第一块四层板的时候也是这么想的结果一块 SPI Flash 的板子时钟线比数据线长了将近 8 厘米跑 20 MHz 都偶尔读错把线缩短重做一版就稳了。那次之后我才真正明白在高速领域走线长度不是一个几何尺寸而是一个时间维度上的量。这篇文章聊的是走线长度与信号质量之间的关系核心是搞清楚三件事多长的线才算“长”、长线到底伤害了什么、以及我们怎么在设计阶段就把这件事管住。适合刚入行画板子的硬件工程师、做嵌入式底层调试的软件同学以及需要审厂、看板子、判断设计好坏的测试人员。全文不讲空话参数怎么算、表怎么查、报告怎么看我都尽量写清楚。先给一个总纲方便你带着框架往下读长度决定延迟延迟决定时序裕量还剩多少长度决定是否为传输线一旦进入传输线区间反射、振铃、过冲全来了长度差决定偏移差分对和并行总线最怕的就是这个长度还决定损耗和串扰的累积量越长越吃亏。提示本文讨论的前提是常规 FR-4 板材、常见的 CMOS/LVDS 电平场景。如果你用的是 Rogers 之类的低损耗材料或者极低温、航天级环境数值会变但物理逻辑是不变的。2. 多长的走线才算“长”三个判断维度2.1 从集总参数到分布参数的临界点电路课本里导线是一根理想的零阻抗连接。这个假设只在信号波长远大于导线物理长度时成立。经验判据是当导线长度超过信号有效波长的 1/10保守一点用 1/20时就必须按传输线处理不能再当一根线看了。这里的“有效波长”不是真空波长要除以介质等效介电常数的平方根。拿最常见的 FR-4 举例表层微带线的等效介电常数大约 3.5 左右那么电磁波在里面的传播速度约为真空中光速约 3×10⁸ m/s换算成常用单位是约 11.8 英寸/纳秒或300 mm/ns表层微带线v 300 / √3.5 ≈160 mm/ns内层带状线等效介电常数接近 4.3v 300 / √4.3 ≈145 mm/ns。反过来说我们更常用的是传播延迟这个量走线类型等效介电常数单位长度延迟每英寸延迟表层微带线≈3.5≈6.25 ps/mm≈159 ps/inch内层带状线≈4.3≈6.9 ps/mm≈176 ps/inch记住一组好用的近似值表层线约 6 ps/mm内层线约 7 ps/mm。这个数字我几乎每次评估时序都会在脑子里过一遍。那么什么频率下 10 cm 的线算长1 GHz 时有效波长 160 mm/ns ÷ 1 GHz 160 mm1/10 就是 16 mm。也就是说1 GHz 的信号走线只要超过 16 mm 就得按传输线设计。而在 100 MHz 下这个门槛放宽到 160 mm普通小板子根本碰不到。这就是为什么低频板子随便拉线也没事高频板子寸土寸金。2.2 上升时间判据比频率更靠谱的标准只看频率其实是不够严谨的因为决定反射严重程度的是信号上升时间不是周期。一个 100 MHz 但上升时间只有 300 ps 的时钟它的高频成分远超 100 MHz 本身。工程上更通用的判据是当走线单向延迟超过信号上升时间的 1/6 时就要考虑传输线效应。算一个例子某时钟上升时间 tr 1 ns那么阈值延迟 1 ns / 6 ≈ 167 ps。按表层线 6.25 ps/mm 算对应的临界长度就是167 ps ÷ 6.25 ps/mm ≈27 mm也就是说这根线只要超过 27 mm你就能在示波器上看到明显的振铃了。我在很多客户板子上验证过这个数基本八九不离十。反过来思考如果你的上升时间是 5 ns低速逻辑常见值临界长度就变成 833 ps ÷ 6.25 ≈ 133 mm。这时候板子上随便拉一根十几厘米的线都无所谓这也解释了为什么早年 51 单片机的板子画得那么随意还能跑。2.3 时序维度长度差才是真的杀手前面两个维度是“单根线自己好不好”第三个维度是“多根线之间齐不齐”。并行总线和差分对关心的是长度差不是绝对长度。举例一组 8 位数据总线参考时钟频率 200 MHz周期 5 ns。如果数据线之间长度差达到 20 mm按内层 7 ps/mm 算偏移就是20 mm × 7 ps/mm 140 ps听着不多但如果这根总线的建立时间裕量本身只有 200 ps140 ps 的偏移就直接吃掉七成裕量再加上驱动芯片的输出偏斜、接收端的采样窗基本上就崩了。所以总线设计里我们常把长度差控制在一个“时钟周期的一个小比例”之内比如 DDR 的 DQ 相对 DQS 通常控制在 ±2~5 mm 这个量级具体看速率等级。2.4 小结一下三个维度判断维度核心问题典型判据波长判据要不要按传输线看长度 有效波长/10上升时间判据会不会有反射振铃单向延迟 tr/6时序判据多根线齐不齐长度差 × 单位延迟 时序裕量的某个比例这三个维度里新手最容易忽略的是第二个因为它不看频率看边沿而边沿速度往往是芯片手册里埋得最深的一个参数。3. 长线到底伤害了什么四类具体损伤3.1 反射、过冲与振铃这是最直观的一类。当驱动器输出的能量沿走线传播到达接收端时如果接收端阻抗和走线特征阻抗不匹配一部分能量会被反射回来。反射波回到源端如果源端也不匹配再反射过去如此往复就形成了振铃。走线越长这段“来回跑”的时间越长振铃的周期就越长、衰减越慢落在采样点上的概率越高。150 mm 的线来回一趟按 6.25 ps/mm 算就是 1875 ps ≈ 1.9 ns正好可能落在接收端采样窗口里导致误触发。我在示波器上抓过一个经典案例一根 120 mm 的未端接时钟线上升沿处过冲到了 3.9 V电源 3.3 V振荡持续了将近 4 ns接收芯片的输入保护二极管都被拉出电流了。加了 22 Ω 串联端接后过冲降到 3.5 V 以内振铃基本消失。3.2 时序裕量被侵蚀时序裕量这个东西你可以理解成“在正确时刻采到正确数据还剩多少余量”。它被很多项啃食芯片输出偏斜、走线长度差、建立/保持时间要求、时钟抖动、接收端建立保持窗口。走线长度带来的延迟和长度差是其中可以被人为控制的一项。一块 DDR3-1600 的板子一个时钟周期只有 1.25 ns留给 DQ 的窗口本身就只有几十到一百多皮秒。如果同一 byte lane 内 DQ 到 DQS 的长度差做到 10 mm按内层 7 ps/mm 算光是这一项就吃掉 70 ps几乎是整个窗口的一半。这就是为什么 DDR 布线时我们会花大量时间在“等长绕线”上。3.3 损耗与边沿退化走线是导体导体有电阻介质有损耗。线越长高频成分被衰减得越厉害结果是上升沿变缓、眼图闭合。FR-4 在 1 GHz 附近的介质损耗大致在 0.02 量级tanδ损失随频率和长度累加。粗略地说一根 300 mm 的 FR-4 传输线在 2.5 Gbps 下眼高可能只剩输入的一半左右。这不是危言耸听是做过的实测。所以高速串行链路PCIe、USB3、SATA 之类在长距离走线时要么用低损耗板材要么上均衡发送端去加重、接收端 CTLE/DFE。3.4 串扰与耦合的累积两条平行的长走线相当于一对耦合的传输线。长度越长耦合区越长近端串扰和远端串扰的累积越明显。串扰的危害在于它会让受害线的噪声底抬高本来干净的“0”会被叠上一个正尖峰本来干脆的“1”会被叠上一个负尖峰眼图直接塌了。我处理过的一个案子一根 200 mm 的视频时钟线紧贴着数据线走串扰让数据眼宽缩小了 15%把两根线拉开到 3W 间距W 是线宽后恢复到 95% 以上。所以长线布线里“拉开间距、减少平行长度”这一步比事后加电容补救有效得多。4. 参数计算与设计阶段控制4.1 单位延迟怎么自己算很多人只记结论不知道原理。其实单位延迟的公式非常干净t_pd 85 × √εeff 单位ps/inch或者用毫米t_pd 3.33 × √εeff 单位ps/mm拿这个公式套一下FR-4 表层微带线 εeff ≈ 3.5t_pd 3.33 × √3.5 ≈ 3.33 × 1.871 ≈6.23 ps/mm内层带状线 εeff ≈ 4.3t_pd 3.33 × √4.3 ≈ 3.33 × 2.074 ≈6.9 ps/mm跟我前面给的经验值完全吻合。所以你自己设计时哪怕不知道板厂的精确叠层参数用 6 ps/mm 和 7 ps/mm 这两个数估算误差完全在可接受范围内。4.2 特征阻抗与线宽的关系长度影响反射但反射的严重程度还取决于阻抗是否连续。同一条线上如果中途线宽变了、参考平面挖空了、过孔换层了都会带来阻抗突变反射就在那个点上发生跟长度无关——但线越长反射波从突变点跑到端头再跑回来越容易在采样时刻出现。所以设计阶段的动作是先定叠层算出目标阻抗对应的线宽再从头到尾一致地走。常见的目标阻抗单端 50 Ω差分 90 ΩUSB、100 ΩPCIe、以太网。一个粗略参考具体必须以板厂叠层为准普通四层板介质厚 0.2 mm、铜厚 1 oz 时单端 50 Ω 微带线宽大约在 0.35~0.4 mm 之间。这个数只能当起点最终必须让板厂用阻抗计算器比如 Polar SI9000给你算。4.3 定好“长度预算表”再布线这是我强烈推荐的一个习惯布线前先做一张长度预算表把每一组的约束写清楚再交给 Layout 的人。表格长这样自用就行网络组参考信号长度差上限绝对长度上限依据DDR3 DQ0-DQ7DQS0±2 mm视拓扑1.25 ns 周期窗口小RGMII TXDTX_CLK±5 mm120 mm125 MHz裕量尚可USB2.0 D/D-互为参考±0.15 mm100 mm差分对内偏斜SPI SCK无尽量短—20 MHz 低速不写这张表Layout 工程师就会按自己的理解去做等板子回来出了问题再返工成本是十几倍。4.4 等长绕线的正确姿势等长不是随手绕绕不好反而更糟。几个实测总结出来的原则绕在靠近接收端的位置不要在源端附近绕。因为绕线的目的是补偿传播延迟让信号到接收端时相位对齐用“小波浪”而不是“大 U 形”。每个凸起的高度建议不超过 3 倍线宽一组绕线里的凸起数量尽量均匀差分对内不要靠绕线补长度差分对内的长度差应该通过调整两条线的相对弯曲来消化绕线会破坏差分对的耦合结构绕线区域要留足参考平面否则阻抗还是断的。我见过一个失败的等长设计为了补 8 mm 的长度差在源端绕了七个大 U 形结果绕线区段因为间距太密产生了严重自耦合眼图比不绕还差。所以等长是手段不是目的目的永远是“让接收端看到干净的信号”。5. 实测验证与常见问题排查5.1 用示波器量什么、怎么看眼睛看不到的东西示波器能看到。判断一根走线的信号质量我通常看这几个指标过冲幅度峰值超过稳态值多少。超过 10% 就要警惕振铃持续时间从峰值衰减到稳态 ±5% 需要多久最好小于上升时间单调性上升沿有没有回沟。有回沟说明反射波在采样点之前就到了是典型的长线问题眼图眼高、眼宽、抖动。探头上测高速信号一定要用低电容有源探头普通无源探头 10 pF 的负载电容会把信号本身改得面目全非这是我踩过的坑用无源探头测出来的振铃有一大半是探头引入的。5.2 常见问题速查表现象可能原因排查方向解决手段上升沿有回沟传输线未端接反射波提前到达量走线实际长度算往返延迟加串联/并联端接缩短走线过冲严重、振铃久阻抗严重失配TDR 看阻抗曲线调整线宽检查参考平面完整性数据误码但眼图看着还行长度差导致的时序问题算最坏长度差比对时序窗口等长绕线重新规划拓扑某些板子好某些差批次间阻抗波动让板厂提供阻抗测试报告明确标注阻抗要求做好来料管控高频信号到远端几乎消失损耗过大量远端眼高换低损耗材料缩短走线加均衡5.3 我踩过的几个坑坑一只信仿真不信实测。早期我用仿真软件跑一个 8 层板的高速链路结果一切完美板子回来眼图一塌糊涂。后来发现问题出在仿真里没用板厂的实际叠层和铜箔粗糙度参数仿真用的是理想参数差得远。仿真指导方向实测才是判据。坑二为了省层数让信号穿层太多。换一次层就是一个过孔一个过孔就是一次阻抗不连续来回换几次延迟比单纯长度大得多。所以在做长度预算时我一直建议把过孔也折算成等效长度——一个普通通孔在 FR-4 里大致相当于 1.5~2 mm 的走线延迟。坑三忽视了走线的“实际长度”不等于“设计长度”。Layout 软件里报的长度是中心线长度实际走线宽度、铜厚、丝印覆盖都会让电长度略有偏差。这个偏差通常可以忽略但对于 DDR4 这种皮秒级窗口就必须用厂家提供的场解算器给出的精确值。坑四端接电阻位置放错。串联端接必须靠近源端并联端接必须靠近接收端位置错了等于没端接。我第一次做端接时把串联电阻放在了离驱动芯片 3 cm 的地方结果反射照旧。5.4 排查流程建议真的遇到问题建议按这个顺序走先算拿实际走线长度和单位延迟算出往返延迟和理论振铃周期心里有个数再测示波器抓波形看是不是符合理论定位用 TDR 找出阻抗不连续点通常就是过孔、焊盘、线宽变化的地方验证改一版实测比对形成闭环。6. 不同信号类型的长度约束实战6.1 时钟信号优先短、优先端接时钟是所有信号里最“娇气”的因为它的翻转频率最高、被采样最多。对时钟线我的原则是能短则短实在长就加端接。一根超过 50 mm 的时钟线如果没有端接振铃几乎是必然的。另外时钟线尽量走内层、避开分割地平面、避免跨分割。跨分割会导致回流路径被切断形成大环路既是信号质量问题也是 EMI 问题。6.2 差分对控偏斜比控长度更重要差分对的两个指标对内偏斜和对间偏斜对外偏斜通常控制在 ±0.1~0.2 mm 量级对间偏斜看具体协议。很多人以为差分配对“长度必须完全相等”其实不是允许微小差异只要不影响共模抑制能力即可。差分对的两条线要等长、等间距、同层走、同拓扑任何一条变了另一条也得跟着变。我见过有人为了避孔把 P 线绕了个弯、N 线没绕结果共模噪声大增辐射超标整板 EMC 重做。6.3 并行总线拓扑决定长度策略并行总线的长度控制不是单根线的游戏而是拓扑问题。常见的拓扑有菊花链Daisy Chain适合单向、点对点为主的场合长度控制相对宽松星形Star各支路等长末端端接适合多负载T 型分支分支点必须尽量短分支过多会带来多反射点一般不推荐用于高速。DDR 里常用的是 Fly-by 拓扑它的核心思想是时钟/地址/命令按顺序经过每个颗粒用时间去“换长度”端接在最后一个颗粒之后。这种拓扑下DQ 到 DQS 的长度差控制和 CK 到各颗粒的相位关系是两个独立的设计任务必须分开做预算。6.4 低速控制信号可以做“宽容处理”不是所有信号都要严格等长。像 I2C、UART、复位、使能这些信号边沿慢、频率低长度容忍度非常高。一根 30 cm 的复位线如果不考虑噪声耦合几乎可以不端接。我的做法是分级对待把板子上的网络分成“高速组、中速组、低速组”把精力集中在高速组上。用统一的标准去要求所有信号最后的结果往往是关键信号没做好、普通信号过度设计得不偿失。7. 设计规范与团队协作的落地建议7.1 把长度约束写进设计规则好的团队会把长度约束做成可执行的设计规则而不是写在文档里、靠人自觉。EDA 工具里可以设置最大长度Max Length超过就报警差分对内最大偏斜Intra-pair Skew对差分对特别有用相对长度规则Relative Propagation Delay指定某一根线为基准其他线相对它的允许范围。规则设好后布线时一旦违规立刻报警比事后检查有效得多。7.2 用 DCR 报告量化检查DCRDesign Constraint Report是布线完成后导出的约束检查报告。它会列出每一组网络的约束、实际值、是否通过。我审板子时第一件事就是看 DCR重点盯这几项时钟线长度是否在预算内差分对偏斜是否合格并行总线长度差是否达标有没有网络因为“无法满足”被自动放宽。任何一条被放宽的约束都得问清楚原因。7.3 和 Layout 工程师的沟通要点硬件工程师和 Layout 工程师的关系我很喜欢用一个比喻硬件是设计师Layout 是工匠。工匠能做出漂亮的活但前提是设计师的图纸清楚。给 Layout 的约束我建议写清四件事哪一组网络、以谁为基准、允许差多少、为什么。特别是最后一项写清原因后Layout 会在绕线策略上做出更合理的判断而不是机械地执行。8. 一些实操体会与经验小结写到这里我把这些年跟走线长度打交道的心得汇总一下希望对你有用。第一条也是最重要的一条走线长度是设计变量不是布线时才想起来的事儿。一块板子能不能跑起来在原理图和叠层阶段就基本定了等到 Layout 阶段才考虑长度很多约束已经满足不了了。第二条学会算比学会用工具更重要。仿真工具、阻抗计算器都是工具但你知道 6 ps/mm 这个数从哪来、什么时候用得上比会点软件里的按钮值钱得多。第三条长度只是众多约束中的一个它和阻抗、串扰、EMI、工艺是耦合的。优化一个指标时一定要看看会不会把另一个搞坏。等长绕线可能引入自耦合加粗线宽可能降低阻抗缩短走线可能撞到禁布区这些都是常见的连锁反应。第四条实测比什么都靠谱。仿真和计算能帮你缩小范围但真正决定成败的是示波器和 TDR 上的波形。一块板子跑得好不好最终要看数据不看 PPT。第五条别迷信“越短越好”。有些场合比如需要延迟匹配的时钟树、某些时序补偿结构线长本身就有意义删掉反而错。长度是为功能服务的短只是其中一种手段。最后分享一个小技巧也是我常用的做任何长度相关的设计前先在纸上画一条数轴把所有相关的时序项、延迟项、偏差项都换算成时间标上去一眼就能看出那块“还能用的空间”还剩多少。比在脑子里来回切换英制公制、皮秒纳秒要清爽得多。如果你手头正好有一块因为信号质量反复出问题的板子不妨从“把每根关键线的时间延迟算一遍”这个动作开始。很多看起来玄学的问题算完那一步答案就出来了。
返回列表