打印

首次SPARTAN-6上调试ddr2,各种问题请教!!!

[复制链接]
楼主: gnr_zhao
手机看帖
扫描二维码
随时随地手机跟帖
21
ococ| | 2013-5-22 16:54 | 只看该作者 回帖奖励 |倒序浏览
你把读写地址设置成一个固定值,不使用计数器。测试一下看看读出的数据会出错吗?

使用特权

评论回复
22
gnr_zhao|  楼主 | 2013-5-22 16:59 | 只看该作者
ococ 发表于 2013-5-22 16:54
你把读写地址设置成一个固定值,不使用计数器。测试一下看看读出的数据会出错吗? ...

嗯。我下午就是想着么测来着!我一会就试一下!
硬件上除了电压以外,DQS DQ 要怎么处理?需要接多少电阻,板子不是我做的,这块没思路!!

使用特权

评论回复
23
ococ| | 2013-5-22 17:01 | 只看该作者
gnr_zhao 发表于 2013-5-22 16:59
嗯。我下午就是想着么测来着!我一会就试一下!
硬件上除了电压以外,DQS DQ 要怎么处理?需要接多少电阻 ...

DQS DQ从FPGA输出后经过33欧电阻直接连到DDR2芯片上。

使用特权

评论回复
24
gnr_zhao|  楼主 | 2013-5-22 17:16 | 只看该作者
ococ 发表于 2013-5-22 17:01
DQS DQ从FPGA输出后经过33欧电阻直接连到DDR2芯片上。

我这个板子没过电阻,直接接的!必须要过吗?我这个板子用的DDR2芯片是
MT47H64M16-25E

使用特权

评论回复
25
ococ| | 2013-5-22 17:24 | 只看该作者
本帖最后由 ococ 于 2013-5-22 17:32 编辑
gnr_zhao 发表于 2013-5-22 17:16
我这个板子没过电阻,直接接的!必须要过吗?我这个板子用的DDR2芯片是
MT47H64M16-25E ...

我觉得不一定非要电阻,XILINX的一些参考设计就是直连的。
我也用的这颗DDR2。

使用特权

评论回复
26
gnr_zhao|  楼主 | 2013-5-22 17:31 | 只看该作者
ococ 发表于 2013-5-22 17:24
我觉得不一定非要电阻。
我也用的这颗DDR2。

我看了一下SP605的原理图,DQ直接接的,地址线接电阻了。SP605上是DDR3。
你的工程地址只移了一位没有问题,我的如果只移一位数据全错!
你的用户接口多少位?

使用特权

评论回复
27
qin552011373| | 2013-5-22 22:23 | 只看该作者
学习了

使用特权

评论回复
28
ococ| | 2013-5-23 09:14 | 只看该作者
gnr_zhao 发表于 2013-5-22 17:31
我看了一下SP605的原理图,DQ直接接的,地址线接电阻了。SP605上是DDR3。
你的工程地址只移了一位没有问 ...

我用的MCB用户端口32bit,64bit,128bit都用过。
其实不必特意考虑最低位地址几位为零,因为你计算地址的时候其实已经满足这个要求了。
DDR2芯片内部是每个地址存16bit数据的,MCB内部是按照8bit来处理的,所以不管用户端口多少bit,按照16bit计算出的地址只要左移一位就行了。
你是用用户端口32bit,每个32bit数据占用2个DDR2内部地址,占用4个MCB模块地址,所以给MCB的地址最低2位肯定是都是0的。

使用特权

评论回复
29
gnr_zhao|  楼主 | 2013-5-23 09:21 | 只看该作者
ococ 发表于 2013-5-23 09:14
我用的MCB用户端口32bit,64bit,128bit都用过。
其实不必特意考虑最低位地址几位为零,因为你计算地址的 ...

我之前也以为16位数据线的DDR2每个地址存16位数据,但是上一个帖子里大家告诉我跟数据线无关,每个地址固定就是存8位数据。我没找到这个的依据!我现在对这个很混乱!
昨天看论坛有人说异步FIFO的读写不可以同时有效,我现在怀疑是不是我对EMPTY的操作计数导致了数据的错误。

使用特权

评论回复
30
ococ| | 2013-5-23 09:31 | 只看该作者
gnr_zhao 发表于 2013-5-23 09:21
我之前也以为16位数据线的DDR2每个地址存16位数据,但是上一个帖子里大家告诉我跟数据线无关,每个地址固 ...

