
分类
技术干货
从零入门ARM高速电路设计-第二章-原理图设计
简介
本文是从零入门ARM高速电路设计第二章,主要讲述原理图设计部分,原理图的设计精髓是抄? 项目主页:https://oshwhub.com/logicworld/h6_board
简介:本文是从零入门ARM高速电路设计第二章,主要讲述原理图设计部分,原理图的设计精髓是抄? 项目主页:https://oshwhub.com/logicworld/h6_board教程总述
对于高速电路设计一直比较感兴趣,想自己做一个XX派,但苦于资料太少了。 过去6个月在摸索中完成了全志H6开发板。相信肯定也会有其他小伙伴有类似的想法,因此就有了这样一个《从零入门ARM高速电路设计》教程。
本教程,将给出一个可行的学习路径,分享我自己在做的过程中的一些经验(看别人似乎挺容易的,但自己操作起来怎么那么难,eg. BGA焊接),以及设计过程中的一些考量。
考虑到高速电路设计本身就是一个复杂的领域,包含原理图设计,PCB设计,焊接和调试,软硬件联调等步骤,涉及了硬件工程师,PCB工程师,嵌入式软件工程师等岗位,很难由一个教程就将知识完全涵盖。对于网络上面讲得比较好的内容,我会给出资源地址,推荐大家去读原文。对于缺乏的内容,我会补充自己的知识和经验。
我作为高速电路设计的初学者,肯定有知识和经验上面的不足,要是有错误或者资料的补充,欢迎在评论区指出和补充。大家可以一起完善这个教程。
项目主页:https://oshwhub.com/logicworld/h6_board
原理图设计
模块级方案设计
此时我们已经选定了一款主控芯片,拿到了原厂的标案原理图和公开出售的开发板的原理图,大致确定了需要哪些哪些接口。本节主要内容是在模块级别上面,确定每一个模块使用什么样子的方案,比如:DDR使用(DDR3,DDR4)等等;
- 主控芯片:此前已经确定了;我选择的是全志H6;
- DDR内存:确定主控芯片之后,DDR内存实际上就会被限定到一定的范围内,比如:H6支持DDR3,DDR3L,LPDDR2,LPDDR3,DDR4;理论上面应该是需要比较一下各种方案的优劣,我这里为了简单直接使用了OrangePi的方案(LPDDR3),同时也确认了原厂DDR模板里面也是有LPDDR3的布局布线参考。 LPDDR3的芯片型号也直接使用了OrangePi的相近型号,OrangePi是Samsung-K4E6E304ED-EGCG,我选择的是Samsung-K4E6E304EC-EGCG,只是generation差了一代。

- eMMC/NandFlash:一般来说eMMC的容量相比NandFlash更大一些,OrangePi也是采用了eMMC,而标案则是兼容了两种。容量上面我也直接选择了和OrangePi一样的容量8GB,型号和OrangePi一样KLM8G1GETF-B041。
- 电源管理:全志的方案原厂会搭配一个PMIC,这个PMIC除了要满足各种电压大小和最大电流的要求以外,还要满足上电时序的要求。这个是比一般的MCU应用是要复杂的,简单点就直接用原厂的方案吧(OrangePi也是用原厂的方案)。
- 如果有人对于不用PMIC,而用DC-DC/LDO芯片搭出电源模块,特别是怎么控制它的上电时序部分感兴趣的话,可以看看这个视频。

- 如果有人对于不用PMIC,而用DC-DC/LDO芯片搭出电源模块,特别是怎么控制它的上电时序部分感兴趣的话,可以看看这个视频。
- WIFI/BT模块:DDR和eMMC都是标准件,只要符合一定的标准,理论上是可以替换的,但是,WIFI/BT并不完全是一个标准件,并不是随意可以替换的。下图是全志列的H6支持的一些WIFI-BT模组。简单来说我又可以抄OrangePi的方案,它使用的是AW859A,但是当时我在淘宝上面没有找到AW859A模组卖(PS:刚刚我搜了一下,看到现在有得卖了)。无奈只能换一个模组,挑了一个便宜的方案AP6212(TB:10元,JLC:28.66元),因为缺5G频段,理论最高速度72.2Mbps,基本也够用。
- 这里选择时我当时漏考虑了一件事,就是Linux驱动是否支持,是否原生就支持,还是要折腾一下。运气好的是OrangePi的系统原生支持了AP6212 WIFI,虽然AP6212蓝牙并没有原生支持。后来我在做软件时,发现orangepi的系统疑似是基于社区开源的全志系统linux-sunxi修改而来,其wifi部分应该是支持原linux-sunxi支持的WIFI部分。蓝牙部分也有,在这里。如果大家想要替换方案的话,可以看看。
- 下图是全志原厂给出的WIFI/BT模组支持列表:

