这个途中的DDR_CK 和DDR_DQS trace是指板上的ck布线长度?
还有图上的RD_DQS_SLAVE_RATIO、WR_DQS_SLAVE_RATIO、FIFO_WE_SLAVE_RATIO、PHY_CTRL_SLAVE_RATIO等值如何与上图表里的值对应?
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.
| 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这些值怎么得到的?
首先,通过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运算既可以。