微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > CIVGX FPGA QuartusII 11.1 DDR2调试总结。快被Altera折磨疯了。

CIVGX FPGA QuartusII 11.1 DDR2调试总结。快被Altera折磨疯了。

时间:10-02 整理:3721RD 点击:

最近调DDR2,之前调DDR2-533调通了,实际只跑在125M。
后来换了一批DDR2-800,同样的逻辑,反而不能正常读写了?
例化IP的时候,我参数是按照DDR2-800重新例化的。
请问会不会是因为DDR2-800太快了,跑在125M太慢,反而跑不对导致呢?
(PS:使用的是Altera的IP )

yes, it is

上面的小朋友是什么意思?

是不是你们这批DDR2-800的型号,不支持你原先设置的CL值了。

有频率下限的。低于这个频率,器件不能正常工作

之前调通的是Micron的DDR2-533
现在用的是SamSung的DDR2-800
而我需要的都是工作在125MHz。CL那些参数我都调了。没什么用。写的时序就和预想的不一样,导致读也读不对了。
之前的Micron我抓信号发现是复位后local_ready拉低,直到初始化结束才会拉高。
现在的Samsung却是复位后local_ready就拉高了,这里就觉得不正常。

恩,例化IP的时候确实是,设为100MHz就报错,提示最低工作在125MHz。

已解决,写上来和大家分享一下。
最初调DDR2是用的Altera的开发板,CIVGX150的FPGA,由于是CIVGX150的FPGA只能使用最新的QuartusII10.1,当时调DDR2的读写都没问题了。
我们生产的板子用的是CIVGX50的FPGA,QuartusII10.1根本不支持,所以被迫又装了11.1,在11.1下调我们板子上的DDR2,怎么也调不通,我都快疯了。local_ready信号本来该初始化结束才拉高的,但是我抓到就是复位后根本不管初始化是否结束就马上拉高了。
后来发现一个细节,之前10.1下例化的IP只占3000多的资源,11.1下例化的IP居然占5000多的资源。我实在没有办法,只有胡乱的试了。
于是我在9.1下重新例化了一下这个IP,参数什么的一点也不动,再重新编译,IP占用的资源降为3000多了,居然读写就正常了。
花了我将近一个星期的时间。我那个郁闷。对Altera强烈不满啊。之前调的时候就发现文档里有的时序图都没画对,这也就罢了,可是最新版本的软件例化的IP居然不好使,我就实在对他很不信任了。
10.1和11.1都是俊龙的人给的,俊龙的工程师说从10.1开始QuartusII有较大变化,是基于什么什么平台开发的。(说了一大堆,我不关心也就没仔细听)。之前用10.1的时候我们就经常发现,同一个工程不做任何改动,这次编译通过JTAG能正常下载,可能下次编译就是下载不成功(在他的开发板上调试遇到的)。问俊龙的人,说不出个所以然,就说10.1是第一个版本,问题多是正常的,让我们用11.1,这会用11.1又出这么个问题。
我今天调试的时候还遇到个问题,我读出来的数据会和期望的数据作个比较,如果相等就认为读到的值是正确的,不等就有一个计数器计有多少个读出来的数据不对,我抓信号发现读出来的数据明明就是对的,但是抓到那个错误计数器就是一个劲的计数啊。无奈我什么也没动又重新编译了一下。这回错误计数器又不计数了。
我的工程很简单,就是测试DDR2的读写,时序分析是满足的。

我需要这个东东,感谢

我也用Altera的DDR2 IP,遇到一个问题,不知道小编有没有遇到:在软复位的时候(系统不掉电),DDR2有一定概率初始化不成功!

我现在碰到的问题是:初始化后,根本就没有DDR2的指令输出?

哎,麻烦

10.0和10.1的对状态机综合也有问题。

