转载于: http://mp.weixin.qq.com/s?src=3×tamp=1510989886&ver=1&signature=0GXHmyyUgo33en5ukRRq23Hd7S5CZl37XOsj4XsIEV239dQqWRni-uH*-4jezB6x2uqDr*1SHVJ6-F*i3JXZhGWRiVMGRJ0PUoU4n2i2oG2xLZReLT7p-50JNT-ao-yMsES9wddxLX3YN1D1djuSLA==
最近忙于一块以CycloneIII为核心主控芯片的六层板设计,开发环境是Capture+Allegro+CAM350,从原理图修改到PCB的布局、布线这整个过程中我遇到了相当多的问题,值得庆幸的是有一些问题的解决倒是可以说是一劳永逸,比较典型的就是DDR2的布局与布线。之前对DDR2的原理与板级布线非常的陌生,导致刚开始布线时走了很多弯路,折腾了好几天才解决。由于DDR2布线的严格要求,整个布线思路也是更新了若干次,不过现在看来,今后若再布DDR的线会效率更高的。其实两个星期之前DDR2的布线就完成了,只是一直没有找到时间写这篇文章,今天上午特意花点时间写了这些文字、截了几个图,和网友分享一下。
布线结束后,我深刻的体会到,对于DDR2的布局、布线来说,最关键的就是要非常地熟悉DDR2中DQ、DM、DQS和FPGA芯片中DQ/DQS Pins的分布情况,为了更直白的说明这个问题,咱们来看图说话,解析:考虑到DDR2走高速信号时的信号完整性质量,首先要满足最基本的布线要求(还有信号线的等长):(1)DQ[0:7]、DM0、DQS0这10根信号线要在同一层;(2)DQ[8:15]、DM1、DQS1这10根信号线要在同一层;(3)DQ[16:23]、DM2、DQS2这10根信号线要在同一层;(4)DQ[24:31]、DM3、DQS3这10根信号线要在同一层;其中(1)和(3)可以在同一层(如S1)实现顺利布线,而(0)和(2)可以在同一层(如S2)实现顺利布线。上面这个图中我特意用笔把所有Pins的分布情况给大致分割了一下,这样看起来会一目了然。布线时应该把上面一个部分(即A、B、C、D)里面的DQ、DM、DQS总共10根信号线作为一个单元,对应FPGA芯片里特定的一个PIN区域,下面E、F、G、H这个部分也是类似的。不过布线时还应该注意的地方就是:FPGA里的那个所谓的“特定部分”中只有DQS这个Pin是固定不可被替代的,其他的9个Pins中DQ[n:n+7]和DM线是可以任意换序的,因为DQ和DM信号线所对应的Pins在FPGA芯片中是同一个电气属性的。这个相当关键,不然的话,会给布线带来比较大的麻烦。关于那个“特定的部分”,我截个图如下所示,不同的颜色即为一个“独立的特定的区域”,
我布线时主要用的是下方中间四个“独立的特定的区域”——用于两个DDR2的布线需要,实现32位并行数据流。画这个板子时我设置的是六层结构(四个信号层+两个参考层),布局、布线结束后的各信号层结果如下:TOP LAYER:LAYER S1: LAYER S2:BOTTOM LAYER:ALL LAYERS:如今这整个板子的设计过程已经完全顺利结束了!从开始的布局、布线一直到现在光绘文件的成功生成,确实体会到经验的重要性,因为我之前从来没有过六层板的设计经验,很多问题都是第一次遇到,也是临时自己思考或者和同事讨论一起解决,整个过程算得上还是顺利的。