高速 Flash PCB 布线与阻抗控制
把 ONFI / Toggle / eMMC HS / UFS 的电气问题收敛成三个被吃掉的裕量:阻抗连续性、回流路径、串扰耦合 —— 一份设计视角的机理与规则文档 | 编制日期 2026-10-14 | 版本号 Rev 1.0
做存储接口的人大多遇到过这种局面:器件型号没换、原理图没改、驱动一行没动,只是换了一块板,高速档就开始丢数据。把板子退回来仔细看,信号用示波器量却是「有波形、有幅度、看着不脏」——所有能查的地方都查过了,问题还是隔三差五地出现。
本文要说明的是另一条线索:高速接口的电气预算不是在选型阶段花完的,是在版图阶段一点点被吃掉的。器件数据手册上那个漂亮的速率与摆率,是在它的参考负载、参考夹具、参考端接条件下测出来的;你的板只要没有复现那套条件,那些承诺就不成立。被吃掉的东西很多,但收敛下来只有三样——阻抗连续性、回流路径、串扰耦合。市面上能看到的布线规则,最终保护的都是这三样。
结论: 高速 Flash 的失败绝大多数不是器件选错了,而是版图把信号完整性预算吃光了。 因此正确的顺序是先定叠层与目标阻抗,再定每根线的拓扑与端接,最后才用长度匹配与参考平面缝合收尾——顺序不能颠倒, 因为叠层没定就谈等长,等于在还不知道特征阻抗的前提下算延时。 全篇所有涉及几何与材料的数值都只写常见量级,实际取值一律以叠层设计、板厂工艺能力与实测为准。
读者路径
- 已经出了问题,想知道查什么:第 1 章看清三个裕量的对应关系,然后直接翻附录 C(按故障现象分类的排查手册)。
- 马上要画板,需要一套规则:第 3 章叠层 → 第 4 章拓扑与端接 → 第 5 章布线规则 → 第 6 章串扰,按顺序读完就不用回来补课。
- 只做某一种接口:第 8 章按接口拆开讲(SPI NOR / PPI / ONFI 与 Toggle / eMMC HS / UFS 差分),每节独立可读。
- 怀疑电源而不是信号:第 7 章的目标阻抗与同时开关噪声,解释「信号看着没问题但就是错」的那一半原因。
- 要做测量报告:第 10 章的眼图、探头与 TDR,重点是常见误判那一节。
- 只要速查表:附录 B 与 12.2 节。
1. 为什么高速 Flash 的成败在版图
这一章先建立一个共识:器件数据手册上的电气参数是有前提条件的。弄清楚那些前提是什么,就能理解为什么「原理图完全正确」的板子照样会在高速档上出错。
1.1 器件选对了为什么还是不稳
先说一个常被忽略的事实:器件规格书里的时序、摆率、驱动强度,全部是在一套明确的参考条件下测出来的——通常是特定的负载电容、特定的测试夹具、特定的端接方式与特定的电源电压、温度。规格书保证的是「在这套条件下,我的输出会是这样」,而不是「在你手画的一块随便的板上也会是这样」。
于是出现了一类典型的工程困境:
- 同一颗器件、同一份原理图、同一套驱动代码,只因为换了一块板、挪了一次布局,高速档就开始出错;
- 波器上看波形「没什么问题」——有幅度、有过冲但不算夸张、也看不出明显的振铃——但数据就是偶尔错一个字节;
- 降一档速率立刻全好,于是大家得出结论「这颗器件跑不到这么高」,然而同一型号在另一块板上却跑得很稳。
把这三种现象放在一起看,答案就清楚了:出问题的不是器件,而是器件与理想条件之间的那段差距。这段差距由三样东西决定,而它们没有一样印在器件的数据手册上:
| 决定成败的量 | 它在哪儿被决定 | 器件手册管不管 | 典型后果 |
|---|---|---|---|
| 传输路径的阻抗是否连续 | 线宽、介质厚度、参考面、过孔、连接器、封装引脚 | 不管,手册假设理想走线 | 边沿出现台阶与振铃,信号在和自己打架 |
| 回流路径是否闭合 | 信号下方的参考平面、地过孔密度、有没有跨分割 | 不管,原理图只画一根线 | 回路电感变大,地弹与辐射同时上来,边沿被拖慢 |
| 邻近网络是否注入能量 | 走线间距、平行长度、层间堆叠关系 | 不管,手册假设环境干干净净 | 到达时刻被推前或推后,表现为偶发而非必然 |
遇到偶发错误时,团队里的第一反应常常是「换一批料试试」或者「是不是这颗兼容性不好」。这类动作成本很高而信息量很低。更省力的顺序是先回答三个问题:这根线的参考面连续吗?换层的地方回流有没有被接走?这根线旁边的邻居是谁、并行了多远?
三个问题里只要有一个答不上来,换再多批次的料也只是在同一个概率分布里抽样。
还有一类更隐蔽的情况:低速下完全正常,一提速就崩。这恰恰是版图问题的指纹。低速时走线的分布效应被缓慢的上升沿吞掉了,怎么画都不出错;一旦速率上去,同一块物理板会从「基本可用」翻转成「明显不够」。翻转点落在哪一档,取决于版图而不取决于器件。
1.2 三个被吃掉的裕量
把上一张表再往里推一层,所有具体规则最后都指向三件事。它们不是并列的三个注意事项,而是同一份预算的三个去路:每一份损失最终都换算成接收端的幅度变小、到达时刻漂移,或者两者兼有。
- 阻抗连续性——信号从驱动器出来到接收端,一路上看到的瞬时阻抗变了几次。每一次变化都产生一次反射,反射与原信号叠加,边沿上就出现台阶与振铃。吃掉的是幅度裕量与最坏情况下的阈值裕量。
- 回流路径——每一根信号的电流都要原路回去,回去的那条小路不是画出来的,而是信号正下方参考面里电感最小的那条。参考面一旦被切开,或者换层时没人接手,回流被迫绕大圈,回路面积变大、电感上升。吃掉的是边沿速度与抗干扰能力,而且这一项往往同时制造辐射问题。
- 串扰耦合——相邻两条线之间存在互容与互感,攻击网络每次翻转都会往受害线注入一份能量。吃掉的是到达时刻的确定性,表现为抖动而不是稳定的幅度下降,因此最难用静态测量发现。
它们之间的关系可以这样记:阻抗连续性决定信号怎么看自己,回流路径决定信号怎么看回来的路,串扰耦合决定信号怎么看邻居。三者叠加的结果,就是接收端那张眼图。
| 被吃掉的裕量 | 物理机理 | 在波形上的样子 | 首要检查点 |
|---|---|---|---|
| 阻抗连续性 | 瞬时阻抗突变处发生反射,与原信号叠加 | 边沿台阶、振铃、非单调过渡 | 线宽突变 / 过孔 / 换层 / 分支残桩 |
| 回流路径 | 回路电感变大,返回电流被迫绕行 | 边沿变缓、地弹、辐射上升 | 是否跨分割 / 换层有没有跟随地过孔 |
| 串扰耦合 | 互容注入电流、互感注入电压 | 到达时刻被推前与推后,抖动变大 | 平行长度 / 间距 / 相邻层是否正交 |
图 1 请记牢:它不是三类问题的清单,而是一条链路上连续的三个环节。第二到第七章的规则,都是在回答「这三个环节分别怎么守」。
把这三点理解成三条互不相干的口诀,是最常见的学习方法错误。它们常常在同一处版图同时发生:一次不必要的换层,可能同时引入阻抗不连续(几何变了)、回流中断(参考面换了人)与串扰上升(进入了新的平行环境)。
所以真正的检查方式不是「我满足了 3W 吗」,而是「这一个动作同时动了哪几个量」。
1.3 与电路设计指南的分工
本产品线里已经有面向器件级接线的《电路设计指南》,也有面向驱动与配置流程的《软件设计规范》。把它们混着看很容易产生「这篇好像讲过」的错觉,因此先把边界写清楚:
| 文档 | 回答什么问题 | 输出物 | 与本篇的交界 |
|---|---|---|---|
| 电路设计指南系列 | 这一颗器件怎么接、为什么这样接、上电与复位的先后关系 | 器件选型、原理拓扑、电源与上下电、外部被动元件 | 它给出「要连线」,本篇决定「线怎么走才成立」 |
| 软件设计规范系列 | 寄存器怎么配、命令怎么发、速率档怎么切 | 初始化流程、命令与状态机、训练与校准流程 | 它负责「让它跑起来」,本篇解释「为什么某个速率档跑不稳」 |
| 本篇(高速 Flash PCB 布线与阻抗控制) | 板的几何与材料如何决定电气结果 | 叠层方案、线宽间距、拓扑与端接、长度规则、验证方法 | 本篇的输出反过来约束前两份文档里「假设成立」的那部分 |
三条分工里最重要的是最后一条:本篇不是讲了另一件事,而是讲了前两份文档里那些隐含假设是否还成立。举例来说,软件层把接口速率从某一档切到更高档时,隐含的前提是板上的上升沿还能在接收端打开足够的采样窗口;这个前提由本篇的第 2 章到第 7 章保证。
1.4 从什么速率开始必须按传输线处理
这是全文最关键的一个判据,也是被误传最多的一条规则:决定要不要按传输线处理的不是时钟频率,而是走线长度与信号上升沿在板上铺开的那段长度的关系。
理由很直接。信号翻转之后,需要一段时间才能把能量沿走线送到接收端并且得到回应(通常以反射的形式)。如果这段时间远短于上升沿本身,反射还没成形就被上升沿「吞」掉了,整条走线的行为就和一个简单的电容负载没什么区别;如果这段时间接近或超过上升沿的量级,反射就会完整地出现在波形上,表现为台阶或非单调边沿。前者可以按集总参数看,后者必须按分布参数(传输线)看。
把这句话换成可以量化的形式:
- 板上信号的有效传播速度:由介质的有效介电常数决定。常见板材上,信号传播速度在「每纳秒走十几厘米」这个量级,折算下来每厘米大约几十皮秒;具体数值以叠层设计、板材参数与实测为准。
- 临界长度:工程上常见的做法是取「上升时间内信号能走的距离」的某一个分数(常见取六分之一到四分之一这个量级)作为临界长度;走线超过它就应当按传输线处理。这个分数不是一条物理定律,而是一个工程裕量,不同行业、不同接口规范取值不同。
- 等价判据:把走线的往返时间与信号的上升时间比较。往返时间远小于上升时间时可按集总处理;两者同量级时必须按分布处理。
同一个时钟频率,配上不同驱动强度,上升沿可以差好几倍。决定版图行为的是上升沿,不是时钟。这也是软件层与版图层最容易打架的地方:驱动强度拉到最快档,往往让上升沿变陡,等于把本可以作为集总处理的走线推进了必须按传输线处理的区间。
所以「降频好了」和「把驱动强度调慢一点也好了」这两种现象,常常是同一个原因的两种修法。
| 接口与模式(按上升沿快慢排) | 常见处理策略 | 主要风险点 | 备注 |
|---|---|---|---|
| 低速异步 / SPI 基础档 | 多数板可按集总处理 | 串扰与参考面仍要讲,尤其是复用线 | 慢不等于没有回流问题 |
| 高速 SPI(多线 DDR 档)、SDR 同步并行 | 开始需要按传输线校核 | 线长超过临界长度、拓扑分支 | 此时应确认端接是否需要 |
| eMMC HS 档、ONFI / Toggle DDR 档 | 必须按传输线处理 | DDR 采样窗口窄,抖动最敏感 | 一般需要训练与校准配合 |
| UFS 差分对 | 必须按传输线+差分规则处理 | 对内等长、耦合一致性、参考面连续 | 差分不等于抗干扰免检 |
注意表里最下面两行的措辞:到了 DDR 与差分这一档,「按传输线处理」不是可选项。这时再用「这根线很短应该没事」来安慰自己是危险的,因为短到什么程度算短,取决于上升沿而不是取决于眼睛看上去的距离。
1.5 本文主线与读者路径
本篇给出的不是一份可以照抄的口诀表,而是一条顺序不可颠倒的三步法:
- 先定叠层与目标阻抗:确定层数、每层用途、介质厚度、目标单端 / 差分阻抗,并由二维场求解器与板厂能力共同确认线宽。这一步的输出是「这根线在多宽、多厚、参考什么」。
- 再定每根线的拓扑与端接:明确是点对点、菊花链还是星形,有没有分支,需在哪些位置放何种端接。拓扑一旦错了,后面所有精修都是在错误的基础上做装饰。
- 最后用长度匹配与参考平面缝合收尾:做同组信号的等长、处理换层处的伴随地过孔、补上跨越分割时的回流通路。
第二条顺序最常被违反,因为等长看起来最「有技术含量」。但在没有确定叠层与特征阻抗之前,传播速度是未知的,等长换算出来的延时没有物理依据——这就是「在不知道特征阻抗的前提下算延时」的意思。更糟的是,不同层的有效介电常数不同(外层微带外层是空气,内层带状线被介质完全包围),跨层走线如果按同一速度换算,等长反而会引入偏差。
另一个顺序陷阱是端接:端接电阻的位置与取值依赖拓扑,拓扑没定就先放了端接,等于先认输了再想办法补偿。
与三步法配套的还有一条闭环原则:版图阶段的所有判断,最后都要回到测量上验证。第 10 章讲的就是怎么测才不会被自己骗——眼图要看对的量,探头接法会改变被测对象本身,TDR 读数要扣除夹具的影响。没有这一步,前面三步的「以为」就永远是以为。
注:本篇在第 8 章会按 SPI NOR / PPI NAND / ONFI 与 Toggle / eMMC HS / UFS 逐个展开差异化要点;这些章节之间不需要顺序阅读,可以按需跳读。
2. 传输线与阻抗基础
这一章把「传输线」从一门课压缩成四件事:什么时候必须当成传输线、特征阻抗由什么决定、不连续怎么变成反射、延迟怎么换算。后面所有布线规则都是从这四条推出来的。
2.1 什么时候必须建模成传输线
同一根铜线可以用两种差别很大的模型去看,区别在于是否承认「信号传播需要时间」这件事。
- 集总模型:把整条走线看成一个挂在驱动器上的电容(必要时再串一点电阻)。它的隐含假设是——这条线足够短,以至于线上各点的电压在同一时刻几乎相同,驱动器看到的就是一个正在充电的电容。
- 分布模型(传输线):把走线切成无穷多个小段,每一小段都有自己的串联电感与并联电容。信号以有限的、由介质决定的速度往前走,接收端此刻看到的东西,是「若干时间之前在别处发生了什么」的结果。
关键分界线可以这样说:把能量送到线的末端并等到回应(通常以反射的形式回来)所需要的往返时间,与上升时间相比谁大。往返时间远小于上升时间时,整个过程发生在上升沿内部,来不及显形,集总模型完全够用;两者进入同一量级时,反射会以台阶的形式完整出现在波形上,必须按分布模型处理。
| 观察角度 | 集总成立时怎么看 | 分布主导时怎么看 | 工程含义 |
|---|---|---|---|
| 驱动器最先看到什么 | 一个正在充电的电容 | 走线本身的特征阻抗 Z0 | 源端端接之所以有效,正是因为驱动器先看到的就是 Z0 |
| 末端发生了什么 | 整条线一起充满 | 远端发生反射,能量部分折返 | 负载端接的作用是让能量被吸收而不是折返 |
| 波形形状 | 单调上升、略微圆滑 | 台阶、振铃、非单调边沿 | 非单调边沿可能在一个位周期内多次跨过阈值 |
| 线长的影响 | 越长只是容性负载越大 | 越长代表延迟越长,且要做长度控制 | 这段路径的长度必须计入时序预算 |
| 是否需要端接 | 通常不需要 | 通常需要,形式取决于拓扑 | 是否需要与取多少,都要先看第 4 章的拓扑 |
无论线长线短,驱动器在远端反射回来之前,看到的都只有走线本身的特征阻抗,而不是远端挂的那个负载。这条性质解释了很多现象:
- 为什么短线也会出现振铃——因为瞬间看到的确实是 Z0;
- 为什么源端串阻可以改善信号(它把驱动器输出阻抗补到接近 Z0);
- 为什么「远端挂了很重负载所以会慢」这种推断常常是错的(重负载的影响要等反射回来才显现)。
2.2 特性阻抗由什么决定
特征阻抗不是材料属性,也不是某个部件的规格,它是这条线在当前几何与当前材料下呈现出来的一个量。定性地说,它约等于根号下(单位长度电感除以单位长度电容),于是凡是能让电感变大或让电容变小的几何改动,都会把阻抗往上推,反之亦然。
把这个定性关系落实到具体变量上,一共只有五个:
- 线宽 w:线变宽,单位长度电容变大、电感变小,阻抗下降。这是最容易被当成唯一变量的一个。
- 介质厚度 h:走线离参考面越远,电容越小,阻抗上升。它的敏感度通常不低于线宽,却经常被忽略。
- 介电常数 Er:材料吸电能力越强,电容越大,阻抗下降。Er 不是常数——它随频率缓慢变化,也随树脂含量、铜箔粗糙度、板材批次变化。
- 铜厚 t:铜变厚会让边缘场略微改变,阻抗通常略降;影响不如前三个显著,但在细线上不可忽视。
- 参考面的数量:只有一侧有参考面是微带线,上下都有参考面是带状线。同样的线宽在带状线里通常给出更低的阻抗,因为多了第二条通路。
对差分对而言还要加上对内间距 s:两根线靠得越近,彼此之间的耦合越强,等效到单根上的阻抗越低。所以差分对的阻抗由「对内耦合」与「各自对参考面的耦合」共同决定,而不是由其中单独一项决定。
| 变量 | 变大时的变化方向 | 敏感度(相对) | 备注 |
|---|---|---|---|
| 线宽 w | 阻抗下降 | 高 | 最直观,但绝不是唯一变量 |
| 介质厚度 h | 阻抗上升 | 高 | 受叠层压合厚度公差影响明显 |
| 介电常数 Er | 阻抗下降 | 高 | 随频率、批次、含胶量变化 |
| 铜厚 t | 阻抗略降 | 中低 | 细线与厚铜时要计入 |
| 差分对内间距 s | 差分阻抗上升 | 高(差分) | 对内耦合越弱,越接近两根单端线 |
| 阻焊层覆盖 | 阻抗略降 | 低 | 外层常见,量级有限但可测 |
工程师之间流传的「这个叠层下走多宽是 50 欧姆」只有在该叠层成立。介质厚度差一点、板材换一家、铜厚换一档,同一线宽给出的阻抗可以差出若干欧姆。
正确做法是:先由板厂给出叠层(含各层铜厚、介质厚度、板材型号、 Er 实测值),再用二维场求解器算线宽并留出公差;投产前拿 TDR 实测复核(见第 10 章)。本文不给任何具体线宽数字,原因就在于这些数字离开了叠层就没有意义。
2.3 反射与阻抗不连续
当信号沿线前进遇到某处的瞬时阻抗与之前不同,一部分能量会继续往前,另一部分会原路返回。返回量与进入量的比值叫反射系数,定性上等于(后段阻抗减前段阻抗)除以(后段阻抗加前段阻抗)。从这个式子能直接读出三件事:
- 阻抗变大给出正的反射,表现为过冲;阻抗变小给出负的反射,表现为下陷或负的台阶。
- 不连续越剧烈,反射越强;完全开路几乎全反射且极性为正,完全短路几乎全反射且极性为负。
- 反射是在两侧来回进行的,因此会有多次反射叠在一起,形成振铃。
由此得到的工程结论是:真正有害的不是「有没有反射」——任何板都有——而是反射产生的额外波形分量,会不会在接收端造成阈值误判或时序漂移。判定标准是反射到达的时间与上升时间的关系:早于上升到阈值之前就回来的那部分,会被计入波形形状;晚到的部分则表现为后续 bit 的背景扰动。
| 不连续来源 | 呈现的性质 | 典型量级现象 | 常见处理 |
|---|---|---|---|
| 走线宽度突变 | 电容或电感的局部变化 | 阻抗局部凹陷或抬升 | 保持线宽恒定,避免颈缩 |
| 过孔(含焊盘与反焊盘) | 以电容为主 | 负的脉冲式凹陷 | 减少不必要换层,必要时优化反焊盘 |
| 层换(换参考面) | 参考面变了,回流中断 | 阻抗突变 + 回路电感上升 | 换层处补伴随地过孔 |
| 分支残桩 | 开路残端 | 多次反射与振铃 | 避免分支,拓扑上做点对点 |
| 连接器 / 插座 | 以电感为主 | 正的过冲 | 选型时把脚位互感纳入考虑 |
| 器件封装引脚框 | 引线电感 + 封装电容 | 边沿退化 | 在仿真或实测里包含封装 |
| 测试点与探针 | 局部电容 | 小台阶 | 测试点做小,或用专用夹具 |
调试时大家盯着看的是「过冲有没有超规格」,但真正让接收端出错的常常是非单调边沿:上升过程中出现回头。在阈值附近的回头可能让波形在一个位周期里多次穿越判决电平,某些输入结构会因此产生双沿。
所以看波形的顺序应当是:先看有没有非单调,再看幅度,最后才看过冲的数字。
2.4 传播延迟与波长的比较
信号在板上的传播速度由介质的有效介电常数决定:有效介电常数越大,速度越慢,单位长度延迟越大。这一点带来两个必须记住的结论。
第一,不同层的延迟不一样。外层一侧是介质、一侧是空气,有效介电常数小于板材标称值;内层被介质完全包围,有效介电常数更接近板材标称值。因此同一块板上,外层的单位长度延迟通常小于内层。常见板材上的传播速度在「每纳秒十几厘米」这个量级,折算下来每厘米几十皮秒,具体数值以叠层与板材参数为准。
第二,等长换算必须按层分别计算。如果一组信号一半走外层一半走内层,却按同一个速度去换算「多长等于多少时间」,等长做完反而可能引入偏差。这正是「先定叠层再谈等长」的物理依据。
还有一个容易被忽略的现象:板材内部的玻纤编织会让局部介电常数不均匀。走在玻纤束上方与走在编织窗口上方的两条线,单位长度延迟可能有细微差别;在对内等长要求很严的差分对或 DDR 组里,这种差别会以几十皮秒量级出现。是否需要为此选用特定编织方式的板材、是否要按特定角度走线,按板材厂商建议与实际容错决定。
| 层类型 | 有效介电常数 | 单位长度延迟 | 等长换算的注意点 |
|---|---|---|---|
| 外层微带线 | 小于板材标称值 | 相对更小 | 表面工艺、阻焊厚度会带来额外变化 |
| 内层带状线 | 接近板材标称值 | 相对更大 | 同组同层最好,跨层要分别换算 |
| 外层与内层混走 | 两者不同 | 必须分别计算 | 禁止用统一速度做延迟匹配 |
| 差分对 | 取决于两条线的相对位置 | 取两者的实际路径 | 对内等长与实际耦合一致性都要看 |
2.5 常见误区
| 常见说法 | 为什么不对 | 正确的理解 |
|---|---|---|
| 阻抗只由线宽决定 | 忽略了介质厚度与介电常数 | 两者敏感度不低于线宽,必须一起由叠层确定 |
| 走宽一点信号会更好 | 线宽改变会使阻抗偏离目标 | 线宽是达成目标阻抗的手段,不是越大越好 |
| 低速信号不用管回流 | 回流跟着最近的参考面走,与速率无关 | 低频时回路面积的影响较小,但跳变处依然成立 |
| 做等长就能解决时序 | 少了参考面与端接,等长只是「一起糟糕」 | 先确保阻抗与回流,等长才是最后一步精修 |
| 短线没有传输线效应 | 取决于上升沿,不取决于线的绝对长度 | 驱动强度调快会让原本安全的短线变危险 |
| 差分线不用管回流 | 差分对同样有共模回流路径 | 对内等长 与参考面同样重要 |
| 仿真通过等于实测通过 | 模型简化与实际板材有差距 | 以 TDR 与实测为准,仿真用于趋势判断 |
图 4 下半部分的剖面值得单独说一句:「差一点没事」这种判断必须针对最差的那一点,而不是平均值。一条链路里往往同时有容性凹陷与感性过冲,两者在空间上错开并不互相抵消——它们在时间上各自显现。
至此,第 2 章给出了判断信号行为的四个基本工具。第 3 章开始把它们变成板上可以执行的东西:先是把这些集合起来落成一套叠层与参考平面方案,因为它是所有后续规则的地基。
3. 叠层与参考平面
三步法的第一步就在这里落地。叠层是所有后续规则的地基:它决定了能达成什么样的阻抗、回流有没有地方走、相邻层的串扰有多大。这一章讲怎么把这套地基搭起来。
3.1 叠层设计的目标
叠层不是「层数越多越好」,而是在成本、层数、电气性能之间找到一组同时满足四个目标的排布。这四个目标按优先级排:
- 每个高速信号层都紧邻一个完整的参考平面。这是硬性要求——没有参考平面的信号层,等于让回流自己想办法回家。
- 目标阻抗在工艺公差内可重复达成。介质厚度的压合公差、铜厚的蚀刻公差都要能容得下线宽的调整余量。
- 相邻信号层的走线方向互相正交。一层横走一层竖走,可以把层间的宽边耦合降到最小。
- 电源平面与地平面成对靠近,它们之间形成的平板电容是高频去耦的第一道供应。
| 叠层目标 | 实现手段 | 怎么检验 | 常见失误 |
|---|---|---|---|
| 每层高速信号有参考面 | 信号层夹在平面层之间,或与平面层相邻 | 逐层检查这层的上下相邻层是不是完整铜层 | 为省层让两个信号层直接相邻 |
| 目标阻抗可达 | 由场求解器按实测板材参数算线宽 | 投产前用 TDR 测量专用测试条 | 直接沿用上一版线宽而不重算 |
| 层间串扰可控 | 相邻信号层走线正交,必要时加隔离层 | 检查同net 层间的平行长度 | 两层信号都按同一个方向长距离并行 |
| 电源与地成对相邻 | 把电源平面排在与其对应的地平面相邻位置 | 检查电源层与其配对地层的最近距离 | 电源多层堆积而远离对应的地 |
| 层间换层有回流接管 | 换层时参考面可互相跨接 | 检查换层处是否有地过孔 | 跨 PowerShell 两个不同网络时不加过孔 |
不要从「以前用几层就还用几层」出发。正确的算法是:先数出有多少个需要参考面的高速信号层,再数出需要几个独立的电源域,然后把这两组交叉排进去,数出来的层数就是下限。
由此得到的结果往往比直觉多一层——而这多出来的一层通常是整份设计里性价比最高的一层。
3.2 参考平面的完整性
「参考平面」这个词容易被理解成「一层同样漂漂亮亮的铜」,但回流要的并不是一张漂亮的铜皮,而是一条阻抗足够低的通路。由此引出三条要求:
- 平面要连续:被大量过孔、走线切割过的平面,在电流需要横穿的方向上会失去低阻抗通路。常见的问题是电源平面上密密麻麻打了不同网络的过孔,反焊盘连成一片,等效成了「有洞穴的平面」。
- 禁止或非铺铜区要受控:某些区域因为隔离要求要挖空铜皮(例如高压隔离槽、天线净空区),高速信号必须绕开这些区域的上方。
- 夹在两个平面之间的信号层要有明确的主从关系:当一个信号层夹在两个平面之间时,两个都可能成为回流层,实际分布由两者到信号线的距离决定(距离近的一侧承担更多)。了解这一点,才能解释为什么某些看似对称的叠层里,阻抗与延迟并不对称。
| 要求 | 为什么 | 排查方式 | 备注 |
|---|---|---|---|
| 高速信号下方必须是完整铜层 | 回流要贴着信号线走才能最小化回路面积 | 逐段检查这个网络正下方的铜皮是否连续 | 这一条最容易被机械地丢掉 |
| 控制平面上的过孔密度 | 反焊盘连片会把平面切成碎片 | 检查密集区域是否有连通的残铜 | 必要时调整过孔间距或加屏蔽过孔 |
| 不要在参考面上走无关的线 | 平面上切割出的走线会形成缝隙 | 检查平面层是否被当成了布线层 | 这是最应带来的省钱冲动 |
| 电源平面做参考时要能找到回流通路 | 回流通过最近的去耦电容跨到地平面对 | 检查换层点附近是否有电容或地过孔 | 见 3.4 节的缝合规则 |
关于平面边缘与板边的关系(让内层平面比参考平面层向外缩进一定距离),业界有各种经验的表达。这类做法主要影响的是边缘辐射,量级有限,而且不是解决信号完整性问题的手段。
如果目标是压住回流与串耦,正确的着力点还是:参考面连续、换层有地过孔、平行间距够。把第六十条规则当主力、把三条基本规则当参考,是典型的本末倒置。
3.3 平面分割与跨分割
平面被切开通常是有理由的:模拟地与数字地要分开、几个电源域要隔离、某个区域要达到安规距离。但代价必须有人承担——那就是跨越这道裂缝的信号。
信号线本身可以毫无阻碍地从裂缝上方跨过去(它是一条普通的铜线),问题出在回流:它一直在信号正下方的参考面里走,遇到裂缝只能绕行。
- 绕行意味着回路面积变大,等效电感随之上升;
- 电感上升会让边沿变缓,同时让这条线更容易被别人干扰也更容易干扰别人;
- 因为这是一个环路,它同时也是一个效率不错的天线——很多「产品辐射超标但找不出源头」的案子,源头就是某几根跨越裂缝的线。
所以当裂缝不可回避时,要给回流一条就近的通路:在跨越点附近安排桥接(跨接电容或铜桥),让回流不必绕远。注意这条通路必须紧邻跨越点——隔了很远就等于没做。
| 场景 | 会怎样 | 禁止程度 | 可行的处理 |
|---|---|---|---|
| 高速信号跨越地平面裂缝 | 回流绕行,回路电感大幅上升 | 禁止 | 改布局 / 改层 / 在跨越点附近桥接 |
| 信号参考面从地平面换到电源平面 | 回流需经最近的去耦电容跨过去 | 谨慎 | 确保附近有低阻抗的跨接通路 |
| 低速控制信号跨越分割 | 影响有限但依然存在 | 可以接受 | 至少保证它不是电磁敏感的网络 |
| 连接器/排针一带整体切分 | 多个网络同时被切断回流 | 禁止 | 给整排准备足够多的回流针脚 |
| 隔离槽上方走线 | 任何层都不要从上方走 | 禁止 | 绕开,或在槽两侧分别走不同的网络 |
一个很容易犯的错误是:以为「反正地最终都连在一起」。这句话在直流上成立,在高频上不成立——回流走的是电感最小的路,不是最终连通的那条路。绕到板边再接回来的那条通路,虽然有连接,电感却大得很。
这就是为什么评价一条回流通路要看它离信号线多近,而不是看它最终有没有连上。
3.4 平面缝合与过孔
把上面这条思路再扩大一点,就得到平面缝合的整套规则。它们回答的是同一个问题:当回路不得不换层或换平面时,怎么把通路口子降到最小。
- 伴随地过孔(stitching via):信号换层时,在换层过孔旁边放置连接两个参考平面的地过孔,让回流可以跟着换。位置要靠近信号过孔(近距离优先),数量按工艺间距与实际并行长度决定。
- 多块同网络铜皮的缝合:同一块地上的不同区域(如顶层的地铜皮与内层地平面),要用足够密的过孔连接,避免它们在高趋于不同电位而形成「贴片天线」。
- 跨缝桥接:两个被切开的平面之间需要为回流提供通路时,优先用铜桥;需要直流隔离时用跨接电容或其他符合产品要求的器件,位置必须贴近跨越点。
- 过孔自身的残桩:过孔有自身的残桩(stub),在高速下残桩是一个开路残端,会产生多次反射;当残桩影响的量级不可忽略时,需要考虑背钻或改用其它孔结构(如盲埋孔或背钻孔)。
| 规则 | 适用位置 | 关键参数(定性) | 怎么检查 |
|---|---|---|---|
| 换层必放伴随地过孔 | 每个信号过孔旁 | 越近越好,数量按密集程度定 | 逐过孔检查,重点查最初两次换层 |
| 同网络铜皮之间的缝合 | 表贴地铜皮与内层地之间 | 间距与数量同时满足(常见为波长的一小部分) | 看铜皮连通性与过孔间距是否满足要求 |
| 桥接元件贴近跨越点 | 跨越参考面缝隙的位置 | 距离是第一 priority | 目测另一个常常是不够——要用软件量 |
| 控制过孔残桩长度 | 高速链路上的通孔 | 残桩越长影响越大 | 核对叠层与加工能力,必要时用背钻 |
| 过孔不宜成为 BRANCH | 禁止把过孔当作分叉点 | - | 检查网络是否从过孔处分成两路 |
3.5 介质材料的选择
板材之所以重要,是因为它同时决定两件事:有效介电常数(决定阻抗与传播速度)与损耗(决定高频衰减)。常规的 FR-4 级别板材在多数存储接口的多数速率档下是够用的,但是否够用要看两件事——链路有多长、信号的上升沿有多快。
- 介质损耗:随频率上升与走线长度增加而累积,表现为高频分量的衰减;它把陡峭的边沿变成圆滑的边沿,从而把接收端的 Effective 窗口压缩。
- 导体损耗:由趋肤效应与铜箔表面粗糙度决定。频率越高,电流越贴着铜的表面走,粗糙的铜表面等于把路径变长。
- 含胶量与玻纤编织:影响局部的有效介电常数,进而影响局部的速度;这在需要严格等长的差分对上会显现。
选择时的判断顺序:先估算走线的实际长度与速率,判断损耗是否在裕量之内;只有当余量明显不足、或者一致性不可接受时才升级板材。板材升级会带来成本与交期的代价,把它当成常规配置是没有必要的。
| 材料参数 | 影响什么 | 变化趋势 | 选型注意 |
|---|---|---|---|
| 介电常数 Er | 阻抗、传播速度 | Er 越大,阻抗越低,速度越慢 | 取实测值,注意随频率与批次变化 |
| 损耗角正切 Df | 高频衰减 | 越大衰减越快 | 长链路与高速档才需要特别关注 |
| 铜箔粗糙度 | 导体损耗 | 越粗糙损耗越大 | 与铜厚一起看,细线尤其敏感 |
| 玻纤编织方式 | 局部 Er 的一致性 | 编织越松散差异越大 | 差分对等长要求严时评估 |
| 耐压与 CTI | 安规相关,与 SI 无直接关系 | - | 隔离区域不要为了 SI 牺牲安规 |
3.6 叠层检查清单
- 每一层高速信号层的上下是否至少有一层完整参考面?
- 相邻的信号层是不是安排成走线方向正交?
- 目标单端阻抗与差分阻抗是否都已写出,并按板厂实测参数算出线宽?
- 叠层的压合厚度公差是否容得下线宽的调整余量?
- 所有高速网络是否可以避免跨越任何平面分割?
- 换层过孔旁是否都安排了伴随地过孔?
- 同网络铜皮之间的地过孔是否足够密(板边与接插件一带尤其要查)?
- 过孔残桩的长度是否已经核实,需要背钻的是否已标注?
- 板材的 Er 与 Df 参数是实测值还是标称值?
- 叠层表是否已经发给板厂确认(含可制造性与公差)?
- 是否留了阻抗测试条以便首件测量?
- 等长换算所用的 delays 是否按层分别计算?
图 5 里容易被抄错的一点是:电源平面(L4)之所以被放在两个信号层之间,是因为它必须紧邻自己的配对地平面,而不是因为「中间总要有个东西」。如果把它挪到远离任何地平面的位置,它的高频回流就只能靠远处的电容,效果会明显变差。
4. 拓扑与端接
三步法的第二步。拓扑决定了一条网络有几个负载、有没有分叉、在哪儿分;端接决定了多出来的能量往哪儿去。拓扑错了,后面所有精修都只是在一个错误的骨架上加装饰。
4.1 点对点、星形与菊花链
三种基本拓扑的区别,在于驱动器看到的负载是怎么挂上去的:
- 点对点:一个驱动器对应一个接收器,中间没有分叉。驱动器看到的就是这一条线的特征阻抗,最容易预测,也最容易端接。这是高速链路的首选。
- 菊花链:负载一个接一个地串在同一条线上。每个负载的输入电容沿线分布,使得这一路径上的瞬时阻抗一路变化;同时每个负载接入点都是一个潜在的次级反射源。它在低速并行接口上便宜好用,在高速档上往往就是失败的原因。
- 星形:从驱出一个点出发,多路分支同时到达各自的负载。它的优点是各分支长度可以做到一致,到达时刻一致;缺点是分支点多(每个点都有阻抗不连续),且驱动器看到的是多路并联的负载。
把这三条放在一起看,取舍就很清楚:点对点最简单;星形用更复杂的代价换来时序一致;菊花链用最少的走线换来最差的电气预测性。
| 拓扑 | 驱动端看到的负载 | 优点 | 缺点 | 适用 |
|---|---|---|---|---|
| 点对点 | 单一 | 单纯的一条线 | 最好预测,端接最简单 | 占用更多引脚与走线 | 高速链路、差分对、时钟 |
| 菊花链 | 沿线分布的输入电容 | 走线最少,成本最低 | 阻抗沿途变化,多个反射源 | 低速并行与控制信号 |
| 星形 | 多路并联 + 多个分支点 | 各分支到达时刻一致 | 分支点造成多次不连续 | 多器件共享的有需同步信号 |
| 带缓冲/复位的星形 | 由缓冲器分成多个点对点 | 既保证到达时间也保证波形 | 多一颗时钟缓冲器件 | 高速多负载时钟分配 |
原理图上一个网络名连出去三四个器件,看起来是一件事;电气上这是一棵树,树上的每一段都有自己的瞬时阻抗。把它当成一根线去看待,是把出错原因推到后期才暴露的源头。
在高速档上出现需求多负载的情况时,正确做法是加缓冲器把它拆成几组点对点,而不是继续用一根线硬拖。
4.2 多器件挂载的拓扑选择
存储接口里真正需要挂载多个器件的场合不算多,但每一种都有自己的约束:
- 多颗 SPI NOR / NAND 共用一组数据线:常见做法是共享时钟与数据,用各自的片选分开。此时时钟线挂了多个负载、分支不可避免;低速档上问题不大,高速档必须额外校核。
- 多颗并行 NAND 共享数据总线:总线上有多组分时复用的收发器,负载数量直接决定能否达到目标速率,常常需要把负载电容计入时序预算。
- eMMC 与 UFS:通常是点对点设计,器件内部已经把控制器与被控对象集成在一起,外部基本上不需要考虑多挂载。
| 场景 | 推荐拓扑 | 理由 | 主要注意点 |
|---|---|---|---|
| 单颗 SPI NOR / NAND | 点对点 | 最干净,最容易达到标称速率 | 把器件尽量放在主控附近 |
| 多颗 SPI 器件共享数据 | 片选分开,数据/时钟共享 + 缓冲 | 减少线数但保证波形 | 共享的时钟是最先出问题的那根 |
| 多颗并行 NAND | 共享总线 + 分开的片选与控制 | 工艺上的惯例做法 | 总线上负载数过多时必须降档或加缓冲 |
| eMMC / UFS | 点对点 | 器件内部已集成,外部无必需的分叉 | 差分对等必须直接点对点处理 |
| 需要同一时钟源的多个异步负载 | 低速可用菊花链 | 成本优先且速率很低 | 检查是否有上升沿被破坏 |
4.3 串联端接与并联端接
端接的本质只有一句:给沿这条路走过的能量一个「吃掉它」的地方,让它不要折返回来。具体实现主要有两类。
源端串联端接:在驱动器输出脚附近串一颗电阻。它的工作方式是——把驱动器的输出阻抗补起来,让它整体上接近走线的特征阻抗,于是第一次出发的波在执行 Done; 到达负载端时发生一次几乎完全的正反射(因为接收端输入阻抗很高),这一次反射是有用的,它把负载端的电压抬到全幅度;反射回到源端时被那颗串阻吸收,不再来回。
- 优点:元件少、几乎没有直流功耗,是最常用的方式。
- 代价:负载端的波形在第一次到达时是半幅度的,要等到反射回来才升上去。这意味着它对沿途不能有其它需要立刻判决的负载——这正是它只适用于点对点末端负载的原因。
- 位置要求:必须靠近驱动端,放在中途或末端就没有预期效果。
负载端并联端接:在接收端把走线通过电阻接到参考电平(地、或专门的端接电压)。它的工作方式是让走到终点的能量直接被吸收,不再折返。
- 优点:终点看到的波形没有「先半幅度后升上去」的过程,沿线若有多个负载也能维持波形。
- 代价:有直流功耗(接到地或电源时尤为明显),或者需要一路专门的端接电源(并保证它本身干净)。
- 变种:分压形式的端接可以兼顾电平与功耗;交流形式的端接(串电容)能去掉直流功耗,但会引入一个额外的时间常数,不适合要求严格的电路。
| 端接方式 | 放置位置 | 直流功耗 | 适用拓扑 | 主要风险 |
|---|---|---|---|---|
| 源端串联 | 紧贴驱动器输出脚 | 极小 | 点对点,末端单一负载 | 沿线若有其它负载会误判 |
| 末端并联到地 | 紧贴接收端 | 较大 | 点对点与总线型均可 | 静态电流与驱动能力要求 |
| 末端接到端接电压 | 紧贴接收端 | 中等 | 对幅度对称性有要求的场合 | 端接电源本身必须足够干净 |
| 分压端接 | 紧贴接收端 | 中等 | 常用异步与总线场合 | 两颗电阻都要靠近放置 |
| 差分端接 | 差分对接收端 | 按标准器件要求 | 差分链路 | 必须同时考虑共模与差模 |
| 不加端接 | - | 无 | 短线且上升沿足够慢 | 条件一变就会失效 |
端接不是必需品,而是补偿手段。当走线足够短、上升沿足够慢,使得反射在上升沿内部就被吸收掉时,完全可以不加端接——这既省元件也省功耗。
但把这句结论反过来用是危险的:「上一版没加也没事」不能推广到「这一版也不用加」,因为两者比较的前提恰恰是版图与驱动强度都没有变化。只要其中之一变了,那个「没事」的区间就变了。
4.4 时钟与片选的拓扑
在所有信号里,时钟与片选这两根必须单独拿出来讲,因为它们出错的方式与数据线不同:数据错了是坏数据,时钟与片选出错了是采样时刻错或目标器件选错,后果往往更严重也更难复现。
- 时钟要当作最敏感的一根线来对待:优先点对点;必须扇出时使用时钟缓冲器把它拆成几组点对点,而不是一根线拖多个负载。时钟线上任何一次分支都会在各自的分叉点产生一个不连续。
- 不要在时钟上做「试试看」的改动:正因为时钟的上升沿最陡,任何为了「改善」而并联上去的电容都可能把它拖成慢边沿,把幅度问题换成时序问题。
- 片选的特殊性:它通常不快,但它是「这一刻谁在说话」的门控信号。它要干净而不必最强——毛刺会让别的器件误以为被选中,抖动的边沿会让总线切换的时刻不确定。
- 长度关系放到第 8 章讲:不同接口的时钟与数据关系差别很大(SDR 与 DDR 完全不同),这里先看拓扑。
在时钟线上并联一颗电容是很多人第一反应会想到的动作。它确实能把毛刺压小,但同时把边沿拖慢,还可能在某个特定频率上造成新的问题,最重要的是——它没有解决造成毛刺的那个原因。
正确的顺序是:先看是不是拓扑与回流的问题,再看是不是驱动强度太强,最后才考虑是否有合法的分立器件方案。
4.5 端接与驱动强度的配合
驱动器一般提供几档可配置的驱动强度(不同厂商的命名不同,本质是输出级的等效导通电阻不同)。它一来影响上升沿的陡峭程度,二来决定源端端接电阻的取值。
- 驱动强度越强 → 输出阻抗越低 → 上升沿越陡 → 更容易暴露版图的薄弱之处,同时更容易出现过冲。
- 源端串阻的目标值定性上是把驱动器输出阻抗补到接近走线的特征阻抗;由于输出阻抗是随电压与 Process 变化的,实务上以器件模型或实测为准。
- 于是《 strong》结论:先定拓扑与端接,再回头定驱动强度。把驱动强度当成主要的调优手段,等于把一个应当在中为变量的东西留到了最后。
- 而在调试阶段,改驱动强度是一个极好的诊断手段:如果把它调慢问题消失,说明原问题是版图表现出的敏感性,而不是器件的原生缺陷。
| 现象 | 可能说明什么 | 尝试的诊断动作 | 定位依据 |
|---|---|---|---|
| 把驱动调慢一档,问题消失 | 上升沿过快放大了版图缺陷 | 复核线长与端接 | 版图或端接问题 |
| 把驱动调强一档,问题消失 | 驱动能力不足或负载过重 | 核算负载数量与容性负载 | 扇出或器件选择问题 |
| 调驱动强度几乎无影响 | 问题不在这里 | 转向检查回流与串扰 | 可能是 3.3 或第 6 章的问题 |
| 只在某个参数组合下失效 | 多个边界条件叠加 | 做交叉条件实验 | 通常是多个边界同时接近上限 |
4.6 拓扑对照
| 拓扑 / 端接组合 | 典型出现位置 | 实现难度 | 设计要点 |
|---|---|---|---|
| 点对点 + 源端串阻 | 高速 SPI、DDR 数据线、eMMC 命令线 | 低 | 串阻紧贴驱动端,值按 Z0 与输出阻抗定 |
| 点对点 + 末端并联 | 需要在沿线其它点也能干净采样的情况 | 中 | 注意直流功耗与端接电源质量 |
| 点对点差分 + 差分端接 | UFS 等差分链路 | 中 | 对内等长与耦合一致性同样重要 |
| 菊花链(无端接) | 低速异步并行与控制线 | 低到中 | 控制总线上的负载数量 |
| 菊花链 + 源端串阻 | 中速多负载总线 | 中 | 串阻只能管一段,沿线苟其所 |
| 星形 + 各分支端接 | 同步方式的多负载场景 | 高 | 优先改用缓冲器拆分成点对点 |
| 时钟缓冲扇出 | 高速多器件时钟 | 中 | 每段都是点对点,长度分别匹配 |
把第 3 章与第 4 章合起来看,三步法的前两步已经完成:叠层给了「什么线宽、参考什么」,拓扑与端接给了「怎么连、多出来的能量往哪去」。第 5 章与第 6 章讲第三步——长度匹配、层数安排与串扰控制,这些是把前两步的成果兑现到具体每一根线上的操作。