尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

AD原理图设计全流程:从SchDoc创建到ERC编译检查

AD原理图设计全流程:从SchDoc创建到ERC编译检查 1. 从无到有创建SchDoc文档前必须想清楚的几件事如果你之前用过DXP或者其他早期的EDA软件再打开Altium Designer以下简称AD的原理图编辑器第一感觉往往是就这看着没什么区别嘛。但真正动手画起来就会发现AD的SchDocSchematic Document即原理图文档远不是一张电子白纸那么简单——它是整个PCB设计流程里第一个承载电气逻辑的载体所有后续的网表导出、PCB布局布线、仿真验证全都挂靠在这份图纸上。所以在新建文档之前有几个问题最好先想清楚不然画到一半再回头改代价会比想象中大得多。1.1 SchDoc不是白纸是电气规则的载体很多人第一次接触原理图会把它理解成用线条把元件连起来。这个理解没有错但不够。在AD里SchDoc的每一根线、每一个网络标号、每一个引脚背后都有明确的电气属性。你在原理图上画一根导线Wire它代表的是实实在在的电气连接关系导出网表后这根线就会变成PCB上一个网络Net布线时走多宽、走哪层都跟这根线有直接关系。所以绘制原理图的第一原则是不要用画图软件的思维去画原理图。不要为了让图纸看起来美观而随意拉线、乱放标号一切操作都要符合电气规则。AD本身也提供这样的约束比如同一个网络上不允许出现两个不同的网络名称、元件引脚不能悬空除非你设置了No ERC标记等这些规则会在编译时自动检查提前发现低级问题。另外SchDoc文件结构上默认是一个独立的.SchDoc文件可以存放在任意目录但强烈建议把它放进一个工程.PrjPcb里统一管理。独立文件也能打开和编辑但没有了工程这个容器很多跨文档协作功能就会失效比如多张原理图之间的层次连接、编译时的全局ERC检查、以及生成网表时跨Sheet映射这些都是依赖工程上下文才能正常工作的。1.2 图纸尺寸、栅格与单位画布配置的三板斧在你翻开一块全新的画布之前建议先把三个基础参数调好它们决定了整张图后续的手感。第一是图纸尺寸。AD默认的图纸大小是A4但这个尺寸对绝大多数项目来说太小。尤其是当你画STM32最小系统板这种元件密度高的项目时A4上密密麻麻放三四十个元件连线和标号几乎没法看。我的习惯是中等规模项目用A3元件多且IO密集的用A2只有在极少数超大板卡上才会用到A1甚至更大。修改路径是Design设计→ Document Options文档选项快捷键是DS在打开的对话框里的Sheet Options选项卡中可以直接选择标准尺寸。这里有一个小技巧图纸尺寸可以在画到一半时再改不会破坏已有内容但尽量在开始前定好免得后期调整时元件位置比例怪怪的。第二是栅格Grid。AD的捕捉栅格分为可视栅格和电气栅格两层很多人分不清。简单来说可视栅格是屏幕上显示的点阵它的作用是帮你对齐元件和导线而电气栅格是实际吸附的精度决定了你在放元件引脚和布线时光标能吸附到多小的偏移量上。原理图绘制的栅格一般设为25mil或10mil太小了容易产生难以察觉的微小偏移太大了又容易连错引脚。快捷键G可以在几种常用栅格之间快速切换这个操作频率很高务必记住。第三是单位。AD默认用英制mil作为原理图的单位但国内很多工程师习惯公制mm。其实原理图阶段用mil问题不大因为原理图不涉及物理尺寸只有PCB布线时才会用到mm。只要你在元件符号的设计上保持一致原理图阶段用英制是完全没有问题的。等到导入PCB再切换成公制不影响任何逻辑关系。这三板斧定下来画布就算准备好了。接下来我们要面对整个流程中占用时间最多、也最容易出问题的一步——元件。2. 调库放元件原理图绘制的核心而不是画元件我见过不少初学者打开原理图的第一反应是拿起画线工具打算自己把元件形状画出来。这其实是个很大的误解。在AD中99%的元件你都不应该自己画符号而是直接从库里面调用。原因很简单原理图符号Symbol本身不参与物理实现真正参与物理实现的是封装Footprint你在原理图上调用的是符号封装电气参数的组合体。如果连符号都自己画绝大多数情况下只是重复造轮子效率极低还容易出错。2.1 集成库IntLib与封装的关系为什么说没有封装就没有PCB在AD里元件通常以两种形式存在一种是集成库Integrated Library后缀.IntLib它把原理图符号、PCB封装、3D模型和参数信息打包在一起另一种是分立库文件.SchLib原理图符号库 .PcbLibPCB封装库需要单独加载。对于大多数设计强烈推荐使用集成库。原因很直接集成库省去了原理图画完了还要逐个指定封装的烦恼。你在原理图上放置一个STM32F103C8T6它的LQFP48封装就已经自动绑定好了。导出网表进PCB时元件直接带封装出现不需要再手动对应。判断一个元件是否绑定了封装最简单的办法是在放置时打开元件属性对话框快捷键Tab看Footprint栏是否有值。如果显示No Footprint说明这个库元件不完整。经常有人问我我的原理图画完了PCB导入进去怎么全是空的十有八九就是封装没绑定。所以养成好习惯每次放元件时随手看一眼封装栏等全部画完再回头补封装那才是真折磨。2.2 放置元件的三种方式以及各自的使用场景AD里放元件至少有三种方式我根据场景不同会换着用一是通过库面板浏览放置菜单Design → Browse Libraries或直接调出Libraries面板。这是最推荐的方式尤其适合库量大的时候。在面板里选中一个元件右侧可以看到它的符号预览和封装预览。但要注意面板一次只能显示预览不能像搜索工具那样全文检索参数所以适合你明确知道元件在哪个库里的场合。二是通过搜索功能放置。在库面板的搜索框中输入型号关键词比如STM32F103C8T6或者更方便的CH340GAD会在已加载的库中做模糊匹配。这个方法效率极高尤其是面对上百个库文件时不需要依次去翻每一个库。但前提是你要搜索的元件确实存在于你加载过的库中。默认库不够用时很多人第一反应是去网上搜一个库下载这里我多一句嘴下载来的库一定要在导入前做一次审查因为第三方库的封装命名、引脚编号标准参差不齐直接用很容易在PCB阶段翻车。审查方法也不复杂打开库元件看一眼符号引脚和封装焊盘是否对应尤其是集成电路的引脚1位置是否一致。三是使用放置芯Place → Part快捷键PP然后手动输入元件在库中的完整路径比如Manufacturer Part Number: STM32F103C8T6这种全限定名称。这个方法适合你完全知道编号、不想打开面板的时候但输入速度未必比搜索快用的场景相对少。顺手记一下PP这个快捷键是整个绘制过程中使用频率最高的操作之一建议形成肌肉记忆。2.3 原理图上元件的属性调整不只改标号那么简单放置元件之后很少有元件不需要改属性和位置。常用操作包括双击元件打开属性框修改位号Designator、注释Comment、以及元件值Value。位号最好一开始就规划好命名规则比如电阻R1-R99、电容C1-C99、芯片U1-U99避免后期大量改动导致图纸编号混乱。还有一个容易被忽视的功能是元件的方向旋转。快捷键是空格键逆时针90度旋转和X/Y键水平/垂直翻转。这个操作非常常用但是有一个注意点旋转和翻转是针对整个元件符号的如果你只选中了内部某个图形元素AD有时候会提示部分选择不能旋转这时候要先框选整个元件或者是按住Shift逐个选中几个元件一起旋转。多人协作或者不同工程师习惯不同时元件方向不一致很容易导致连线绕路影响整洁度。所以每放一个元件最好养成立刻旋转到位、再开始布线的习惯。字段Parameters也是元件属性的重要组成部分。很多元件库里自带参数例如电阻的阻值、容差、功率芯片的速度等级、温度范围等。这些参数在生成BOM物料清单时会被提取出来所以必须真实准确。有时候你会遇到库元件里的参数字段写错了比如100uF写成了100pF这类错误在原理图上肉眼很难发现但BOM发出去就是事故。建议在放置完成后、正式编译前专门过一遍每个关键元件的参数尤其是无源器件。3. 连线、标号与电源悬挂原理图的电气语言元件放好了接下来是让它们说话——即建立电气连接关系。AD原理图的连线体系按信息量从小到大可以分为三档导线Wire用于近距离元件引脚之间的短接网络标号Net Label用于跨区域或跨页的连接电源符号和端口Port则代表全局的电气标识。三种方式各有分工用对了图纸干净整洁用错了就会埋下编译报错的伏笔。3.1 导线与网络标号近距离物理连接 vs 远距离逻辑连接**导线Wire**是原理图中最基础的连接方式快捷键PW放置时从元件引脚末端开始画落点必须准确地落在另一个引脚末端或已有导线上。当你捕捉成功时光标附近会出现一个红色的×连接点这个点表示两根线之间建立了电气连接。如果只是从一根线的中点拉出去没有出现红叉后面的网表就可能少一条连接。很多新手在布线时会发现两根线明明看起来相交了却没有电气连接。这是因为AD默认不允许T型交叉自动产生连接除非你在交叉处放置了一个连接点Junction。这是一个很重要的规则——并不是所有十字交叉的导线都会导通只有通过节点符号明确的交叉才算电气连通。为了避免这种情况我的习惯是尽量采用垂直进入的布线方式即在元件引脚处直接水平或垂直引出导线不在导线上做多余的直角转折或跨接。实在需要交叉时就用网络标号而非导线来衔接这样既清晰又安全。**网络标号Net Label**是另一种更推荐的长距离连接方式快捷键PN。它的语义是赋予某个导线或引脚一个全局唯一的网络名称只要名称相同系统就认为它们是连通的物理上是否画线都无所谓。网络标号的好处是让原理图不用画满跨区域的长线尤其在多页原理图中I2C_SCLUART_TX这样的标号比一根从左上角扯到右下角的线舒服得多。放置网络标号有几个容易踩的坑。第一个是标号必须紧贴导线或引脚端点放置否则它不会挂到网络上第二个是标号为大小写敏感——vcc和VCC是两个完全不同的网络很多人排查半天找不到连接关系最后发现是小写字母惹的祸第三个是标号不要包含中文和特殊字符尤其是空格、括号这在生成网表时极易出兼容性问题。3.2 电源符号、接地与端口别让0V网络变成天坑电源符号快捷键PO是原理图里最特殊的存在。它表面上是一个箭头加横线VCC或者倒T接地符号GND本质上是一个全局网络标号。你在图纸左侧画了一个VCC电源符号右侧再画一个VCC哪怕两者之间隔着十万八千里它们都被视作同一个网络。这个特性很方便但也格外危险一旦你错误地将一种电压标成了VCC整个板上所有标着VCC的引脚就全都被连到一起了后果通常是芯片烧毁或者板子无法正常工作。电源符号的标号同样建议遵循统一命名规则。我的习惯是正电源用VCC或3V3并明确标注电压值模拟地用AVCC、数字地直接标GND如果存在不同的参考地比如模拟地和数字地最终通过磁珠或0欧电阻连接那就需要区分AGND和DGND——注意在原理图上将它们标成两个不同的网络再用一个0欧电阻或磁珠将它们单点连接这是唯一正确的处理方式。有人图省事把所有地都叫GND然后指望PCB阶段再去切地那绝对是后患无穷。**端口Port**常用于多张子原理图之间的跨页连接快捷键PR。与网络标号相比端口更适合表达某张子图的某个信号去到了另一张子图的某个位置这种顶层逻辑。在层次化设计中同名的端口在编译时会自动映射为同一个网络。要注意的是端口的方向属性Input/Output/Bidirectional建议如实设置因为它在ERC检查时会被用来验证信号流向合理性——把输出信号接到输入端口上AD会报不匹配这其实是个很好的保护机制。3.3 总线与差分走线表达为了效率也要讲原则当信号数量较多时比如一组8位并行数据线AD提供了**总线Bus**工具快捷键PB。总线是一条粗线它本身不代表任何电气连接只负责把多根信号线束在一起便于图纸阅读。具体的连接关系是通过总线入口Bus Entry快捷键PU和网络标号来完成的例如DATA[0..7]配合DATA0、DATA1、DATA2……这些标号系统会自动把它们关联起来。这里我想特别提醒总线只是视觉上的收纳盒千万别把它当成电气连接本身。有些人画完总线后只在起点和终点标了各自的网络名忘了在每条支线入口处标号结果编译时全是Signal has no driver的错误。还有一点总线的网络标号语法要求闭区间[0..7]不可以使用[0:7]这种写法我用AD多年这个低级错误到现在还偶尔会遇到同事踩。至于差分对信号比如USB的D/D-或者千兆网的TX/-AD要求在原理图上把成对信号做上差分标记方法是在放置网络标号时给名称加上_N和_P的后缀如USB_D_P、USB_D_N并在Place → Directive → Differential Pair中放置差分对指示器。如果没有这一步到了PCB阶段就无法使用差分布线功能只能手动等长走线那工作量会呈指数级上升。所以原理图阶段就把差分对标清楚是给自己后面省力气的关键一着。4. 编译检查与常见报错处理AI画图时代也要懂的底层逻辑原理图画完并不代表结束只有通过编译检查才算真正可用。AD的编译Compile操作相当于给整张原理图做一次电气规则检查ERCElectrical Rules Check它会自动扫描所有网络的连接性、元件引脚的负载状态、端口的匹配关系、位号是否重复等问题然后生成Message报告。这一步的重要性怎么强调都不过分——所有的低级错误最好都在原理图阶段被揪出来而不是拖到PCB布线甚至打样回来后再返工。4.1 编译的触发方式与Message面板解读编译整个工程的方式非常简单在工程面板Projects上右键工程名选择Compile PCB Project xxx.PrjPcb或者直接用快捷键CC。如果只编译当前打开的原理图也可以先选中该SchDoc文件再执行同样的右键菜单命令。编译完成后AD会自动弹出Messages面板里面逐条列出了所有的警告Warning和错误Error。很多新工程师一看到Messages面板里几十条警告就慌了其实大可不必。ERC报告的严重程度分三级真正的Error是必须解决的比如重复位号、短路冲突等Warning则要根据具体情况判断比如含未连接引脚浮空输入这类警告有时候是设计需要比如某个预留测试点有时候确实是疏忽还有一类是Info级别的信息只是通知你某个网络被命名了、某个对象被忽略检查了一般可以不理会。要定位某条报错的位置在Messages面板中双击该条目AD会自动跳转到原理图中对应的对象并用高亮边框标记。这个过程非常高效但是我强烈建议不要只盯着Messages逐条点而是先看一遍所有消息的分布规律。比如如果报错集中在几个特定的元件上多半是这些元件的引脚属性或封装有问题如果报错分散在几十个网络上那可能是某个全局设置比如某类引脚被设成了Power类型不对。找到规律比逐条修效率高一个量级。4.2 最常见的五个ERC错误及其根因根据我这些年帮同事排查原理图报错的经验以下五类错误出现的频率最高第一类Duplicate Designators位号重复。最常见的场景是从某段电路复制粘贴后忘了改位号。这类错误如果在PCB阶段才发现元件会默认为同一器件布局布线全都会乱套。解决办法也很简单找到重复的位号改成未使用的新编号即可如果想偷懒可以用AD的Format → Annotate自动编号功能但注意它会重新排序所有位号如果BOM已经发出去就不要再对已确定的图执行这个操作了。第二类Floating Power Port电源符号悬空。提示某个电源端口没有与任何引脚或导线相连。检查方法放大到报错对象看看电源符号是否真的贴在了引脚末端。我遇到过不少次是电源符号放歪了差零点几个毫米肉眼看起来连着实际上没有吸附。第三类Pin not driven引脚没有驱动源。通常是指某个输入引脚没有连到任何输出或电源网络。最典型的场景是漏接了使能引脚如芯片的EN/CE或者某个引脚本应通过上拉电阻接VCC但上拉电阻的另一端没接。这类警告要认真对待因为它往往反映了真实电路的不完整。第四类Net has multiple names网络有多个名称。这个错误发生在两个逻辑上相连的部分被标了不同网络名的时候最常见的原因是电源符号误命名比如某根线上挂了VCC电源符号同时该线上又手动加了一个3V3的网络标号。AD会认为这是一处命名冲突。第五类Unconnected pin引脚未连接。这个还要分情况处理有些引脚比如NC脚、空脚是允许浮空的这种情况下应该在该引脚上放置No ERC标记快捷键Place → Directives → No ERC或直接在原理图上右键放置告诉编译器这里的浮空是故意的。如果你把所有未连接引脚都留成Warning真正该关注的未连接项反而会被淹没在一堆无关警告里。编译通过之后下一步就可以准备生成网表并导入PCB了这部分我在这个系列的前一篇中已经详细写过这里不再赘述。但我想再多说一句**网表只是原理图的快照如果你改动了原理图却没有重新编译、重新导入PCB是不会自己更新的。**我见过不少工程师在原理图上删掉了一根线但是忘了重新同步直接拿着旧的网表去投板结果板子做回来功能不对一整轮的时间都白费了。把这套改图必重新编译、重新导入的流程刻在肌肉记忆里是硬件工程师的基本素养。5. 原理图绘制的实战习惯与效率提升最后这部分我想分享一些更多属于个人经验层面的东西。这些东西在官方教程里很少被系统性地强调但在实际项目中它们往往才是影响出图速度和图纸质量的决定性因素。5.1 分区域与分Sheet画布不是越大越零散越好图纸面积是有限的但元件的数量往往很可观。面对一个上百个元件的完整系统如果全部堆在一张原理图里无论怎么排版都会显得杂乱。我的做法是按照功能模块将设计拆分成多个Sheet。比如STM32F103C8T6最小系统项目可以拆成电源管理主控与时钟传感器接口通信接口四张子图再单独建一张顶层图放置端口声明和模块之间的关系。这样做的好处首先是阅读体验——不管是自己还是同事打开图纸后能一眼定位到目标模块而不用在一张大图里大海捞针其次是复用性——如果下次做类似项目电源模块这几张子图几乎可以原封不动地复制过去直接改改网表就能用。使用多页原理图时需要注意页与页之间的信号连接必须通过端口或网络标号来保证。在顶层图中你可以用Sheet Symbol图纸符号来代表每一张子图并在符号上标注出输入输出端口这样整个项目的信号流向一目了然。这个功能在Design → Create Sheet Symbol From Sheet中可以直接生成非常方便。5.2 建立自己的元器件库和模板越早开始越好每个人都应该有一套自己维护的常用元件库。这套库里的元件封装是亲自验证过的、参数是准确的、甚至有器件采购时的注意点备注。为什么因为AD自带的库虽然大但很多器件的封装标准和实际供货器件有出入比如电阻电容的焊盘大小、三极管的引脚排列、连接器的孔位间距等不同厂家的器件封装很可能不同。用自己的库就是从根源上规避这类风险。如果你不想从零开始建库也可以先把用到的第三方库元件通通拷进自己的自定义库然后逐个比对封装与采购器件的手册确认无误后再正式启用。这个洗库的过程一开始会觉得繁琐但一次投入后面项目的效率会肉眼可见地提升。另外别忘了设置原理图模板包括标题栏的格式、公司名、版本号、设计人等信息模板化之后每次新建图纸都不用重复填写。5.3 快捷键、搜索与复制粘贴那些能省下半天的小动作如果你还停留在用鼠标点菜单放元件的阶段我强烈建议花一个周末把常用快捷键过一遍。以下是原理图绘制中最值得肌肉记忆的一组PP放置元件PW放置导线PN放置网络标号PO放置电源符号PR放置端口EC复制选中对象ESA全选VD适配整张原理图视图CtrlShift滚轮水平滚动在长图纸上特别有用还有一个很多新手不知道的隐藏功能在原理图上按下鼠标中键拖动可以快速平移画布而不需要碰滚动条按住Ctrl滚轮可以缩放并平滑跟随光标。这些操作熟练之后整个绘制过程会流畅很多。复制粘贴是另一个被低估的效率利器。对于重复结构的电路比如8路IO输出、4路ADC采集只要画好第一路然后选中整段按住Shift拖拽复制或直接CtrlC/CtrlV再修改位号和网络标号即可。不过千万记得修改位号——如果不小心遗漏编译时会出现Duplicate Designators那时候再回头找是哪个元件没有改反而更费时间。更好的方式是复制后直接利用Annotate功能对选中区域做局部自动编号可以一次性完成所有位号更新。最后再分享一个我自己很受用的整理习惯画完一版原理图后抽十分钟做一次走线复盘。不是检查功能而是专门看哪里连线绕了远路、哪里标号位置遮挡了引脚、哪里元件的朝向和相邻元件冲突。这些问题不影响电气功能但影响后续维护的体验更重要的是它会影响你在团队里的专业口碑。一份图纸干不干净内行一眼就能看出来。把复盘整理当成原理图流程的收尾动作长期坚持下来你的出图质量会比同龄人高出一截。
返回列表