公司动态

Real Schematics实战:原理图规范化设计与ERC检查进阶指南

📅 2026/8/29 11:51:34
Real Schematics实战:原理图规范化设计与ERC检查进阶指南
1. 整体设计思路从“画得出图”到“画得对图”做硬件设计这几年我越来越觉得“Real Schematics”这个词很有分量。很多人以为原理图就是把芯片的引脚连起来、让网络表能跑通但真正的“真实原理图”远不止这么简单——它是一块板子从概念到落地的第一份正式契约是后续PCB布线、生产贴片、调试维修都要依赖的底层文档。Part 1 里我讲了一些基础整理方法这次 Part 2 我们往深了走重点聊聊怎么把一张“看起来能用”的原理图打磨成“真正能交出去生产”的原理图。如果给“Real SchematicsPart 2”定个关键词我觉得是“取舍”和“规范”。取舍是说你要知道哪些细节必须较真哪些地方可以适度简化规范是说每一处命名、每一类标注、每一条连线都要有明确的目的经得起别人推敲也经得起自己半年后再回来看。适合看这篇内容的朋友主要有这么几类正在做毕业设计、需要把原理图画到能打板程度的学生刚入行做硬件助理、被老大要求整理原理图规范的工程师以及自己捣鼓开源硬件、想提升图纸质量独立开发者。不管你是用 KiCad、Altium Designer 还是 EAGLE核心思路都是通用的。我在实际项目中见过太多“图纸灾难”位号乱跳、网络名随手命名、电源符号一地散落、GND 画得满天飞结果到了 PCB 阶段一抓一把错改到怀疑人生。这些问题的根源往往不是软件操作不熟练而是从设计思路上就没把原理图当成“工程交付物”来对待。第二部分我会把整个流程拆开从前期规划讲到连接器选型再到模块划分、电源树整理最后讲 ERC 检查和交付整理的实操细节。2. 画之前先做的三件事比画图本身更重要很多人打开 EDA 工具就直接拖元件画到一半发现封装不对、器件买不到、电源逻辑没想清楚又推倒重来。我个人的习惯是在原理图开工之前先花半天到一天时间把下面三件事梳理清楚这比闷头画图管用得多。2.1 先确认器件再动手画图首先是物料确认。你希望在原理图上放一个 STM32F103C8T6手头到底有没有货供应商交期要多久这些都得在画图之前搞清楚。我吃过一次亏项目里用了一颗看起来平平无奇的 LDO原理图和 PCB 都画完了采购那边说这料要等八周整个人都傻了。所以我的做法是先建一个简单的物料清单哪怕用 Excel 都可以。每一颗器件都写清楚型号、封装、关键参数、推荐供应商、大致单价、货期。原理图里画的每一颗料都要能在物料清单里对上。这里有个容易被忽略的细节同一颗芯片可能有多个封装版本比如 SOIC-8 和 SOP-8 看着差不多实际上引脚间距和本体尺寸都有差异画原理图时选错了封装打板回来器件根本焊不上去。2.2 封装库是原理图的“地基”封装这件事值得单独强调。真实的原理图每一颗元件都必须绑定一个真实存在的封装不能光画一个逻辑符号就觉得完事了。你在原理图里拖出一个电阻符号心里得清楚它是 0402 还是 0603是贴片还是直插焊盘间距是多少——这些信息由封装决定而封装直接决定了 PCB 上能不能放得下、能不能焊得上。说到封装我特别想聊一下 KiCad 用户容易踩的坑。KiCad 的符号库和封装库是分开管理的你从符号库拉出一个 ATmega328P它不会自动帮你配好封装。你得手动在符号属性里指定对应的封装比如“Package_QFP:TQFP-44_10x10mm_P0.8mm”。很多人第一次画图就是漏了这一步结果原理图转 PCB 的时候一堆元件没有封装根本没法继续。Altium Designer 的情况好一些它的集成库把符号和封装绑定在一起但前提是你要用对库。公司内部库或者自己维护的库最好养成每次画完原理图后做一次“封装完整性检查”的习惯确保每个元件都有封装、封装名称没有拼写错误。2.3 先理清电源树再谈其他信号电源树听起来是个挺玄乎的词实际就是回答一个问题这板子从外部拿到电之后是怎么一步步分到每一颗芯片的比如你的板子由 12V 适配器供电板上有 5V 和 3.3V 两路那你要想清楚12V 进来之后是先经过 DC-DC 降到 5V再经过 LDO 降到 3.3V还是直接用两颗独立的 DC-DC 分别生成 5V 和 3.3V每一路的最大电流是多少纹波要求是多少这些决定你在原理图上放什么电源芯片、放多大的输入输出电容、需不需要加磁珠做隔离。我一般会在原理图旁边画一个粗略的电源树草图标注每一级的电压、电流、功耗和关键纹波指标。这看起来是多花了一个小时但能避免你在画完几百个网络之后发现 3.3V 电流不够用、要重新选型这种大返工。3. 原理图绘制的核心细节Real Schematics 的硬功夫前面说的都是准备工作现在进入真正的画图环节。这一部分我会讲一些非常具体的操作习惯和设计细节有些是教科书里不会讲的但你在真实项目里一定用得上。3.1 位号和网络命名一眼看懂是基本要求先说说位号。很多 EDA 工具默认的位号是 R?、C?、U?你放一颗电阻它会自动分配 R1、R2、R3。但如果你画的是一块电源板我希望你能在位号上体现一点模块感比如把 5V 生成电路里的电阻命名为 R101、R1023.3V 生成电路里的电阻命名为 R201、R202每颗芯片周边的退耦电容用 C101、C102 来排。这样做的好处是后期在 PCB 上找器件、在 BOM 里核对位置、在维修时用万用表量信号都能快速缩小范围。原理图不只是给 EDA 工具看的更是给和你一起协作的人看的。网络命名是同样道理。不要依赖 EDA 工具自动生成的 NET1、NET2 这种名字一定要手动给关键网络命名。比如 MCU 的 SPI 总线就命名为 SPI_SCLK、SPI_MOSI、SPI_MISO、SPI_CS一看就明白是干什么的电源网络命名成 5V、3V3、VDD_MCU比默认的 5V_1 这种模棱两可的名字直观得多。还有一个实用技巧命名网络时尽量保持“全局唯一”不要在原理图的不同页里出现两个不同含义的 5V 网络——至少要有明确区分不然 ERC 检查时会被各种奇怪的连接问题折磨。3.2 网络标签 vs 实际连线怎么选更合理用过 Altium 或 KiCad 的人都知道原理图有两种连接方式一种是直接把引脚用导线连起来另一种是放网络标签通过相同的网络名实现虚拟连接。很多人觉得网络标签是个高级功能其实它是提升原理图可读性的关键工具。我的经验是信号距离短、连接关系简单的情况下直接画导线没问题但如果一个信号要从原理图的一侧跑到另一侧或者要跨越好几个页签那直接用网络标签会清爽很多。比如 I2C 的 SDA 和 SCL 通常要连到多个器件如果每一段都画连线图纸会变得像蜘蛛网一样乱这时候用网络标签每个器件旁边放一个 SDA 标签图纸立刻干净了。跨页连接则要配合页间符号比如 Altium 里面叫 Off-Sheet ConnectorKiCad 里叫 Hierarchical Label。我见过不少人在跨页时直接放两个同名的普通网络标签然后期待 EDA 工具能自动识别。这种做法在 Altium 里默认会报 ERC 错误在 KiCad 里则要看全局标签和局部标签的设置。为了让自己省心我强烈建议跨页信号一律使用跨页连接符这样图纸的阅读者一看到特殊符号就知道这个信号在其他页面还有后续。3.3 电源和地符号不要随手乱放电源符号和地符号的放置是很多新手原理图“看起来不专业”的重灾区。你可能见过一张原理图上到处散落着 5V、3.3V、VCC、VDD、GND、AGND、DGND但完全没有逻辑关系。真实项目中电源和地应该有清晰的分层。先说地。如果板子上有模拟电路和数字电路模拟地和数字地通常要分开在原理图层面就要用不同的符号AGND 和 DGND。到了 PCB 阶段再决定是单点连接还是用磁珠/0 欧电阻跨接。如果你在原理图里全都画成一个 GND后面做 PCB 时才来区分模拟地和数字地那基本就得靠飞线了。我在混合信号板子里一般直接用两个不同的地符号网络名分别是 AGND 和 DGND这样 ERC 能帮你检查出哪些地方错误地连在一起。再来说电源符号。每个电源网络的来源要在图纸中清晰标注。一个项目里有 5V 和 3V3 很正常但你要画明白5V 是由哪颗 DC-DC 生成的3V3 是由哪颗 LDO 转换出来的在原理图中电源网络的“源头”应该有明确的标示比如用电源输出符号或在网络边上加注释。这一点在后面做电源树检查和 PCB 布局时特别有用。3.4 去耦电容和上拉电阻该放的位置一个都不能少画原理图最忌讳的就是“心里想当然”。一颗 MCU 的每个电源引脚旁边必须放 100nF 去耦电容这是教科书都会教的基本原则但实际画图时很多人会漏掉几个引脚或者把去耦电容摆得离引脚很远。原理图阶段可能看不出多大问题到了 PCB 阶段这些电容摆放位置直接影响电源完整性甚至会引发芯片工作不稳定。我再提一个容易被忽略的细节复位引脚、使能引脚、启动配置引脚这些“功能引脚”画图时一定要仔细看数据手册里推荐的接法是上拉、下拉、还是悬空。比如 STM32 的 BOOT0 引脚如果悬空不处理某些情况下可能导致芯片无法正常启动再比如有些 DC-DC 的 EN 引脚带有内部上拉你不接外部电阻可能没事但如果不确定宁可加一个 100k 上拉电阻固定住为后续调试留出操作空间。3.5 不要忘记连接器和测试点原理图画到功能模块都完整了很多人就以为大功告成结果到了调试阶段才发现想量个信号没地方下探头想烧录程序找不到接口。这就要聊到“可测试性设计”——在原理图阶段就要考虑后期调试的便利性。对于关键信号比如电源输出、参考电压、时钟输出、通信总线我应该建议预留测试点。测试点可以用一个 1 脚焊盘来实现在原理图里放一个专门的 Test Point 符号。它有成本一个测试点可能只要几分钱但调试的时候节省的时间是巨大的。尤其在板子尺寸比较紧张的情况下测试点往往是最先被砍掉的东西我个人的建议是至少要保证每一路电源输出和每一路关键通信信号都有测试点。没有测试点的板子调试就像闭着眼睛修车。连接器方面调试用的调试接口比如 SWD、JTAG一定要选带定位销或者有防反插设计的型号尽量预留串口打印的接口——哪怕只是两个排针也能在关键时刻救你一命。我见过某个项目为了省空间把 SWD 调试口画成裸焊盘结果产品出了软件问题想重新烧录程序得把外壳拆了用夹子夹着焊盘刷痛苦不堪。4. 实操流程与关键环节实现从空白页到可交付图纸这一部分我会用 KiCad 8 作为示例走一遍画原理图的完整流程。虽然是 KiCad 的界面但核心操作逻辑在 Altium Designer、立创 EDA 等软件里都适用。如果你用的是其他工具可以对照着理解每一步在做什么、为什么这么做。4.1 创建工程与页面设置第一步是创建工程。在 KiCad 里新建项目时它会生成一个项目文件同时带上原理图、PCB、BOM 等文件的关联关系。建议第一时间把工程命名规范好不要叫“untitled”或者“111”。我的习惯是“项目名_版本_日期”比如“SensorHub_V1.2_20250520”。版本号一定要在文件层面就体现出来方便后续回溯。打开原理图编辑器之后先设置图纸大小。KiCad 默认是 A4 横向如果你的原理图预计超过两三页建议改成 A3 或更大。图纸上的标题栏也不要忽略把工程师名字、项目名、版本、日期填进去这在团队协作和归档时非常重要。我见过太多原理图文件标题栏一片空白半年之后打开根本不知道这张图是哪个项目的。4.2 放置元件与配置属性在 KiCad 中按“P”可以打开选择元件窗口搜索你需要的符号放置到图纸上。放完之后第一件事就是检查属性位号、值、封装。KiCad 中元件属性对话框会显示符号、封装、字段等信息你要确保每一颗元的封装字段都是正确填写的不能留空。这里有一个 KiCad 特有的细节符号字段里的“Value”在很多情况下会同时被当作元件值使用比如 10k 电阻的 Value 是“10k”但有些符号的 Value 会被工具自动设为“R”这样你就得手动改成 10k。在生成 BOM 的时候如果 Value 字段填错了采购单上就会出问题。我自己的习惯是每放一批元件就顺手检查一次字段不要等到最后统一处理否则几十个元件找起来简直是灾难。4.3 按模块分区布局先画电源再往上添信号图纸上元件的摆放顺序直接决定后面连线的顺畅程度。我的习惯是先把一块原理图按功能划分出几个明确的区域比如“电源输入”“DC-DC 5V 生成”“LDO 3V3 生成”“MCU 主控”“传感器接口”“通信接口”然后在图纸上用文字或划线明确标识出这些区域。画图的顺序我建议从电源开始。先把输入连接器、保险丝、防反接电路、DC-DC、LDO 这些摆好连好电源路径再逐步放 MCU、传感器这些需要被供电的器件。这样做的好处是电源网络在一开始就是完整的你不会画到一半突然发现某个芯片的电源引脚不知道该接哪里。连线的顺序也有讲究先把每个器件旁边的去耦电容放好就近连接电源和地然后再做信号连接。信号线尽量横平竖直能走 45 度弯就不要走直角。KiCad 默认是任意角度连线但你放到后面它会自动吸附成 45 度这没问题。我见过一些原理图用 0 度、45 度、任意角混合画线看起来很乱。保持一致的布线风格是专业原理图的基本面。4.4 电源网络和地网络的批量处理在所有元件都放置完成、电源芯片也都画好之后开始批量放置电源符号和地符号。在 KiCad 中电源符号其实就是特殊的网络标签你可以在放置菜单中选择“电源”分类。你可以选择 PWR_FLAG 符号也可以直接用 VCC、GND 这类标准电源符号。这里要特别讲一下 PWR_FLAG。KiCad 的 ERC 检查默认会报“电源引脚未连接”的错误——这是因为原理图上如果没有明确接一个电源输出ERC 会认为某些电源引脚是悬空的。解决办法是在电源网络的最源头放置一个 PWR_FLAG 符号告诉 ERC这个网络确实是有电输入的不是接漏了。这个符号没有实际电气意义但对 ERC 检查至关重要。新手第一次用 KiCad 画图时经常被这个报错吓到其实原因就是少了 PWR_FLAG。批量放置地符号时也要注意区分 AGND 和 DGND。KiCad 会为不同网络名的地符号分配不同颜色/图形你在放置时就能直观看到哪个器件接在模拟地上、哪个接在数字地上。如果某个器件既有模拟引脚又有数字引脚要仔细核对数据手册看它的模拟地引脚应该接哪个地网络。4.5 使用 ERC 进行电气规则检查ERCElectrical Rule Check是原理图阶段最重要的一道检查相当于写代码时的编译过程。在 KiCad 里点击菜单栏的“检查”→“电气规则检查”就能运行。常见的 ERC 报错包括输出引脚连在一起、电源短路、引脚未连接、未连接的输入引脚等。我的习惯是画完一轮连线之后先跑一次 ERC把报错清零然后继续补充细节比如加入测试点、补充标注、调整布局再跑一次 ERC。也就是说每次做完一个阶段性的改动就立刻跑一次 ERC不要拖到最后。最后再跑一次 ERC确保所有报错和警告都已处理。处理 ERC 报错时要记得分类看待有些是真正的问题比如两个不同电压的电源网络被错误短接这种必须马上改有些是“合理的例外”比如某些引脚特意不接、某些网络特意命名不同这时你可以给这个报错添加“忽略”标记。在 KiCad 中可以在报错条目上右键选择忽略。但注意忽略一定要有明确理由不要因为“报错太多看烦了”就全部忽略。4.6 生成 BOM 和后续交接当原理图通过 ERC、网络表能正常生成之后最后一步就是输出 BOM物料清单。在 KiCad 中通过“工具”→“生成物料清单”可以设置模板并导出 CSV 或 Excel。真实的项目里BOM 是采购、贴片、备料的核心依据绝对不能随手生成一份就完事。生成 BOM 之后我建议做一次人工核对逐项检查元件的型号、值、封装、数量。特别留意有没有元件值写错、封装写错、数量对不上的情况。另外一个容易忽略的点是BOM 里的“可替代料”信息。有些元件你只写了一个型号但采购的时候可能这个型号缺货如果你在 BOM 中预留了兼容型号比如电容的耐压值稍微高一点的替代采购和生产会顺畅很多。在原理图阶段做这一步看起来有点超前但对整个项目节奏的影响很大。5. 常见问题与排查技巧实录画了这么多年原理图踩过的坑多得数不清。这里我挑了几个出现频率最高的问题整理成速查表希望能帮大家绕开这些我已经踩平了的坑。5.1 ERC 报错但看着没问题怎么办这是被问得最多的一个问题。最典型的场景是你在原理图上明明画了 GND但 ERC 仍然报“引脚 power_in 未连接”。这种情况十有八九是因为你画的是“地符号”而不是“地网络”。在 KiCad 里GND 符号本身就是一个电源符号/网络标签如果你用的是普通导线连到 GND 符号理论上是连通的但如果你的地符号是“电源符号”而不是“网络标签”在某些版本里可能不会自动合并同类网络导致 ERC 以为没连接。另一个常见情况是某个电源引脚确实连接了但连线有一段被其他对象遮挡或错误断开。肉眼看起来是连着的实际没有形成通路。解决办法是放大连线交叉的地方检查节点有没有出现。KiCad 的连线节点是一个小圆点如果没有圆点多半就是没接上。这种问题在最复杂的电源网络里最容易出现我建议把 ERC 报错逐条点开它会自动跳转到出错位置你放大检查一下就好。5.2 位号乱了如何快速整理画图过程中删除和添加元件很常见这就导致位号可能出现 R1 和 R3 都有、但 R2 被删掉的情况。虽然位号编号不连续不影响电气连接但会让 BOM 和 PCB 的梳理变得麻烦。在 KiCad 中可以使用“注解”功能重新为元件编号选择“原理图”维度再选重置或指定起始编号。Altium 也有类似的 Annotate 功能。但特别提醒一点如果原理图已经进行到 PCB 阶段重新注解会导致 PCB 上的位号与原理图对不上网络表导入时极易出错。所以重新编号一定要趁早最好在原理图定稿前完成。5.3 引脚编号和封装对不上打板后焊不上这是最惨痛的教训之一。原理图上画的是 DIP-8 封装PCB 上也确实放了 DIP-8但焊盘编号和芯片的实际引脚顺序对不上芯片焊上去根本不通。出现这个问题的根源往往是符号库与封装库不匹配。我自己的习惯是把每颗关键芯片的数据手册打开对照原理图符号的引脚顺序再对照封装焊盘编号三者核对一致后才认为这颗料没问题。特别是三极管、MOSFET、二极管这类引脚定义经常“各厂不同”的器件不同厂家相同封装下引脚定义可能是反的。BJT 的 EBC 和 BEC 看起来差别很小焊上去信号就不对。遇到这类器件我强烈建议在封装字段里加上厂家和具体型号前缀避免混用。5.4 原理图页面太多怎么管理更加清晰当原理图超过 5 页、10 页甚至更多时跨页信号的管理就成了核心问题。每一页的图纸编号、版本号、修改记录都要有明确规范。我见过一位老工程师的做法每张原理图的右上角都有一个统一格式的修订表包括日期、修订内容、修改人。这个表格看起来不起眼但等板子改版到第三版、第四版的时候你翻出旧图纸做对比就知道这个表格有多重要了。跨页信号我建议统一用一个命名规范比如“模块A_信号名_序号”在每一页图纸的页间连接符上标清楚目标页码。这个方法在多人协作的项目中尤其重要别人拿到你的原理图不需要一页一页地翻看着页间连接符就能知道这个信号去了哪里。5.5 常见问题速查表问题现象可能原因解决办法ERC 报引脚未连接但图上明明有导线连线有隐蔽断点或电源符号类型不对放大检查节点圆点检查电源符号类型必要时重新连线生成 BOM 时元件值缺失符号字段没有填写完整逐个检查元件属性至少确认 Value、封装、位号三项网络名称相同但 ERC 认为没连接局部标签与全局标签混用跨页信号统一使用全局标签或页间连接符封装引脚定义与芯片实际不一致使用了错误厂家的符号或封装库打开数据手册逐一核对引脚编号和功能PCB 导入后大量元件丢失原理图中存在没有封装或封装名错误的元件在原理图阶段执行一次“封装完整性”检查多个不同电压的电源网络被视为短路电源符号命名重复或归类错误逐个检查电源网络名、来源和输出方向6. 一些让我受益很久的实操习惯写了这么多最后再补充几个我个人的实操心得这些都是在真实项目中踩过坑之后沉淀下来的习惯分享给正在看这篇文章的你。第一个习惯每次原理图大改动之后记得做一次独立的代码审查式检查。不是让 EDA 工具自动查而是自己拿着数据手册从电源输入开始一路看到最后的连接器逐个信号核对功能逻辑。这个过程虽然耗时但能发现很多 ERC 查不出来的问题。第二个习惯给原理图添加足够的注释文字。很多工程师觉得原理图只要电路正确就行文字注释可有可无。但真实情况是半年后你打开自己画的原理图如果没有注释你得重新翻数据手册才能想起某些设计意图。我一般在关键电路旁边加一两句话比如“此电阻用于设置 DC-DC 开关频率修改会影响纹波”“此电容请选用 X7R 材质”“此网络为模拟参考地PCB 布局时需单独处理”这些注释对后期维护和团队协作的价值远超你的想象。第三个习惯及时做设计备份和版本管理。原理图文件通常不大用网盘同步或者 Git 管理都很方便。我自己在用 KiCad 时会把整个项目目录纳入 Git 管理每次重大修改提交一次。这样不仅能追踪每一步改动还能随时回退到之前的版本尤其适合尝试新的设计方案时使用——试错了直接回滚没有心理负担。第四个习惯画完一张原理图之后试着讲给别人听。你可以找一个同事或者自己对着原理图把整个电路的工作流程说一遍电源从哪里进来、经过哪些转换、到达哪些负载、信号从哪里产生、到哪里去、中间经过了什么处理。一般来说如果你能流畅地把整张图讲清楚说明你对设计有完整的理解如果讲着讲着卡住了那这个卡住的地方很有可能就是设计薄弱之处需要你再回去查一下。最后再分享一个小技巧原理图上的每一个连接、每一个标注你都应该能回答出为什么。这句话听着简单执行起来很难但它正是区分学生会画图和工程师会设计的分水岭。回答不出为什么的地方去查数据手册、去看应用笔记、去做实验验证哪怕只是为了确认一个上拉电阻的阻值选择也值得花时间去搞清楚。把每一个不知道变成我知道你的原理图才会从能跑的图纸进化为真正经得起推敲的真实原理图。