ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

4层板跑DDR3实战:叠层、拓扑与等长控制指南

4层板跑DDR3实战:叠层、拓扑与等长控制指南 DDR3 在嵌入式圈子里是个绕不开的话题。你只要碰过 Cortex-A 系列、RK 系列、全志、瑞芯微这类平台早晚会撞上它。很多人第一次画 DDR3 的时候心里想的都是这玩意儿得上 6 层板吧4 层板肯定搞不定。我当年也是这么想的直到被成本逼着用 4 层板硬啃下来一块 RK3288 的核心板才发现事情没那么玄乎——4 层板跑 DDR3只要叠层设计对了、拓扑选对了、等长控住了量产良率一样能做得很好看。这篇东西写给两类人一类是正在用嘉立创 EDA 画板、第一次接触 DDR3 的嵌入式硬件工程师另一类是画过 DDR3 但总在 4 层和 6 层之间纠结、想搞清楚到底能不能省这两层的老手。我会把叠层怎么排、走线怎么分组、等长怎么算、嘉立创 EDA 里具体怎么操作一步步拆开讲。不讲虚的全是能直接抄作业的东西。1. 先想清楚4 层板跑 DDR3 到底卡在哪1.1 4 层板和 6 层板的本质差距不在层数很多人把4 层能不能跑 DDR3当成一个玄学问题其实它是个很具体的工程问题。6 层板相比 4 层板多出来的两层主要干两件事一是提供完整的参考平面通常是多一组电源和地二是让信号层可以夹在两个平面之间形成带状线。而 4 层板的经典叠层是信号-地-电源-信号顶层和底层都是微带线中间两层是平面。差距就出在这里。微带线的信号回流路径是信号线正下方的平面而 DDR3 的数据线、地址线动辄几十根如果参考平面被分割得七零八落回流路径就会绕远阻抗不连续反射和串扰全来了。6 层板之所以稳是因为它能让每一层高速信号都有一个完整、连续的参考平面贴着走。但注意这只是更容易不是必须。4 层板只要把平面完整性守住把关键信号约束住DDR3-1600 甚至 1866 都能跑。我实测过 RK3288 配 DDR3-16004 层板跑 memtest 一晚上零错误。关键是你得知道哪些地方不能妥协。1.2 DDR3 的速率和 4 层板的现实边界先给个经验边界免得你盲目乐观DDR3 速率4 层板可行性关键约束800 Mbps很轻松基本不用太纠结等长1066 Mbps轻松等长控制在 ±100mil 内1333 Mbps可行等长 ±50mil拓扑要讲究1600 Mbps可行但吃设计等长 ±25mil参考平面必须完整1866 Mbps勉强需要严格仿真不建议新手碰2133 Mbps不建议老老实实上 6 层这个表不是绝对的跟你的芯片、颗粒数量、走线长度都有关系。但如果你画的是 1600 以下、单颗或两颗 DDR3 颗粒的嵌入式板子4 层板完全够用。真正让 4 层板翻车的往往不是层数本身而是下面这几个坑。1.3 让 4 层板翻车的三个真凶第一个是参考平面被割裂。DDR3 的电源1.5V和地平面如果在信号线下方被挖空或者被其他电源分割回流就会绕路。我见过一块板子DDR3 数据线下面正好是 1.5V 电源平面被 3.3V 区域切开的位置结果那几根线怎么调都跑不稳最后把电源平面重新规划才解决。第二个是拓扑选错。DDR3 支持点对点、菊花链Fly-by、T 型等多种拓扑。4 层板走线资源紧张很多人图省事用 T 型结果分支长度不一致反射严重。实际上对于嵌入式常见的CPU 1~2 颗颗粒场景Fly-by 才是首选。第三个是等长没控住或者控错了对象。DDR3 不是所有线都要等长数据组内等长、地址/命令/控制组内等长、时钟差分对等长这三类的约束完全不同。很多人把所有线拉成一样长反而把时序搞乱了。2. 叠层设计4 层板的生死线2.1 为什么叠层顺序比你想的更重要4 层板的叠层看起来选择不多其实有讲究。常见的两种方案 ATop(信号) - GND - PWR - Bottom(信号)方案 BTop(信号) - PWR - GND - Bottom(信号)差别在哪方案 A 里顶层信号的参考平面是 GND底层信号的参考平面是 PWR。方案 B 反过来。对于 DDR3 来说顶层走关键高速信号、参考 GND 是最优解因为地平面最干净、回流最顺畅。所以优先选方案 A把 DDR3 的主要信号放在顶层底层走一些低速信号或者次要信号。如果 DDR3 信号实在太多、顶层放不下必须走底层那底层信号的参考平面就是 PWR1.5V。这时候你要保证 1.5V 平面在 DDR3 信号下方是完整的不能被其他电源割裂。这就是为什么我前面说平面完整性是生死线。2.2 介质厚度和阻抗的取舍4 层板的介质厚度直接决定阻抗。嘉立创的常规 4 层板工艺顶层到内层的介质厚度大概是 0.2mm 左右具体看板厚和叠层结构。DDR3 的单端阻抗目标是 50Ω差分是 100Ω。用嘉立创 EDA 的话你可以在层管理器里设置叠层然后用阻抗计算器反推线宽。以常见的 0.2mm 介质、1oz 铜厚为例50Ω 单端微带线的线宽大概在 0.15mm 到 0.18mm 之间。这个值不是拍脑袋来的是介电常数FR-4 约 4.2~4.5、介质厚度、铜厚共同算出来的。提示嘉立创 EDA 专业版内置了阻抗计算工具在工具菜单里能找到。别自己拿公式硬算直接用工具误差小很多。我一般会把 DDR3 的线宽统一设成 0.15mm然后让嘉立创的工艺去匹配阻抗。实测下来这个线宽在常规 4 层板上跑 1600 没问题。如果你追求更精确可以在下单时勾选阻抗控制让板厂帮你调。2.3 平面分割的雷区这是 4 层板最容易出事的地方。DDR3 需要 1.5V 电源而板子上通常还有 3.3V、1.8V、1.2V 等一堆电源。这些电源都要在 PWR 层上分割。分割的时候DDR3 信号正下方的区域必须是完整的 1.5V 或者 GND。具体怎么做先在 PWR 层上把 1.5V 区域画出来位置对应 DDR3 颗粒和 CPU 的 DDR 接口区域。然后其他电源往边上排绝对不要让 3.3V 或者 1.2V 的区域横穿 DDR3 信号的下方。如果实在避不开那就把那几根 DDR3 信号改到顶层走让它们参考 GND。我踩过一次坑一块板子的 DDR3 地址线走在底层下面正好是 1.2V 核心电源和 1.5V 的分界处结果那几根线眼图惨不忍睹。后来把 1.2V 区域挪走问题立刻消失。所以画 PWR 层的时候先规划 DDR3 区域再填其他电源顺序不能反。3. 拓扑与分组DDR3 走线的骨架3.1 Fly-by 拓扑为什么是嵌入式首选DDR3 的拓扑选择本质上是在信号完整性和布线难度之间找平衡。T 型拓扑适合多颗粒对称布局但分支点反射严重4 层板走线空间紧张时更难处理。Fly-by 拓扑是菊花链信号从 CPU 出发依次经过每颗颗粒最后在末端做端接。对于嵌入式常见的CPU 1 颗或 2 颗 DDR3场景Fly-by 几乎是标准答案。它的好处是走线路径清晰每颗颗粒的 stub 很短反射小地址/命令/控制线可以一路串下去等长好控制。Fly-by 的关键是末端端接。DDR3 的地址/命令/控制线在最后一颗颗粒之后要接一个到 VTT0.75V的端接电阻通常是 39Ω 或 49.9Ω。这个电阻不能省省了信号反射会让你怀疑人生。数据线不需要端接因为它是点对点的。3.2 数据组、地址组、时钟组的分组逻辑DDR3 的线不是一锅粥要严格分组数据组DQ/DQS/DM每 8 位数据 1 对 DQS 1 根 DM 为一组组内等长组间不需要等长。比如 DQ0-DQ7 配 DQS0DQ8-DQ15 配 DQS1各自独立。地址/命令/控制组ADDR/CMD/CTRL这一组全部要等长包括 A0-A15、BA0-BA2、RAS、CAS、WE、CS、ODT、CKE 等。时钟组CK/CK#差分对要等长且要和其他组保持一定的时序关系。分组的意义在于DDR3 的时序是按组来对齐的组内偏差要小组间可以有偏差。你把所有线拉成一样长反而浪费空间还容易出错。3.3 等长到底怎么算等长不是所有线一样长而是组内偏差在允许范围内。具体数值信号组等长容差1600 Mbps说明数据组内 DQ/DQS/DM±25milDQS 是参考DQ/DM 对齐 DQS地址/命令/控制组±50mil整组对齐时钟差分对±5mil差分对内严格等长时钟与其他组有时序要求一般时钟走线最长或最短看芯片要求注意等长的参考对象很重要。数据组是以 DQS 为参考DQ 和 DM 去对齐 DQS。地址组是整组互相对齐通常以时钟或者某个基准点为参考。具体看你的 CPU 手册不同芯片要求不一样。在嘉立创 EDA 里你可以用等长布线功能。先布好一组线然后用网络等长工具查看每根线的长度再手动调整蛇形线。蛇形线的间距要注意一般要求 3W 以上W 是线宽避免蛇形线之间串扰。4. 嘉立创 EDA 实操从建工程到等长收敛4.1 建工程和叠层设置打开嘉立创 EDA 专业版新建工程然后在设计菜单里找到层管理器。4 层板的设置层数选 4。叠层顺序选 Top - GND - PWR - Bottom。设置介质厚度一般默认即可除非板厂有特殊要求。在阻抗选项卡里设置单端 50Ω、差分 100Ω让工具帮你算线宽。这一步做完你的板子就有了基本的电气框架。别小看这一步叠层设错后面全白搭。4.2 布局颗粒靠近 CPU去耦电容别乱放DDR3 的布局原则就一条颗粒尽量靠近 CPU 的 DDR 接口。走线越短信号质量越好等长也越好做。一般建议走线总长控制在 2000mil 以内越短越好。去耦电容的放置是另一个重点。每颗 DDR3 颗粒的电源引脚旁边都要放 0.1uF 和 0.01uF 的电容越近越好。VREF 引脚要单独处理通常用两个电阻分压得到 0.75V旁边放 0.1uF 电容。VTT 端接电源也要有足够的电容支撑。我见过有人把去耦电容放在颗粒背面觉得反正离得近。实际上过孔的电感会让高频去耦效果大打折扣。能放同层就放同层实在不行再放背面但要保证过孔短而粗。4.3 布线顺序先时钟再地址最后数据布线顺序很关键顺序错了会反复返工。我的习惯是先布时钟差分对。时钟是参考其他线要跟它对齐。差分对要严格等长走线尽量直避免过孔。再布地址/命令/控制组。这一组线多先布好主干再用蛇形线调等长。最后布数据组。数据组按字节分组每组独立等长相对灵活。为什么这个顺序因为时钟和地址组对时序最敏感先布它们能保证有足够的空间。数据组虽然线多但组内等长相对独立放最后调整余地大。4.4 等长收敛的实操技巧在嘉立创 EDA 里做等长我一般这么操作先用网络长度工具查看一组线的当前长度找出最长的那根作为目标。对短的线加蛇形线。蛇形线的幅度和间距要控制好幅度一般 3~5 倍线宽间距 3W 以上。每加一段蛇形线就重新测量避免过度补偿。全部调完后用DRC检查一遍确认没有违反规则。蛇形线不是越多越好。有些人为了凑长度把蛇形线绕得密密麻麻结果串扰比不等长还严重。我的经验是能少绕就少绕优先通过调整走线路径来凑长度实在不行再上蛇形线。注意蛇形线要放在走线的末端或者信号质量影响小的位置不要放在靠近 CPU 或颗粒的引脚处那里对反射最敏感。5. 那些让我返工的细节过孔、端接与电源5.1 过孔不是随便打的DDR3 走线难免要换层换层就要过孔。过孔会带来阻抗不连续和寄生电容所以能少打就少打。如果必须打注意几点过孔尽量小常规 0.3mm 内径、0.6mm 外径就够用。换层时过孔旁边要有一个接地过孔给回流提供路径。这叫伴随地孔能显著改善信号质量。同一组线的过孔数量要一致避免组内偏差。我一般会在 DDR3 区域预留一些接地过孔布线时随手加上。别等到最后再补那时候空间可能不够了。5.2 VTT 端接和 VREF 的坑VTT 端接是 Fly-by 拓扑的必备。端接电阻要放在走线末端靠近最后一颗颗粒。VTT 电源0.75V要能提供足够的瞬态电流所以电容要放够。一般每个端接电阻旁边放一个 0.1uF整组再放几个 10uF。VREF 是 DDR3 的参考电压通常是 0.75V由两个电阻分压得到。这个电压对噪声很敏感所以要远离其他电源旁边放 0.1uF 和 0.01uF 电容。我见过有人把 VREF 和 1.5V 走在一起结果 DDR3 怎么都跑不稳查了半天才发现是 VREF 被干扰了。5.3 电源平面的去耦策略DDR3 的 1.5V 电源平面要有足够的去耦。除了颗粒旁边的电容整个 DDR3 区域还要放一些大电容10uF、22uF来稳定电压。这些电容要均匀分布不要集中在一处。另外1.5V 平面和 GND 平面之间要尽量靠近形成平板电容效应有助于高频去耦。这就是为什么叠层设计里GND 和 PWR 要相邻。6. 实测验证怎么判断你的板子稳不稳6.1 上电前的检查清单板子回来别急着上电先做几件事用万用表测 1.5V、0.75V、VTT 对地有没有短路。检查 DDR3 颗粒的焊接特别是 BGA 封装的有没有虚焊。确认所有去耦电容都焊上了别漏。这些看起来是废话但我真的见过有人漏焊 VREF 电容然后花两天查信号问题。6.2 用 memtest 跑稳定性上电后先跑 memtest。这是最直接的验证方法。跑一晚上如果零错误基本就稳了。如果有错误先看错误地址定位是哪一组数据线或者哪颗颗粒的问题。memtest 报错不一定是布线问题也可能是电源不稳、颗粒坏了、或者时序参数没配对。我一般会先调时序参数在 bootloader 里如果调参数能解决说明是时序余量不够如果怎么调都不行那就是硬件问题得回去查布线。6.3 眼图测试有条件就上如果有示波器和探头可以测一下 DQS 和 DQ 的眼图。眼图张开度好说明信号质量高。4 层板跑 1600 的话眼图可能不会特别漂亮但只要满足芯片的建立/保持时间要求就行。没有示波器也别慌memtest 跑通、长时间运行不崩对于嵌入式应用来说就够用了。毕竟不是所有团队都有高速示波器。7. 关于 4 层板 DDR3 的几个常见误解7.1 4 层板必须用盲埋孔这是错的。常规 4 层板用通孔就行盲埋孔成本高没必要。DDR3 的过孔用通孔完全能跑关键是过孔的位置和伴随地孔。7.2 等长必须做到 0不可能也没必要。等长容差是允许一定偏差的±25mil 对于 1600 来说已经够用。追求 0 偏差只会让布线变得极其困难而且对性能提升微乎其微。7.3 DDR3 必须走内层不一定。顶层走 DDR3 完全没问题只要参考平面完整。实际上顶层走线更方便调试因为可以直接探头测量。7.4 4 层板跑不了 1600我实测过能跑。前提是叠层对、拓扑对、等长控住、平面完整。这四个条件缺一不可。8. 最后分享几个我踩过的坑第一个坑是电源平面分割太随意。早期画板子PWR 层随便分结果 DDR3 信号下面正好是分割线信号质量一塌糊涂。后来养成习惯先规划 DDR3 区域再填其他电源。第二个坑是蛇形线绕太多。为了凑等长把线绕得像弹簧一样结果串扰严重。后来学会优先调整路径蛇形线只做微调。第三个坑是忽略 VREF。VREF 看起来只是个分压实际上对噪声极其敏感。现在我会给 VREF 单独走线旁边放足电容远离其他电源。第四个坑是过孔没加伴随地孔。换层时回流路径断了信号反射严重。现在只要 DDR3 信号换层必加伴随地孔。第五个坑是端接电阻位置不对。端接电阻要放在走线末端我一开始放在中间结果反射没消掉。后来老老实实放到最后一颗颗粒后面问题解决。4 层板跑 DDR3说到底是个细节活。层数不是决定因素细节才是。你把叠层、拓扑、等长、平面、端接这几件事做扎实了4 层板一样能跑出稳定的 DDR3。省下来的两层板成本对于量产项目来说是实打实的利润。
返回列表