[FPGA] DDR3 MIG读写数据问题

[复制链接]
8550|14
 楼主| dingning123 发表于 2013-12-25 08:59 | 显示全部楼层 |阅读模式
大家好,我有两个问题,麻烦大家帮帮忙
问题1:DDR3在进行读写数据的时候,一般是先写完一行再读一行,还是读写都在一行上完成,还是写完整个DDR3然后再读整个DDR3?
问题2:在用modelsim 观察example design 跑出的例子时,init_calib_complete被拉高后,首先是写bank0的第一行。在写bank0的第一行时 app_addr=0000200之前的app_addr与相应app_wdf_data不满足相差两个时钟周期以内的要求,app_addr=0000200 之后满足,这是为什么?难道是app_addr=0000200之前写进去数据都无效吗?  



haitaox 发表于 2013-12-25 10:55 | 显示全部楼层
你说的一行是什么意思,ddr的一个row?还是一个视频行?
 楼主| dingning123 发表于 2013-12-25 11:13 | 显示全部楼层
haitaox 发表于 2013-12-25 10:55
你说的一行是什么意思,ddr的一个row?还是一个视频行?

DDR3不是有8个bank,每个bank有14行,10列吗?我所说的行是14行中的一行。我不知道row和视频行是什么意思
 楼主| dingning123 发表于 2013-12-25 13:59 | 显示全部楼层
haitaox 发表于 2013-12-25 10:55
你说的一行是什么意思,ddr的一个row?还是一个视频行?

帮帮我吧,每天就我自己在实验室研究这个,我是实在没办法了!
haitaox 发表于 2013-12-25 14:34 | 显示全部楼层
你看看user guide啊,看看推荐的读写时序是怎样的啊
 楼主| dingning123 发表于 2013-12-25 15:50 | 显示全部楼层
haitaox 发表于 2013-12-25 14:34
你看看user guide啊,看看推荐的读写时序是怎样的啊

用户指南上说 地址和数据的最大延迟为两个周期,我看例子上在写一行数据时app_addr=0000200之前根本不满足这样的时序关系,app_addr=0000200到00003ff之间地址和数据的延迟为一个周期满足时序关系,这是什么原因,与用户手册上的根本不同。
我快疯掉了!
 楼主| dingning123 发表于 2013-12-25 15:50 | 显示全部楼层
haitaox 发表于 2013-12-25 14:34
你看看user guide啊,看看推荐的读写时序是怎样的啊

用户指南上说 地址和数据的最大延迟为两个周期,我看例子上在写一行数据时app_addr=0000200之前根本不满足这样的时序关系,app_addr=0000200到00003ff之间地址和数据的延迟为一个周期满足时序关系,这是什么原因,与用户手册上的根本不同。
我快疯掉了!
zhuyi1234567899 发表于 2013-12-25 18:43 | 显示全部楼层
dingning123 发表于 2013-12-25 11:13
DDR3不是有8个bank,每个bank有14行,10列吗?我所说的行是14行中的一行。我不知道row和视频行是什么意思 ...

应该是14bit的行地址和10bit的列地址,而非你理解的
 楼主| dingning123 发表于 2013-12-25 19:26 | 显示全部楼层
zhuyi1234567899 发表于 2013-12-25 18:43
应该是14bit的行地址和10bit的列地址,而非你理解的

你说的对,应该是这个意思,我还想问一下,我在给app_addr=0000000到app_addr=0003ff之间写数据的时候,只有app_addr=0000200到app_addr=0003ff之间满足地址和数据的延迟为一个周期满足时序关系,app_addr=0000000到app_addr=0001ff之间地址和数据的时序关系特别乱,这是什么原因
 楼主| dingning123 发表于 2013-12-25 19:28 | 显示全部楼层
谁能告诉我init_calib_complete被拉高之后,应该先写多少个数据,再对其进行读
init_calib_complete被拉高之后,要多久才能够发送写数据命令
haitaox 发表于 2013-12-25 22:34 | 显示全部楼层
dingning123 发表于 2013-12-25 15:50
用户指南上说 地址和数据的最大延迟为两个周期,我看例子上在写一行数据时app_addr=0000200之前根本不满 ...

你说的地址和数据的最大延迟两个周期是什么意思,我怎么没见过。ddr3 mig 对于用户来说就是fifo,你把wr_fifo写了一些数,然后就写 cmd_fifo就好了
yybbond 发表于 2014-7-13 10:49 | 显示全部楼层
正在设计中,不了解
zhulin 发表于 2014-7-16 15:47 | 显示全部楼层
好好看看,文档上读写操作的波形图,INIT_CALIB_COMPLETE不由你控制,是DDR CONTOLLER自己完成的
gs862906973 发表于 2014-11-20 09:16 | 显示全部楼层
学习学习
huihui8023 发表于 2017-5-2 15:34 | 显示全部楼层
dingning123 发表于 2013-12-25 19:28
谁能告诉我init_calib_complete被拉高之后,应该先写多少个数据,再对其进行读
init_calib_complete被拉高 ...

init_calib_complete被拉高后,就可以写数据了,写多少数据由地址控制,可以把地址写满,读的代码和写的代码时同时进行的,只要ddr3中有数据,控制读的那几个信号都满足,就开始读了,读数也是根据地址读的,就相当于有几个坑(地址),每个坑里按顺序分别种着白菜,萝卜,黄瓜,那么你在拿的时候按顺序就应该也是白菜,萝卜,黄瓜的往出拿,要是你想拿第二个坑里的,那就是萝卜,就是这个道理。欢迎交流!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

48

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部