- 接口:这个部分看每个人的需求引出就可以,原厂标案为了展示芯片的功能往往是做的比较全面的,引出的接口比较多。 我做的时候,引出了USB,HDMI,音频接口,SD卡;
- 调试:引出了两个部分USB OTG和调试串口; 前者在DDR测试工具和Android烧写工具时需要用到(OrangePi没有做这个功能,原厂标案做了)。后者主要用于调试UBoot/Linux内核,以及登录系统后作为普通的console。
- GPIO:原厂标案是没有引出GPIO的,这个部分是抄了OrangePi的实现方案。
- 基础元器件选型:
- 电阻,电容,电感等基本器件:在立创商城直接找相同值的替代品,建议直接找基础库器件,一方面SMT贴片不用换料费,另一方面一般出货量大价格便宜。
- esd器件,晶振,电源芯片等,有相同型号的找相同型号,否则,找相近型号也可以,注意大致看一下器件手册。
- 接插件,一般型号的概念比较弱,得自己看看图片,确认一下功能,看看功能差不多就行。
- 基础元器件封装选择:
- LCEDA中器件是已经绑定了原理图符号和封装的,那么,此处我们得提前来谈一下封装问题。
- 阻容元件的封装问题:
- 在高速板中典型的阻容元件封装是0402封装,一般来说他们也都是用SMT焊接的。但是,我们是得要手工焊接的,显然0603封装要比0402更好焊接一些。
- 另一方面,按照主控芯片旁的去耦电容尽可能靠近主控芯片来讲,0603空间比较大,自然更难以满足靠近主控芯片的要求。目前,从我的H6板子看,可能引发了一些电源完整性上的小问题,在特定场景下会触发重启。具体来说是,在刷完SD卡,第一次进入桌面GUI的那一刻,电流会飙到0.9A,然后,挂掉重启。只要我用OrangePi的板子把这个新刷的SD卡进过一次系统,后面再用我的板子启动,就什么问题都没有了。猜测是第一次进入桌面GUI的那一刻,可能在初始化什么东西,导致计算功耗要求比较高,因此,供电没有跟上。
- 如果,你对自己的焊接技术有自信的话,建议是用0402的封装,会减少可能的电源完整性问题。
- 下图是OrangePi 3 LTS的背面的电容/电阻,大部分都是0402封装的,以及我的H6开发板的背面,都是0603封装的,可以感受一下密度:


- 接插件的封装问题:特别注意TypeC的器件,焊盘是否在底面还是侧面。在底面的话,对于焊接功力还是有要求的。我的开发板中电源接口用了一个TypeC,焊盘在底面,焊接就挺麻烦的。
原理图设计的精髓-抄?
从上面的模块级方案设计中,大家看到了啥?对,抄抄抄抄。难道这个就是原理图设计的精髓?难道这就可以自称我设计了这个板子?难道这就是硬件设计?我陷入了自我怀疑之中。
直到我在实际抄的过程中,发现OrangePi的原理图和原厂的原理图有80%-90%的相似度,甚至明显可以看到OrangePi的原理图是复制了原厂的Cadence OrCAD原理图源文件改的,甚至有一些OrangePi改了设计,但是对应的内容却没有改对。下面就是我截取全志和OrangePi的原理图,大家可以来玩玩找茬游戏。比如:OrangePi用的是5V输入,但是,图上还是12V。


