以我的经验来看,应该是逻辑问题。
如果是硬件问题,初始化都通不过,done信号会一直为低,根本通不过。
时钟多高这个要看你的硬件性能了,我们硬件,MIG用的DDR II参考时钟用了400M,user时钟用到150M,跑了近几个月零误码。大家都知道这可SP6的MIG DDRII最高时钟只能到333M
初步判断应该是读写数据和CMD不同步导致的。
你看下他的testbech,了解下地址分配UG388 Byte Address to Memory Address Conversion章节,地址分配和你用的DDR数据宽度有关系,认真看下这一章
写流程应该是这样子的: 发wr_en,对齐相应的数据,计算发送的个数,然后发送cmd(包括cmd_en一个时钟沿,该时钟沿下面对齐 长度,地址,cmd——str)
注意,发送cmd之前,下入的数据,是写到MIG的缓冲区,注意一下wr_full这个信号,如果写满缓冲区,再写入的数据,溢出丢掉,会产生相应的告警。
读流程相反的流程。
希望对你有帮助。 |