【高速PCB电路设计】6.布局设计流程与案例实践

本文详细介绍了PCB设计中的布局流程,包括模块布局、整体布局、叠层与阻抗计算等内容。强调了信号线的合理规划与电源管理的重要性,提供了布局优化的方法与技巧。

1.布局流程

①模块布局
②整体布局
③叠层与阻抗
④规则设置
⑤模块扇出
⑥布局评审

2.模块布局

将功能模块定义成Group,便于整体快速移动、旋转等操作。

  • ①以模块内主芯片为核心,以原理图为基础,按照信号连接,采取顺藤摸瓜的方式,把相关阻容等分立器件放在该芯片周围,内部器件摆放整齐、均匀。
    在这里插入图片描述
  • ②时钟电路放置:晶体和晶振与相关的IC器件靠近放置,距离≤100OMil。无源晶振必须靠近管脚,有源晶振可稍远。无源晶振时钟线可从自己底下过,有源晶振时钟线不可从自己底下过。
  • ③电源电路放置:优先处理开关电源模块布局,并按期间资料要求设计。
  • ④电容防止:滤波电容靠近管脚放置。
  • ⑤储能电容放在芯片周围,兼顾电源管脚。
    在这里插入图片描述
  • ⑥由R\L\C组成的L型/Π型滤波电路,靠近电源管脚放置。
  • ⑦串联电阻靠近源端放置,直线距离一般不超过300Mil;并联匹配电阻靠近接收端放置
    直线距离一般不超过300Mil;AC电容优先放置在接收端,直线距离小于50OMil。

3.整体布局

  • ①接口模块摆放:
    采用“先防护后滤波”的思路摆放接口处的保护器件;
    按照信号流向将各接口模块电路靠近其所对应接口摆放,使对外的信号走线尽量短。

在这里插入图片描述

  • ②核心芯片模块摆放:
    DDR1/2一般按照T型拓扑摆放,匹配电阻放在T点处;最好正反贴,同层线太长最好仿真。
    在这里插入图片描述
    DDR3/4按照Fly-By方式摆放,末端匹配电阻根据出线的方向,靠近摆放在末端存储芯片周围,匹配电阻与未端存储芯片布线长度≤50OMil。
    DDR3芯片若不支持读写平衡(DDR4都支持),且时钟线与数据线布线长度误差不能控制在合理范围内,则不建议用Fly-By。DDR芯片较多,如4颗、8颗基本均使用Fly-By拓扑。
    在这里插入图片描述
  • ③电源模块摆放:
    远离易受干扰的电路,如ADC,DAC,RF,时钟等电路模块,发热量大的电源模块,需要拉大与其它电路的距离,与其他模块的器件保持3mm以上的距离。
    不同模块的专用电源,靠近负载模块摆放,负载为整版电源供电的模块优先摆放在总电源输入端。
  • ④其它器件摆放
    JTAG接口及外部接口芯片靠近板边摆放,便于插拔,有特殊指定位置除外。
    测温电路靠近发热量大的电源模块或功耗最高的芯片摆放,摆放时确定正反面。
    光耦、继电器、隔离变压器、共模电感等隔离器件的输入输出模块分开摆放,隔离间距40Mil以上。
    热敏感元件(电解电容、晶振)远离大功率的功能模块、散热器、风道末端,器件丝印边沿距离>400Mil。
  • ⑤布局优化:
    通过飞线显示连接关系,根据信号流向图调整核心芯片的方向,优先保证关键信号(时钟线和高速线,模拟/射频)顺畅、最短。
    信号交叉解决:(1)打孔、换线序;(2)芯片换层。
    在这里插入图片描述

4.叠层与阻抗

4.1设计参数确认

  • 审阅《PCB Layout资料及要求》;
  • 确认填写信息完整、正确;
  • 板厚与要求一致,注意PCl或PCIE板厚1.6mm等特殊板卡板厚要求
  • 设计要求无法满足时,需和工艺、SI等及时沟通

4.2叠层评估

评估走线层数:
以设计文件中飞线最密集的区域为主要参考,评估走线层数,一般为BGA封装的器件或者排数较多的接插件。
以信号管脚为6排的1.0mm BGA*在top层,BGA内两孔间只能走一根信号线为例,最少布线层数的评估可以参考以下几点:
(1)外围及次外围信号需换层布线的过孔可以延伸至BGA外(一般在BGA本体外扩5mm的禁布区范围内),此类过孔要摆成两孔间穿两根信号线的方式。
在这里插入图片描述
(2)往里的第3、4排可共用1个内层出线。
在这里插入图片描述
(3)再往里的第5、6排则需要2个内层出线。
在这里插入图片描述

(4)然后根据电源和地的分布情况,结合Bottom层走线,最多可以减少1个内层。
(5)结合以上4点,最少要用2个内走线层完成出线。

