本文转载自WX公众号 电子森林,作者苏老师,原文链接https://mp.weixin.qq.com/s/tbb46ixtI6Jh1FehqHY3Cw
几天前看一专业微信大号标题“必须收藏:原理图设计规范126条checklist“,点了进去,没想到标题下、所有内容前是如下的这么个电路图,后面的126条我一点读下去的兴趣都没了。
看官们会说“why”,“我觉得这图画的很好啊”,“苏老师您觉得这图哪里不好?”,这正是我在微信朋友圈里贴出去之后获得的纷纷反应,更感觉这样的电路图给年轻人的贻害之深,我觉得太需要写一篇文章来说说这事了,无奈前几天都在连载时钟方面的文章,直到今天才抽出空来说一下了。
首先我问大家个问题:原理图画了是给谁看的?
90%以上的人会说,当然是自己看的了,自己做的设计,自己画的图嘛。苏老师要说 --- 错❌!原理图是自己画的,但不仅仅是给自己看的,更重要的是给其他人看,给机器(画图的工具软件)看!公司的其它同事、你的客户、帮你做Layout的工程师拿到你这张图,能很容易看得懂吗?显然很难看懂,至少要花很多时间琢磨才能看懂,太不直观了!比如你第一次到北京去旅游,下车你买了一份北京地图,每个区都分割成了块 - 海淀区、朝阳区。。。每个区的每条马路都用路名标示,你可以根据路名找到它们之间的连接关系。。。
我相信你拿着这样的地图一定会原地崩溃的,如果画图人在你面前,估计你抽他一巴掌的心都有。。。
其他人拿到你这样画的电路图也会有这种烦躁的心情的,别说替你Review了,根本就没心情去仔细看,Layout的工程师要根据你提供的原理图来做布局布线,估计他一边连线,一边骂你。
你会问 - 我画的图为什么要让他们看呢?这就是你的局限了,如果你一辈子都是在小公司里一个人玩硬件设计,这是OK的,你要想去BroadCom、想去华为,就这样的电路图拿出来,估计面试你的项目经理让你立马走人,因为你根本就没有Teamwork、Project flow这方面的意识。
你会问,那机器怎么就读不懂了?
从原理图到布局布线之间有个桥梁叫Netlist,这个netlist就是基于你原理图上的连接以及net名字,这里面就会存在着高度的风险 - 你认为A器件的管脚15跟B器件的管脚3都用了同一个net名字“Data3”,可是你在添加net name的时候手一哆嗦,把A器件管脚15的名字写成了Data8,由于页面上的net name太多,你也没有留意到这个错误,机器在生成netlist的时候并没有将这两个管脚俩连接起来,等你拿到板子花了两周的时间怎么也调试不出来的时候才发现这俩net名字标记错了,想飞线还飞不了, 因为器件是BGA的封装,你的脸估计都成“平方”了。
你会说,我不会这么倒霉吧?毕竟是小概率事件啊,我也会认真查找的啊。哎,要知道小概率事件是会经常发生的,这是一个定律!你越是认为不可能出现的事情越容易出现,而且一出现就是大问题。即便这次侥幸没遇到,迟早有一天会让你吃尽苦头的。
你还会说,工具软件中不是有ERC检查么?我用ERC查一下不就好了。现在的工程师有多少人养成了每次都用ERC,并对ERC每行、每行都仔细检查的习惯?何况有的net名字拼写错误ERC未必能检查出来啊,比如在电路图上有多个VDD、VCC、VSS,你用错了其中一个,这些net是都在的,ERC是不报错的,但你确实连错地方了。
所以,第一张图,从别人理解的角度、从机器阅读的角度都是极不友好的,即便是对自己,检查每根信号线的连接也是一件非常费时费力的事情,总体上来讲对谁都不好。
有人会说,苏老师我同意你的说法,但这张图是针对开发板的,方便开发板用户使用才这么做的。那就更不应该了,因为很多用开发板的工程师以初学者居多,他们看到啥学啥,这种图、放在这么重要的一篇有理有据的文章的前面,给工程师产生的影响一定是非常大的,很容易让没有经验的工程师模仿这种做法,从而养成坏习惯。
那么,怎样才是比较好的电路图呢?我们看下面的一个跟我们小脚丫FPGA学习模块长得很像的MCU控制模块叫Teensy,3.6版本(网上可以搜到它的很多资料):
它的电路图是这个样子的:
是不是感觉非常清晰?看起来一目了然?而这个图中基本上没有用net进行信号的连接,基于这个原理图做的PCB布局布线出错的可能性也就大大降低。
总之,记住苏老师的两个观点:
原理图最重要的是要让别人凭着直觉就能一下子看懂,设计任何产品的时候都不能只是站在自己的立场上看问题,要更多地想想别人会怎么解读;
在原理图的绘制中要尽可能不用net来进行信号线的连接,实在没有办法的情况下用net也是可以的,但一定要反复检查,尤其是将ERC、Netlist打印出来进行检查,不要完全相信电脑上用眼看到的东西。
最后分享一个我们Hackaday的工程师设计的一个小产品的原理图:
同一个电路模块,还是尽量用连线画清楚,net也是免不了,都不用net, 连线太多,也会看得头晕。
引用: fjdeepblue 发表于 2023-11-30 20:41 同一个电路模块,还是尽量用连线画清楚,net也是免不了,都不用net, 连线太多,也会看得头晕。
可能还是要尽量避免像图一那样吧,像连接器和IC互联的情况,就实在没办法才用net label
引用: 器铭123 发表于 2023-12-2 10:13 我觉的你没说到点子上,你第一张图是比较复杂的,只能通过网络好连接;你后面举的例子,原理图都是比较简单 ...
除了连接器没办法只能用Net Label来连接,其他的很多模块都是可以不用Net也能用线连接起来。 可以看一下TI和Intel这些大厂的参考设计,也基本上是能不用Net就不用
引用: dukedz 发表于 2023-12-6 15:19 不太认可,接线太多反而太乱,眼花缭乱 最好还是按照功能多分几个子图,然后标号命名要讲究一些,和写代 ...
凡事都不能走极端,这里说的是能用线连的就用线连。要是全用线连了之后会很乱,那肯定要另想办法啊, 元件太大就做成分裂元件,连线交叉太多就考虑引脚排列,总是有办法的。你net label满天飞,图都没法看了,板子大了之后自然问题就多
dukedz 发表于 2023-12-6 15:19 不太认可,接线太多反而太乱,眼花缭乱 最好还是按照功能多分几个子图,然后标号命名要讲究一些,和写代 ...
乱吗?没有吧,这里这么多线都没眼花缭乱