在公司项目中,采用TI C6678 + 4片DDR3芯片(MT41K256M16HA 125IT)。在初始化DDR3时,按照文档《DDR3 Register Calc v4.xlsx》、《DDR3 PHY Calc v11.xlsx》计算的控制器参数以及Leveling初始值配置,发现DDR不能工作。
经过反复测试,发现将write leveling、gate leveling初始值调整以后,部分板子能工作;
例如,按照《DDR3 PHY Calc v11.xlsx》,我们计算DDR Leveling初始值为(WR0, WR1, …, WR7, GT0, GT1, .., GT7),我们在DDR3初始化值,配置Leveling初始值参数为:WR0+offset_wr, WR1+offset_wr, …, WR7+offset_wr, gate leveling initial value using GT0+offset_gt, GT1+offset_gt, …, GT7+offset_gt.。
对于下图的#1硬件,经测试offset_wr 在【32,96】,offset_gt 在【32,256】之间配置DDR,系统是正常工作的。
但是问题是,这个调整值的范围对不通的硬件电路板是不一样的。对于#2硬件,offset_wr 、offset_gt 取值范围与#1差别还比较大。
下图所示为两块硬件的调整值范围:
我们搞不清楚,为什么造成这种现象?到底是硬件问题造成的还是初始化驱动问题?
附件带上参数计算的表格。DDR3 PHY Calc v11.xlsxDDR3 Register Calc v4.xlsx
Shine:
请问#1硬件和#2硬件的DDR3 PCB布线是一样的吗?
gengfeng chen:
回复 Shine:
PCB是一样的,并且为同一批焊接产品,DSP和DDR都为同一批次
Shine:
回复 gengfeng chen:
如果降频能正常工作吗?请检查一下DDR3 PCB layout布线是否严格按照手册做的。
gengfeng chen:
回复 Shine:
多谢回读。DSP最高支持1.25G,运行在1G频率;DDR的输入时钟在400M,即只运行在DDR800模式下;经过测试,发现DDR在800、1066、1333模式下,现象是一样的。PCB Layout目前也没有发现问题,我们再确认一下。附上我们用工具软件测量的线长,也请帮我们检查一下,谢谢。
ddr线长.xls
Shine:
回复 gengfeng chen:
正在请e2e工程师确认,请关注下面我发的帖子。
e2e.ti.com/…/894786
Shine:
回复 gengfeng chen:
The C6678 is rated for up to DDR3-1333 operation with a 666MHz clock.Why are you running it so slow -with a 400MHz clock?Alternately, have you verified that you have a proper 400MHz clock using an oscilloscope?What are your PLL settings?
Please also provide a length matching report as shown in KeyStone I DDR3 interface bring-up Application Report (SPRACL8).
gengfeng chen:
回复 Shine:
多谢,我们把DDR运行在400MHz只是因为觉得频率低的话可靠性更高一点。我们PLL的配置函数见附件。
测试过400M时钟,没有发现问题。附带上DDR布线规则,PCB中DDR芯片序号为U32、U33、U61、U34、U35。SPRACL8_KeyStone DDR3 Length Rules .xlsx
ddr3.c
Shine:
回复 gengfeng chen:
请参考下面e2e的回复。
e2e.ti.com/…/3309279
gengfeng chen:
回复 Shine:
多谢,我们现在测试的硬件板子有20块左右;我再和我们的硬件工程师一起核对一下细节,有问题再麻烦您,多谢!
Shine:
回复 gengfeng chen:
好的,有问题可以再回复我或者e2e工程师,谢谢!