第4章 板上走线对时序的影响:长度、阻抗、过孔与拐角的实战解析

RGMII最让人头疼的,往往不是芯片本身,而是PCB上那几根看起来平平无奇的走线。我有个研发总监说过一句话,我一直记得:「能把RGMII走线排好的人,时序问题就解决了八成。」这话虽然夸张,但方向没错。

说白了,RGMII是双沿采样,数据在一个时钟周期内要翻转两次。走线稍微搞点小动作,时序窗口就缩小了,甚至直接失效。这章我们聊聊:走线长度、阻抗控制、过孔、拐角,这四个东西到底怎么影响时序。

核心观点:走线对时序的影响,本质是「延时偏差」和「信号质量退化」两件事。长度和过孔造成延时偏差,阻抗和拐角造成信号质量退化。分开看,就容易理解了。

4.1 走线长度偏差:等长,但不是的等长

RGMII的时钟和数据是源同步的,即时钟跟着数据一起从发送端出来。接收端用时钟的边沿去采样数据。所以,如果走线长度不匹配,时钟和数据到达接收端的时间就错位了。这就是最直接的时序问题。

我最早做RGMII设计时,看过一份参考设计,要求「时钟与数据的走线误差控制在±50mil以内」。当时也没多想,就照着做。结果板子回来,测出setup margin只有不到100ps,差点就挂了。后来细查,发现数据线之间也有偏差——其中一根比另一根长了近200mil。单个看都在范围里,但加起来就出事了。

经验总结:等长有两层含义。
1. 时钟与数据组之间的等长(通常要求≤±50mil)。
2. 数据组内各bit之间的等长(通常要求≤±20mil)。
比如8根数据线,最长的和最短的差异,不能太大。

为什么会这样?因为RGMII在接收端是用时钟的上升沿和下降沿分别采样两个数据。如果数据线之间偏差大,接收端看到的其实是「不同时刻」的数据,setup/hold时间自然就不够了。

走线延时计算公式很简单:

Tdelay = Tp * L
其中Tp是单位长度延时,通常FR4材质下约为160~180 ps/inch。所以1英寸的走线差异,就能带来160~180ps的延时差。而RGMII在DDR模式下,数据眼图的有效窗口通常只有几百ps。所以,走线长度偏差直接侵蚀的就是这个窗口。

4.2 阻抗控制:50Ω?其实你要的是连续性

很多人一说阻抗,第一反应就是「我要控制50Ω」。其实RGMII对单端阻抗的要求并不极端——45Ω到55Ω都能工作。真正要命的是阻抗的不连续。

什么叫不连续?比如走线从顶层换到内层,过孔的阻抗突变;比如走线经过一个狭窄的瓶颈,阻抗突然变低;比如有一段走线宽度变了,阻抗也跟着变。这些不连续点,会造成信号反射,导致振铃、过冲、下冲,直接破坏信号的眼图。

我做过一个项目,用的FPGA和PHY之间距离不到2英寸,按理说阻抗不是问题。但FPGA那边的参考层被几个大通孔挖空了,导致走线参考平面不完整,阻抗从50Ω飙到了70多Ω。结果眼图几乎闭了。后来把走线移到完整参考层上,眼图立刻就张开了。说白了,阻抗控制的本质是「连续性」,而不是「精确值」。

避坑指南:我曾经被一个项目坑过——看上去所有走线阻抗都匹配,但信号质量就是不行。最后发现,PHY芯片的封装焊盘是0.5mm间距的,走线在焊盘处被挤压到极窄。那个地方阻抗突变非常严重。解决办法是给焊盘下的走线做一个「泪滴」渐变过渡,而不是突然变宽或变窄。
阻抗影响因素 典型影响 通常处理方式
走线宽度变化 突变点反射,形成振铃 保持走线宽度均匀,拐角处加圆弧
参考层缺失 阻抗升高,信号回路大 避免在走线下挖空参考层
过孔焊盘/反焊盘 容性突变,阻抗下降 优化过孔尺寸,增加回流地过孔
走线换层 延时突变,阻抗不连续 就近加地过孔,保持连续

4.3 过孔的影响:看似小事,实则大敌

不少工程师认为,一个过孔也就1~2ps的延时,忽略不计。但问题是,RGMII的时钟和数据通常不只在一个图层走——难免要换层。换层的地方就是过孔。

过孔的影响分两块:

  • 延时偏差: 过孔的寄生电感会使信号通过时产生额外延时。如果时钟经过2个孔,数据经过3个孔,这种偏差在高速下就会体现出来。我个人习惯的做法:时钟和数据线经过的过孔数量尽量一致。
  • 阻抗突变: 过孔的焊盘、反焊盘和stub都会导致阻抗变化。特别是stub——就是过孔中没用到的那段残桩,它就像一个天线,对着信号反射。

我记得有次调试一块板,时序margin老是飘忽不定。示波器测信号,发现时钟线上有一个明显的「台阶」状反射。查了半天,发现时钟线走的路径上换了两层,过孔stub长度加起来有50mil。后来把过孔换成背钻(back drill),去掉stub,反射就消失了。

过孔处理建议:
- 时钟和数据线用过孔时,尽量使用相同的数量和类型。
- 过孔附近加回流地过孔,间距不要超过100mil。
- 如果层数多,尽量用埋盲孔或背钻来减少stub长度。

4.4 拐角与布线细节:直角走线真的不行吗?

这个问题的争议很大。理论上,直角走线会带来阻抗突变和额外的寄生电容。但在2~3层板、信号速率不高(比如RGMII的125MHz DDR模式,数据速率250Mbps)时,直角和圆弧的差异几乎测不出来。你想想看,信号的上升时间通常在几百ps,比拐角的电长度大得多,反射的能量自然就小了。

但为什么我仍然建议你尽量走圆弧或45°角?

  • 制造角度: 直角走线的内角在蚀刻时容易变细,造成阻抗偏移。
  • 一致性: 在一个复杂的走线网格中,混合使用直角、锐角和圆弧,各种阻抗不连续叠加到一起,就很难控制了。
  • 习惯问题: 我见过一种情况,板子上一堆直角,制造师傅看了直接摇头。不是不能做,而是他们知道直角走线的设计通常意味着不够精细。
注意:RGMII数据线之间如果并行很长一段,建议拉开间距(至少2倍线宽),或者加一点蛇形线来保证等长。快速对不准的典型表现是:数据线之间相互串扰,眼图的垂直方向变窄。

下面这张图总结了本章的核心逻辑:走线的物理结构如何一步步影响RGMII时序。

图4-1:RGMII走线物理因素对时序的影响 PCB 走线物理因素 走线长度偏差 阻抗不连续 过孔寄生效应 拐角 & 布线细节 时钟/数据延时错位 信号反射 & 振铃 延时偏差 & stub 串扰 & 阻抗突变 setup/hold 窗口缩小或关闭 对策:等长布线 + 连续参考层 + 最小化过孔 + 圆弧拐角

最后说一句:RGMII的走线,不需要追求极致,但一定要讲基本面。长度偏差不要超过50mil,参考层完整,过孔数量一致,拐角不搞突然变化。做到了这几点,时序问题就少了一大半。

本章核心金句:RGMII走线的每一段物理路径,其实都是一个「微小的时序误差源」。它们单独看都不大,但叠加起来,就是一块板子的成败。