4. 长度匹配原理:为什么需要等长?

这个问题,说白了就是一句话:信号在PCB上跑,需要时间。

你想想看,一组并行总线,8条数据线,1条时钟线。如果它们长度不一样,到达接收端的时刻就会有先后。时钟采样的是“同时刻”的数据,如果数据到早了,或者到晚了,采样点就对不准。

我刚开始接触高速设计那会儿,也犯过嘀咕:“不就差那么几毫米嘛,能有多大影响?”结果项目调试时,DDR跑在400MHz就频繁报错。查了一天,最后发现是DQS和DQ的等长没做好,差了快200mil。

避坑提醒: 信号飞线的物理长度,决定了它的传输时延。对于高速信号,时延偏差就是时序问题,不再是“可能”影响,而是“一定会”影响。

4.1 时钟歪斜与建立/保持时间

为什么等长这么关键?核心原因有两个:建立时间和保持时间。

接收端芯片要求在时钟沿到来之前,数据必须稳定一段时间,这叫建立时间(tSU)。时钟沿过去之后,数据还要稳定一段时间,这叫保持时间(tH)。

如果某条数据线比时钟线长太多,数据到得晚,时钟采到的可能是上一个周期的数据——建立时间违例。

反过来,如果某条数据线比时钟线短太多,时钟刚采完,新数据就冲过来了——保持时间违例。

核心公式: 时序裕量 = 时钟周期 − (tCO_max + tflight_max + tSU)
其中 tflight 就是走线延迟。走线越长,tflight越大,裕量越小。

我之前做过一个项目,用了一款FPGA,手册上写的tSU只有100ps。但是PCB上有一组信号的等长没控制好,长度差了800mil。换算下来,延迟差了约130ps。建立时间直接吃光,还倒欠30ps。那板子跑起来就是间歇性死机,用示波器看眼图,采样点乱成一团。

4.2 影响时延的三个物理因素

走线时延不仅取决于长度,还跟PCB的叠层材料有关。我个人习惯把它拆成三个部分:

  • 介质介电常数(Dk):板材的Dk越高,信号在内部的传播速度越慢。FR4的Dk一般在4.2到4.5之间,而罗杰斯高频板材可以低到3.0。
  • 走线几何长度:这个最直观。总长度越长,时延越大。每1英寸的FR4走线,延迟大约在160ps到180ps之间。
  • 走线拓扑结构:T型分支、桩线都会增加额外的反射路径,等效拉长电气延迟。
常用板材信号延迟参考(典型值)
板材类型 Dk(典型) 延迟(ps/inch) 适用场景
普通FR4 4.5 ~180 低速、消费电子
低损耗FR4 4.0 ~170 DDR4、千兆以太网
Rogers 4350B 3.48 ~158 射频、高速SerDes
Megtron 6 3.6 ~160 25Gbps+ 高速背板
速算技巧: 常规FR4环境下,1mm走线大约是6ps延迟。我做等长估算时,通常会按这个系数来换算长度容差。

4.3 等长设计到底在等什么?

很多人以为等长就是把所有信号画得一样长。其实不是。真正等的是时序关系。

不同类型的信号,对等长的要求也不同:

  1. 时钟与数据:时钟线必须在所有数据线的中间长度,不能太长也不能太短。通常约束是正负25mil以内。
  2. 数据与数据:并行数据组内部,互相之间的长度差必须严格控制。DDR3/DDR4通常要求组内误差在±20mil。
  3. 差分对内:正负两条线必须等长。差分对内的等长误差,通常是±5mil以内,甚至更严。
  4. 跨组信号:不同数据组的走线,可以允许更大的长度差,只要不影响片内的时序校正。

嗯,这里要注意:等长不是目的,保证时序裕量才是。我曾经在一个项目中,DDR3的地址控制信号,长度虽然做到了±50mil以内,但时钟线一直放在最长的那一根。后来发现,部分信号的建立时间还是有点紧张。调整了一下,把时钟放在中间长度,所有时序都变好了。

4.4 不等长带来的典型问题

不等长会引发一系列信号完整性问题,我总结了几种常见现象:

  • 误码率升高:数据被时钟在错误的窗口采样,错误率从10⁻¹²直接跳到10⁻⁶。
  • 眼图塌陷:眼图闭合度变差,眼睛的高度和宽度同时受损。
  • 系统不稳定:有些板子低温下能跑,高温下就崩。温度变了,板材Dk微变,走线延迟跟着变,本来就紧的时序直接突破底线。
  • 调试周期延长:我见过一个团队,为了规避不等长的问题,把DDR频率降了20%。后来发现,等长改好后,频率能直接拉到标称值的110%。
经验之谈: 不要指望FPGA内部的时序校准能解决一切。校内校准通常只能补偿正负几百ps的偏差。如果PCB上差了1ns,校准也救不了。等长设计是从物理层堵住问题。

4.5 等长设计的内在逻辑

讲了这么多,我们把核心逻辑梳理一下。为了便于理解,我用一张图来展示等长设计的因果关系。

等长设计核心逻辑 为什么要等长? 接收端建立/保持时间 存在物理容差区间 板材Dk & 走线长度 决定信号传播时延 时序裕量计算 需保证正裕量 建立/保持时间违例 时序塌陷 眼图闭合 误码率飙升 系统不稳定 降频或拒绝工作 解决方案:长度匹配(等长) 蛇形走线 补长 时钟居中 平衡 组内严格约束 ±20mil 差分对内 ±5mil 等长不解决所有问题,但不等长几乎一定会出问题

这张图把等长设计的逻辑串了一遍:正因为有建立/保持时间的物理限制,加上板材Dk和走线长度不可忽略的时延,所以必须用长度匹配来保证时序裕量。如果不做等长,时序违例、眼图闭合、系统不稳定就会找上门。最后,蛇形线、时钟居中、组内约束这些具体方法,就是用来解决这个问题的。

4.6 总结几个速查要点

最后,我把自己平时做等长设计时的几个习惯分享给你:

  • 先看手册:芯片手册里会写明等长要求。DDR4一般是±20mil,有些MIPI屏要求±10mil。照着做,别自己乱猜。
  • 控制时钟走线:时钟线不要比所有数据线长,也不要比所有数据线短。我习惯把时钟放在数据线的长度中间范围。
  • 差分对内优先:差分对内部的正负线,长度差必须做到最小。哪怕其他组放松点,差分对也要死守。
  • 仿真验证:6层以上板、速率超过1Gbps的,一定要用仿真工具算一遍时序。不要只靠经验,经验也会翻车。
一句话总结: 等长,等的是时间,保的是时序。长度差一点,时延就多一分,误码就多一分风险。