本帖最后由 drentsi 于 2013-1-17 15:15 编辑
设计目标是做一个FPGA千兆网平台,运行一些特殊的程序。
千兆网要支持10/100/1G电网口,还要支持千兆SFP光网口和SGMII接口,算是比较全了。
FPGA是XC3S1400A-FTG256,140万门的FPGA,实际容量比spartan-6的LX25要大一些。
板子上有DDR内存,SRAM等。
之前用过V4,V5,DDR,DDR2,都很顺利,心想做这个板应该轻车熟路了,实际上比预想的麻烦多了,深陷泥潭3个月了,现在才调通。
想想以前比这复杂多的都一次性搞定了。
第一次做板后,JTAG能找到FPGA,内存出错,网口不同,逻辑还出错,那叫一个郁闷啊。芯片,焊接,PCB设计,FPGA设计都可能有问题,一项项排除,仍为确定原因。
于是改PCB设计,严格考虑DDR布线,电源配置等等,可以确定不是PCB问题。
第二次做板,现象和第一次一样,崩溃中。搞正规芯片,拿到外面请专业人士焊接,现象依旧。最后自学BGA焊接,确保没有焊接问题。现象依旧。那叫一个郁闷啊。
最后怀疑EDK的MPMC有问题,花了好几天测试好几个版本,果然有问题。只好自己写一个DDR控制器,搞定。DDR可以跑333,估计也可以跑400,没花时间测试。
我用的是125MHz时钟,实测吞吐率为460MB/s,效率在92%,MPMC理论最大值为80%。
搞定内存之后调网口,几十个寄存器,看啊,调啊,眼都花了,最后搞定。
开始晒板,PCB是4层的
底板上只有电源和网口插座以及SFP座子,网口,光电自适应,都可以跑1000Mbps。
板子电源上有一点问题,3.3V转2.5V,用DC/DC在低温下无法启动,
不过已解决,换上2个IN4001二极管,再改版即可。
总结:
过去的设计经验不一定在陌生的芯片和环境下适应
官方的东西,经多次验证正确,也不能保证下一次正确
电源很重要,virtex系列电源处理简单多了,在spartan上可能就是个陷阱,足够多的滤波电容是必须的。
排针可以稳定的通过1.25G的信号,这个收获很值了,可以避免使用昂贵的接插件。有些高速接插件比整个板子的芯片还贵。
|