这次选用的是Cadence家族,Capture CIS & Allegro PCB,这是第一次使用,做的也是6层PCB,所以花费了将近一个月时间来边学边做(也不是整天在弄)。根据Allegro的Status,PCB的绘制时间花了15个小时。
Layout
线路主要在Top和Bottom层,Layout的也不怎么好,勉强能用的水平。



PCB


焊接
很难受的是BGA焊盘因为焊接别的元器件的时候有点氧化了不太沾锡,然后找了一根导线当吸锡线拖焊盘,结果这个导线太硬了直接把阻焊干掉了,心态爆炸。还好有绿油补了一下。


成品



调试
虽然一再检查原理图和PCB有没有问题,但是该来的还是来了。
1)NGFF座子下面有两个定位孔,其中一个定位孔不小心画成了焊盘,把座子底下的定位脚割掉就行了。

2)电源的P-MOS缺少上拉电阻,导致无法关机,补了一个上去。

3)DAP Link的TGT_RST脚缺少上拉电阻,默认会进入升级模式,这个可以通过修改固件代码解决,不过方便还是接个上拉电阻。

4)USB_HUB的一个配置脚应该悬空,此处接了GND,割掉了一块铜。

5)头疼的Flash,D0和D1接反了,然后D2,D3缺少了上拉电阻,飞了不少线。

6)电源键接到了FPGA的引脚上面,但是关机后会把电流灌到FPGA里面去,会影响电路状态,但是线路在内层,刮开了PCB把线路切断。

7)晶振应该连接到MRCC_P,没注意连接到了MRCC_N引脚上面去了,这个可以修改约束忽略。
8)当FPGA断电之后,插上调试器,调试器的信号线会把电流灌到FPGA,但是似乎没什么影响,只是关机之后VCCIO_3V3会有2.8V的电压。
改进
1)增加RTC功能,因为有文件储存功能,如果没有RTC需要手动设置时间来设置文件的时间戳,没有时间戳的话那就只能默认1970年了,对文件储存和导到电脑上是个小问题。
2)目前这个TF卡座比较难拔,可以修改自弹式的方便使用。
3)BGA下面禁止铺铜,如果阻焊出现脱落很可能导致连锡。
4)背光目前是用3.3V供电,但是实测会影响电源的质量,可以修改到使用BAT供电。
5)按理说JTAG信号线应该加上上拉电阻,目前没加但是能用。
6)DAP的信号线没加上拉电阻无法对CM3识别,开启FPGA引脚内部上拉可以正常调试,但最好还是加上外部上拉电阻。
7)10个按键也没有上拉电阻,最好也是加上。
8)FPGA的INIT、DONE引脚官方手册是说了要上拉的,但是没有上拉也能用,后面也要加上。
9)在屏幕排线区域添加丝印。
10)在调试器电路部分添加丝印,以便于缺省。
11)有几个地方的器件与FPGA的供电不是同一个域,但是他们有信号线连在了FPGA上面,会导致电流灌进FPGA,虽然不怎么影响运行,但是需要解决。
12)目前板子上有两个USB-C口,充电方案也不太好,最好把两个USB-C整合成一个,使用CC来充电,使用DM DP来做数据传输。
电源
使用的设备示波器是DS1104Z,万用表Fluke 15B。测试各路电源电压都正常,测得电压、纹波或噪声数据如下:
VRM | 电压(V) | 纹波/噪声(mV) | 类型 | Frequency(MHz) | Jitter(ns) |
电池 | ------ | 9.4 | DC-DC | 1.458 | 5.6 |
1.0V | 0.999 | 28 | DC-DC | ------ | ------ |
1.2V | 1.195 | 9.5 | LDO | ------ | ------ |
1.8V | 1.806 | 35 | DC-DC | ------ | ------ |
3.3V | 3.296 | 56 | DC-DC | 2.48 | 30 |
VRM | 电压(V) | 纹波/噪声(mV) | 类型 | Frequency(MHz) | Jitter(ns) |
电池 | ------ | 9.0 | DC-DC | 1.458 | 5.6 |
1.0V | 1.000 | 14.8 | DC-DC | ------ | ------ |
1.2V | 1.196 | 10.9 | LDO | ------ | ------ |
1.8V | 1.806 | 24.9 | DC-DC | ------ | ------ |
3.3V | 3.297 | 16.2 | DC-DC | 2.48 | 17.2 |
VRM | 输入电流(mA) | 输入电压(V) | 输出电流(mA) | 输出电压(V) | 效率 |
1.0V | 54.1 | 4.19 | 122.9 | 1.0 | 54.22% |
1.8V | 42.2 | 4.19 | 80.1 | 1.8 | 81.54% |
3.3V | 16.06 | 4.19 | 13.42 | 3.3 | 65.81% |
3.3V(PS) | 12.47 | 4.19 | 13.75 | 3.3 | 86.84% |
其中1.0V和1.8V由两个MP2162提供,1.8V的效率还算比较高,但是1.0V的效率明显低了,可能是因为输入输出电压的关系。不过这个效率还是高于LDO的。3.3V有PS(Power Save)模式,当启用PS模式之后,效率有了很大提升。但是也就看个大概就行了,万用表存在误差,也还会受到其它方面的影响不是太准确。由于1.2V的输出电流仅1mA多一点,相比之下实在太小了,所以没有记录。
如果所有VRM换做是LDO,按照最理想的情况来计算可得:
VRM | 输入电流(mA) | 输入电压(V) | 输出电流(mA) | 输出电压(V) | 效率 |
1.0V | 122.9 | 4.19 | 122.9 | 1.0 | 23.87% |
1.8V | 80.1 | 4.19 | 80.1 | 1.8 | 42.96% |
3.3V | 13.42 | 4.19 | 13.42 | 3.3 | 78.75% |
使用LDO 1.0V和1.8V的效率差不多只有DC-DC的一半,稍微能打的就3.3V,但是当电池电压下降到3.3V+LDO压差的时候,LDO就无法输出3.3V了,而且这时的LDO的PSRR就是个摆设。并且LDO的总输入需要906.8mW,而DC-DC的总输入只需要523.04mW。这些功耗对于续航待机的影响也比较大。
目前负载比较小,当FPGA运行的电路多起来的时候,负载也会大很多,按照数据手册到时候DC-DC的效率还可以提升。
测试了一下4路供电的上电时间,和下电时间和过冲,其中3.3V上升似乎过快,并且有过冲,其它三路良好。
VRM | 上升时间(ms) | 上电时序(ms) | 过冲? |
电池 | 0.0103 | 0.0103 | 否 |
1.0V | 1.980 | 2.520 | 否 |
1.2V | 2.700 | ------ | 否 |
1.8V | 1.810 | 4.400 | 否 |
3.3V | 0.0206 | ------ | 是 |
测得某些工作条件下的整体功耗如下:
状态 | 电流(mA) | 电压(V) | 功耗(mW) |
关机 | 0.09 | 3.812 | 0.344 |
未加载 | 83.2 | 3.798 | 315.99 |
加载CM3 | 128.4 | 3.789 | 486.51 |
Vivado中预估功耗为382mW,若按照85%的效率计算输入功率应该在449.41mW,比实际小了47.1mW,算上误差,以及板子上的其它器件的待机功耗也应该差不多了。
Xilinx公司的Artix 7、Kintex7、Virtex 7等器件电源精度要求是在±30mV以内,暂且根据上面的测试结果来看,各路供电的负载调整性能还算不错。也满足精度要求。
参与讨论
(Participate in the discussion)
参与讨论
没有发现评论
暂无评论