请教一个DDR2无法正常precharge的问题
时间:12-12
整理:3721RD
点击:
手里有一颗芯片,内有DDR2控制器,分别做了两个板,外接同样型号的Hynix的DDR2,走线也很类似,配置程序也完全一样,但是现象很奇怪
在其中一个板上一切正常,SVCC 1.8V,时钟到400M无压力,很稳定
另一个板现象就比较奇怪,最初表现如下:
bank0中任意写一个row后,再读任意其它row,会发现所有row都一起变化,现象稳定,一个row内的读写则正确
bank2~bank7的表现和bank0一样
bank1则能区分对不同row的操作,不会出现所有row同时变化的现象,但是快速读写就不稳定了
从现象上看怀疑过两个原因
1.不能正常precharge
2.DDR2坏了,一个bank中只有一个row是好的
于是做了如下实验:
step 1.bank0 row0写0xffff0000,断电并迅速上电
step 2.bank0 row1写0xaaaa5555,再断电并迅速上电
step 3.读bank0 row0,读出的值能看出0xffff0000的痕迹,再断电并迅速上电
step 4.读bank0 row1,读出的值能看出0xaaaa5555的痕迹
实验结果看来bank中的row应该是好的,只是在上电过后只能打开一个row
也试过用控制器直接发precharge的命令,没有效果
板子长时间放置后会发现数据有少量丢失(控制器有发Auto Refresh的命令)
因此判断应该是控制器发的precharge命令没有被正确执行
测量过各信号的波形,看着都还不错,想不通到底什么原因导致了不能precharge的问题,真心求教各位大牛!感谢万分!
在其中一个板上一切正常,SVCC 1.8V,时钟到400M无压力,很稳定
另一个板现象就比较奇怪,最初表现如下:
bank0中任意写一个row后,再读任意其它row,会发现所有row都一起变化,现象稳定,一个row内的读写则正确
bank2~bank7的表现和bank0一样
bank1则能区分对不同row的操作,不会出现所有row同时变化的现象,但是快速读写就不稳定了
从现象上看怀疑过两个原因
1.不能正常precharge
2.DDR2坏了,一个bank中只有一个row是好的
于是做了如下实验:
step 1.bank0 row0写0xffff0000,断电并迅速上电
step 2.bank0 row1写0xaaaa5555,再断电并迅速上电
step 3.读bank0 row0,读出的值能看出0xffff0000的痕迹,再断电并迅速上电
step 4.读bank0 row1,读出的值能看出0xaaaa5555的痕迹
实验结果看来bank中的row应该是好的,只是在上电过后只能打开一个row
也试过用控制器直接发precharge的命令,没有效果
板子长时间放置后会发现数据有少量丢失(控制器有发Auto Refresh的命令)
因此判断应该是控制器发的precharge命令没有被正确执行
测量过各信号的波形,看着都还不错,想不通到底什么原因导致了不能precharge的问题,真心求教各位大牛!感谢万分!
有逻分嘛?量一下第二次ROW ACTIVE的波形看看。
看看A10是不是虚了,row地址覆盖一下A10,再进行你上面的实验
示波器分别测量各波形正常,暂时没有几个波形同时测,因为比较密,又怕飞线出来影响信号
A10是不是虚了不好判断,只能测到中间的排阻是好的,但是DDR2是BGA封装,不确定PIN上也是好的,但是应该不是这个问题,因为实际上这个板上有两套SOC+DDR2,两套同样的现象,另一片是winbond的
另外,就算A10虚焊影响的应该也只是precharge all还是single bank precharge吧,无论是哪个总应该成功一个吧
硬件连接是否正常,BA0~BA2有没有短路或者开路,用万用表测量一下ESD二极管是否存在;
不同厂家的DDR2的auto refresh 所需要的时间可能不一样,有些90ns,有些110ns,你确认一下
实在不行把所有的timing参数设到最大;
有没有试试auto precharge?
另外,如果aref会丢数据,可以试试sref,看看是不是也有问题。