litaohqqt 发表于 2012-8-10 09:22:15

请教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为一组,读任何一个都会输出这组内的所有数据?


NJ8888 发表于 2012-8-10 11:51:07

应当是本组突发类循环

litaohqqt 发表于 2012-8-10 12:18:11

百度了下 没找到相关说明, 能解析一下, 这个问题怎样解决?需要实现任意地址开始传送顺序的8个数据 。
谢谢!

NJ8888 发表于 2012-8-10 12:26:29

litaohqqt 发表于 2012-8-10 12:18 static/image/common/back.gif
百度了下 没找到相关说明, 能解析一下, 这个问题怎样解决?需要实现任意地址开始传送顺序的8个数据 。
...

不可能跨页的,在同页内可以任意设定开始地址

Luis_Li 发表于 2012-8-10 12:49:52

这是正确的,应该是设置成了burst wrap模式。

fishplj2000 发表于 2012-8-10 13:01:17

Sdram芯片在burst W/R时,是循环寻址的!

wye11083 发表于 2012-8-10 18:49:00

BL在任何情况下都是一个BL范围内的。而且在Page Burst模式下必须使用退出指令才能返回正常模式。因此,BL=2时,读的只可能是1,2或2,1。

mysunmax 发表于 2012-8-10 19:47:27

e~ 我遇到过你的情况 看看是不是 reg设置的问题(你没有修改参数如果更改了应用条件)

litaohqqt 发表于 2012-8-13 09:02:48

应该是 楼上的 BL在任何情况下都是一个BL范围内的的答案。

我现在是加个BL地址的判断 解决想从任意地址读数据的问题。

M.lee 发表于 2012-8-22 17:16:05

能否讲一下,你们是怎么仿真的啊?我用QII自动生成的TESTBENCH 但是总是仿真不出来啊!?

litaohqqt 发表于 2012-8-23 09:24:26

网下了个 SDRAM 模型模拟实际的SDRAM, 挂在自己下写的SDRAM 控制器下,就可以了。

geff 发表于 2012-9-12 08:50:54

的确是这样的,这不是你程序的问题,而是SDRAM突发模式的特点决定的

在突发模式下读写,给一次首地址,SDRAM会根据首地址自动计算下一个地址。

比如突发长度为4,地址为0bxxxxxxxxxxx01

有两种突发模式,Sequence , Interleave. 他们改变地址的方法不同,但要注意任何方式,第二比特对第三比特都不产生进位,所以会产生一个循环状态

建议你看一看任意一本SDRAM的datasheet,上面有说明。

想要理论上任意起始点顺序写,我觉得单点写入是不是才能实现,但这样的工作效率会降低。

这方面我也在找资料。
页: [1]
查看完整版本: 请教burst length=8仿真读写SDRAM 数据问题