ARTICLE DETAIL

资讯详情

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

4层板跑DDR3实战:叠层、阻抗、等长与嘉立创EDA全流程

4层板跑DDR3实战:叠层、阻抗、等长与嘉立创EDA全流程 1. 为什么4层板跑DDR3是个值得认真对待的命题做嵌入式硬件这行十几年DDR3布线一直是个分水岭。很多刚入行的朋友画个STM32的QSPI Flash板子觉得挺顺手一碰到DDR3就发怵第一反应就是“得上6层板吧”。实际上4层板跑DDR3在大量量产项目里是成立的前提是你得把叠层、拓扑、阻抗、等长这几件事想明白而不是靠堆层数来掩盖设计上的偷懒。我手上跑过不少4层板的DDR3方案主频从400MHz到800MHz都有颗粒涵盖常见的1Gb、2Gb容量控制器端有FPGA也有嵌入式SoC。这些板子有的已经出货几万片EMC和长时间稳定性都过了。所以这篇东西不是纸上谈兵是我自己踩过坑、返过板、用嘉立创EDA从原理图一路画到投板验证之后总结出来的实操记录。这篇文章适合谁看如果你是会画普通双层板、想进阶到高速数字设计的嵌入式硬件工程师或者你正在用嘉立创EDA做项目、第一次遇到DDR3需要自己布线那这篇内容基本可以当成一份可复现的操作手册。我会把叠层怎么定、阻抗怎么算、拓扑怎么选、等长怎么绕、嘉立创EDA里具体怎么操作全部拆开讲清楚。核心关键词就几个嵌入式、DDR3、4层板、嘉立创EDA、高速布线整篇都围绕它们展开。先说一个基本判断4层板能不能跑DDR3不取决于层数本身而取决于你有没有把参考平面和回流路径管住。很多人4层板失败不是布线技巧不行是叠层一开始就定错了信号换层找不到完整参考面回流绕一大圈眼图自然一塌糊涂。所以下面我从叠层开始讲这是整个设计的地基。2. 4层板叠层设计与阻抗控制的核心逻辑2.1 叠层方案怎么选两种主流结构对比4层板的叠层不是随便排的DDR3对参考平面极其敏感。常见的两种方案我列出来对比一下你一看就知道该选哪个。叠层方案结构从上到下优点缺点适用场景方案A信号层 / GND / 电源层 / 信号层两个内层都是完整平面参考稳定电源层需要分割去耦要仔细DDR3首选推荐方案B信号层 / 电源层 / GND / 信号层电源和地相邻平面电容好顶层信号参考电源层回流差不推荐跑DDR3我实测下来方案A是4层板跑DDR3的标配。顶层走DDR3的信号线紧邻的第二层是完整地平面这样每条信号线都有稳定的参考特征阻抗也好控制。底层可以走一些低速信号或者电源走线第三层做电源平面。这里有个关键点顶层信号线的参考平面必须是完整的地不能被分割。我见过有人为了走线方便把第二层地平面挖得七零八落结果DDR3跑起来误码率飙升。地平面上的任何开槽都会让跨过它的信号线回流路径被迫绕行形成大的回流环路辐射和串扰全来了。2.2 特征阻抗计算50欧姆是怎么来的DDR3的单端信号特征阻抗目标是50欧姆差分信号是100欧姆。这个不是随便定的是JEDEC标准里规定的目的是和颗粒、控制器的IO阻抗匹配减少反射。在嘉立创EDA里你可以用内置的阻抗计算器也可以自己按微带线公式估算。顶层走线是微带线结构特征阻抗公式简化后是这样的Z0 87 / sqrt(Er 1.41) * ln(5.98 * H / (0.8 * W T))其中Er是板材介电常数FR-4通常在4.2到4.6之间H是走线到参考平面的距离也就是介质厚度W是线宽T是铜厚。举个实际例子。嘉立创常用的4层板叠层顶层到第二层地平面的介质厚度大概是0.2mm铜厚1oz约0.035mmEr取4.5。代入公式反推要得到50欧姆线宽W大约在0.35mm左右。但DDR3的线不可能这么宽因为BGA出线空间有限所以实际工程里我们通常把介质做薄一点或者用更细的线宽配合更薄的介质。我实际用的参数是介质厚度0.1mm线宽0.15mm这样算下来阻抗接近50欧姆。嘉立创的阻抗计算器里可以直接输入这些参数它会告诉你是否落在公差范围内。建议把阻抗控制在50欧姆±10%以内也就是45到55欧姆之间超出这个范围反射就会明显。注意嘉立创EDA专业版里阻抗计算器在“工具”菜单下选“阻抗计算”就能调出来。输入叠层参数后它会自动算出线宽和间距这个结果直接拿去约束布线规则就行。2.3 介质厚度与铜厚的取舍介质厚度和铜厚这两个参数直接决定了你能否在有限的BGA出线空间里做出50欧姆。介质越薄同样线宽下阻抗越低铜越厚阻抗也越低。所以如果你发现线宽已经细到工艺极限嘉立创常规工艺最小线宽0.1mm阻抗还是偏高那就得把介质做厚一点。但介质厚了有个副作用走线和参考平面的耦合变弱回流路径变长EMI会变差。所以这是个平衡。我的经验是4层板跑DDR3介质厚度控制在0.1mm到0.15mm之间比较合适线宽0.12mm到0.18mm铜厚1oz。这个组合在嘉立创的工艺能力内阻抗也能落在50欧姆附近。还有一点DDR3的时钟差分对阻抗要单独控制到100欧姆。差分阻抗和单端不一样它跟线间距关系很大。嘉立创EDA里可以设置差分对规则指定目标阻抗和线宽间距布线时它会自动按规则走。3. DDR3拓扑结构与等长匹配的实操细节3.1 点对点还是Fly-by拓扑选型分析DDR3的拓扑主要有两种点对点Point-to-Point和Fly-by。点对点就是控制器直接连一颗颗粒走线简单信号质量最好。Fly-by是多颗颗粒串联地址和控制信号依次经过每颗颗粒数据线还是点对点。4层板跑DDR3我强烈建议优先用点对点拓扑也就是只挂一颗颗粒。原因很简单4层板只有两个信号层走线资源紧张Fly-by的地址控制线要串联多颗颗粒等长和阻抗控制难度成倍增加。一颗颗粒的情况下地址控制线也是点对点等长匹配只需要考虑控制器到颗粒这一段的延迟。如果你非要多颗颗粒那Fly-by是唯一选择但4层板做起来会非常吃力。我试过4层板挂两颗DDR3地址线绕等长绕到怀疑人生最后时序余量还是很紧。所以除非容量实在不够否则4层板就老老实实一颗颗粒。3.2 等长匹配分组与容差怎么定DDR3的等长匹配是布线的重头戏。信号分几组数据组DQ、DQS、DM、地址控制组ADDR、CMD、CLK、时钟组。每组内部的等长要求不一样。信号组等长要求参考基准容差数据组DQ/DQS/DM组内等长DQS差分对±5mil地址控制组组内等长时钟差分对±10mil时钟组差分对内等长自身±5mil这个容差不是拍脑袋定的。DDR3的时序窗口很窄800MHz下单位间隔UI只有1.25ns信号在PCB上的传播速度大约是6mil/ps所以10mil的偏差对应大约1.7ps的 skew相对于1.25ns的UI来说占比很小是安全的。但如果你的容差放到50milskew就到了8ps以上加上其他抖动时序余量就很危险了。在嘉立创EDA里等长匹配可以用“等长组”功能来做。你先把同一组的网络选中创建一个等长组设定目标长度和容差然后布线时它会实时显示当前长度和偏差。绕等长的时候用蛇形线注意蛇形线的间距要足够一般建议蛇形线间距不小于3倍线宽否则相邻线段之间的串扰会抵消掉等长带来的好处。实操心得绕等长不要等到最后再绕最好在布线过程中就大致控制长度最后再统一微调。我见过有人先把线全部拉直最后发现长度差了几百mil再回头绕蛇形结果空间不够只能重新布局。布局阶段就要把颗粒和控制器之间的距离算好给等长绕线留出空间。3.3 数据组与地址组的布线顺序布线顺序也有讲究。我的习惯是先布时钟差分对再布地址控制组最后布数据组。为什么因为时钟是地址控制组的参考基准时钟走好了地址控制组的等长目标就确定了。数据组相对独立但数据组的DQS是组内基准所以每组数据线要先布DQS再布DQ和DM。时钟差分对要走得尽量短、尽量直避免换层。如果必须换层要在换层过孔附近放回流地过孔给回流提供最短路径。地址控制组跟着时钟走保持在同一层参考平面一致。数据组可以灵活一些但同一组数据线必须在同一层不能有的在顶层有的在底层否则参考平面不同传播延迟会不一致。4. 嘉立创EDA实操从原理图到PCB的全流程4.1 工程创建与叠层设置打开嘉立创EDA专业版新建工程命名随意比如“DDR3_4L”。进入PCB编辑器后第一件事是设置叠层。在“设计”菜单里选“层管理器”把层数改成4层。然后按照方案A设置顶层信号、第二层地、第三层电源、底层信号。接着设置介质厚度和铜厚。在层管理器里每一层都可以设置厚度。顶层到第二层的介质设0.1mm第二层到第三层的介质设0.5mm芯板厚度第三层到底层的介质设0.1mm。铜厚全部设1oz。这些参数设好后阻抗计算器才能算准。注意嘉立创EDA专业版的层管理器里介质厚度和铜厚是分开设置的。铜厚在“铜箔厚度”里选介质厚度在“介质厚度”里填。别搞混了。4.2 阻抗规则与布线约束配置叠层设好后进“设计规则”里配置阻抗和等长约束。在“网络类”里新建几个类DDR3_DATA、DDR3_ADDR、DDR3_CLK。然后把对应的网络分配进去。对于DDR3_DATA类设置线宽0.15mm间距0.2mm目标阻抗50欧姆。DDR3_CLK类设置差分对线宽0.15mm间距0.2mm目标差分阻抗100欧姆。等长约束在“等长组”里设置数据组容差±5mil地址组±10mil。这些规则设好后布线时嘉立创EDA会实时检查。如果线宽不对或者等长超差它会用颜色标出来。这个功能很实用能帮你省掉很多后期检查的时间。4.3 布局颗粒与控制器的相对位置布局决定了布线的难度。DDR3颗粒要尽量靠近控制器距离越短越好。我一般把颗粒放在控制器同一面距离控制在1000mil以内。如果空间实在紧张放背面也行但要注意过孔带来的寄生参数。颗粒的摆放方向也有讲究。地址控制线是从控制器出来经过颗粒的地址引脚。如果颗粒旋转180度地址线的走向会完全不同。我的经验是让颗粒的地址引脚朝向控制器这样地址线走线最短也最容易等长。去耦电容要放在颗粒的电源引脚附近越近越好。DDR3的电源引脚很多每个引脚旁边最好都有一个0.1uF的电容。这些电容的接地端要直接打到地平面过孔要短。4.4 布线实操时钟、地址、数据的先后顺序布线从时钟开始。时钟差分对从控制器出来走到颗粒的CK引脚。走线尽量短尽量直不要换层。如果必须换层在过孔旁边放一个地过孔。差分对的内等长要控制在±5mil以内嘉立创EDA里可以用“差分对等长”功能自动调整。时钟布完后布地址控制组。地址控制组的等长基准是时钟所以要先测量时钟的总长度然后地址控制组的每一根线都向这个长度靠拢。嘉立创EDA的等长组功能会显示当前长度和目标长度的差值你根据差值绕蛇形线就行。数据组最后布。每组数据线先布DQS差分对再布DQ和DM。DQS是组内基准DQ和DM向DQS等长。数据组的等长容差是±5mil比地址组更严所以绕线要更仔细。实操心得绕蛇形线的时候不要在一根线上连续绕太多弯否则阻抗不连续会很明显。我一般把蛇形线分散在走线的不同段每段绕几个弯这样阻抗变化更平滑。另外蛇形线的拐角用45度或者圆弧不要用90度直角直角会带来额外的寄生电容。4.5 电源平面分割与去耦第三层是电源平面DDR3需要1.5V的VDD和0.75V的VREF。VREF是参考电压电流很小但精度要求高。我一般把VREF单独走一根线从控制器拉到颗粒线宽不用太宽但要走得干净远离噪声源。VDD平面要尽量完整不要被其他信号分割。如果板子上还有其他电源比如3.3V、1.8V那第三层就要分割成多个区域。分割的时候注意DDR3的VDD区域要和其他电源区域保持足够的间距避免耦合。去耦电容的布局前面说了每个电源引脚旁边放一个0.1uF。另外颗粒附近还要放几个大容量的电容比如10uF作为储能。这些电容的接地过孔要直接打到第二层地平面过孔尽量短减少寄生电感。5. 常见问题与排查技巧实录5.1 DDR3跑不起来先查这几项DDR3调试不通过原因通常集中在几个地方。我整理了一个排查顺序按这个顺序查基本能定位到问题。排查项检查方法常见问题电源电压万用表测VDD和VREFVREF偏差超过2%时钟信号示波器测CK差分对时钟幅度不够或失真阻抗用TDR测走线阻抗阻抗偏离50欧姆太多等长检查等长报告数据组等长超差参考平面检查地平面完整性地平面被分割去耦电容检查电容焊接电容虚焊或漏焊电源是第一位的。VREF的精度直接影响DDR3的输入电平判断偏差大了误码率就高。我遇到过VREF分压电阻焊错导致VREF偏高0.1VDDR3死活跑不起来换了电阻就好了。时钟信号也很关键。CK差分对的幅度一般在0.6V到1.0V之间如果幅度不够颗粒可能识别不到。用示波器差分探头测注意探头带宽要足够至少是时钟频率的3倍以上。5.2 眼图不好看从回流路径找原因眼图张不开很多时候是回流路径的问题。信号从控制器到颗粒去的时候走顶层回流从地平面回来。如果地平面不完整回流被迫绕路环路面积增大电感增大信号边沿变缓眼图就闭合了。检查方法很简单沿着DDR3信号线的投影看第二层地平面有没有开槽或者过孔密集区。如果有尽量把信号线移开或者在地平面上补铜。嘉立创EDA里可以用“平面视图”看地平面的完整性开槽的地方会很明显。还有一个常见问题是过孔。信号换层时回流也要换层。如果换层过孔旁边没有地过孔回流就得找最近的地过孔路径变长。所以每个信号换层过孔旁边都要放一个地过孔距离越近越好最好在50mil以内。5.3 等长绕线绕出问题蛇形线的坑蛇形线绕等长绕不好反而会引入串扰。我踩过的坑是蛇形线间距太小相邻线段之间的耦合导致信号质量下降。后来我把间距放大到3倍线宽以上问题就解决了。另一个坑是蛇形线绕在BGA出线区域。BGA下面空间本来就紧张绕蛇形线容易和其他信号线靠得太近。我的做法是BGA出线区域尽量走直线等长绕线放到BGA外面的空旷区域。这样既保证了出线顺畅又避免了串扰。还有蛇形线的拐角不要用90度。90度拐角会带来阻抗突变反射会增加。用45度或者圆弧拐角阻抗变化平滑信号质量更好。嘉立创EDA里可以设置拐角样式选45度就行。5.4 嘉立创EDA使用中的几个小技巧用嘉立创EDA画DDR3有几个功能很实用我分享一下。第一个是“网络高亮”。选中一个网络按快捷键可以高亮显示方便检查走线。DDR3网络多高亮功能能帮你快速定位。第二个是“等长组实时显示”。布线时等长组的目标长度和当前长度会显示在状态栏你随时能看到差多少。这个比布完再检查效率高多了。第三个是“3D预览”。布完线后用3D预览看一下板子的整体效果检查有没有器件干涉、过孔有没有盖油等问题。嘉立创EDA的3D预览还挺准的能提前发现一些机械问题。注意嘉立创EDA专业版和标准版的功能有差异。专业版的等长组和阻抗计算功能更完善建议用专业版画DDR3。标准版也能画但约束管理没那么方便。6. 投板前的最终检查与个人经验投板前一定要做一次完整的DRC检查把嘉立创EDA的DRC规则设严一点线宽、间距、过孔全部按规则检查。我一般会把DRC的间距规则设成0.15mm比实际工艺极限稍大留点余量。然后导出Gerber文件用Gerber查看器再看一遍。重点看DDR3区域的走线、过孔、阻焊。有时候DRC过了但Gerber里还是能看到一些问题比如阻焊开窗不对、过孔盖油没盖好。最后投板的时候跟板厂确认一下阻抗。嘉立创支持阻抗控制你可以在下单时备注阻抗要求他们会按你的叠层参数调整。我一般会把阻抗计算的结果截图附在备注里这样板厂能更准确地控制。我个人在实际操作中的体会是4层板跑DDR3最难的不是布线技巧而是前期叠层和规则的设定。叠层定对了规则设好了布线就是按部就班的事。反过来叠层错了后面怎么绕都救不回来。所以别急着拉线先把叠层和阻抗算清楚这一步花的时间后面会加倍省回来。另外DDR3的调试不要一次跑最高频率。先降频跑比如跑到400MHz确认基本功能正常再逐步往上提。这样出了问题容易定位是时序问题还是信号完整性问题降频一试就知道。我调过一块板子800MHz跑不稳降到600MHz就正常后来查出来是等长超差重新绕线后800MHz也稳了。这个内容后续还可以这样扩展如果你用的是FPGA挂DDR3控制器端的IO约束和时序报告也要一起看PCB的等长只是其中一环FPGA内部的时序收敛同样重要。还有如果板子上有多个DDR3颗粒Fly-by拓扑的等长策略又不一样那个话题可以单独写一篇。
返回列表