使用MIG建立的Xilinx RAM控制器MCB控制一个2g DDR2,数据连续读取时假死,请教解决方法
时间:10-02
整理:3721RD
点击:
芯片: xs6slx100
DDR2:镁光 2G-bit内存
MIG设定:匹配电阻50欧姆 (rzq引脚100欧姆接地)
128bit双口PORT
单端时钟
速度 75.25M × 4
其他基本为默认设置
系统时钟由外部75.25M晶振提供
为了保证系统工作频率达到设定值,修改了MIG顶层文件的PLL常量,设定为8倍频,满足2xclk为2倍系统时钟频率,其他值均为默认。
时序约束除了MIG生成的ucf文件内含约束外,只约束了外部75.25M时钟,time score为0。(怀疑问题是否出在约束不到位)
-------------------------------------------------------------------------
小弟为了验证连续读出操作,做了一个小状态机,配合地址的连续自加,每次读取64个128bit数据,地址读取采用自动recharge方式。
现在遇到如下问题。
在进行单一地址的循环读取操作时,较长时间的测试中没有出问题,读取正常。
在进行从0地址开始的地址递增读取操作时(byte地址自加间隔 (128/8)×64),自加次数小于100次时测试不会出问题。
自加次数大于100次之后会在之后的某个地址死掉(MIG的读FIFO不返回数据,rd_empty始终为'1'),此时MIG控制器提供的overflow rd_error cmd_full等信号均正常,该地址的前一次读取也没有发现异常。
当进行从较大地址开始的自加读取时,读取10几次就会死掉。
真心请教论坛各位弟兄,我的问题出在哪里呢?如果约束不到位,应该怎么约束。
顶顶 系统设计了3片ddr 另外两篇表现更差 地址基本上一动就会死
会不会是跟PCB有关系呢
每天顶一下吧
顶顶 难道大家用ddr都很顺利?没遇到过奇怪问题吗
兄弟,问题解决了吗?我现在遇到了和你类似的问题,spartan 6 lx150,mcb1、3、5没有问题。mcb5在0号地址开始反复读写(数据位宽128bit 突发长度64),数据为0到63的自加这种情况下没有问题,地址更换后数据就出错了,只有这一片有问题,求助啊
是遇到刷新了吧,数据从ddr2到fifo时 数据被间断。你是利用full和empty控制的吧。
建议你先用mig的example design跑一下吧
后来更换新设计的板卡使用同样的测试程序没有出现这个问题,应该是原理设计电源部分考虑不周全,以及PCB等长布线等没做到位导致的由硬件产生的问题。
谢谢,当时确实也使用了example design,也是发生了同样的错误。后来确认为硬件问题。
谢谢!但应该不是这个原因。后来确认为硬件问题。
遇到跟小编类似的问题。进行连续读操作,读地址从0开始连续递增,当进行到第1300次左右的读操作时,CMD FIFO FULL信号被拉高,此时,逻辑这边没有再向CMD FIFO送命令,但是CMD FIFO持续FULL,感觉像是MCB核假死了一样。
现在我想确认下是否原因跟小编的类似。想问下小编可以让硬件的同事做些什么样的测试或者检查来确认吗?
正在学习这方面
