请教调试DDR内存的

qiushui007   2007-12-6 10:55 楼主
示意图在附件内

最近做的一个项目,内存控制器与内存同步,为131.072MHZ的频率,大约是DDR266,选择了一块三星的内存颗粒k4h561638h-ucb3@cl=2.5  默认频率是DDR333,把频率下降到B0模式就是DDR266@CL=2.5

一开始都很顺利,直接使用了一些默认的参数工作的也不错,所以就懒得动了
但是当CPU第二个核心工作起来后总线负载一大就经常出现莫名其妙的CRUSH。分析原因是内存参数不合理。

我想请教一下怎么才能调出最为稳定的参数

DDR内存参数我个人把他们理解为两部分~首先是直接给DDR的一些参数,就是类似CL啊,tRC,tWR,另外一部分是用于调整由于DDR到控制器之间的fly time造成的延时,也就是我附件中的DDR延时补偿电路的参数。

我的第一个问题是:
到底哪部分的参数对DDR的稳定影响更巨大?




我的时钟是131.072mhz    tClk大约为7.6293945ns
看B0模式手册CLK要求为min 7.5ns   max12ns(CL=2.5),我的时钟是满足要求了的
手册上一个rTCD的参数,要求为min 20 ns  无max。那么20/7.6293945=2.62144    寄存器里一般的数值单位是以tClk为单位,也就是我至少要写3
那么为了追求稳定我一般写到多少比较合适??比如写5?6?7?

再比如一个tRAS的参数 要求为min  45ns   max70k ns
至少要写的参数是45/7.6....=5.89    就是至少要写6,最多写70000/7.6....=9210.5  也就是最多最多写9210
那么一般重视稳定刚开始调试的时候这类参数我应该设置在一个什么范围合适??我目前都是取的min 再加2~3左右


我的第二个问题是:
延迟补偿电路的4个参数如何调试?

如我附件里的图所示MC_DC21 22是读延迟补偿参数 mc_dc15 24为写延迟补偿参数
那么我怎么调出一个合适的参数呢??

根据一些第三方资料,我尝试了一下,先固定下4个可以正常读写的参数
然后把3个固定下来,其中一个从最小值变到最大值,采用大段内存存读看看是否正确的方式,这样得到的数值会是一段窗口,从不行~~~到行~~~~再到不行
之后把行的那部分参数取平均值。

但是按照这种方式测试出来最后发现效果非常非常糟糕。这也不奇怪,分别4个独立的测试得到的平均值未必综合起来就好用。
我想请教一下有没有什么更好一些的调试手段,比如如何让2个读两个写参数联合在一起调整,或者4个参数怎么才能综合到一起。


如果原因技术交流的请加我qq81687396,但是我不见得有能耐”交流“什么呢~~如果愿意指教一二的请不要吝啬。不过加的时候请写名来意。











回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复