好难啊


     小编,你好。
     最近我也在调试DDR3的工程。用的是samsung 的M471B5673FH0-CF8,FPGA芯片是stratix IV EP4SE820F43,quartus版本是10.1SP1。控制器是DDR3_controller_ALTMEMPHY,目前综合完跑程序都不成功。也不知道问题出在哪里?难道是参数设置的不正确?对于参数设置的问题,是不是得严格按照DDR3的芯片资料严格设置?但是有些选项,比方说是在PHY、Controller setting中的选项,哪个该enable,哪个不enable,会对整个工程造成什么影响,不太很清楚(也看了altera的文档)。   
    还有就是在DDR3_controller_ALTMEMPHY中Board_setting中,这些参数是从哪里得到?
   后来打算的进行系统级仿真,搭建的系统在生成过程中会提供DDR3 的仿真模型,但是在model_sim中发现CPU对ddr3发出读请求,DDR3的模型未产生反应。想问下小编在进行仿真的时候,是怎么进行的?需要注意些什么?
   望小编能指点指点............不想在煎熬了..

看来调试ddr ip的时候大家都遇到了各种奇怪问题。
我现在也遇到了一个奇怪的问题,用的是ddr high performance controller,带altmemphy的,mem model是根据实际用的ddr芯片设的参数,现在跑仿真的时候local_init_done信号出来的非常慢,要4000us,而我在生成的时候quick carlibration已经设了。另外就是仿真时RAS to CAS延迟非常大,要12个cycle,非常无语。打电话给骏龙,那边的建议就是更新版本试试。
不知楼上各位对这些问题有没有什么经验。
PS, 我用的quartus ii版本是9.0的



   如果是跑仿真的话,注意在综合(仅仅是综合,不要布局布线)后,进行功能仿真的话,需要在第一次调用modelsim之后,把rtl中的hex和mif文件拷贝到../rtl文件夹中(新建rtl,无非就是内部需要初始化文件,路径的问题),就可以进行功能仿真了,用脚本跑什么的都是一样。

altera跑ddr貌似很难调

新手上路,请问你们用的是DDR2是硬核还是软核啊?

我也在调ddr2,ep4cgx75的fpga片子,mt47h64m16hr-3的ddr2片子,用的是quartus ii 12.0的环境,调用ddr2ip核的时候,发现没有ddr2这个型号的controller,那如何办啊?还有小编能发下你的测试代码吗?谢谢!

各位大侠,我在仿真DDR2的时候发现local_ready,local_init_done信号都是一直低的,请问是什么原因呢?

DDR调试过程各种问题啊。后面也要调试这个,担心啊!

where is the license.? cannot find

谢谢分享!

感谢小编分享



    nice share


小编你好,首先非常感谢你的经验分享。其次,我目前也在做altera的DDR3的读写操作,遇到了很奇怪的问题
首先介绍下背景,我调用的是DDR3 controlller with uniPHY的ip,使用了里面的硬核,使用的是micron的DDR3芯片,参考时钟125,memory时钟350.然后突剩下该配置的都配置了下,但是没有配置电气参数,就是board setting那一类的。
然后问题来了,calibration有三个选项,skip、qiuck和full。刚开始我选择的是skip,也就是不做校验。然后给了时钟和复位以后,上来avl_ready就拉高了,和小编一样。然后过了一段时间,初始化完成了,于是我burst写入数据,发现dq有我写的数据,但是读数据,却发现虽然有avl_rdata_valid信号拉高几个clk,但是avl_ready始终没有变低,同事也没有数据出来,dq也没有数据。
于是我把calibration改成了qiuck,这个时候再仿真,我发现过了很久,最后local_cal_failed却拉高了,也就是我初始化没有成功。我观察了初始化的过程,ras_n,cas_n,we_n的命令确实是按照ddr3的初始化过程来的,于是我抓狂了。
能否帮我解决下难题。主要是读为什么会没有数据。读写的操作我是按照emi的那个data sheet来写的,谢啦!

fighting

你可以把你写的ddr2读写的程序给我发一份吗?最近我也在调试ddr2,发现读写数据有点不一样,也不知道怎么回事?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top