版主: 51FPGA

分享到:
共10条 1/1 1   

关于V5的DDR2核用户接口读数接口的问题

    [您是本帖的第10809位阅读者]
heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

直达楼层
1# 发表于 2010-06-03 00:11:41

大家好,
       我在使用V5芯片控制DDR2模组SODIMM,使用MIG生成控制核,使用用户接口进行数据读写。大家知道,写地址和写数据MIG生成的接口是两个FIFO,对其操作就可以了,我的问题出现在读数据上。
       MIG对读取的数据的接口只有一个rd_data_valid信号和一组rd_data_out数据线,当我在地址FIFO里写入地址和读命令之后,过一段时间 T 之后,读出的数据才在数据线上产生,而因为只有读有效和读数据线,所以在数据线上的数据不及时读走就会丢失了。
       比如我把读出的数据存入FIFO,但这个FIFO前端并没有很快的把数据读走,那么如果一次从DDR里读出很多数的话,这个FIFO就有可能会满,如果它满了的话,在DDR2的读数据线上的数据就会丢失,但是如果满的时候就不去往DDR地址FIFO里写地址和写命令的话,由于写入地址及命令到DDR数据出来的时延  T 的存在,导致停时送地址命令时,DDR还会出来一部分数据,再而且,T 值是不确定的(我仿真时有32clocks和1000多clocks的情况),导致我没法提前空出一段FIFO空间报FIFO满来控制地址及命令的写入。
       不知道大家有没有比较好的解决办法。
       我现在唯一想到的就是给FIFO深度大小那么多的地址和命令,然后等数据全读出来了,在给下一组地址命令去读DDR。但是这样比较浪费时间,每次都要等 T 时间。
       谢谢大家。




关键词:关于    用户    接口    读数    问题    数据    地址    

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

2# 发表于 2010-07-07 00:27:56
初始化phy_init信号是否已拉高?
MIG生成的example design是否已经跑通?
使用DDR模型搭建仿真是否正确?
已给你发邮件,但一些不是十分复杂的问题,我想还是在论坛讨论吧,说不定可以帮助更多的人

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

3# 发表于 2010-07-08 00:03:28

回复besomeone【4楼】:

总结一下你的问题:
1,DDR初始化已完成,但读数出的数与写入的不同,错误较多;
2,MIG的device选的不是目标DDR,是否有影响?

使用不同device的时候有没有根据你的目标DDR更改参数?如果没有的话会有影响的,会造成读写数不对。如果已经改成正确的参数了,约束有没有按你的实际引脚重新用MIG生成一遍?如果也已经update过了,而且你用的是V5的开发板,应该硬件是没有问题的,那么你的读写逻辑是你自己写的吗?是的话先那MIG生成的example design试一下,看读写是否正确。

另,V5的开发板不是带有美光的SODIMM的吗?那个型号好像可以在MIG理找到。

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

4# 发表于 2010-07-14 01:28:29
不好意思这几天没上论坛。
1. 模组型号的选择,我说的参数按照你的目标DDR修改就是指这个型号的选择,在选择型号的时候,型号列表里没有你的目标模组的型号的话,要选用一个参数比较相近的型号,作为模板,然后选custom...(具体的名字记不清了)然后根据你的模组的一些具体参数修改那些参数的值。
2. UCF的update,MIG生成的UCF使用的引脚分配是你选择的bank中从上到下按顺序分的,而你的板卡上八成不是这样的,但你不能只是将其生成的UCF中关于location的约束改掉而不管其他的,你需要自己写一个只有location约束的ucf,然后使用MIG的update功能将这个ucf导入,让其重新生成一个根据你的location约束的UCF文件。
3. 你使用的是ML555?SODIMM和RDIMM只是两种不同的模组而已,我用的是SODIMM,封装比较小,就是笔记本内存条。
4. 地址的选用没问题,按burst来就可以了。
5. 推荐你接下来的工作:
    1. 将我上面提到的1. 2.两点做好。
    2. 生成MIG中使用PLL或者DCM(这样接口比较简单)。
    3. 使用MIG生成的example design,他这个设计中包含的就是生成几个数和几个地址,将数写入DDR, 然后再读出来,与写入的对比一下,对不上就将error信号拉高。这个设计调用什么的都已经设计好,你就将example design做为顶层,提供一个200MHz的delay_ctrl时钟和一个操作时钟就可以了,当然DDR的相关接口连上,复位信号连上。