DDR2芯片内部是一个地址存16bit数据的。你可以计算一下就知道了。你看看你是用的DDR2芯片手册,或者看一下根据DDR2型号生成的MCB里面的参数,其中的行地址,列地址和bank地址的位数。应该是13bit的行地址,10bit的列地址,3bit的bank地址,这些地址对应的就是DDR2芯片内部的地址。8K*1K*8*16bit=1GBIT。

使用特权

评论回复
31
ococ| | 2013-5-23 09:38 | 只看该作者
gnr_zhao 发表于 2013-5-23 09:21
我之前也以为16位数据线的DDR2每个地址存16位数据,但是上一个帖子里大家告诉我跟数据线无关,每个地址固 ...

另外你需要注意MCB的30bit地址并不是所有的地址数据你都可以用,最高三位肯定是用不到的。你可以看看UG388,P63页的地址映射关系。我的建议是你生成地址的时候单独生成行地址,列地址和bank地址,然后按照P63页的映射关系拼接成MCB的30bit地址。P63页的地址顺序是行bank列排序,如果你在生成MCB的时候也是这样的顺序就按照这个顺序就行,如果生成MCB时候是bank行列排序,就把bank地址和行地址顺序换一下。

使用特权

评论回复
32
gnr_zhao|  楼主 | 2013-5-23 11:18 | 只看该作者
ococ 发表于 2013-5-23 09:38
另外你需要注意MCB的30bit地址并不是所有的地址数据你都可以用,最高三位肯定是用不到的。你可以看看UG38 ...

我现在感觉我的地址应该没问题。能把你的工程发上来吗,我在我的板子上跑一下,看能不能验证一下我的板子。最好发一个32位用户接口的!

使用特权

评论回复
33
ococ| | 2013-5-23 11:19 | 只看该作者
gnr_zhao 发表于 2013-5-23 11:18
我现在感觉我的地址应该没问题。能把你的工程发上来吗,我在我的板子上跑一下,看能不能验证一下我的板子 ...

工程没法发。都是我们公司的产品工程有限制的。

使用特权

评论回复
34
GoldSunMonkey| | 2013-5-23 21:51 | 只看该作者
ococ 发表于 2013-5-23 11:19
工程没法发。都是我们公司的产品工程有限制的。

你的帖子好多,感谢

使用特权

评论回复
35
gnr_zhao|  楼主 | 2013-5-24 10:46 | 只看该作者
本帖最后由 gnr_zhao 于 2013-5-24 10:48 编辑

问题找到了。一直以为是读DDR2出错,现在发现错误在写数这里。一直很忽视这里,现在想想为什呢?因为用CHIPSCOPE一看写数就出错,看不成,也主观认为这里应该没问题,错误现象用CHIPSCOPE的确可以在读这里抓到,所以一直以为是读出错,写没问题。
调试了这么久就是一个时钟域的问题,有一个信号在另一个时钟域里面用了,就是没有先用这个时钟域的时钟先打一下这个信号再用。
我想我这辈子都会记住这点的!
想想过去的几次花费很长时间的调试好像最后都是归结到和时钟有关!
上次调AD也是因为给出的时钟不干净!
非常感谢在这里帮助过我的朋友们,我会总结一下把这次调试的经验好好总结一下,希望以后有遇到类似情况的朋友不会再耽误这么长时间!

使用特权

评论回复
36
gnr_zhao|  楼主 | 2013-5-24 10:50 | 只看该作者
对了,现在还有一个问题,加CHIPSCOPE进来还是会出错,但不是触发所有信号都出错,还没总结出规律。现在让我对CHIPSCOPE很持怀疑态度,什么时候可以用它,什么时候会影响时序?

使用特权

评论回复
37
GoldSunMonkey| | 2013-5-24 21:08 | 只看该作者
gnr_zhao 发表于 2013-5-24 10:46
问题找到了。一直以为是读DDR2出错,现在发现错误在写数这里。一直很忽视这里,现在想想为什呢?因为用CHIP ...

期待你的分享啊

使用特权

评论回复
38
GoldSunMonkey| | 2013-5-24 21:08 | 只看该作者
ococ 发表于 2013-5-23 11:19
工程没法发。都是我们公司的产品工程有限制的。

感谢支持啊

使用特权

评论回复
39
LMQQ| | 2013-5-26 23:04 | 只看该作者
学习案例

使用特权

评论回复
40
GoldSunMonkey| | 2013-5-26 23:15 | 只看该作者
LMQQ 发表于 2013-5-26 23:04
学习案例

欢迎啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则