采用stk2 中的Memory_Performance例子程序
按照自己板子时钟修改,
内存条:金士顿的4G带ECC 型号: KVR16LSE11/4 金士顿官网只给出了部分参数
现在进行误码率测试时,发现在DDR3A上
在0x8000 0000—0xFFFF FFFF 2g全覆盖时,先写全0,再写全1,再写地址,反复进行了70次测试,出现如下两种错误:都是在19,20位出现错误
Memory pattern filling Test fails at 0xeb952f38, Write 0xffffffffffffffff, Readback 0xffffffffffefffff
Memory pattern filling Test fails at 0x800efe88, Write 0xffffffffffffffff, Readback 0xffffffffffe7ffff
现在硬件没法改,DQ19和DQ20这两根线长度大概10cm (硬件人员给的)
问在以下参数,我需要改那个参数能够保证ddr3时序正常?
DDR_cfg.busWidth= DDR_BUS_WIDTH_64;//DDR_BUS_WIDTH_32;
DDR_cfg.num_bank= DDR_8_BANK;
DDR_cfg.num_CE= DDR_1_CE;
DDR_cfg.pageSize= DDR_PAGE_SIZE_10_BIT_1024_WORD;
DDR_cfg.CL= DDR_CL_11;//DDR_CL_9; //CAS_latency
DDR_cfg.CWL= DDR_CWL_8;//DDR_CWL_7; //CAS_write_latency
DDR_cfg.drive= DDR_DRIVE_RZQ_OVER_7;
DDR_cfg.DDR_TERM= DDR_TERM_RZQ_OVER_4;
DDR_cfg.DYN_ODT= DDR_DYN_ODT_DISABLED;
DDR_cfg.round_trip_delay_ns= 2; //round trip delay in nanosecond
DDR_cfg.temperature= DDR_TEMP_OVER_85C;
/*—–DDR Timing values from DDR memory data sheet—-*/
/*the unit of following parameters is ns (nanosecond)*/
DDR_cfg.tRCD = 12;//13.5;
DDR_cfg.tRP = 11;//13.5;
DDR_cfg.tRAS = 35;//36;
DDR_cfg.tRC = 49.5;
DDR_cfg.tWR = 16;
DDR_cfg.tFAW = 30;
DDR_cfg.tRFC = 260;//160;
DDR_cfg.tWLO = 9;
/*the unit of following parameters is clock number*/
DDR_cfg.tCCD = 4;
DDR_cfg.tMRD = 4;
DDR_cfg.tDLLK = 512;
DDR_cfg.tZQOPER= 256;
DDR_cfg.tZQCS = 64;
DDR_cfg.tWLMRD= 40;
/*DDR3 timing parameters specified as maximum of nanosecond and number of clock*/
DDR_cfg.tWTR.nCK= 4;
DDR_cfg.tWTR.ns = 7.5;
DDR_cfg.tRTP.nCK= 4;
DDR_cfg.tRTP.ns = 7.5;
DDR_cfg.tXP.nCK= 3;
DDR_cfg.tXP.ns = 6;
DDR_cfg.tXPDLL.nCK= 10;
DDR_cfg.tXPDLL.ns = 24;
DDR_cfg.tXS.nCK= 5;
DDR_cfg.tXS.ns = DDR_cfg.tRFC+10;
DDR_cfg.tCKE.nCK= 3;
DDR_cfg.tCKE.ns = 5.625;
DDR_cfg.tMOD.nCK= 12;
DDR_cfg.tMOD.ns = 15;
DDR_cfg.tRRD.nCK= 4;
DDR_cfg.tRRD.ns = 6;
Allen35065:
K2和K1的DDR初始化流程不一样,你可以参考手册K2 DDR3初始化流程http://www.ti.com/lit/pdf/sprabx7
其中需要根据内存颗粒来决定参数,计算表可以在http://www.ti.com/lit/zip/sprabx7 下载;
你需要检查你的内存条上的颗粒是什么型号的,然后google下它的手册。