总之,调试要记住用排除法,一步一步来。慢慢找错误。

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

5# 发表于 2010-07-14 01:29:39
xie0jing0的原帖
用chipscope看的话也不是很可靠了,这么高的频率,还是程序里用自己的逻辑自检一下比较好。

两三百M的频率没问题的。

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

6# 发表于 2010-07-15 00:44:13
1.  最好使用与数据同源的时钟,或者使用比被采样信号频率高出很多的时钟(适用于有些情况,同源是最好的,但高时钟可采到毛刺等不确定现象),175MHz彩出来如果是8'h55,8'haa的话,那么350MHz彩出来就是8'h55, 8'h55, 8'haa, 8'haa,当然前提是这两个时钟是同相位的,并跟数据同源,不然相位上有偏移有可能会造成采数错误。
2. 前期调试可以单调DDR部分,这样布线资源不紧张,一般这些不用太考虑,将mig生成的约束弄好就可以了,后期项目整合看情况约束。
3. 你指的是底层的DQ信号么?没有抓过,不太清楚。
4. 读命令就是001吧?你再看看datasheet,你不需要写读写逻辑,直接使用examlpe就可以了,他写的肯定是对的,先不要增加你自己都不确定对不对的东西上去,那样错了都不知道哪里的问题。

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

7# 发表于 2010-07-15 01:10:09

仿真很方便的,xilinx都给写好了,原型调用不用你写,很复杂,sim文件夹里有一个sim_tb.v吧好像,具体名字可能记不对了,人家都给你写好了,仿真那个example的和仿真user design的都有,你使用SIM.EXE或者sim.do或者自己建modelsim工程都是很方便的。仔细看datasheet啊!这些datasheet里说的很明白的,关于MIG生成都有什么文件,仿真应该怎么做,什么的,

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

8# 发表于 2010-07-23 17:21:50

sim.exe是xilinx写好的一个程式,其实生成的核你什么都不用动,直接用点sim或者用sim.do就可以仿真了,不过我用过的MIG2.3生成的时候没有DDRII模型,需要自己去下一个来,其他的可以都不用动,
仿真的GUI模式我也不是很清楚,我就是使用modelsim编译文件,然后跑一段时间,看信号波形就好了。
仿真库的问题我也不是很清楚,modelsim的库有时候会有些问题,这个我也不是非常的明白,你可以删掉库从新加试试,看看modelsim.ini文件里是否加入了库了,看看你的工程使用的modelsim.ini是否跟modelsim软件的是一样的。
这几天玩去了,没上论坛

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

9# 发表于 2010-07-27 19:06:19
xxj1980的原帖
你好,本来想评论的,看到很多人评,于是就算了

你是指对我主楼的问题的评论吗?
欢迎指教啊,那个问题我现在还是不知道改怎么低速读数。

RE: 关于V5的DDR2核用户接口读数接口的问题

heiyux
性别保密
高级会员

最后登陆时间:2015-01-22 10:54:26

10# 发表于 2010-07-27 19:15:03
lijinling33的原帖
    你好,我用的是MIG3.0,MIG对读取的数据的接口有一个rd_data_valid信号,我想问一下,这个rd_data_valid信号是否由控制信号cmd来控制的,而且貌似是ddr2给过来的,也出现有些数据没有来得及读回的现象,但是只要读数据有效则读回的数据确实又是对的,可否一起讨论一下呢?我的邮箱是lijinling33@163.com

读有效信号是读地址及读命令写入FIFO之后一定延时之后,待DDR控制器将数读出后随数据同步有效的,是DDR控制器产生的信号,
在读有效信号无效的时候,数据线上的数据也可以看到数据,那个数据是不定的,我没有研究过其规律和特点,不过读信号有效时的数据肯定是正确的。

共10条 1/1 1   
快速回复主题
  • 匿名不能发帖!请先 [ 登陆 注册 ]