embed 2014-09-02
当今所有最好的集成电路都大规模的使用BGA封装法来焊接。因为BGA封装法连接在芯片底下,焊接更紧,需要使用回流焊箱或者热印版。另一个问题是设计PCB(印刷电路板)时,过孔和引线之间的焊接球需要足够小,主板上通常需要更多层来为紧挨的引线来腾出空间,这意味着一个廉价的中国产的两层主板没有足够的空间,所以需要更多的层。附加层则会显著提高主板的成本 ,就算只多了几个拷贝。
我想设计一款内置BGA芯片的主板来体验下焊接它们究竟是有多难。于是我决定设计一个可运行Linux的小型ARM嵌入式系统,使用的ARM处理器是在一个217球的LFBGA包中的AT91SAM9N12,只是因为在带有运行Linux必需的内存管理单元的ARM处理器中,它是最便宜的。起初我只想用一块BGA芯片,但是BGA包中的RAM比其他包里要便宜很多,所以我就决定在BGA包也增加一块DDR2(Double Data Rate 2)的内存。
为最大化可用空间定位过孔。
结果寻找主板生产商还颇费了一番周折。两层的空间是还不够的,至少需要4层。217-LFBGA包的球直径是0.4mm,临接球的距离是0.8mm。为了给过孔多留些空间,球的焊盘布局做的要比焊球要稍小一些。我用的0.36mm的焊盘。在4个球之间放置过孔会最大程度的利用可用空间。厂商要能制造可以放进0.8mm宽度的过孔。几乎所有厂商都可以制造这种直径大小的过孔,但问题是:这个距离包括了过孔的钻孔直径,两倍的过孔绕环的宽度 ,两倍的过孔和引线之间的最小距离。比如,iTead的4层主板最小的过孔钻孔直径是0.3mm, 最小环宽度是0.15mm,过孔和引线的最小距离是0.15mm,加起来是0.9 mm,这意味着最小尺寸的过孔不能放在BGA球之间。我发现的唯一一家可以实现这一要求而且价钱相对合理的生厂商是OSH parks。他们的四层主板有更小的限制,过孔刚刚可以放进BGA球里面。额外的好处是,对于小主板而言,它要比iTead更便宜一些。
在OSH park设计原则下最小的过孔,刚刚能放下。
即使过孔可以放进BGA 球中间,仍然有一些问题:过孔中间没有足够的空间走线。这意味着要让每一个焊盘都有一个过孔的标准布线通道是不可能了。这就是说主板需要有足够的未经连接的焊盘,所以过线需要从里面进行布置。幸运的是,处理器还有很多通用的未连接的I/O引脚。
… 如果不违反设计原则的话,过线就不能正好在两个过孔之间穿过。CAS 过线没有足够的空间来放入DQM0 和 D15过孔。
生产问题解决了,是时候开始想想主板上该放哪些部件了。我并不很在乎这块主板的实际用处,相对于用处而言,整个项目更是一个学习的过程。为了降低成本,主板的尺寸要小。这意味着不会为其他额外的接口预留空间,比如:以太网,串口或者SD卡。
除了处理器和RAM外,其他必需的部件是:大内存,电压调整器,以及处理芯片重置的监控电路。处理器可以从NAND启动,但是以防万一我决定为引导装载程序加入Dataflash(数据闪存),虽然最终会很少被用到。对于大内存而言,NAND是一个很好的选择因为他容量大又便宜。在BGA包中加入会更便宜些,但我已经被两个BGA包折腾的够呛了,所以我决定在一个48引脚的TSOP(薄型小尺寸封装)包里面使用4GB的NAND。连接各个组件在处理器的清单表中已经解释的很好了,但是在上千页的文档中要找到全部的细节还是很难的。Atmel 也发布了一个试用板的原理图,在设计主板时会很有帮助。
DDR2 引线空间应该有一定的自由度。正常的引线应该长度合适,有可控的阻抗和可以终止或者串联电阻。在开发板的参考设计中,所有DDR2的信号使用了串联电阻。我没有足够的空间放置他们,所以我决定暂且放着不管。阻抗也不是50欧姆,因为我必须使用小一些的引线来填充其他的空间。我希望的是,因为RAM更靠近处理器,就算缺少串联电阻箱或者阻抗不匹配,关系也不大。所有从CPU到RAM的连线大约是25mm长。通常的经验是:如果引线的长度要超过信号波长的10%时,转换线的影响应该被考虑进去。这种情况意味着频率大约在1 GHz以上。RAM的时钟频率只有133 MHz, 甚至头几个谐波还在1 GHz以下,这预示着应该会正常工作。为了保证可行,我几乎完全匹配了引线的长度,但这也许不是必须的。