首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >EDA软件的使用

EDA软件的使用

原创
作者头像
程序员良许
发布2026-03-03 09:17:02
发布2026-03-03 09:17:02
720
举报

大家好,我是良许。

在嵌入式开发领域,我们经常需要设计电路板,而EDA(Electronic Design Automation,电子设计自动化)软件就是我们必不可少的工具。

从最初的原理图设计,到PCB布局布线,再到最终的生产文件输出,EDA软件贯穿了整个硬件设计流程。

今天我就结合自己多年的嵌入式开发经验,跟大家聊聊EDA软件的使用。

1. EDA软件概述

1.1 什么是EDA软件

EDA软件是用于电子产品设计的计算机辅助设计工具,它可以帮助工程师完成电路原理图设计、PCB布局布线、电路仿真、信号完整性分析等工作。

在我刚入行做单片机开发的时候,公司用的是Altium Designer,后来到了外企,接触到了Cadence和Mentor Graphics这些更专业的工具。

目前市面上主流的EDA软件主要有以下几种:

  • Altium Designer:功能强大,界面友好,适合中小型项目,在国内使用非常广泛
  • Cadence Allegro:业界标准,适合高速PCB设计,大型企业常用
  • Mentor Graphics PADS:性价比高,学习曲线相对平缓
  • KiCad:开源免费,功能日益完善,适合个人开发者和小团队
  • Eagle:小巧灵活,被Autodesk收购后功能更加完善

1.2 为什么要学习EDA软件

作为嵌入式工程师,即使你主要做软件开发,了解硬件设计也是非常必要的。

我在做STM32项目的时候,经常需要查看原理图来理解硬件连接,有时候还需要自己设计一些简单的扩展板。

掌握EDA软件可以让你更好地理解硬件工作原理,在调试程序时能够快速定位是软件问题还是硬件问题。

2. EDA软件的基本使用流程

2.1 创建项目和原理图设计

第一步是创建一个新项目。以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指示灯、按键、传感器接口、通信接口等。

每个功能模块最好用虚线框框起来,并添加注释说明,这样后期维护时一目了然。

在绘制原理图时,有几个实用技巧:

  1. 使用总线(Bus)来简化复杂的连线,特别是数据总线和地址总线
  2. 善用网络标签(Net Label),避免画太多交叉的连线
  3. 给每个元器件添加合适的封装信息,这样在转PCB时就不会出错
  4. 定期进行电气规则检查(ERC),及时发现连接错误

2.2 元器件库的管理

元器件库是EDA软件的重要组成部分,包含了元器件的原理图符号和PCB封装。

刚开始使用EDA软件时,我经常遇到找不到合适元器件的情况。

后来我养成了自己建库的习惯,把常用的元器件都整理到自己的库中。

建立元器件库的步骤:

  1. 创建原理图库文件(.SchLib)和PCB库文件(.PcbLib)
  2. 在原理图库中绘制元器件的符号,定义引脚编号和名称
  3. 在PCB库中绘制元器件的封装,包括焊盘位置、丝印层、阻焊层等
  4. 将原理图符号和PCB封装关联起来

我的建议是,对于常用的芯片,比如STM32系列、电源芯片、运放等,可以从官方或者可靠的第三方网站下载现成的库文件。

但对于一些特殊的元器件,还是需要自己动手制作。

制作封装时一定要仔细核对数据手册,特别是引脚间距和焊盘尺寸,差一点都会导致PCB无法焊接。

2.3 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下面铺了大面积的铜皮,并且打了很多过孔连接到底层地平面,形成散热通道。

2.4 PCB布线设计

布局完成后就可以开始布线了。布线是PCB设计中最耗时的工作,也是最考验工程师经验的环节。

2.4.1 布线的基本规则

  1. 电源线和地线要粗,一般电源线宽度至少0.5mm,大电流线路要更粗
  2. 信号线宽度一般0.2-0.3mm,根据电流大小和阻抗要求调整
  3. 走线尽量走直线或45度折线,避免90度直角转弯
  4. 高速信号线要短,要粗,要远离干扰源
  5. 模拟信号和数字信号要分开走线,避免串扰

2.4.2 地平面的处理

在多层板设计中,通常会有一层或多层作为地平面。

地平面可以提供稳定的参考电位,降低信号回流阻抗,提高抗干扰能力。

我在设计四层板时,一般采用"信号-地-电源-信号"的叠层结构,这样可以保证每一层信号都有完整的地平面作为回流路径。

对于双层板,虽然不能做完整的地平面,但也要尽量在底层铺铜,并且多打地过孔,降低地阻抗。

有一次我设计的一个双层板,因为地过孔打得太少,导致信号质量不好,后来补打了很多过孔才解决问题。

2.4.3 自动布线和手动布线

EDA软件都提供了自动布线功能,但我很少完全依赖自动布线。

自动布线对于简单的电路还可以,但对于复杂的、有特殊要求的电路,还是需要手动布线。