看完OrangePi,我平复了一下心情,他们专业的都是这么做的,我抄一抄也问题不大吧。
后来在学习Linux驱动编程的时候,听到韦东山在视频里面的吐槽,“天下板子一大抄,都抄原厂的”。在抄的过程中,我也一直在思考硬件工程师的价值是什么?玩连连看吗?如果只是抄的话,完全不懂硬件的人也可以做吗? 在我真的花了两个星期把板子给“抄”了之后,我有一些自己的答案,以供大家参考:
- 虽然80%-90%和原厂是一样的,但是,还是剩下10-20%是需要自己做的,不管这部分是抄自其他板子,还是完全自己从芯片手册开始设计,这些都需要硬件知识才能完成设计/缝合工作。比如:和原厂需求不同,需要有新的硬件功能/性能。
- 高速板里面因为打板和验证成本比较高,他们往往让一个板子兼容好多种器件,比如:兼容eMMC和Nand Flash,兼容多种WIFI/BT模组。典型的兼容方式是0Ω电阻。如果,不懂硬件原理,其实是搞不懂哪些0Ω电阻要焊接,哪些不焊接。 全志和OrangePi的原理图中说得不清不楚的。
- 如果,不懂硬件原理,只是把线连上,那么,硬件调试根本没有办法做。如果,硬件没有正常工作,也不知道哪里不正常,也不知道怎么去排除故障。
设计中的注意事项
因为大家都已经做过MCU项目了,这里也就不一步一步教大家在LCEDA中怎么一步一步拉线了。分享一些我在做的过程中的一些经验吧:
- 核心工作就是从OrangePi和全志原厂的原理图“抄”出一份我们自己的板子的原理图。 一般我是先抄全志的原理图,抄的过程中理解硬件原理(可能会涉及去看一下数据手册),然后,抄完之后对比一下OrangePi的原理图,看看有没有差异,看看是OrangePi改变了设计,还是我自己抄错了。如果,OrangePi改变了设计,理解一下他改变的意图。
- 抄的过程中理解一下他的硬件原理(比如:看数据手册),是重要的,一是为了增长硬件知识,二是为了验证原理图的正确性,三是为了后续的调试工作做准备。
- 画原理图时,直接在LCEDA中直接选好对应的器件,这样不用在导出BOM时再重新修改,用起来还是非常方便的。可以方便的在JLC的各个环节中使用,比如:立创商城买器件,JLC SMT。(器件原理图封装库这块比allegro做得方便得多)
- 原来做MCU电路设计时,原理图都在一个页面中,ARM高速板原理图比较多,建议是分页放置。 这样会比较清晰。
- 器件的原理图库和封装,建议是从立创商城对应的器件里面添加, 这个看起来更靠谱一些。我之前原理图错误的LPDDR3器件就是直接在EDA的器件搜索里面找到的,找到之后没有验证正确性。结果它的G6引脚实际上是VSS,原理图中错误的认为是VDD。
如此这般反复,大约画10天时间,每天2-3小时,就可以把整个原理图给完成了。
原理图自查的方式
如此这般画完的原理图是比较复杂的,也很有可能出现错误,比如:漏抄了,标签抄错了,有些连线漏了多了。如下是我自己的检查步骤,可以参考一下:(我的H6开发板是一版成功的)
- 跑一遍DRC检查,先解决EDA自动能够发现的问题。
- 画完原理图之后,将自己的原理图和原厂&OrangePi的原理图,再一页一页过一遍,对照一下异同。同时标注出来三者不一致的地方。
- 修正原理图中前后说明不一致的地方,比如:电源树中的电压值。
- 对照原厂的硬件设计指南里面的要求,再过一遍原理图。
- 把0Ω电阻给捋顺,标注哪些是要焊接的,哪些是不连接(NC)。
- 从LCEDA的网络出发,查看每一条导线的连接都是应该连在一起的,不存在两条应该连在一起的导线断开了。

- 最后再从硬件原理理解的角度出发,再过一遍原理图,从硬件原理上看,这样的连线是否合理,理解每一条连线的意义,在大脑里面构建出整张原理图。
更进一步
经过上面这些工作之后,想必你对于ARM高速电路设计的原理图部分有了一个基本的认识,其他主控芯片的板子大体也是如此,可能有更多的模块,更强的性能,但基本结构就是如此了。
如果,想要更进一步的学习高速电路设计-原理图部分,以下是我搜集到的一些资料,抛砖引玉,共同学习(如果,你有其他资料欢迎在评论区分享一下):
- 叶倾城-硬件原创:B站视频
- 目前我找到的唯一讲高速电路原理图设计的视频,主要围绕原理图部分,PCB部分也会涉及。下面我截取了一张视频标题的图,可以感受一下讲的内容。不过,视频只是前20分钟免费,后面要收费。如果不是以此为职业的人,看看免费版本基本了解一下也够了。

- 目前我找到的唯一讲高速电路原理图设计的视频,主要围绕原理图部分,PCB部分也会涉及。下面我截取了一张视频标题的图,可以感受一下讲的内容。不过,视频只是前20分钟免费,后面要收费。如果不是以此为职业的人,看看免费版本基本了解一下也够了。
- 书籍:下面这两本书是我找到的关于高速电路原理图设计的书,我只是翻了翻,还未深入看(大部分高速电路设计的书都在讲PCB设计,信号完整性SI/电源完整性PI,EMC等等,比较少的书讲原理图设计,比较奇怪,不太懂):
- 《高速电路设计实践》:介绍的比较专业,比较硬的一本书;
- 《从应用到创新-手机硬件研发与设计》:介绍了和手机硬件相关的各个模块,相对入门一些;
- FPGA:上面这些看完,对于硬件怎么连线懂得会比较多,但是,对于芯片内部的硬件原理可能只是概念性的,比如:DDR那些线到底在做什么,它是如何交换数据的?如果,你对这个感兴趣的话,可以看看FPGA的内容,比如:正点原子FPGA。
总结
以上就是《从零入门ARM高速电路设计》第二章,希望大家可以确定模块级方案,完成开发板/产品的原理图部分,同时,能够理解原理图,而不仅仅只是抄了一遍。













评论