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.

AM335X的DDR3寄存器设置咨询



File:RatioSeed.jpg这个途中的DDR_CK 和DDR_DQS trace是指板上的ck布线长度?

还有图上的RD_DQS_SLAVE_RATIO、WR_DQS_SLAVE_RATIO、FIFO_WE_SLAVE_RATIO、PHY_CTRL_SLAVE_RATIO等值如何与上图表里的值对应?

  • DDR_CK和 DDR_DQS trace的单位是什么?

  • Trace Length (inches)
    Byte 0 Byte 1
    DDR_CK trace 1.1304 1.1304
    DDR_DQSx trace 1.0307 1.0306
    Intermediate values (per byte lane)
    WR DQS 1 1
    RD DQS 40 40
    RD DQS GATE 6C 6C
    Seed values used in CCS code
    DATAx_PHY_RD DQS_SLAVE_RATIO 40
    DATAx_PHY_FIFO_WE_SLAVE_RATIO 6C
    DATAx_PHY_WR DQS_SLAVE_RATIO 1
    Register value
    CMDx_PHY_CTRL_SLAVE_RATIO 80
    怎么没人回复?我是按照线路板上走线长度,单位吋,最后计算结果

    *Please Enter the PHY_INVERT_CLKOUT value (0 or 1) from the spreadsheet :
    0
    Please Enter the Seed RD_DQS_SLAVE_RATIO Value in Hex to search the RD DQS Ratio Window :
    0x40
    Please Enter the Seed FIFO_WE_SLAVE_RATIO Value in Hex to search the RD DQS Gate Window :
    0x6c
    Please Enter the Seed WR_DQS_SLAVE_RATIO Write DQS Ratio Value in Hex to search the Write DQS Ratio Window :
    0x1
    Please Enter the Seed PHY_CTRL_SLAVE_RATIO Value in Hex :
    0x80
    The ratio seeds for the DDR3 Software Leveling :
    invert_clkout =         0x0
    RD_DQS_RATIO_VAL =      0x40
    FIFO_WE_SLAVE_RATIO =   0x6C
    WR_DQS_SLAVE_RATIO =    0x1
    PHY_CTRL_SLAVE_RATIO =  0x80

    **************************************************************
    rd_dqs_range = 0
    fifo_we_range = 1
    wr_dqs_range = 1
    wr_data_range = 3

    Optimal values have been found!!

    ***************************************************************
    DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3B
    DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0xA2
    DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x48
    DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x7D
    ***************************************************************

    ===== END OF TEST =====
    DDR3 software leveling done!

    最后填写的phy参数是

    #define RATIO   0x40
    #define INVERT_CLKOUT  1//0x0
    #define RD_DQS   0x3B
    #define WR_DQS   0x48//0x85
    #define PHY_WR_DATA  0xa2//0xC1
    #define PHY_FIFO_WE  0x7d//0x100
    #define IOCTRL_VALUE  0x18B

    这些参数有很多值都可以正常运行,不知道填写这些是否恰当?我看那个pdf手册表中的值和下面填的值以及最后用的值都不一致,不知道为什么?

  • 还有填写的时候PHY_INVERT_CLKOUT用的0,最后程序中INVERT_CLKOUT必须用1,用0运行不了,不知道为什么,看am335的数据页也没找到答案

  • 你好,

    我想问下你表格里的RD_DQS_SLAVE_RATIO、WR_DQS_SLAVE_RATIO、FIFO_WE_SLAVE_RATIO、PHY_CTRL_SLAVE_RATIO这些值怎么得到的?

  • 表上面不是写了吗?是inches。

  • 首先,通过software leveling算法得到的结果值是一组优化值。你最初填写进去的值,是通过excel表,使用你的线长数据算出来的初值。

    最终的优化值和最初相比有差距或者差距很大是正常的。只要算法最终能够收敛,得到这个值就可以。如果都一样的,还有啥优化作用呢。就是为了得到最适合于你当前layout的这组优化值。

    另外,即使是同样的一组初值,得到的最终优化值,可能也会略有所差异,但是这个差异不会很大。

  • 这个INVERT CLKOUT的值,不是随便填的,是根据你的DDR的CLK线长和DQS线长之间的关系得到的。注意看excel表里面的注释:

    If (DDR_CK length) < (DDR_DQS length), then use 1.  

    If (DDR_CK length) > (DDR_DQS length), then use 0

  • 这些都是在excel表里面做算法得来了,你只需要把excel表中绿色的部分填对了,就可以得到这组初值。

    绿色部分包括,当前的频率、invert clock、CLK的长度、DQS的长度。

  • 绿色部分的内容我已经填好了,这个是根据手册和PCB布线的线长填写的。

    好的,之前没注意到下面的数值在我填写参数时候就变动了。

  • zuhua zhang 说:

    绿色部分的内容我已经填好了,这���是根据手册和PCB布线的线长填写的。

    好的,之前没注意到下面的数值在我填写参数时候就变动了。

    张工,您的板子上是DDR2,需要进行仿真,直接用excel运算既可以。