
分类
技术干货
从零入门ARM高速电路设计-第一章-需求和设计考量
简介
本文是从零入门ARM高速电路设计第一章,主要讲述项目整体需求和设计考量,比如:为什么我选择了全志H6芯片? 项目主页:https://oshwhub.com/logicworld/h6_board
简介:本文是从零入门ARM高速电路设计第一章,主要讲述项目整体需求和设计考量,比如:为什么我选择了全志H6芯片? 项目主页:https://oshwhub.com/logicworld/h6_board教程总述
对于高速电路设计一直比较感兴趣,想自己做一个XX派,但苦于资料太少了。 过去6个月在摸索中完成了全志H6开发板。相信肯定也会有其他小伙伴有类似的想法,因此就有了这样一个《从零入门ARM高速电路设计》教程。
本教程,将给出一个可行的学习路径,分享我自己在做的过程中的一些经验(看别人似乎挺容易的,但自己操作起来怎么那么难,eg. BGA焊接),以及设计过程中的一些考量。
考虑到高速电路设计本身就是一个复杂的领域,包含原理图设计,PCB设计,焊接和调试,软硬件联调等步骤,涉及了硬件工程师,PCB工程师,嵌入式软件工程师等岗位,很难由一个教程就将知识完全涵盖。对于网络上面讲得比较好的内容,我会给出资源地址,推荐大家去读原文。对于缺乏的内容,我会补充自己的知识和经验。
我作为高速电路设计的初学者,肯定有知识和经验上面的不足,要是有错误或者资料的补充,欢迎在评论区指出和补充。大家可以一起完善这个教程。
项目主页:https://oshwhub.com/logicworld/h6_board
项目需求和设计
项目需求
和一般的项目不同,本项目包含了两个方面的需求,除了真的作为产品的需求以外,还有学习的目的。
产品需求
- 作为一个XX派的替代产品,可以完成类似的功能
- 一台小型的 Linux 桌面计算机,可以实现文件编辑,上网,学习编程,视频播放等;
- 一台小型的 Linux 网络服务器,可以实现NAS,软路由,智能家居主控等;
- 一台性能强劲的MCU,可以通过GPIO直接控制外部硬件;
- 支持系统:Ubuntu等常见系统;
- 系统性能:支持运行GUI系统,可以跑浏览器,比如:2GB内存,8GB存储;
- 支持接口:USB,HDMI,音频接口,WIFI,SD卡等常见接口;
学习的目的
- 主控芯片必须要能够方便找到资料,方便买到物料,否则,作为初学者可能根本做不下去;
- 主控芯片需要外接DDR内存,是否外接DDR内存是区分低速还是高速重要的元素,也是高速电路中的核心难点;除去射频,高速通信的板子以外,DDR电路就是高速电路里面最难的部分,只要解决了这个部分就算入门了;
- 尽可能将功能做全,将接口都引出来,这样可以学习各个电路的设计;大不了有一部分电路没调通,就算了;
- 简化设计,一开始就做得很复杂,容易翻车,比如:板子正反面都贴器件,且布局很紧凑的话,可能会出现布线布不下去的情况;
- 控制成本,包括PCB打样,SMT,物料,焊接工具等;初学容易做失败,可能会做多次,成本太高钱包受不了;
设计方案
主控芯片的选择
设计方案中最重要的就是主控芯片的选择。主控芯片一定,产品需求的满足程度,项目的原理图基本一半甚至更多,以及项目的难度和成本都基本确定了。下面主要谈谈我在选择主控时的一些考虑,重要性从高到低排序:
- 资料的齐全程度:这个是最最重要的因素,没有之一;
- 重要性:
- 没有或者缺少厂家的软硬件资料,会导致根本没有办法做,巧妇难为无米之炊。对于初学者的难度就更加显著了。
- 厂家的设计资料算是一个比较权威的知识来源,可以学习他们的电路/PCB设计思路和经验。
- 内容:
- 硬件资料:
- 标案:原厂给出的参考设计(包括原理图和PCB),一般经过原厂测试,应该是比较靠谱的。一般原理图都会给,但是,PCB不一定有。极端情况下只有原理图也是可以设计的,只是对于初学者而言,缺了PCB会比较困难,比较容易出现自己搞不下去了想看看别人是怎么搞的。因此还是很希望可以有原理图+PCB设计。 如果实在找不到,可以使用开源社区的PCB设计,只是设计水平良莠不齐,比如:会出现阻抗线没有参考平面。
- DDR模板:刚刚提到DDR是高速电路中的核心难点,厂家为了让客户方便的设计PCB,会提供已经验证了的DDR部分原理图和PCB设计,让客户直接抄过去直接使用,不用从零开始画。一般就算不给标案的PCB设计,也会给DDR模板。虽然说是DDR模板,基本包含了完整电路的一半。这个部分的PCB设计也是非常重要的参考,可以作为标案PCB的下位替代品。
- 硬件设计指南:厂家给出的原理图设计和PCB设计注意事项,可以学习设计知识,可以找个别的芯片指南看看也大差不差。
- 硬件调试指南:厂家给出的调试指南,可以学习调试流程,可以找个别的芯片指南看看也大差不差。
- 软件资料:SDK资料,原厂移植的系统(eg. UBoot, Linux内核,Android)
- 如果,要自己玩软件系统的话,这个必不可少;如果,你找的芯片有公司做成了XX派,他们会提供这个部分。
- IC数据手册:主控芯片数据手册,配套的PMIC(电源管理IC)数据手册;
- 对于硬件设计极端情况下可以不要,可直接硬抄原理图;相对还容易找一些;如果,你找的芯片有公司做成了XX派,他们会提供这个部分。
- 工具:eg. 烧写工具(PhoenixSuit),DDR测试工具(DragonHD);
- 必需的部分,可能可以在网上找到下载;如果,你找的芯片有公司做成了XX派,他们会提供烧写工具。
- 硬件资料:
- 来源:
- 重要性:
- 主控芯片被用在了某款公开出售的开发板/XX派:
- 其他
- 主控性能适中,难度适中:
- 性能太弱,跑不动GUI或者比较卡,可玩性也比较差,比如:NXP I.MX6ULL(这个芯片被用在了正点原子/野火的Linux开发板上面,后面如果想学Linux软件开发的话,也不失为一个比较好的选择);
- 性能太强,设计难度,物料成本都会比较高,比如:RK3588,RK3399;(RK3399也是一个非常著名的芯片,用在了好多开发板上面,想挑战一下的话,也是一个可以的选择)
- 比较适中的是H3,H6,H616,RK3288之类的;
- 主控芯片物料是否可以获得:一般情况下淘宝是可以买到散片的,但是,交易量基本都是个位数甚至0,得问问老板是否有货。
- 芯片的接口:一般来说,这类芯片基本上该有的接口都会有,其他高速接口(eg. PCIe)可能没有或者比较弱。如果,你想做特定应用的话,可能对接口会有特别的要求,比如:软路由对于网口数量有要求。
- 主控性能适中,难度适中:
到目前选择主控芯片的考虑差不多就说完了,你可以去FindBoard,找找你心仪的主控芯片。
按照上面的标准,我找到了全志H6作为主控,主要是在吴川斌的博客里面找到了比较详细的H6开发资料,其次OrangePi LTS 3也是以H6作为主控。
外围电路设计
主控芯片确定之后,外围电路基本上水到渠成,参考原厂标案和公开出售的开发板进行设计。希望有哪些接口,就把这些接口加上。出于学习的目的,多多益善吧。但是接口引出太多,设计难度也会增加,注意平衡。
对于我做的H6开发板,我并没有引出芯片上面所有接口,一方面对于我用不上的接口没有引出,比如:红外接收器(不太用得上),EPHY网口(家里没有网口,只有WIFI,因此没有引出),电视接口(TV CVBS,没有这样的电视接口),另一方面,有部分接口没有原理图参考,比如:PCIe,CSI。
简化设计和降低难度
作为初学者第一次做这样的板子,得从设计上面就得考虑进行一定的简化和降低难度,否则,很可能做到一半就发现做不下去了。以下是我在做的过程中遵循的几条原则:
- 尽量参考原厂标案或者公开出售的开发板进行设计,不要偏离他们的设计太远,比如:
- 原理图设计时,没把握的地方尽量抄他们的,比如:滤波电容应该是偏多的,但是,我们第一次做经验不足,可能是吃不准哪些可以被去掉,从而精简设计;
- PCB设计时,布局走线可以仿照他们,以防布线布到一半走不下去的尴尬;
- 引脚定义也和他们一样,这样移植Linux系统时就会简单许多,减少软件上面的复杂性;
- 放松设计要求:
- PCB板子的大小,可以比较大,这样可以降低布局布线的难度;OrangePi 3 LTS大小是56mm * 85mm,我的板子是98mm * 98 mm,卡着JLC免费打板的最大尺寸。
- 板子层数,可以多一些,H6原厂的标案是4层板,我做的是6层板,可以简化设计。(当然这里做6层的主要目的是为了JLC的免费打板条件,布线是可以压到4层的)
- 减少DDR片数,4片DDR的难度远大于1片DDR的难度;我还看到只连16条DDR数据线,而不是32条数据线的方案,也可以降低难度。目前我的设计就是采用了一片LPDDR3内存。
- 降低板子的器件兼容性,比如:原厂的标案兼容eMMC和Nand Flash,兼容多款WIFI-BT芯片;我们可以固定一种芯片方案,我是选择了eMMC和AP6212 WIFI-BT芯片。
- 牺牲板子的速率,比如:阻抗有偏差,3W要求不完全满足等等,具体可以到PCB章节再细说;
- 电阻电容的封装大小:一般这些高速板都是0402的封装大小,如果,担心焊接能力有限的话,可以选择0603封装。我目前就是使用了0603封装,但是,对于布局和布线的难度会有所增加(这个到PCB章节的时候再细说)。
总结
以上就是《从零入门ARM高速电路设计》第一章,希望大家可以确定一款主控芯片,搜罗相关资料,对于外围的接口电路进行选择,为了简化设计考虑可以放松哪些设计要求,基本形成开发板/产品的大致方案和整体研发思路。






评论