我的习惯是,先手动布关键信号,比如时钟线、复位线、高速信号等,然后用自动布线完成剩余的信号,最后再手动优化。

3. 实际案例:STM32最小系统设计

下面我以一个STM32F103C8T6最小系统为例,演示完整的EDA设计流程。

3.1 原理图设计

这个最小系统包括以下几个部分:

  1. 电源电路:使用AMS1117-3.3将5V转换为3.3V,输入端加10uF电容,输出端加10uF和100nF电容
  2. MCU核心:STM32F103C8T6芯片,VDDA和VDD分别加100nF去耦电容
  3. 时钟电路:8MHz无源晶振,两端各加20pF电容,还有一个32.768KHz的RTC晶振
  4. 复位电路:NRST引脚通过10K电阻上拉到3.3V,并联一个100nF电容和一个复位按键
  5. BOOT配置:BOOT0通过10K电阻下拉到地,BOOT1也下拉
  6. 调试接口:引出SWD接口,包括SWDIO、SWCLK、GND、3.3V四个引脚
  7. LED指示灯:PC13引脚接一个LED和限流电阻

在Altium Designer中绘制好原理图后,要进行编译检查。

点击"Project → Compile PCB Project",如果有错误或警告,要逐一解决。

常见的问题包括:引脚未连接、网络名称冲突、元器件缺少封装等。

3.2 PCB设计

将原理图导入PCB后,首先设置板子的尺寸和层数。

这个最小系统我选择双层板,尺寸设置为50mm × 40mm。

布局阶段

  1. 先放置STM32芯片,位置大概在板子中央偏上的位置
  2. 电源芯片AMS1117放在板子左侧,靠近电源输入端
  3. 晶振放在MCU的旁边,尽量靠近OSC_IN和OSC_OUT引脚
  4. 去耦电容紧贴MCU的电源引脚
  5. SWD接口放在板子边缘,方便调试器连接
  6. LED放在板子的角落,不占用太多空间

布线阶段

  1. 先走电源线,从AMS1117的输出端到MCU的VDD引脚,走线宽度设置为0.8mm
  2. 走地线,在底层铺铜作为地平面
  3. 走晶振信号,这是高频信号,要短、要粗、要远离其他信号
  4. 走SWD调试信号,SWDIO和SWCLK要等长
  5. 最后走LED控制信号

完成布线后,要进行DRC(Design Rule Check)检查。点击"Tools → Design Rule Check",设置好规则后运行检查。常见的DRC错误包括:走线间距不够、走线宽度不符合要求、焊盘间距太小等。

3.3 生成Gerber文件

PCB设计完成后,需要生成Gerber文件用于PCB制造。

在Altium Designer中,选择"File → Fabrication Outputs → Gerber Files",按照PCB厂家的要求设置好各层的输出选项。

一般需要输出的文件包括:

  • 顶层铜箔(Top Layer)
  • 底层铜箔(Bottom Layer)
  • 顶层阻焊(Top Solder Mask)
  • 底层阻焊(Bottom Solder Mask)
  • 顶层丝印(Top Silkscreen)
  • 底层丝印(Bottom Silkscreen)
  • 钻孔文件(Drill Drawing)
  • 板框文件(Board Outline)

生成Gerber文件后,我习惯用CAM350或者Gerbv打开检查一遍,确保没有问题再发给PCB厂家。

4. EDA软件使用的进阶技巧

4.1 使用脚本自动化

对于重复性的工作,可以使用脚本来自动化。

Altium Designer支持Delphi Script和VB Script,可以编写脚本来批量修改元器件属性、自动生成BOM表、批量调整走线宽度等。

我曾经写过一个脚本,用来批量修改所有电阻的封装,从0603改为0805。手动修改要花半小时,用脚本只需要几秒钟。

4.2 使用仿真功能

很多EDA软件都集成了电路仿真功能,可以在PCB制作之前验证电路的正确性。

比如在Altium Designer中,可以使用Mixed Sim进行模拟仿真,验证电源电路的输出电压、纹波等参数。

虽然仿真不能完全替代实际测试,但可以提前发现一些明显的设计错误,节省时间和成本。

我在设计电源电路时,都会先仿真一下,确保输出电压和负载能力满足要求。

4.3 3D可视化

现代EDA软件都支持3D可视化功能,可以在设计阶段就看到PCB的立体效果。

这对于检查元器件是否干涉、外壳是否匹配非常有用。

在Altium Designer中,按"3"键可以切换到3D视图。

如果元器件有3D模型,就可以看到真实的立体效果。

我在设计一个装在金属外壳里的板子时,就是通过3D视图发现某个电容太高,会顶到外壳,及时做了调整。

4.4 团队协作

在公司做项目时,经常需要多人协作。

EDA软件提供了版本控制和协作功能,可以让多个工程师同时工作在一个项目上。

Altium Designer支持SVN和Git版本控制,可以跟踪每次修改,避免冲突。