这个1.0mm Pitch FPGA最少需要多少个布线层(含表底层)?
在这里插入图片描述
选用钻孔直径10mil、焊盘直径18mil的过孔
过孔边缘间距=39.37-18=21.37mil
如果线宽、间距用4mil的话
21.37/4~5,即两个过孔之间可以过2根线
评估电源平面层数:

  • 分析单板电源总数与分布情况,优先关注分布范围大,及电流大于1A以上的电源。
  • 通常情况下:如果板内无BGA封装的芯片,一般可以用一个电源层处理所有的电源;如果有BGA封装的芯片,主要以BGA封装芯片为评估对象,如果BGA内的电源种类<3种,用一个电源平面,如果>3种,则使用2个电源平面,如果>6则使用3个电源平面,以此类推.
  • 对于电流<1A的电源可以采用走线层铺铜的方式处理。
  • 对于电流较大且分布较集中或者空间充足的情况下采用信号层铺铜的方式处理。
    地平面层数的评估:
    在确定布线层数和电源层数的基础上,满足以下叠层原则:
  • 叠层对称性
  • 阻抗连续性
  • 主元件面相邻层为地层
  • 电源和地平面紧耦合
    结合评估出的走线层数和平面层数,高速线优先靠近地层的原则进行层叠排布。
    在这里插入图片描述

4.3阻抗计算

  • 确认阻抗类型:
    常规阻抗:单端50欧姆,差分100欧姆。
    特殊阻抗:USB接口差分90欧姆。
  • 按照《PCB Layout资料及要求》中的工艺要求、层叠排布方案和阻抗要求,确定层厚与阻抗线宽。

参考以下设计原则:
信号层夹在电源层和地层之间时,信号层靠近地层。
差分线间距≤2倍线宽。
相邻信号层间距拉大。
不同线宽、间距和阻抗值的走线需分别描述,且差分线与单线的线宽要有所区别。

  • 阻抗计算:Polar SI9000
  • 叠层设计:Polar Speedstack Stack Up Builder(可以将叠层导出为IPC2581数据格式,allegro支持该格式的导入)
  • 将工艺参数、叠层参数和阻抗线宽等数据填写在《PCB加工工艺要求说明书》中
    在这里插入图片描述
    在这里插入图片描述
    常用模板举例:
    在这里插入图片描述

5.总结

  • 布局思路
    满足DFx等生产要求
    关注SI/PI/EMC、、、等电气要求
    先整体、后局部、再回归整体的策略
  • 布局实战
    模块内短平快
    用好复用,省时省力、整齐美观
    模块间相对独立,做好通道规划

参考资料来自电巢,侵删。

PCB设计领域,具体案例和实现方法是学习和掌握PCB设计技能的重要途径。以下是一些详细分析和实际应用教程的总结,这些内容可以帮助理解PCB设计的核心要素和常见问题的解决方案。 ### 案例分析 #### MP3播放器PCB设计 MP3播放器的PCB设计涵盖了电路布局、元件选择和布线等多个方面。在设计过程中,需要考虑音频信号的完整性以及电源管理模块的稳定性。音频信号路径应尽可能短,以减少噪声干扰。此外,电源部分需要合理布局,避免对音频信号造成干扰[^2]。 #### STM32微控制器PCB设计 以STM32微控制器为核心的PCB设计案例展示了嵌入式系统的PCB设计方法。STM32系列微控制器具有丰富的外设接口,因此在设计时需要仔细规划各个接口的布局和走线。如,对于SPI、I2C等高速通信接口,应尽量减少走线长度,并使用地平面来降低噪声。同时,去耦电容应靠近电源引脚放置,以确保稳定的电源供应。 #### 双核8层电脑主板PCB设计 双核8层电脑主板的PCB设计是一个较为复杂的案例,适用于高级PCB设计师参考。这种设计需要考虑多层板的堆叠结构、高速信号完整性、电源分配网络(PDN)的设计以及热管理等问题。如,在多层板设计中,信号层和电源层的布局需要合理安排,以减少串扰和电磁干扰(EMI)。此外,为了保证高速信号的完整性,需要进行阻抗匹配和时序分析。 ### 实现方法 #### 设计流程概述 PCB设计通常包括以下几个步骤:原理图设计PCB布局、布线、设计规则检查(DRC)、制造文件生成等。原理图设计阶段需要确保所有元器件的连接关系正确无误。在PCB布局阶段,需要根据原理图进行元器件的摆放,并考虑散热、信号完整性等因素。布线阶段则需要遵循设计规则,确保所有信号线和电源线的宽度和间距符合要求。最后,通过DRC检查确保设计没有违反任何规则,并生成制造文件用于生产[^1]。 #### 常见错误解决方案 在PCB设计中,常见的错误包括电源和地线的处理不当、信号完整性问题、热管理不足等。如,电源和地线的处理不当可能导致噪声干扰,影响电路性能。解决方案包括使用宽电源线和地平面,减少回路面积,以及合理放置去耦电容。信号完整性问题通常出现在高速信号线上,可以通过阻抗匹配、减少走线长度和使用终端电阻等方法来解决。热管理问题则需要通过合理的元器件布局和散热设计来解决,如使用散热片或增加铜箔面积[^3]。 ### 示代码 以下是一个简单的Python脚本示,用于生成PCB设计中的测试点坐标文件: ```python # 生成PCB测试点坐标文件 def generate_test_points(file_path, test_points): with open(file_path, 'w') as file: for point in test_points: file.write(f"{point[0]}, {point[1]}\n") # 示测试点坐标 test_points = [ (1.5, 2.3), (4.7, 5.1), (7.9, 8.4) ] # 生成测试点文件 generate_test_points("test_points.csv", test_points) ``` ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不僈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值