新闻  |   论坛  |   博客  |   在线研讨会
实现DDR2
xie0jing0 | 2010-04-09 22:35:29    阅读:4043   发布文章

成功在板子上实现了ddr2读写,记录下过程
首先使用MIG向导来产生DDR2模块。我采用的时钟是150Mhz单端时钟,采用了镁光的256M内存。原来直接用的金士顿的内存,一直都调不通,后来发现对于不同颗粒的内存需要在芯片选择时选自定义,然后手动输入各个时序参数,还要保证管脚的一致性。感觉到硬件的兼容性真是和电脑差的远啊。自己就偷懒直接找了个镁光的条子插上去了。在向导中,其他的选项一般都默认,不同的是选择不用DCM时钟。注意在选取IO bank时要选择自己用到的bank,不然会出错。产生好DDR2核后,用自己板子的IO约束文件,把核再更新一下,使DDR2满足自己板子的约束。DDR2核就完成了。
之后在example文件夹中,利用create_ise.bat产生ISE工程文件。打开工程,开始对文件进行修改。主要是两部分,时钟的加入和复位信号处理。时钟DDR2核在我们的设置下默认需要150M,150M 90°,75M,200M,4路时钟。200M是提供给idelay模块的。我采用一个pll将输入晶振倍频输出200MHz,另一个pll由输入晶振时钟产生150M,150M 90°,75M三路时钟信号,供给ddr2驱动控制部分,其locked输出就作为系统中的DCM locked输入。我采用低电平的按钮输出作为reset信号,在程序中相应的加入0.1s延时去抖动模块,输出作为pll的reset信号端。这些程序都加载在ddr2_infrastructure文件中,作为整个模块的对外接口处理。
还需要将系统的initial、error信号连在两个LED上显示程序的正常运行与否。最后,修改clk、reset、led等的管脚约束。这样一个DDR2控制模块就成功了,下载在板子上,两个灯在reset无效后熄灭,程序OK!
 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
zhangyuanjia  2011-02-10 14:16:27 

你好,你这个项目的过程和我现在做的是一样的,我在利用mig生成的一个ddr控制器的工程,将里面的testbench的内容改成可综合的代码,实现自己要求的功能:将一幅图像读到ddr当中,我在利用原来的引脚的过程中,修改原来的引脚的时候出现的问题我一直搞不定,希望能得到您的帮助,先在这里谢谢你了,我的QQ号:114740939 我是深圳大学的,希望您看到后能和我联系下吗,真诚的希望能得到您的帮助,谢谢。

avlee  2010-06-02 09:09:14 

您好,我最近也在使用ml506板实现这个ddr2的核,还没有成果,希望和blog主交流~~

推荐文章
最近访客