在我们团队中,原理图和PCB文件都放在Git仓库中,每次修改都要提交并写清楚修改内容,这样其他人可以清楚地知道项目的变化。

5. 常见问题和解决方法

5.1 元器件封装错误

这是最常见的问题之一。

有时候原理图中选择的封装和实际元器件不匹配,导致PCB焊接时发现焊盘对不上。

解决方法:在设计阶段就要仔细核对数据手册,确认封装的尺寸和引脚定义。

如果不确定,可以先用游标卡尺量一下实际元器件的尺寸。

我现在养成了习惯,每次使用新的元器件,都会先打印1:1的封装图纸,把实际元器件放上去对比一下。

5.2 走线宽度不够

有时候为了节省空间,把走线画得很细,结果通电后发现走线发热甚至烧断。

解决方法:根据电流大小计算走线宽度。

有一个经验公式:对于1oz铜厚,1A电流需要约15mil(0.38mm)的走线宽度,温升10度。

如果电流更大,要相应增加走线宽度,或者使用更厚的铜箔。

5.3 地回流路径不畅

这会导致信号质量差、EMI问题严重。

特别是在双层板中,如果地过孔打得太少,地回流阻抗很大。

解决方法:在信号走线附近多打地过孔,特别是在信号换层的地方。

我的经验是,每隔5-10mm就打一个地过孔,形成低阻抗的地回流路径。

5.4 高速信号干扰

在设计USB、以太网等高速接口时,如果走线不当,会导致信号质量差,通信不稳定。

解决方法:高速信号要控制阻抗,要等长,要远离干扰源。

差分信号要平行走线,间距要合适。必要时可以使用阻抗计算工具,确保走线阻抗符合要求。

我在设计USB接口时,会使用Saturn PCB Toolkit计算走线宽度和间距,确保90欧姆的差分阻抗。

6. 学习建议

对于刚接触EDA软件的朋友,我的建议是:

  1. 从简单项目开始。不要一上来就设计复杂的多层板,先从简单的双层板开始,比如LED闪烁电路、简单的单片机最小系统等。
  2. 多看官方教程。每个EDA软件都有详细的官方教程和文档,这是最权威的学习资料。

Altium Designer的官方YouTube频道有很多视频教程,讲得非常详细。

  1. 参考优秀的开源项目。GitHub上有很多开源硬件项目,可以下载它们的原理图和PCB文件学习。

看看别人是怎么设计的,学习他们的布局布线技巧。

  1. 实践出真知。光看教程是不够的,一定要自己动手设计。
  2. 可以先设计一些简单的板子,打样回来焊接测试,在实践中积累经验。

我刚开始学PCB设计时,设计了一个STM32最小系统板,虽然很简单,但从设计到焊接调试的整个过程让我学到了很多。

  1. 加入社区交流。可以加入一些EDA软件的QQ群、微信群,或者论坛,遇到问题可以请教别人。

我在立创EDA的论坛上学到了不少东西,那里有很多热心的工程师分享经验。

  1. 关注PCB制造工艺。了解PCB的制造工艺,知道什么样的设计容易制造,什么样的设计会增加成本。

比如,走线间距太小会增加制造难度,过孔太多会增加成本等。

7. 总结

EDA软件是嵌入式工程师的必备技能之一。

虽然学习曲线有点陡峭,但只要多练习,多思考,就能掌握。

从我自己的经验来看,从完全不会到能够独立设计复杂的四层板,大概需要半年到一年的时间。

在使用EDA软件的过程中,要养成良好的习惯:规范命名、及时备份、详细注释、严格检查。

这些习惯会让你的设计更加可靠,也会让后期维护更加轻松。

最后,我想说的是,硬件设计是一个需要不断学习的领域。

新的元器件、新的技术、新的设计方法层出不穷,我们要保持学习的热情,不断提升自己的技能。

在我的公众号里,我会持续分享嵌入式开发和硬件设计的经验,欢迎大家关注交流。

希望这篇文章能够帮助大家更好地理解和使用EDA软件。

如果你有任何问题或者想法,欢迎在评论区留言讨论。让我们一起进步,一起成长!

更多编程学习资源

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. EDA软件概述
    • 1.1 什么是EDA软件
    • 1.2 为什么要学习EDA软件
  • 2. EDA软件的基本使用流程
    • 2.1 创建项目和原理图设计
    • 2.2 元器件库的管理
    • 2.3 PCB布局设计
    • 2.4 PCB布线设计
  • 3. 实际案例:STM32最小系统设计
    • 3.1 原理图设计
    • 3.2 PCB设计
    • 3.3 生成Gerber文件
  • 4. EDA软件使用的进阶技巧
    • 4.1 使用脚本自动化
    • 4.2 使用仿真功能
    • 4.3 3D可视化
    • 4.4 团队协作
  • 5. 常见问题和解决方法
    • 5.1 元器件封装错误
    • 5.2 走线宽度不够
    • 5.3 地回流路径不畅
    • 5.4 高速信号干扰
  • 6. 学习建议
  • 7. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档