This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

自制6678板子 Leveling通过 但是写入数据失败。

Other Parts Discussed in Thread: CDCE62005

TI的工程师 您好

目前手里一块自制的6678的板子,DDR芯片为K4B2G1646C-HCH9(与6678EVM相同),时钟芯片CDCE62005,输出CORECLK=100MHZ DDRCLK=66.667MHZ,其他时钟暂时关闭,CVDD使用模块电源,固定1.1V供电,加载的GEL文件为EVM6678l.GEL。registe cal表格中的寄存器数据没有改变,因为使用的DDR颗粒与初始表格完全相同(64bit带ecc),PHY cal表格数据根据自己的走线进行了相应的修改,目前发现了以下问题:

1、DDR时钟最高设置为1033MHZ (PLLM=93 PLLD=2),再高的话就会出现“DDR test fail”提示,说明GEL文件中DDRtest测试没有通过,通过VIEW看DDR中的数据也都是乱码,但是观察0x21000004寄存器数据为0x400000004,说明Leveling通过了。

2、PLLM=51 PLLD=1时 倍频为(51+1)/((1+1)*2)=13倍,GEL正常加载,没有问题。但是当PLLM=12, PLLD=0时候也是倍频13倍,GEL文件不能正常加载,出现“向0x80000004写入数据失败的提示”,同样的频率,PLL设置不同为什么会出现不一样的现象?

3、EVM中ECC芯片没有焊接,但是我的板子上焊接了。我从register cal表格中可以找到这些寄存器的值,但是6678GEL中只是定义了这些数据,但没有使用它们,求问使用ECC相比于没有ECC在设置的时候需要多设置哪些东西,如果我焊接了但是不使用ECC是否可以,这时的DDR寄存器设置是否就与没有ECC相同了

希望有专家能帮忙解决下,谢谢!

  • 首先,C6678不支持CVDD固定电压,在DDR初始化之前,CVDD必须根据VCNTL[3:0]的输出控制被调整到要求的电压。

    (PLLM=51 PLLD=1)和(PLLM=12, PLLD=0)不能得到相同的倍数吧?

    如果寄存器配置没有使能ECC,则ECC存储器焊不焊对你的测试没有影响。

    另外,C6678上的ECC功能有诸多限制,如必须按64-bit对齐访问等,所以不太实用,一般不建议用。TI 下一代,KeyStone 2系列,在这方面有改进。

  • Brighton Feng  你好!非常感谢你的答复

    首先这个不支持固定电压是什么意思呢?是CVDD如果使用固定电压会出现什么问题么? 目前我的板子虽然使用了固定电压的CVDD,但是只要DDR速率设置在一定的频率下,读写内存的操作完全正常(DSP其他部分还没有使用),我自己编写了一个从0x80000000开始写入4000万字节,然后再读出来判断是否读写相同的程序,这个程序大概1s运行一遍(1分钟52次),这个程序连续运行了半个小时也没有问题。

    第二,我的DDR频率计算确实有问题,感谢提醒。经过我的测试之后发现PLLM PLLD设置不同值,只要最后倍频系数一样就不会有影响。但是通过实验发现,我的倍频系数是在某些区间内正常工作的,具体细节被我写在附件内。我想问为什么会出现这样的结果呢?

    还有Smartreflex是根据运算量实时调整CVDD的值么? 我看社区有人回复说Smartreflex只在上电复位之后配置一次。

    麻烦您帮忙解答下,谢谢!

  • CVDD固定用1.1V不能保证所有器件都能稳定工作,而且对芯片的功耗,可靠性和寿命都会有影响。

    C6678的CVDD确实只在解复位的时候调整一次。

    C6678 DDR3的速率范围是800MTS~1333MTS. 配置PLL改变速率的同时也需要修改其它速率相关的寄存器,比如刷新率...

    你可以用下面链接中提到的测试程序测试来做严格的测试:

    http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx?pi2132219853=1

  • 你好 谢谢你的回复

    DDR的寄存器调整我都会,但是如果我的DDR频率不在800 1066 1333 1600等速率的时候,寄存器的值应该如何调整呢?从我的附件也可以看出来,我的频率的设置是在一个区间以内都可以使用的(我的刷新率等寄存器设置是在1333MHz的,依据register cal excel)

    对于那个测试文件,我使用了其中的memory test历程跑了一下,最后提示我13 passed 0 failed 这样就是通过了么? 在这个历程中我发现DDR时钟的频率可以设置到667MHz(文件默认设置就是10倍),但是我的主频却不能设置为10倍频,只能跑500MHz(以上的13passed就是在核心频率500MHz测试的),如果再高就会出现Core 0 Power failed提示,这是因为CVDD不正确吗?

  • 测试程序的说明文档在.\docs目录,参考测试结果在\auto_test\C6678_ref_result目录中。

    DDR的配置代码在.\common\KeyStone_DDR_Init.c的C6678_EVM_DDR_Init(float clock_MHz,)中,代码中用输入参数clock_MHz计算所有跟时钟速度相关的参数。

    核不稳定最可能的原因就是CVDD,请首先确保CVDD满足要求。

  • 谢谢!非常感谢的帮助

  • Brighton Feng 您好!

    我是自制的6678板子,DDR3 leveling一直不通过。

    测试CVDD显示的是1.19V,可能是 CVDD 过高的原因造成的么?

  • 有可能,DDR初始化要在CVDD根据VCNTL[3:0]调到期望值之后再做。

  • 你好,我自己做的C6674的板子,接的是16位DDR3,我想问一下,16位数据线如何做Leveling Initialization?没有用的那几个字节Spreadsheet提供的工具计算时,长度怎么填?谢谢!