打印

请教spartan3的MIG生成的DDR2 SDRAM控制器的相关问题

[复制链接]
5413|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zy7598865 于 2012-7-25 00:58 编辑

这几天在需要完成一个DDR2 SDRAM的仿真实验,看了一些DDR2的资料,但是感觉看了之后好像又忘了,里面各种参数让我很头晕,不过最主要还是看了生成DDR2C后的PDF(memory inerface solutions )。
FPGA型号:spartan3  xc3s4000
DDR2 SDRAM :MT47H128M16RT-25E

最后有一些我自己的理解和问题想请教下大家:

1.对于生成的DDR2控制器,我想进行对DDR2 SDRAM的正常读写操作是不是可以不用管参数配置(除了开始生成IP核时的参数配置外),控制器内部如何复杂操作,只需要先根据memory inerface solutions说明按照相应的时序先初始化后,然后就可以读写操作了?

2.生成的DDR2控制器中有example design 与user  design两个文件, 现在想先用example design中的rtl代码在板子上跑一遍(之前就用自带的sim文件先仿真了一下,大致看了一下内部的时序关系),通过chipscope采集相关数据,看看实际在硬件这个ipcore可以正确通过吗,但是我在添加vio、ila、icon核后,综合不能通过,原来的UCF文件加进去综合的时候也报错。
想问下这几个插入的核应该怎样添加才能正确通过,特别是UCF,如果我在自己的板子上修改对应的管脚后,其他的约束要不要更改?
   如ucf图中cntrl0_ddr2_dq[4]如果实际我改成了另外的管脚,下面fifo_bit4对应的SLICE位置不更改有影响吗?如果要更改应该怎样改?

3.是不是也可以这样,不用看debug的的信号,不加这几个插入的核,example_design中反正有个“cntrl0_led_error_output1”信号,引到LED上后,观察这个信号判断板子能够通过验证,不过这样如果不通过就很难查出问题了。。。。

4.如果验证通过后,下一步将通过DSP控制接口写一些数据,然后通过FPGA处理后与DDR2 SDRAM进行数据交互。。不过先解决前面的问题再说。。鸭梨好大啊。。。

希望做过这方面的各位大哥大姐们指点一下迷茫中的小弟。。万分感激





ucf.jpg (44.74 KB )

ucf.jpg

he.jpg (322.63 KB )

添加了三个核后进行综合,报错

添加了三个核后进行综合,报错

相关帖子

沙发
zy7598865|  楼主 | 2012-7-24 23:34 | 只看该作者
0.之前生成IP核时,由于没有该型号的DDR2控制模型,我更改了几个参数,之后在这两个地方更改了一下,然后后面的配置都是默认的了。

想问下还有没有什么地方配置要注意的,然后就是下画红框的ODT那个地方主要是啥作用,需要做些什么设置吗。(文档有些地方看得不是很明白,我默认该选项了,)

odt.jpg (65.79 KB )

odt.jpg

debug_en.jpg (110.76 KB )

debug_en.jpg

使用特权

评论回复
板凳
zy7598865|  楼主 | 2012-7-25 00:06 | 只看该作者
本帖最后由 zy7598865 于 2012-7-25 00:10 编辑

这个应该放在主题的最前面的。。。。

第一个图:这个工程是没有加chipscope核的,在没有添加UCf时综合都通过了。

第二个图:和第一个图上是同一个工程但是加了ucf后报如下错误。。这是什么导致的?

请大家还是以第一主题开始分别解答下小弟的疑问,问题很多。。。辛苦大家了,虽然我觉得很难,但是我还是很期待成功的那份喜悦。 要是大家有什么好的资料或者方法也希望大家分享或是指点一下,让我们这些第一次接触DDR2的同志们也尽快的成长起来,感谢。。。

no_ucf.png (196.09 KB )

没有添加ucf时通过综合

没有添加ucf时通过综合

ucf_error.png (174.24 KB )

添加后报错了,这错误。。为什么生成的工程也有些错误。。

添加后报错了,这错误。。为什么生成的工程也有些错误。。

使用特权

评论回复
地板
nianzhong| | 2012-7-25 10:27 | 只看该作者
建议在xps上生成直接调用,那样比较简单点

使用特权

评论回复
5
zy7598865|  楼主 | 2012-7-25 12:25 | 只看该作者
xps
xps
我不知道,直接ise

使用特权

评论回复
6
qingniao929| | 2012-7-25 22:43 | 只看该作者
问题有点乱,先大概给点提示,从后往前
1、在XST里面设置keep hierarchy soft试一试;
2、ODT是片上终端电阻,用在数据线和控制线上。
3、debug功能enable后,在工程里面可以多一些信号供后期观察,调试。

使用特权

评论回复
7
qingniao929| | 2012-7-25 22:47 | 只看该作者
本帖最后由 qingniao929 于 2012-7-26 09:43 编辑

