请教,SPARTAN-6使用DDR2时错一个数的问题!!

2020-02-24 20:28发布

使用ISE14.2 SPARTAN6芯片 16位数据线密度1G的ddr2存储芯片
MCB系统时钟工作在最低的125M,数据线设置为32位
MCB和存储芯片的brust_length设置为4
出现的现象如下:
1.写入MCB的数据没有问题,但是MCB写入DDR2的数据在最开始处多写了一个FFFF最后的真实数据少写了一个,读回来的时候最开始多写的这个变成了0000!
2.写DDR2时,DQS的双沿采在DQ的中间,但是,读DDR2时DQS的双沿和DQ是平齐的,这和仿真参考程序是不同
现在是不是第二个问题导致了第一个问题的出现?有人遇到过类似问题吗???

另外,UG388和UG416我都看过很多遍了,但是对Data_Make和地址的递增还是不太明白
我现在没有处理DM但是看仿真和chipscope的波形发现数据都能对上,只是错了一个数
我现在不明白:
1.32位的用户接口和ddr2 16位的芯片数据线这个关系为什么需要使用4位的DM来标记数据个数?
2.16位数据线的DDR2芯片的一个地址空间存储16位数据还是8位数据,pdf上的意思好像是存8位数据所以要4个地址存一个32位的用户数据,但是我总感觉是存16位数据的
3.用户接口这个面32位的数据和ddr2的16位的数据线,在系统时钟是125M的时候,给MCB送数的时钟到底应该是多少??

几个疑惑和问题请教大家,先多谢!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
yghanwuji
2020-02-26 08:33
gnr_zhao 发表于 2013-5-5 21:23
现在有一些帧第一行有半行错数,感觉好像是上电一段时间后哪里累积的结果
我生成mig的时候选的是bank_row_ ...

1.芯片资料上会写明,4位的数据线我就不太清楚了,没看过4位的芯片资料
2.DM是0的时候代表这一位对应的字节是有效数据,比如说16位数:AABBCCDD,DM为:0011,则有效数据为:AABB(至于那两个被屏蔽的数据,可能是写FF代替,这个我没验证过)。
3.地址映射应该是ddr2的local_address=local_bank & local_row & local_col,我用的是altera的,没发现row和col是复用的,但是做col用的时候,要注意本地数据总线是2倍ddr2的数据总线,需要local_address(8 downto 0)<=local_col(9 downto 1),你可以看下是不是这个原因,当地址位的时候每一位都是有用的。

一周热门 更多>