OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7663|回复: 11

[ALTERA] FPGA的sdram读写实验,读使能信号拉高之前已经将sdram“预读”的问题

[复制链接]

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
发表于 2020-4-20 18:03:54 | 显示全部楼层 |阅读模式
10金钱
这里不太懂,这是手册原话:
需要注意的是程序中第97行通过变量rd_valid将第一次读出的1024个数据排除,并未参与读写测试。这是由于SDRAM控制器为了保证读FIFO时刻有数据,在读使能拉高之前就已经将SDRAM中的数据“预读”一部分(突发读长度)到读FIFO中;而此时写SDRAM尚未完成,因此第一次从FIFO中读出的512个数据是无效的。第一次读操作结束后,读FIFO中的无效数据被读出并丢弃,后续读SDRAM得到的数据才用于验证读写过程是否正确。

问题是:是不是sdram复位完成后刚开始写fifo中数据量没有一个突发长度,所以先执行读fifo的请求(把sdram读使能信号信号拉高),所以读fifo中寄存了一些废数据,长度是一个突发长度?
大佬们 ,求助!

sdram_fifo_ctrl模块的sdram 读写请求信号产生模块

sdram_fifo_ctrl模块的sdram 读写请求信号产生模块

手册原话

手册原话

最佳答案

查看完整内容[请看2#楼]

SDRAM控制器读操作机制是读FIFO为空就预读数据,所以在SDRAM写入数据之前,就从SDRAM中读数据,这个时候读到的是SDRAM的随机值,因此这些数据是无效的。要等测试数据全部写入SDRAM后,再去读数据才对
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-4-20 18:03:55 | 显示全部楼层
SDRAM控制器读操作机制是读FIFO为空就预读数据,所以在SDRAM写入数据之前,就从SDRAM中读数据,这个时候读到的是SDRAM的随机值,因此这些数据是无效的。要等测试数据全部写入SDRAM后,再去读数据才对
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-20 20:40:30 | 显示全部楼层
QinQZ 发表于 2020-4-20 20:35
SDRAM控制器读操作机制是读FIFO为空就预读数据,所以在SDRAM写入数据之前,就从SDRAM中读数据,这个时候读 ...

大佬 我的理解对吗 ,就是贴合代码,是不是就是我发的那段代码 预读一个突发长度
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-20 20:42:30 | 显示全部楼层
QinQZ 发表于 2020-4-20 20:35
SDRAM控制器读操作机制是读FIFO为空就预读数据,所以在SDRAM写入数据之前,就从SDRAM中读数据,这个时候读 ...

就是先开始在那段代码中不满足写fifo中数据量大于等于一个突发长度,所以执行第二个条件也就是将sdram_rd_req拉高而sdram_wr_req拉低
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-4-21 09:31:17 | 显示全部楼层
啥都不会的佩奇 发表于 2020-4-20 20:42
就是先开始在那段代码中不满足写fifo中数据量大于等于一个突发长度,所以执行第二个条件也就是将sdram_rd ...

是的
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-21 09:54:44 | 显示全部楼层

好的 谢谢大佬了 非常感谢!!
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-21 12:23:40 | 显示全部楼层
啥都不会的佩奇 发表于 2020-4-21 09:54
好的 谢谢大佬了 非常感谢!!

大佬,再问一下哈,那就是说读fifo的数据量永远不可能多于一个读突发长度,在该实验中就是不多于512个数据量,是吗?
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-4-21 13:42:06 | 显示全部楼层
啥都不会的佩奇 发表于 2020-4-21 12:23
大佬,再问一下哈,那就是说读fifo的数据量永远不可能多于一个读突发长度,在该实验中就是不多于512个数 ...

为什么不可能多余呢?
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-21 14:25:14 | 显示全部楼层
QinQZ 发表于 2020-4-21 13:42
为什么不可能多余呢?

这款里不太懂啊 ? 又想了一会儿,感觉可以,比如果写完了数据,那么这个时候读fifo应该是有512个废数据的,现在开始读了,后面的逻辑想不来了。就针对这个例程实验来说。假如说读了第一个数据,那麽此时读fifo应该是小于512(一个突发长度),即读完第一个数据就要从sdram中第二次读入数据, 额,感觉很乱。 请大佬赐教!
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-4-21 14:55:40 | 显示全部楼层
啥都不会的佩奇 发表于 2020-4-21 14:25
这款里不太懂啊 ? 又想了一会儿,感觉可以,比如果写完了数据,那么这个时候读fifo应该是有512个废数据 ...

rd_fifo少于512时,往里面写数据,当然fifo里的数据可能多于512的。
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-21 17:59:55 | 显示全部楼层
QinQZ 发表于 2020-4-21 14:55
rd_fifo少于512时,往里面写数据,当然fifo里的数据可能多于512的。

大佬,那比方说最开始读了第一个数据,那么读fifo中的数据量就为511了,就满足了触发条件,就要往读fifo里面读入sdram的数据,长度为一个突发长度,读完了之后,读fifo中的数据就满了,对吗
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-21 19:14:26 | 显示全部楼层
啥都不会的佩奇 发表于 2020-4-21 17:59
大佬,那比方说最开始读了第一个数据,那么读fifo中的数据量就为511了,就满足了触发条件,就要往读fifo ...

大佬,我的理解哈,您看对不对:
     刚开始是向读FIFO中写入了512个SDRAM的随机值,此时读fifo的写指针逐渐为512的,但是读fifo的读指针依然为0(因为对读fifo没有执行读操作)。
     然后数据写入sdram完毕后,开始进行读操作,读指针逐渐累加,然后当读fifo里的数据小于512的话,就再次向读fifo写入一个突发长度的数据(写完毕后读fifo的写指针最大了),与此同时随着读出数据读fifo的读指针也在慢慢增长,然后读指针到了一个突发长度的时候,读fifo中的写入操作(即从sdram里面写入到读fifo的数据,这个数据是正确的)。然后读fifo读完的时候,再次触发从sdram写入到读fifo的操作,这个数据就是后半段数据(512~1024)。 所以 第一次读取的数据无效,而且要全部把fifo读完(读计数器计到1024)才能在第二次读出正确的数据。
   大佬,您看我这样理解对吗?再次感谢大佬!!!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 09:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表