2. 信号完整性与等长关系
咱们做PCB设计,尤其是高速数字电路,等长走线这件事,说白了跟走线长度本身关系不大,真正管的是时序。你想想看,一片FPGA同时吐出DDR的数据线,走线长度不一样,数据到达CPU的时间就有先有后。CPU在时钟边沿抓取数据的时候,有些线上的数据已经到了,有些还在路上,结果就是——采错了。
我刚开始做DDR3设计那会儿,就吃过这个亏。FPGA跟DDR颗粒之间的走线,我觉得就差那么几十个mil,心里想“没事儿”。结果板子调不通,逻辑分析仪一看,数据眼图乱得跟一锅粥似的。从那以后,我对等长走线的敬畏之心就再也不敢丢。
核心结论:等长走线的本质是等时。信号在PCB上的传播速度由介电常数决定,等长就是为了保证同一组信号的所有bit,从发送端到接收端所用的传播延迟基本一致。
2.1 信号完整性的底线:时序窗口
信号完整性虽然包含反射、串扰、 EMI 这些,但等长走线解决的是时序问题。每一种同步接口(DDR、MIPI、PCIe、千兆以太网)都定义了一套时序容限,比如建立时间(tSU)和保持时间(tH)。
数据信号需要在时钟边沿前后的一段稳定窗口内到达。如果你的等长做得不好,数据跑出了这个窗口,哪怕波形质量再完美,也等于白做。这就是为什么很多工程师说“先有时序,才有信号完整性”。
| 接口类型 | 典型数据速率 | 等长精度要求(典型) | 核心风险 |
|---|---|---|---|
| DDR3/DDR4 | 800MT/s ~ 3200MT/s | ±5mil ~ ±25mil | 数据与DQS DQS#的时序偏差 |
| MIPI D-PHY | 80Mbps ~ 1.5Gbps/lane | ±25mil 以内(推荐) | Data Lane 与 Clock Lane 的 Skew |
| PCIe Gen3/4 | 8GT/s ~ 16GT/s | ±5mil(差分对内) | 差分对内 Skew 导致共模转换 |
| 千兆以太网 | 1Gbps | ±10mil(差分对内) | 差分阻抗失衡与串扰 |
从我个人的设计经验来看,如果芯片厂商给出了等长约束规则,你就严格按那个数值走。别自己拍脑袋。不同芯片的封装内部延迟可能差很多,等长目标值要参考芯片的 Read/Write Leveling 要求来定。
2.2 等长跟信号质量也有关系?
嗯,这里要额外说一点。有些设计师以为等长只影响时序,跟波形质量没关系。其实不完全对。当一组走线里有的长有的短,短的那条线的阻抗连续段就变了。对高速信号来讲,走线长度突变的位置,就是一个阻抗不连续点。
我记得有次做一个MIPI CSI-2的摄像头接口,四条数据通道和一条时钟通道。为了迁就结构,时钟通道走了弧线绕了400mil,数据通道却直来直去。结果测试发现,时钟信号的反射比数据通道多了将近15%。原因就是等长绕线时,那段多出来的“蛇形线”引入了局部耦合和阻抗变化。
避坑指南:等长绕线不能乱绕。高频信号在蛇形线的拐弯处会产生额外的寄生电容和电感。你如果发现信号眼图抖动增加、误码率下降,可以先看看是不是等长绕线绕得太密、拐角太过尖锐。我曾经因为蛇形线的间距不够,导致两条绕线段之间相互耦合,产生严重的共模噪声。
2.3 信号延迟:等长的计算基础
咱们得先搞清楚,信号在PCB上走1inch到底花多少时间。简单公式:
延迟时间(ps)= 走线长度(inch)× 传播延迟(ps/inch)
传播延迟 ≈ 85 × √(εr) (单位:ps/inch)
举个例子:FR4板材的 εr 大约是 4.2 左右,那么 1 inch 走线的纯延迟大概在:
85 × √4.2 ≈ 85 × 2.05 ≈ 174 ps
DDR4-3200 的时钟周期只有 312.5ps。等长偏差 50mil,带来的时序偏差大约是:
50mil = 0.05 inch
0.05 × 174 ps ≈ 8.7 ps
8.7ps在312.5ps的总周期里,占到了快3%的时序裕量。如果再叠加上芯片内部的抖动、电源噪声、温度变化,你就知道等长做不准有多危险了。
小技巧:我习惯在布局阶段,先用Signal Integrity仿真工具跑一次裸延迟,再根据芯片数据手册的setup/hold时间反推最大允许的走线长度差。如果长度差超过100mil,我就会提醒自己,布线的时候一定要专门留出绕线空间。
2.4 等长走线影响信号完整性的逻辑链条
下面这张图是我自己总结的,每次做DDR或者高速串行设计都要过一遍。
这逻辑链条很简单:走线不等长→时序偏差→设保时间不满足→误码。右侧是正确做法:等长控制→保持延迟一致→满足时序窗口→信号完整性达标。
2.5 一个实战经验:等长控制“松一点”真的不行
说个我遇到的例子。有个项目是8层板,DDR3跑1866MT/s。按照芯片手册,数据组(DQ)与DQS之间的Skew要控制在±10ps以内。用FR4的延迟算,大约对应±57mil。
我当时想,留点余量吧,做到±40mil。结果Layout工程师跟我说“布不通”,想放宽到±80mil。我一听就摇头。最后我们硬是在BGA出线区做了一次Fanout优化,把数据组走线全都牵引到同一层,利用过孔绕线区做等长匹配,最终精度控制在了±30mil以内。经过仿真验证,时序余量还有大约25ps的margin(因为芯片内部有一定的补偿能力)。
松一步看似省事,但带来的量产风险很大。PCB制造过程中,蚀刻、阻抗偏差、层压偏移都会让实际走线长度偏离设计值。你留的margin越小,生产不良率越高。
经验公式(我个人总结的):
- DDR3 1600 以下:等长精度 ≤ ±50mil
- DDR3 1866 到 DDR4 2400:等长精度 ≤ ±25mil
- DDR4 3200 及以上:等长精度 ≤ ±10mil
- MIPI D-PHY 1.5Gbps:差分对内等长 ≤ ±5mil
2.6 小结
信号完整性与等长走线的关系,归根到底就是一句话:等长是为了等时,等时是为了保证时序,时序是信号完整性的第一道防线。做设计的时候,先把等长约束搞清楚,再去操心阻抗匹配、电源完整性那些事。
我一般在新建项目时,会先跟硬件同事对一遍所有高速接口的时序参数,然后亲手把等长规则写到布线约束里。别等到布线快完成了才想起“哦,这个总线也要等长”,那时候再改就很痛苦了。