我看BBS上有很多人遇到SP6 DDR、GTP调试问题。我把个人一些经验给大家分享。欢迎拍砖
DDR MIG
XILINX 的这个DDR MIG整体上是没有问题的,这个core没有误码和丢帧的情况,误码测试了几个月都没有问题。
SP6支持最大四片DDR,如果要把四片全用起来确实会存在一些问题。
问题1:BANK的问题
如果把四片整体读写,也就是看成一片DDR的话,分别为两个BANK,在判断MIG里面的FULL或者empty信号时,时序上会有问题。
我们用的最大做到100M,再往上做user 时钟就有问题了,因为这个距离实在太长了,垮了BANK。
问题2:缓存的问题
用过DDR的就会发现,这个DDR的缓存特别小,用起来特别别扭。
他的CMD最大长度是64,如果是32bit数据,最大长度就是64*4 = 256个字节。就算是128位宽的,也就是1K字节。
大家想象我们电视标清信号需要多大宽带,拿1280X720为例,这个一行的数据量就是1280X3 = 3840吧好像是,呵呵,数学没学好,
大致就是这个数字。1K的字节怎么能够。这样的话,我们就需要多发几次CMD。这样用就比较别扭,你既要判断视频buffer的空满指示,
又要判断这个MIG的缓冲区的满溢程度、
问题3:利用率比较低
有问题2就看以看出,MIG的设计也是基于内部的buffer做缓存。然后发起CMD,这个也取决于外部写入此buffer的快慢。
这个地方有个比较纠结的地方,就是读写数据和发起CMD的时间。
如果CMD发早了,那么buffer肯定不满,这样写DDR就比较碎。
如果等满了再发,那么写的过程要等待。
GTP的问题
GTP的问题相对较少,本人觉得还是比较好用的。
不过也遇到了一个问题,datasheet上说允许接收和发送时钟有200个PPM的频偏。但是我们用比较精准的时钟,频偏差在20个PPM以内。
还是有误码,最终也没有解决,没办法了,只能做成同源的了,没有影响,但是这个地方为啥有误码,不是很理解。之前我们
用V5的GTX就没有误码。
做硬件的时候一定要看好datasheet上说的。不要漏,最好看三遍。不然你会吃大亏的,你懂得.....
|