本帖最后由 cruelfox 于 2015-8-11 09:15 编辑
我是搞DIY玩的,会用到FPGA做PC和器件的数据接口。很久以前就想做这么个小开发板,带有USB高速传输,以及尽可能放个外置RAM做FIFO,FPGA留出来的I/O不需要很多。手头还有Cyclone II的存货,就继续使用EP2C5/EP2C8做设计了,144脚QFP封装的FPGA。USB接口器件选FT232H,他家的FT232R, FT245R我都用过,这回第一次用USB 2.0高速的。两层PCB设计,不到万不得以不上四层(省开销,我还没有DIY画过四层的)。布线允许就放块IS61LV25616 SRAM. 电源可以从USB 5V取或者5mm DC插座输入,用一个跳线选择。为了节省USB电源开销,没有使用AMS1117的简单稳压,而安排了两组DC-DC来提供5V到3.3V,迎接3.3V到1.2V的降压。
画板子用掉了一个整周末加几个晚上的业余时间,软件还是用老土的我惯用的Eagle 4.16. 再加上一个周末的焊接调试搞定。下面是PCB布局图:
FT232H和SRAM占掉了绝大部分的I/O,剩下来引出到插针的就十几个了。我在FPGA VCCINT旁边仅挨着引脚放置了0402的贴片电容,没有放到PCB背面。这么做是一个尝试,坏处就是临近的两个I/O无法引出走线而浪费掉了,是否值得这么安排退耦有待研究。因此I/O口更加吃紧,不得已把SRAM的#CE, #UB, #LB三个引脚都接地了,都成默认选通,不能8-bit写入。
比较费心思的还是VCCIO, VCCINT的退耦和走线,以及尽量GND不要太破碎。下面两个图把GND、VCCINT (1.2V)、VCCIO (3.3V)特意用颜色区别:
单独看GND,叠在一起看是这个样子的,基本上都覆盖了,用了很多过孔来连接两层中的GND
第一次做高速USB传输,我没有经验。PCB发出去之后才在网上搜了搜,有说至少要4层PCB的,有说差分线不能走过孔的。看来我的走线布得不考究,有些忐忑。不过PCB做回来还是调通了,传输没有出现什么问题。
实际际效果图
至于USB接口的速度,我用同步FIFO模式,从PC到板子可以达到19MBytes/s以上的传输速率,从板子到PC可以达到34MBytes/s以上的传输速率。这个跟CPU负载也有关系。