请教burst length=8仿真读写SDRAM 数据问题
网上下载一SDRAM IP,以burst length=8, 仿真SDRAM 读写时,出现如下问题:假如,SDRAM数据就是相应的地址。
以Address= 8,读出数据是: 8,9,10,11,12,13,14,15
以Address=10, 读出数据是: 10,11,12,13,14,15,8,9.最后两位应该是16,17才对,但是读出来8,9.
并且接下下读出的每组数据都一样,比如,接下读address=18,18,19,20,21,22,16,17.
请问,是SDRAM IP 有问题?
还是本身SDRAM 就是一个burst length为一组,读任何一个都会输出这组内的所有数据?
应当是本组突发类循环 百度了下 没找到相关说明, 能解析一下, 这个问题怎样解决?需要实现任意地址开始传送顺序的8个数据 。
谢谢!
litaohqqt 发表于 2012-8-10 12:18 static/image/common/back.gif
百度了下 没找到相关说明, 能解析一下, 这个问题怎样解决?需要实现任意地址开始传送顺序的8个数据 。
...
不可能跨页的,在同页内可以任意设定开始地址 这是正确的,应该是设置成了burst wrap模式。 Sdram芯片在burst W/R时,是循环寻址的! BL在任何情况下都是一个BL范围内的。而且在Page Burst模式下必须使用退出指令才能返回正常模式。因此,BL=2时,读的只可能是1,2或2,1。 e~ 我遇到过你的情况 看看是不是 reg设置的问题(你没有修改参数如果更改了应用条件) 应该是 楼上的 BL在任何情况下都是一个BL范围内的的答案。
我现在是加个BL地址的判断 解决想从任意地址读数据的问题。
能否讲一下,你们是怎么仿真的啊?我用QII自动生成的TESTBENCH 但是总是仿真不出来啊!? 网下了个 SDRAM 模型模拟实际的SDRAM, 挂在自己下写的SDRAM 控制器下,就可以了。
的确是这样的,这不是你程序的问题,而是SDRAM突发模式的特点决定的
在突发模式下读写,给一次首地址,SDRAM会根据首地址自动计算下一个地址。
比如突发长度为4,地址为0bxxxxxxxxxxx01
有两种突发模式,Sequence , Interleave. 他们改变地址的方法不同,但要注意任何方式,第二比特对第三比特都不产生进位,所以会产生一个循环状态
建议你看一看任意一本SDRAM的datasheet,上面有说明。
想要理论上任意起始点顺序写,我觉得单点写入是不是才能实现,但这样的工作效率会降低。
这方面我也在找资料。
页:
[1]