大家好,我是良许。
在嵌入式开发领域,我们经常需要设计电路板,而 EDA(Electronic Design Automation,电子设计自动化)软件就是我们必不可少的工具。
从最初的原理图设计,到 PCB 布局布线,再到最终的生产文件输出,EDA 软件贯穿了整个硬件设计流程。
今天我就结合自己多年的嵌入式开发经验,跟大家聊聊 EDA 软件的使用。
EDA 软件是用于电子产品设计的计算机辅助设计工具,它可以帮助工程师完成电路原理图设计、PCB 布局布线、电路仿真、信号完整性分析等工作。
在我刚入行做单片机开发的时候,公司用的是 Altium Designer,后来到了外企,接触到了 Cadence 和 Mentor Graphics 这些更专业的工具。
目前市面上主流的 EDA 软件主要有以下几种:
作为嵌入式工程师,即使你主要做软件开发,了解硬件设计也是非常必要的。
我在做 STM32 项目的时候,经常需要查看原理图来理解硬件连接,有时候还需要自己设计一些简单的扩展板。
掌握 EDA 软件可以让你更好地理解硬件工作原理,在调试程序时能够快速定位是软件问题还是硬件问题。
第一步是创建一个新项目。以 Altium Designer 为例,打开软件后选择"File → New → Project",选择 PCB 项目类型,给项目起一个有意义的名字。
我习惯用项目功能加日期来命名,比如"STM32\ MotorControl\20250302"。
接下来创建原理图文件,在项目中右键选择"Add New to Project → Schematic"。
原理图设计是整个硬件设计的基础,需要根据功能需求选择合适的元器件,并正确连接它们。
在原理图设计阶段,我通常会这样做:
第一步,绘制电源部分。电源是整个电路的基础,必须首先设计好。
比如设计一个 STM32 最小系统,需要 3.3V 电源,我会选择一个 LDO 稳压芯片,比如 AMS1117-3.3,加上必要的输入输出电容。
原理图上要清楚标注电源网络名称,比如"+5V"、"+3.3V"、"GND"等。
第二步,绘制核心芯片部分。对于 STM32 项目,这部分包括 MCU 本身、晶振电路、复位电路、BOOT 配置等。
在放置 STM32 芯片时,要注意引脚的功能分配,哪些引脚用作 GPIO,哪些用作串口、SPI、I2C 等。
我的经验是,在原理图设计阶段就要考虑好 PCB 布局,把相关功能的引脚尽量分配在一起。
第三步,绘制外围电路。根据项目需求添加各种外围电路,比如 LED 指示灯、按键、传感器接口、通信接口等。
每个功能模块最好用虚线框框起来,并添加注释说明,这样后期维护时一目了然。
在绘制原理图时,有几个实用技巧:
元器件库是 EDA 软件的重要组成部分,包含了元器件的原理图符号和 PCB 封装。
刚开始使用 EDA 软件时,我经常遇到找不到合适元器件的情况。
后来我养成了自己建库的习惯,把常用的元器件都整理到自己的库中。
建立元器件库的步骤:
我的建议是,对于常用的芯片,比如 STM32 系列、电源芯片、运放等,可以从官方或者可靠的第三方网站下载现成的库文件。
但对于一些特殊的元器件,还是需要自己动手制作。
制作封装时一定要仔细核对数据手册,特别是引脚间距和焊盘尺寸,差一点都会导致 PCB 无法焊接。
原理图设计完成并通过 ERC 检查后,就可以转到 PCB 设计了。
在 Altium Designer 中,选择"Design → Update PCB Document",软件会自动将原理图中的元器件和网络导入到 PCB 文件中。
PCB 布局是一门艺术,也是一门科学。好的布局可以提高电路性能,降低 EMI 干扰,方便后期调试和维护。
我在做汽车电子项目时,对 PCB 布局的要求非常严格,因为汽车环境复杂,电磁干扰强,必须确保电路稳定可靠。
布局的基本原则:
2.3.1 功能分区
将 PCB 按功能划分为不同的区域,比如电源区、数字电路区、模拟电路区、通信接口区等。
各个区域之间要有明确的界限,避免相互干扰。
在我设计的一个电机控制板中,我把 MCU 和数字电路放在板子的一侧,把功率驱动电路放在另一侧,中间用地平面隔开,效果很好。
2.3.2 电源优先
电源走线要粗,要短,要直接。
电源芯片周围的去耦电容要尽量靠近芯片的电源引脚,我一般控制在 5mm 以内。
对于大电流的电源线,要计算好走线宽度,确保不会过热。
有一次我设计的板子在测试时发现电源线发烫,后来发现是走线太细,只有 0.3mm,改成 1.0mm 后问题就解决了。
2.3.3 信号完整性
对于高速信号,比如 STM32 的 SPI、USB、以太网等,要特别注意走线长度和阻抗匹配。
差分信号要等长,要平行走线,间距要合适。
我在做 USB 接口时,会严格控制 D+ 和 D-的走线长度差在 5mil 以内,并且保持 90 欧姆的差分阻抗。
2.3.4 热管理
功率器件会产生大量热量,需要考虑散热问题。
在布局时要给这些器件留出足够的空间,必要时添加散热片或者铜皮散热。
我设计的电机驱动板上,MOSFET 下面铺了大面积的铜皮,并且打了很多过孔连接到底层地平面,形成散热通道。
布局完成后就可以开始布线了。布线是 PCB 设计中最耗时的工作,也是最考验工程师经验的环节。
2.4.1 布线的基本规则
2.4.2 地平面的处理
在多层板设计中,通常会有一层或多层作为地平面。
地平面可以提供稳定的参考电位,降低信号回流阻抗,提高抗干扰能力。
我在设计四层板时,一般采用"信号-地-电源-信号"的叠层结构,这样可以保证每一层信号都有完整的地平面作为回流路径。
对于双层板,虽然不能做完整的地平面,但也要尽量在底层铺铜,并且多打地过孔,降低地阻抗。
有一次我设计的一个双层板,因为地过孔打得太少,导致信号质量不好,后来补打了很多过孔才解决问题。
2.4.3 自动布线和手动布线
EDA 软件都提供了自动布线功能,但我很少完全依赖自动布线。
自动布线对于简单的电路还可以,但对于复杂的、有特殊要求的电路,还是需要手动布线。
我的习惯是,先手动布关键信号,比如时钟线、复位线、高速信号等,然后用自动布线完成剩余的信号,最后再手动优化。
下面我以一个 STM32F103C8T6 最小系统为例,演示完整的 EDA 设计流程。
这个最小系统包括以下几个部分:
在 Altium Designer 中绘制好原理图后,要进行编译检查。
点击"Project → Compile PCB Project",如果有错误或警告,要逐一解决。
常见的问题包括:引脚未连接、网络名称冲突、元器件缺少封装等。
将原理图导入 PCB 后,首先设置板子的尺寸和层数。
这个最小系统我选择双层板,尺寸设置为 50mm × 40mm。
布局阶段:
布线阶段:
完成布线后,要进行 DRC(Design Rule Check)检查。点击"Tools → Design Rule Check",设置好规则后运行检查。常见的 DRC 错误包括:走线间距不够、走线宽度不符合要求、焊盘间距太小等。
PCB 设计完成后,需要生成 Gerber 文件用于 PCB 制造。
在 Altium Designer 中,选择"File → Fabrication Outputs → Gerber Files",按照 PCB 厂家的要求设置好各层的输出选项。
一般需要输出的文件包括:
生成 Gerber 文件后,我习惯用 CAM350 或者 Gerbv 打开检查一遍,确保没有问题再发给 PCB 厂家。
对于重复性的工作,可以使用脚本来自动化。
Altium Designer 支持 Delphi Script 和 VB Script,可以编写脚本来批量修改元器件属性、自动生成 BOM 表、批量调整走线宽度等。
我曾经写过一个脚本,用来批量修改所有电阻的封装,从 0603 改为 0805。手动修改要花半小时,用脚本只需要几秒钟。
很多 EDA 软件都集成了电路仿真功能,可以在 PCB 制作之前验证电路的正确性。
比如在 Altium Designer 中,可以使用 Mixed Sim 进行模拟仿真,验证电源电路的输出电压、纹波等参数。
虽然仿真不能完全替代实际测试,但可以提前发现一些明显的设计错误,节省时间和成本。
我在设计电源电路时,都会先仿真一下,确保输出电压和负载能力满足要求。
现代 EDA 软件都支持 3D 可视化功能,可以在设计阶段就看到 PCB 的立体效果。
这对于检查元器件是否干涉、外壳是否匹配非常有用。
在 Altium Designer 中,按"3"键可以切换到 3D 视图。
如果元器件有 3D 模型,就可以看到真实的立体效果。
我在设计一个装在金属外壳里的板子时,就是通过 3D 视图发现某个电容太高,会顶到外壳,及时做了调整。
在公司做项目时,经常需要多人协作。
EDA 软件提供了版本控制和协作功能,可以让多个工程师同时工作在一个项目上。
Altium Designer 支持 SVN 和 Git 版本控制,可以跟踪每次修改,避免冲突。
在我们团队中,原理图和 PCB 文件都放在 Git 仓库中,每次修改都要提交并写清楚修改内容,这样其他人可以清楚地知道项目的变化。
这是最常见的问题之一。
有时候原理图中选择的封装和实际元器件不匹配,导致 PCB 焊接时发现焊盘对不上。
解决方法:在设计阶段就要仔细核对数据手册,确认封装的尺寸和引脚定义。
如果不确定,可以先用游标卡尺量一下实际元器件的尺寸。
我现在养成了习惯,每次使用新的元器件,都会先打印 1:1 的封装图纸,把实际元器件放上去对比一下。
有时候为了节省空间,把走线画得很细,结果通电后发现走线发热甚至烧断。
解决方法:根据电流大小计算走线宽度。
有一个经验公式:对于 1oz 铜厚,1A 电流需要约 15mil(0.38mm)的走线宽度,温升 10 度。
如果电流更大,要相应增加走线宽度,或者使用更厚的铜箔。
这会导致信号质量差、EMI 问题严重。
特别是在双层板中,如果地过孔打得太少,地回流阻抗很大。
解决方法:在信号走线附近多打地过孔,特别是在信号换层的地方。
我的经验是,每隔 5-10mm 就打一个地过孔,形成低阻抗的地回流路径。
在设计 USB、以太网等高速接口时,如果走线不当,会导致信号质量差,通信不稳定。
解决方法:高速信号要控制阻抗,要等长,要远离干扰源。
差分信号要平行走线,间距要合适。必要时可以使用阻抗计算工具,确保走线阻抗符合要求。
我在设计 USB 接口时,会使用 Saturn PCB Toolkit 计算走线宽度和间距,确保 90 欧姆的差分阻抗。
对于刚接触 EDA 软件的朋友,我的建议是:
Altium Designer 的官方 YouTube 频道有很多视频教程,讲得非常详细。
看看别人是怎么设计的,学习他们的布局布线技巧。
我刚开始学 PCB 设计时,设计了一个 STM32 最小系统板,虽然很简单,但从设计到焊接调试的整个过程让我学到了很多。
我在立创 EDA 的论坛上学到了不少东西,那里有很多热心的工程师分享经验。
比如,走线间距太小会增加制造难度,过孔太多会增加成本等。
EDA 软件是嵌入式工程师的必备技能之一。
虽然学习曲线有点陡峭,但只要多练习,多思考,就能掌握。
从我自己的经验来看,从完全不会到能够独立设计复杂的四层板,大概需要半年到一年的时间。
在使用 EDA 软件的过程中,要养成良好的习惯:规范命名、及时备份、详细注释、严格检查。
这些习惯会让你的设计更加可靠,也会让后期维护更加轻松。
最后,我想说的是,硬件设计是一个需要不断学习的领域。
新的元器件、新的技术、新的设计方法层出不穷,我们要保持学习的热情,不断提升自己的技能。
在我的公众号里,我会持续分享嵌入式开发和硬件设计的经验,欢迎大家关注交流。
希望这篇文章能够帮助大家更好地理解和使用 EDA 软件。
如果你有任何问题或者想法,欢迎在评论区留言讨论。让我们一起进步,一起成长!
更多编程学习资源
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049026/viewspace-3111434/ ,如需转载,请注明出处,否则将追究法律责任。