ONFI / Toggle 高速接口与信号完整性 · 技术探讨
从眼图余量到速度档位切换 —— 一份给高速接口电路设计者与验证工程师的物理层落地文档 | 编制日期 2026-10-14 | 版本号 Rev 1.0
结论: 高速接口能不能跑起来,只取决于一件事——在最差的那个角(温度、电压、速率)上,眼图还有没有余量。 源同步、训练、速度档位切换、纠错重试,所有机制都只是为了在那个角上把余量留住。 协议层跑通不等于物理层达标;速率上不去时先降速,只会掩盖「余量被哪一档吃掉」这个问题, 而不是解决它。
报告总结
并行 NAND 的高速接口从异步 SDR 一路走到 Toggle 与更高代速率之后,问题已经从「时序参数怎么定」 彻底转成了物理层怎么落地:这条线到底能不能在最高那一档跑起来、跑起来时还剩多少余量、 余量是在哪一档被吃掉的。市面上大量设计指南在这一点上停在「本器件支持最高 xx MT/s」, 读者拿去做板级设计时仍然不知道该看什么、该测什么、改哪一处才有用。
本篇要补的就是这一段。它不重复讲采样点怎么定、也不重复讲协议怎么演进(这两件事分别由 《存储接口信号采样与时序要求》和《NAND 接口协议演进》两篇讲透),而是专门回答一个问题: 把速率往上推的时候,余量是怎么被一步一步吃掉的,以及在每一档上还剩多少、该怎么保住。
为此本篇反复回到三个互相正交的维度上:物理层完整性(眼图、串扰、阻抗、抖动)、 链路层对齐(训练、采样点、中心对齐与边沿对齐)、控制器自适应(档位切换、重试、降频)。 这三件事经常被混成一句「时序不对」,而它们的排查手段、判据与责任方完全不同。
读者路径
全篇一律使用相对关系与判据表述(余量占阈值的比例、处于同一量级、随条件单调变化), 不给出任何具体 ps / ns 承诺、具体时序参数数值、位域位置或选项字节默认值。 接口族名与速率档位代号按行业通用写法引用;凡涉及具体档位的定义、切换条件与数值,一律以正式规范与器件 datasheet 为准。
1. 从异步到源同步:接口形态的代际
这一章不展开采样点的确定方法(那是《存储接口信号采样与时序要求》的主题), 只做一件事:把「异步 → 源同步」这次接口形态的代际更替讲清楚, 因为本篇后面所有的余量、训练与档位机制,都建立在这次更替之上。
1.1 异步接口靠什么保证可靠
并行 NAND 的传统异步接口没有时钟线。一次读命令之所以能被正确执行,靠的是三根支柱, 三者缺一不可,而且它们全都是「约定」而不是「测量」:
- 固定的延时约定:控制端拉低之后,数据端必须在规定时间之后才变化; 接收端必须在规定时间之后才采样。这段时间写在 datasheet 的时序参数里,是两端的共同约定。
- 足够宽的数据稳定区:约定之所以敢定得那么死,是因为总线上每位数据的 「保持时间」被设计得远大于约定延时。换句话说,约定值是在稳定区的余量里取的。
- 总线电容被控制在可接受的范围内:延时约定成立的前提是驱动强度能把负载充放电 在规定时间内完成。总线越长、负载越重、边沿越缓,稳定区就越窄,约定就越难成立。
这三根支柱里,前两根写在规范里,第三根写在布线者手里。这一点在低速时代不重要, 因为稳定区足够宽;但速率一提上来,第三根支柱立刻变成决定性因素。
| 支柱 | 由谁保证 | 为什么可靠 | 什么时候会失效 |
|---|---|---|---|
| 延时约定 | 器件 datasheet 与规范 | 两端都按同一个数值等待,不存在理解差异 | 该数值覆盖不住温度、电压、工艺与走线差异的综合漂移 |
| 数据稳定区 | 器件内部驱动与时序设计 | 保持时间长于约定延时,中间有富余 | 位周期缩短后建立时间变长,富余被逐档吃掉 |
| 总线电容可控 | 板级布线与负载器件 | 边沿够陡,延时才能被约定住 | 长走线、高负载、换层过孔让边沿变缓 |
异步接口的可靠性不是测出来的,是约定的。约定的可靠性有一个上界: 约定值必须小于实际稳定区。因此异步接口能跑多快,取决于「稳定区还能比约定值宽多少」, 而不是取决于约定值本身能定多小。
1.2 源同步接口的引入动因
源同步的做法只有一句话:让发送数据的那一方,把发送数据用的时钟也一起送出来。 接收端不再用自己的时钟去采别人的数据,而是用随路时钟去采随路数据。
这一下改变的不是速率,而是问题的性质:
- 两端有了共同的时间参考。数据的建立与保持不再是「相对于对方某个不可见的延时」, 而是「相对于随路时钟的某个沿」。这是一个可以被画在纸上的关系。
- 时钟与数据走同一条路径。从器件引脚到接收端引脚,时钟和数据经过同样的封装、 同样的过孔、同样的走线、同样的连接器,因此两者的传播延时是强相关的。
- 偏移从「不可见」变成「可测量」。因为强相关,所以外部干扰对两者的影响接近相同, 差分之后的残留很小。这就使得「时钟相对数据的偏移」成为一个可以稳定测量的量。
第2 条是源同步最容易被忽略、却最关键的一点。它带来一个反直觉但极其有用的性质: 板级走线做得好不好,对「时钟相对数据的偏移」影响很小,对「幅度与波形质量」影响很大。 这就是为什么很多板子能跑起来、只是裕量不多,而不是完全跑不通。
恰恰相反。源同步让相位变得可管理,但幅度、噪声、串扰、损耗 这些问题一个都没解决,而且它们在高速下比相位更致命。
一个常见的错误推论是:「接口是源同步的,所以走线长度不用管,随便布就行。」 正确说法是:走线长度差(相位)可以放宽,走线的阻抗连续性、参考平面完整性、 间距与线宽(幅度与串扰)一点都不能放宽。这正是第 3 章要逐条展开的内容。
1.3 数据率翻倍后异步接口为什么撑不住
把速率翻倍,异步接口会在四个地方同时出问题,而且这四处互相放大:
把这四条放在一起看,得到一个必须记住的判断:异步接口在速率翻倍时的失败, 不是某一个参数没设好,而是「余量」这个总量在四个方向上同时被消耗。 其中任何一项单独看都还有富余,合起来就没有了。
这也解释了一个常见现象:低速下设计一个板子,明明每一条规则都照做了,换个速率档位就不行。 因为规则约束的是单个维度,而速率约束的是四个维度的和。
1.4 差分传输与共模
差分不是协议层的概念,它是纯粹的物理手段:两根线承载幅值相等、相位相反的信号, 接收端把两者相减。相减这一步同时完成了三件事——恢复出原来的信号、 抵消掉两根线共同受到的干扰、以及把辐射源从「一根大电流」变成「一对小电流」。
但差分只对差模有效。任何同时加在两根线上的干扰(电源噪声、地弹、外部共模辐射) 在相减之后会原样保留下来,这就是共模。共模电流沿参考平面成环流动, 既不传输有用信息,又实实在在地产热和辐射。
| 维度 | 差模(DM) | 共模(CM) | 工程含义 |
|---|---|---|---|
| 信号定义 | 两根线幅值相等、相位相反 | 两根线同向同幅、叠加 | 两者同时存在,相加减才是完整信号 |
| 主要关注量 | 差分阻抗、差分摆幅、共模抑制比 | 共模电压范围、共模电流 | 前者决定能否传对位,后者决定是否吵到别人 |
| 设计手段 | 线宽、间距、介质厚度对称控制 | 参考平面连续、去耦网络、地平面完整性 | 两套手段几乎不重叠,不能互相替代 |
| 失效表现 | 眼宽收窄、眼高下降、误码 | 辐射超标、EMI 下降、对内干扰增加 | 误码常被误判为共模问题,反之亦然 |
工程上共模不像差模那样直观——示波器上看到的往往是一根线的波形,不容易看出共模分量。 但它的影响范围比差模更大:共模电流走的是回路,回路面积大、辐射强, 既污染板内其它信号,又可能影响整机 EMC 认证。
第 10 章讲的电源与地噪声耦合,本质上就是共模问题在供电网络里的表现。
1.5 各代接口速率档位的量级关系
图 3 只画相对关系,但它揭示了一条贯穿全文的规律:每一代接口把位周期缩短一截, 所有与时间相关的扰动——抖动、串扰、训练步进、建立保持余量、时钟偏斜——在周期中所占的比例就整体抬高一截。
这解释了为什么代际演进在物理上如此困难:不是新增了某个新问题,而是所有老问题的相对权重同时上升。 当比例大到某个临界点,原来的「约定 + 余量」思路就不够了,必须引入主动测量与主动调整—— 这正是训练机制出现的根本原因。
| 代际(示意) | 电气机制 | 速率档位形态 | 对齐手段 | 余量的主要来源 |
|---|---|---|---|---|
| 异步 SDR | 单端 / 多端复用,时序靠延时约定 | 以较慢的位周期为主 | 两端约定延时,无反馈 | 稳定区宽度相对约定值的富余 |
| ONFI DDR 一代 | 源同步、双沿采样 | 单一档位或很少档位 | 固定相位关系,靠规范约束 | 固定相位偏移 + 幅度裕量 |
| NV-DDR 系列各代 | 源同步 + 独立选通 / 数据选通 | 分若干速率档位代号 | 读方向由器件提供选通、写方向由器件提供接收窗口 | 相位余量 + 训练结果 + 纠错重试 |
| Toggle 系列 | 源同步 + 差分随路时钟 | 按档位区分,切换有明确流程 | 静态训练为主,配合硬件缓冲 | 训练找出的中心位置 + 温度重训 |
1.6 本文要回答的问题与主线
本篇不试图覆盖高速接口的全部内容,只回答三个层层递进的问题:
- 余量到底被什么吃掉了?——把余量拆成眼高与眼宽两半,再把眼宽拆成抖动、 串扰占位与相位误差三项,逐项定位(第 2、4、5 章)。
- 保住余量的手段有哪些,各自归谁管?——把手段分成物理层、链路层、控制器三层, 说明每一种手段能做什么、代价是什么、由哪一方负责实施(第 3、6、7、8 章)。
- 出问题时按什么顺序查?——给出一条不跳步的排查顺序,并明确每一步在排除什么、 留下什么(第 11、12 章与附录 C)。
贯穿全文的唯一判断是:能不能跑起来,看的是最差角上还有没有余量。 所有机制——训练、档位、重试、纠错——都只是为了在那个角上留得住余量。 理解这一点,本篇的其它内容就都能挂到同一根线上。
| 维度 | 解决的问题 | 核心手段 | 由谁实施 | 典型失效表现 |
|---|---|---|---|---|
| 物理层完整性 | 信号本身有没有被传坏 | 阻抗控制、参考平面、间距与线宽、端接、去耦 | 整机厂(板级)+ 器件厂(封装内) | 眼高下降、幅度衰减、串扰、辐射 |
| 链路层对齐 | 采样时刻选得对不对 | 训练、采样点选取、中心对齐与边沿对齐 | 控制器与器件共同 | 误码、ECC 报错、数据全错但接口仍「工作」 |
| 控制器自适应 | 条件变了之后怎么办 | 档位切换、重试、降频、温度补偿 | 主控固件 | 静默降速、周期性停顿、时好时坏 |
速率上不去时,把档位降一档,系统立刻「好了」。但降速没有改变任何余量的成因, 它只是把触发条件推远了。后果是:
- 问题被掩盖,量产一致性无法保证——实验室常温好用,装到机柜里高温就又不行;
- 归因彻底丢失——你再也不知道余量是在哪一档被吃掉的;
- 掩盖了一个可能同时影响其它接口的系统性问题(电源、参考平面、封装、散热)。
正确顺序是:先用第 4 章的方法测出眼图余量在哪一档被吃掉,再决定是加宽余量还是接受降档。 如果最终结论确实是「必须降档」,那也是一个有依据的结论,而不是一个 workaround。
2. 信号完整性基础:这套问题的物理底座
这一章只讲物理,不讲机制。它是后面所有章节的前提: 如果不知道信号在通道里到底发生了什么,训练、档位、预算这些概念就都悬在空中。
2.1 上升沿与有效带宽的关系
数字信号在通道里传播时,高频成分衰减得比低频快,因此接收端看到的不是方波, 而是一个边沿被抹平、顶部略有下垂、底部略有抬升的平滑形状。这个结论只有一个推论, 但它是一整串工程方法的起点:
上升沿越陡 → 高频成分越多 → 需要的通道带宽越宽 → 对阻抗连续性、参考平面、串扰、抖动的要求全部水涨船高。
所以「这个接口能不能跑某个速率」的第一个物理问题不是「信号频率够不够高」, 而是「这个速率对应的边沿有多陡,通道能不能把这么宽的频谱送过去」。 在同样摆幅、同样周期的两个信号里,一个边沿慢一倍,频谱宽度差不多差一倍。
这也解释了为什么降频有时比降速率更有效:降速率会同时拉长周期并允许边沿变缓, 降频则只允许边沿变陡。前者对通道更友好。
2.2 趋近效应与回流路径
低频电流在导体截面上分布比较均匀,电流密度处处相等。但频率升高之后, 导体内部的电磁场会使电流向导体表面集中——这就是趋近效应(proximity effect)。 它的直接后果有两个:
- 有效导电截面减小,单位长度电阻增大。在同一个频率上,高速信号的损耗比低速信号大得多。
- 电流在横截面上的分布不再均匀。相邻导体上的反向电流会让彼此的电流进一步挤向对方那一侧, 于是两根线之间的间距,实际上比几何间距「更近」。
趋近效应的另一半常被忽略:电流在横截面上的分布决定了回流路径。 信号电流走在走线上时,必然有一段回流电流要回来——它沿着走线正下方、参考平面上的一条镜像路径返回, 而不是随便乱走。回流路径与信号路径共同构成一个闭合回路,回路面积就是辐射强度的主要决定因素。
把这两件事放在一起,就能推出本章最重要的一条判断:
走线上方传的是信号,走线下方传的是回流。这两者是一个整体, 谈任何一根线的时候必须同时谈它的回流。
第 3 章的参考平面连续性、过孔代价、连接器影响,本质上都是在讨论「回流能不能走直线」, 而不是讨论信号本身。后面第 12 章的排查顺序之所以要先分段定位,也是因为大部分板级问题 最终都落在这句话上。
2.3 参考平面的作用
参考平面在高速设计中承担的不是「提供回流」这一件事,而是四件事, 每件都在余量账上占一份:
- 回流路径:提供镜像回流,把回路面积压到最小。这一条决定了辐射与对内串扰。
- 特性阻抗:走线与平面之间的介质厚度是计算阻抗的基本输入。 没有连续参考平面,就没有可设计的特性阻抗。
- 耦合参考:走线与平面之间的电场决定了这条线对旁边信号的容性耦合强度。 参考平面远,耦合就弱。
- 去耦与回流终点:高速信号在换层、回流换层、或者遭遇任何瞬时电流需求时, 电流会从参考平面上「抽」电荷。平面上的压降与电感就直接变成噪声,叠加到信号上。
这四件事解释了参考平面为什么是「连续性」优先于「面积」的: 一块面积很大但被切成三段的平面,效果远不如一块面积略小但完整连续的平面。
2.4 阻抗不连续的代价
当信号从一段阻抗为 Z1 的通道进入一段阻抗为 Z2 的通道时,能量无法完全匹配, 一部分会以反射波的形式返回。反射波的幅度由两者的失配程度决定:完全匹配时不反射, 失配越大反射越强。
反射本身不是问题,问题在于它与入射波叠加之后在接收端形成的电压波形:
- 过冲与下冲:波形的峰值超过稳定值。接收端看到的有效电压被抬高或压低, 直接吃掉眼高。如果摆幅方向与判决方向相反,还可能造成误判。
- 振铃:反射波在通道里来回往返,每次都被损耗削一点,形成衰减振荡。 振铃会持续到反射能量衰减到看不见为止,这段时间里时钟可能一直是脏的。
- 占空比失真:上下沿的不对称反射会让上升沿与下降沿的延迟不同, 累积表现为占空比偏离 50%。
这三种现象都会直接体现在眼图上,而且它们在示波器上一眼就能看出来。 因此第 4 章讲眼图时会把「看得见的形变」与「看不见的抖动」分开讲:前者查阻抗,后者查时钟。
| 不连续来源 | 物理成因 | 典型表现 | 首查位置 |
|---|---|---|---|
| 线宽变化 | 走线进入不同图层、或同一层上走线间距改变导致参考条件变化 | 某一处过冲 / 下冲,向远端传播 | 该段走线的叠层与线宽 |
| 分支 / 抽头 | T 型分支、星型抽头、测试点 | 分叉点明显振铃,抽头末端反射更强 | 分支点与抽头位置 |
| 过孔 / 换层 | 过孔反焊盘挖空参考平面,介质厚度突变 | 过孔附近局部振铃与阻抗台阶 | 过孔尺寸、反焊盘、 stitching 过孔 |
| 连接器 / 封装 | 结构不同材、接触引脚长度不同、阻抗突变 | 连接器两端波形明显不同 | 连接器规格书与 pin 结构 |
| 端接不匹配 | 串联 / 并联端接阻抗选错或位置不对 | 过冲或欠冲,方向单一 | 端接元件值与放置位置 |
2.5 损耗的频率相关性
通道损耗随频率上升,这本身不新鲜。关键在于它上升得很快—— 而且是把高频段吃得最狠。这意味着一个数字信号的高频成分被削掉之后, 波形会变成什么形状,才是需要关心的。
典型的三段式损耗来源,以及各自与频率的关系:
- 趋近 / 直流电阻损耗:随频率明显上升,根因是电流向表面集中(第 2.2 节)。 它对上升沿的影响最直接,表现为边沿变缓。
- 介质损耗:与介质材料的损耗角正切、信号频率、有效长度三者相关, 通常随频率单调上升,且长通道上累积明显。
- 铜皮粗糙度损耗:铜箔表面起伏使有效电流路径变长。 在较高频率上才开始显著,且与板材表面处理工艺直接相关。
三项都随频率增强,方向一致,因此没有任何一项可以用来抵消另一项。 这带来一个重要推论:在高频段做通道优化,收益是叠加的;在低频段做,可能互相抵消。
因为损耗首先吃掉的是眼宽,其次才是眼高。
上升沿变缓意味着过零点漂移、上升与下降沿不再对称;叠加抖动之后,采样点在时间方向上 可用的窗口收窄。而大多数控制器在失效之前会先表现为偶发误码或重试, 只有在严重到一定程度之后才体现为稳定的读出错误。
2.6 眼图里能看到什么
眼图是把很多次「一个位周期」内的波形按同一个时钟对齐后叠加得到的图。 它的价值在于:一屏之内同时显示了幅度余量、时间余量、以及全部扰动的分布。 本篇把它拆成四组读法,第 4 章再展开细节:
- 垂直方向读眼高:两条轨迹之间的空白高度。这是电压余量,直观对应幅度类问题 (衰减、串扰、共模噪声、电源噪声)。
- 水平方向读眼宽:在过零点附近,轨迹之间的空白宽度。这是时间余量, 对应抖动、串扰占位、相位误差。
- 形状读形变:轨迹变胖、边缘出现毛刺或台阶,说明噪声或串扰在某些条件下集中出现; 上下沿不对称说明占空比失真。
- 位置读中心:眼图最宽的点就是最佳采样点位置。 采样点离中心有多远,直接决定你有多少时间余量可以用。
这一节只建立一个认知:眼图是一张「余量地图」。 第 4 章会把它拆成可测量的量(眼高、眼宽、抖动、串扰分量),第 11 章讲怎么正确测它, 第 12 章讲读出异常之后按什么顺序查。
① 只看眼高。眼高好看不代表能跑:时间方向被抖动吃光时, 眼图可能又高又窄,采样点稍微一偏就出错。
② 把参考点选在过零而不是眼中心。过零点对抖动最敏感, 而眼中心才是一致性最好的位置。两者的差异,正是训练机制存在的理由(第 7 章)。
③ 只看常温单点。单张常温眼图不能说明任何问题, 必须看最差角——高温 + 低压 + 最高速率(第 11 章的矩阵测试)。
3. 通道与阻抗设计
第 2 章讲了物理现象,这一章把它们变成可执行的板级动作: 什么时候必须按传输线设计、阻抗怎么定、参考平面怎么保证连续、过孔与连接器怎么处理, 以及最后一条最重要的边界——板级能做到什么、做不到什么。
3.1 传输线什么时候必须当成传输线看
「线短就不用管阻抗」是流传最广也最贵的错误。判据本身很简单,但必须用对变量:
不要用「走线多长」做判据,要用「上升沿在通道里待多久」做判据。
上升沿在通道中传输的那一小段时间里,它对应的空间长度是有限的;把这段时间与信号周期相比, 就得到判据。当这个比例接近 1时,接收端看到的已经不是一个「脉冲」, 而是一串被通道幅频特性与阻抗不连续共同整形过的波形——此时必须按传输线处理。
还有第二条判据,它与线长无关:走线上只要出现过孔、分支、测试点、连接器或封装焊球, 就已经存在阻抗不连续,无论这条线多短。短线上这些突变点造成的相对扰动往往比长线上的损耗更大。
| 走线上的现象 | 物理上发生了什么 | 为什么必须按传输线处理 | 处理手段 |
|---|---|---|---|
| 过孔 | 介质厚度突变 + 参考平面被挖空 | 局部阻抗台阶 + 回流路径中断 | 优化反焊盘尺寸 + 加地过孔 |
| 分支 / 抽头 | 信号能量分叉 | 分叉点与末端各产生一次反射 | 尽量避免;必须用时按分支长度处理 |
| 测试点 | 引出一个小天线与一个反射点 | 既辐射又反射 | 改用最小焊盘并串入小电阻 |
| 连接器 / 焊球 | 结构与材质变化 | 阻抗与串扰都不可控 | 选同阻抗规格 + 控制走线进出的对称性 |
| 层间换层 | 介质厚度与参考层改变 | 阻抗台阶 + 回流绕行 | 对称换层 + 换层处加地过孔 |
3.2 单端与差分的阻抗取值
阻抗取值的完整依据有三条,缺一条就会得到一个「看起来对、实际跑不起来」的结果:
- 目标阻抗:单端信号通常取一个中等量级的单端阻抗;差分对取一个差分阻抗, 并且必须同时约束共模阻抗。只写差分阻抗而不提共模约束,是规格书写得不够完整。
- 叠层与介质厚度:走线与参考平面之间的介质厚度是计算阻抗的核心输入。 板材的介电常数取值必须与实际材料批次一致,否则算出来的阻抗没有意义。
- 线宽与间距:线宽单独变化会让阻抗偏离目标;差分对中两根线的对称性 与它们之间的间距直接决定耦合强度与共模阻抗。
由此得出一条实践上非常有效的判断:阻抗不是「调」出来的,是「约束」出来的。 如果计算结果与目标差得很多,正确的做法是调整叠层与线宽约束并重新计算, 而不是在板上加匹配电阻去「补偿」。匹配电阻是在补偿一个本来就不该存在的偏差。
这个问题的答案不是「要」或「不要」,而是「这条走线的上升沿有没有落到传输线区间」。 同一块板上,速度最慢的那几根线完全不需要控制阻抗,而从主控到器件的那几组差分线必须控制。
把问题问成「几层板要不要控制阻抗」,往往会得到两种极端答案: 要么全板过度约束、成本上升,要么全板不约束、高速线出问题。 约束应该按信号分组给,而不是按板子统一给。
3.3 参考地平面的连续性
参考地平面的设计目标只有一句话:让每一条高速走线的正下方,自始至终都有一块连续的导体。 这句话里每一个词都是约束:
- 每一条:不是「大部分」。只要有一条高速线下方开槽,这条线就会成为整板上最差的那一条。
- 正下方:不是「附近有地」。回流路径要的是镜像路径,相距越远回路面积越大。
- 自始至终:包括中间经过的所有过孔、分支、层间切换。
- 连续:不能被任何其他网络的走线、器件焊盘、开槽、螺丝孔打断。
实操上有两条非常好用的做法:
- 禁止在高速区下方走任何其它网络。这不是「尽量」,而是一条硬约束, 代价很小,收益极大。
- 在参考平面上密集 stitching 过孔(地过孔)。它把平面的上下两层也连起来, 使得即使某处平面被切断,回流仍然有了一条近路。
| 破坏平面连续性的动作 | 为什么危险 | 替代做法 | 优先级 |
|---|---|---|---|
| 高速区下方走其它信号 | 直接切断参考路径,回流绕行 | 改到外层或错开区域 | 绝不做 |
| 平面开槽 / 挖空 | 槽两侧的走线回流被迫绕远 | 用拼板工艺或邮票孔替代大槽 | 绝不做 |
| 在高速区下方打螺丝孔 | 孔壁无铜,回流绕行 | 把安装孔移到非高速区 | 绝不做 |
| 平面被去耦电容的过孔打断 | 过孔密集处铜箔被削薄 | 沿平面边缘整齐排布,避免稀疏不均 | 尽量避免 |
| 换层处相邻层不是参考层 | 换层点回流必须绕行 | 选择有相邻参考层的叠层顺序 | 必须避免 |
3.4 过孔与换层的代价
过孔在高速设计里是一个必须管理的成本项,原因有三, 而且这三条是叠加的:
- 阻抗台阶:反焊盘把走线周围的导体挖掉,改变了局部的场分布。 反焊盘过大则局部阻抗偏低,过小则过孔本身成为瓶颈。
- 回流路径中断:过孔把信号从一层带到另一层。如果相邻层不是完整参考平面, 信号在过孔附近就没有紧邻的回流路径,必须绕到更远的平面再回来。
- 寄生参数:过孔自带电感与电容。这些寄生在低速下无所谓, 在高速下会与通道的传输特性形成谐振,在频域上表现为反射峰与振铃。
因此过孔设计的正确顺序是:先保证参考平面在过孔处仍然连续(用地过孔把上下层连起来), 再考虑反焊盘尺寸的对称性,最后才是速度优化。顺序颠倒的话,速度优化得再好, 过孔仍然是这条线上最差的一段。
| 过孔优化项 | 作用机理 | 改错的后果 | 优先级 |
|---|---|---|---|
| 地过孔(stitching) | 把参考平面的上下层在过孔附近短接,给回流一条近路 | 无此过孔时换层点回流绕行,辐射明显增大 | 最高 |
| 反焊盘尺寸 | 决定局部阻抗台阶的大小与方向 | 过大则阻抗骤降产生过冲,过小则瓶颈 | 高 |
| 过孔数量对称 | 减少收发两端的结构不对称 | 两方向波形不对称,误码率不对称 | 高 |
| 换层位置 | 把换点挪到远离敏感区域的位置 | 过孔落在时钟与数据的敏感段上 | 中 |
| 过孔速度优化 | 在以上都满足之后再做 | 本末倒置:优化了速度,回流仍绕行 | 最后 |
3.5 连接器与封装引脚的影响
板级设计对这一段几乎没有控制力,只能选择与适配, 这正是第 9 章「责任边界」命题的起点:连接器与封装内部通道属于器件侧的战场。
但板级仍然要做三件力所能及的事:
- 按阻抗匹配规格选连接器。连接器厂商给出的阻抗规格是它在特定测试条件下的结果, 板级要问清这个条件与自己是否一致。
- 控制连接器附近的走线对称性。差分对在进入连接器的最后一段最容易失去对称, 因为引脚排列与固定结构往往不给你对称的空间。
- 给连接器留出回流路径。连接器外壳与固定脚如果能可靠接地, 可以在一定程度上把共模电流引走。
封装引脚同理。焊球之间的间距、焊盘的形状、走线从焊球下方引出的方式, 都会在器件厂内部就已经引入一个固定的不连续。板级能做的只是不要在它之上再叠加一层。
「器件手册给了套线长度建议」不等于「板级照做就一定过」。
手册里的线长建议通常是在一个参考的、理想的、被厂商验证过的板子上得出来的。 它给的是约束,不是保证。你自己的板的层叠、板材批次、连接器型号、周边器件摆放, 都可能落在这个参考之外。真正的闭环只能靠实测—— 这句话会在第 9 章和第 12 章反复出现。
3.6 板级设计能做什么、做不到什么
这一节是本章的落点。把「板级能做什么」列清楚, 是为了避免两种浪费:一是指望板级解决它解决不了的问题(比如向器件厂索要一个它内部没做的优化), 二是在板级能做的事情上留了余量(比如没做地过孔却以为是器件的问题)。
| 问题 | 板级能否解决 | 板级的手段 | 若板级已尽力仍不达标,责任在哪 |
|---|---|---|---|
| 参考平面不连续 | 能,且必须 | 禁布区 + stitching 过孔 | 板级设计缺陷 |
| 阻抗偏离目标 | 能,且必须 | 叠层约束 + 线宽约束 + 来料一致性 | 板级设计缺陷 |
| 串扰过大 | 能,且必须 | 加大间距、减线宽、错层、缩短平行长度 | 板级设计缺陷 |
| 过孔处的反射与振铃 | 大部分能 | 地过孔、反焊盘对称、换层位置 | 板级设计缺陷 |
| 连接器处阻抗突变 | 只能适配 | 选对规格、控制引出对称性 | 器件选型 / 器件内部 |
| 封装内通道的损耗 | 不能 | 无手段 | 器件内部设计 |
| 控制器内部时钟的相位 | 不能 | 无手段 | 器件内部设计 |
| 最差角余量本身不足 | 不能 | 无手段 | 器件档位与训练策略 |
把这张表从上往下读,可以得到一条很实用的判断链:先从上往下排除, 走到「不能」那一行就停下来,把问题交回给能解决它的一方。 反过来,从下往上读则是排查顺序——先排除板级能解决的那几项,因为它们占故障的大多数, 而且修起来最便宜。
4. 眼图与抖动分解
这一章是全篇的度量衡。前两章讲现象与设计,本章讲怎么把「余量」变成可以写进文档、 可以开会讨论、可以判定通过与否的量。
4.1 眼图的构成
眼图不是「一张漂亮的图」,而是一个把三维信息压进二维的投影: 横轴是时间,纵轴是电压,每一次位周期的波形都叠上去。 压掉的那一维是「这是第几个位周期」,也正是这一维的差异构成了抖动与噪声。
因此眼图上的任何一个区域都同时对应两件事:一件是确定性的、可解释的(如眼高对应幅度余量), 另一件是随机的、只能用统计描述的(如轨迹的厚度)。 读眼图时把这两者分开,是本章最基本的要求。
另外要记住一个容易被新手忽略的点:眼图的形状由测量系统的带宽决定。 测量系统带宽不足时,边沿会被测量仪器自己抹平,眼图会显得比实际更宽更漂亮。 这属于典型的「测量把问题藏起来」,第 11 章专门讲这类测量误区。
| 眼图上的观察 | 直接对应的物理量 | 上游成因 | 第一排查方向 |
|---|---|---|---|
| 眼高不足 | 电压余量不足 | 损耗、串扰、电源噪声、共模 | 通道损耗与供电 |
| 眼宽不足 | 时间余量不足 | 抖动、相位误差、串扰占位 | 时钟质量与训练结果 |
| 交叉点偏离正中 | 占空比失真 | 上下沿不对称、阻抗不连续 | 端接与阻抗连续性 |
| 轨迹整体偏厚 | 随机噪声偏大 | 电源噪声、热噪声、同时翻转 | 去耦网络与地平面 |
| 边缘出现毛刺 | 单次异常事件 | 偶发干扰、ESD、单粒子 | 屏蔽与地回流 |
| 形状随批次变化大 | 工艺与一致性余量不足 | 来料批次、器件批次 | 来料一致性管理 |
4.2 抖动源分类:周期、随机、非累积
第 2 章讲过,抖动来自「边沿到达时刻的不确定性」。这些不确定性有几十种来源, 但按可预测性切一刀,就只剩三类:
- 周期抖动(PJ):来源确定、每个周期重复。时钟馈通、与数据相关的周期性干扰、 特定频率的电源纹波都属于这一类。它的特点是可以被测出来并从总抖动里减掉。
- 随机抖动(RJ):每一拍都不相同。本征热噪声、电源上的随机噪声、 聚合的随机干扰属于这一类。它无法被分离,只能用统计量(标准差、分位数)评估。
- 非累积抖动(NCJ):单次事件有界,但不随观察时间线性累加。 占空比失真、反射、上升下降沿不匹配属于这一类。评估它必须指定观察窗口,否则测出的数没有意义。
这三类在实测中的分离有一个关键前提:必须固定观察窗口。 不声明窗口长度的抖动数值是不可比的,这也是「两个人测出两个抖动值,谁也不服谁」的常见根源。
4.3 确定性抖动与随机抖动的区分
这一节只讲一件事:为什么必须做抖动分解,而不能只测总抖动。
假设你测到总抖动是某个值,它由确定性和随机性两部分构成。这两部分的处理方式完全不同:
- 确定性抖动可以减小。找到来源 → 改设计(加隔离、改回流、改去耦、 改叠层)→ 重新测。改完总抖动会明显下降,且下降量可预测、可验证。这是设计闭环。
- 随机抖动不能减小,只能被统计地容忍。你可以改善供电、散热、 屏蔽来降低它的量级,但无法证明它降到零。因此它只能用统计余量来覆盖。
把两者混在一起算一笔总账,就会出现两种典型错误: 第一种是把随机抖动当成设计缺陷去查,查到最后一无所获,浪费大量时间; 第二种是把确定性抖动当成随机波动接受,把它当作「随机余量」一笔勾销, 结果在最差角上翻车。
把「总抖动预算」拆成几项直接相加,其中一项写的是「随机噪声 xxx」。 这是错的。随机抖动不叠加——两个独立随机源合成后的分布不是两者之和, 而是按方和关系增长。
正确写法是:确定性抖动按项相加得到 DJ_total; 随机抖动按统计量(通常是标准差或指定分位数)单独给出 RJ; 总抖动的门限按概率合成规则作用于 DJ 和 RJ 两个量。 附录 B 给出了可直接套用的模板。
4.4 抖动预算的分配
预算表的本质是回答一个问题:如果余量不够,我应该先动哪一项?。 因此一份合格的预算表必须满足四条:
- 每一项都有明确的物理来源。写不出「这一项来自哪里」的,就不是一个预算项, 而是一个凑数的数字。
- 每一项都有对应的改善手段。如果某一项即使超了也无处可改, 那它只能作为「接受项」单列,不参与优化排序。
- 确定性项与随机项分开。这是上一节讲的原因。
- 判据以「占阈值的比例」表达。绝对数值随器件与工艺变化, 比例关系稳定得多,也更适合写进跨料号的文档。
还有一条实践上的建议:预算表要留「未分配余量」这一栏。 把所有份额都分完的预算表是假的——真实世界里总会有一些你没想到的来源。 留出余量不是保守,而是承认清单不完整。
| 预算项 | 类型 | 典型来源 | 主要改善手段 | 达标判据的表达方式 |
|---|---|---|---|---|
| 参考时钟本身的抖动 | 随机 | 器件内部振荡与分频链 | 器件内部,板级无手段 | 占阈值比例,与温度的相关趋势 |
| 时钟通道的抖动 | 随机 | 电源噪声耦合到时钟线 | 改善去耦与参考平面 | 与时钟幅度改善同步观察 |
| 数据通道抖动 | 随机 | 同源耦合、地弹 | 改善回流与去耦 | 同一采样点下与时钟抖动的相对量 |
| 串扰占位 | 确定 | 邻近线的确定性切换 | 加大间距、缩短平行长度 | 占眼宽比例的量级 |
| 占空比失真 | 确定 | 阻抗不连续、上下沿不对称 | 优化端接与阻抗连续性 | 是否随窗口长度变化 |
| 相位误差残余 | 确定 | 训练步进与收敛判据 | 增加训练步数与判据余量 | 是否落在眼中心附近 |
| 未分配余量 | — | 清单之外的未知来源 | 无 | 必须显式保留,不可分完 |
4.5 眼高眼宽的余量判据
余量判据最容易犯的错误,是把判据写成绝对数值。 绝对数值的问题在于:它随器件工艺、批次、温度、供电条件变化, 昨天刚通过的判据今天可能就不成立,而你会以为是设计变了,其实是判据的适用条件变了。
本文推荐的写法是比例判据:把余量写成「占阈值的比例」, 并且明确这个比例是在最差角上测得的。理由有三条:
- 比例关系跨器件、跨批次稳定得多,适合写进设计指南。
- 比例判据天然包含「最差角」这个前提,因为它必须声明测量条件才有意义。
- 比例判据让「余量」与「裕量」在概念上分得开——余量是实测的量,裕量是你主动留下的一部分。
第三个词值得展开:裕量(guard band)不是余量的同义词。 余量是「你现在有多少」,裕量是「你现在有多少,你打算只用多少」。 留裕量的理由是模型误差与未识别来源——你的计算永远比真实情况乐观一点, 因为模型里没有把某些东西算进去。
因为具体数值会误导。本篇要传达的是怎么想、怎么算、怎么判, 而这三件事都不依赖某一个具体数字。一旦写出具体数值,读者就会去对表, 而表里的数值随器件、批次、版本变化,对不上的概率远大于对上的概率。
凡涉及具体数值的地方,一律以正式规范与器件 datasheet 为准。 本篇给出的是读那张表的方法,以及判断「这张表够不够」的标准。
4.6 掩模与合规判据的关系
眼图上通常会画一个掩模(mask),它定义了「合规」的区域。 掩模内不允许有任何轨迹通过。掩模的形状不是随便画的,它由两件事决定:
- 规范给的必然部分:规范会给出接收端的采样点位置、判决门限、 以及必须留出的建立与保持窗口。这三者直接决定了掩模的位置与形状。
- 留出的裕量:掩模之外还有一段余量,这段余量是留给模型误差、 未识别来源以及批次差异的。规范给的是底线,不是目标。
由此得到一条非常实用的判断:「轨迹碰到了掩模」和「轨迹离掩模还有一段距离」 是完全不同的两件事。前者是明确的失败;后者是「勉强通过」, 它意味着任何一点未被建模的因素都可能把它推到失败。
工程上的目标应该是在最差角上,轨迹与掩模之间仍然存在可观的距离, 而不是「刚好不碰到」。这与第 8 章的档位决策直接相关: 一个刚好通过的档位,在批量生产中会变成一个不时掉档的档位。
| 状态 | 眼图上的表现 | 工程含义 | 应该采取的动作 |
|---|---|---|---|
| 明显通过 | 轨迹与掩模之间距离很大 | 余量充足,可考虑提高档位 | 验证更高档位是否也可行 |
| 勉强通过 | 轨迹贴近掩模边缘 | 余量已接近零,批次风险高 | 保留当前档位,找出哪一项预算最紧 |
| 触碰掩模 | 轨迹已压在掩模边界上 | 该条件下不通过 | 必须改变条件或降档 |
| 穿过掩模 | 轨迹进入掩模内部 | 已经失效 | 定位是眼高方向还是眼宽方向失效 |
| 随批次变化 | 同一条件下不同板差异明显 | 一致性余量不足 | 查来料批次与工艺一致性 |
本章的判据一律以「占阈值的比例」「与阈值的相对量级」「是否随观察窗口变化」表达。 具体眼高、眼宽、抖动、掩模尺寸的定义与数值,一律以正式规范与器件 datasheet 为准。