如ucf图中cntrl0_ddr2_dq[4]如果实际我改成了另外的管脚,下面fifo_bit4对应的SLICE位置不更改有影响吗?如果要更改应该怎样改?

DQ和DQS是有对应关系的,不要随便改动DQ的管脚。我们MIG工具产生的UCF还是比较合理,对DDR2布线应该没有什么大问题,毕竟你DDR2的布线在PCB上不可能 2层就能走完,以我的经验,4层比较合适。

使用特权

评论回复
8
sunmax| | 2012-7-25 23:46 | 只看该作者
5# zy7598865
xps !

使用特权

评论回复
9
GoldSunMonkey| | 2012-7-25 23:55 | 只看该作者
还是用ISE吧。

使用特权

评论回复
10
GoldSunMonkey| | 2012-7-25 23:55 | 只看该作者
用了一个不能用的管教。你的是开发板?

使用特权

评论回复
11
zy7598865|  楼主 | 2012-7-26 13:06 | 只看该作者
昨晚超过一点了。。不能回复了。。。
我屏蔽一些管脚,最终还是都综合通过生成bit文件了,主要是担心被我屏蔽的管脚会不会影响整个功能的验证,板子是别人设计的板子,不是开发板。
keep hierarchy 只能NO的时候通过,YES就不行了。现在是NO的状态。
现在还有一个问题就是自行生成的IP核,没有DDR2 SDRAM :MT47H128M16RT-25E类型,参数需要自行配置。很多参数我怎么都找不到啊 在MT47H128M16RT的芯片手册也找了下。。。
   没有按对应的参数影响大不大?

上午在板子上烧录了程序,差分时钟先给了个133mHZ  ,触发我默认XXX,看了chipscope完全采不到信号,int_done信号更是没见拉高?请问是不是我屏蔽了UCD的管脚可能有影响,不过更怀疑都没正常工作,

使用特权

评论回复
12
qingniao929| | 2012-7-26 17:49 | 只看该作者
屏蔽的什么管脚发上来看看。
MT47H128M16RT-25E,必须是-25E? 如果没有规定,换MIG里面有的,也只是在不同的CL下speed不同而已。

Init_done 没有拉高,说明初始化没通过,如果是example design 检查硬件吧。

使用特权

评论回复
13
zy7598865|  楼主 | 2012-7-27 00:35 | 只看该作者
本帖最后由 zy7598865 于 2012-7-27 00:40 编辑

今天按照MT47H128M16RT-25E的手册的具体参数配置后,重新生成了DDR2C核,在板子上用自带的example_design跑,有读的数据和写的数据了,init_done也一直有效了,但是就是cntrl0_led_error_output1一直为高,我接到了LED上,一直亮,意味着读写数据不对。。。   该检查的我都检查了,参数也基本上和相应手册一致了,一下找不出什么问题了。。请高手指点一下
,是不是还有什么地方漏掉了。   感觉这个UCF可能有影响。。
。(相应的代码进行仿真,发现这个信号cntrl0_led_error_output1一直为低的,表明读写数据正确,是吧,我大概对了一下仿真和chipscope采到的读写数据,是一致的。。。。纳闷了。。。。)。。。

使用特权

评论回复
14
qingniao929| | 2012-7-27 09:47 | 只看该作者
你的UCF管脚改了哪些? 发出来看看

error信号低才是正确的,高说明写数和读数不一致。 你chipscope里面的error信号是什么状态?

使用特权

评论回复
15
zy7598865|  楼主 | 2012-7-28 09:37 | 只看该作者
error是一会低  一会高,数据比对的时候就拉高了,写入的和读出的很多不一致,我等下中午上个图,导致led_state一直高,最后灯一一直亮。。。调了几天了 。。伤

使用特权

评论回复
16
zy7598865|  楼主 | 2012-7-28 13:37 | 只看该作者
现在是生成了一个32bit位宽的DDR2控制核。 板子上连接的DDR2是两块位宽16bit的DDR2芯片组成。两块DDR主要只是数据和时钟信号不一样,其他控制信号都是复用的,
  现在只想观察低16bit的读写有问题没,控制信号和差分时钟都只连接了一片DDR。 代码中的ERROR我改成了只判断低位数据。      板子上怎么一直没通过,请教大家了解这方面的指点一下

使用特权

评论回复
17
GoldSunMonkey| | 2012-7-29 15:19 | 只看该作者
自己画的板子?

使用特权

评论回复
18
zy7598865|  楼主 | 2012-7-29 23:51 | 只看该作者
板子是别人画的,不过板子管脚的配置是根据生成IP核的UCF来做的

使用特权

评论回复
19
zy7598865|  楼主 | 2012-7-29 23:53 | 只看该作者
猴哥指点指点啊

使用特权

评论回复
20
qingniao929| | 2012-7-30 16:34 | 只看该作者
板子上DQ, DQS走线是怎么走的,你DDR2的时钟跑的多少,把频率降到最低试一试

使用特权

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

本版积分规则

1

主题

167

帖子

1

粉丝