
大家好,我是良许。
在嵌入式开发领域,我们经常需要设计电路板,而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软件。
如果你有任何问题或者想法,欢迎在评论区留言讨论。让我们一起进步,一起成长!
更多编程学习资源
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。