MIG IP核对DDR3的输出时序分析记录

这篇博客主要分析一下复位的时候MIG IP核都对DDR3干了些什么。

首先大家可以着重关注RAS#、CAS#、WE#这三个信号,只有当这三个引脚同时被拉低时BA2:0上的信号才会被DDR3判定为MR命令。

第一步:上电后RESET先拉低,期间CKE也拉低,当RESET拉高后过一段时间CKE再拉高。

上电后RESET#信号需要保持低电平200us,CKE需要在RESET#拉高之前被拉低,且最少维持10ns; 在RESET#被拉高之后,需要等待一段时间后CKE才能被拉高。在这段时间内,DRAM会开始内部初始化;

在CKE拉高之前,时钟(CK、CK#)必须开始且稳定至少10ns或5个tCK,此外在这个期间必须标记一个NOP或Deselect命令。在RESET#拉高之后当CKE拉高,CKE就必须持续拉高至初始化过程结束; 在CKE拉高之后,在发送第一个MRS命令之前,需要等待tXPR;

第二步:通过BA引脚向DDR3发送MR指令。

当CS#、RAS#、CAS#、WE#四个引脚全部拉低时,BA上的数据才会被DDR3识别为MR(Mode Register Set模式寄存器配置指令)指令。指令发送的先后顺序为MSR2、MSR3、MSR1、MSR0,分别对应BA2:0分别等于2'b010、2'b011、2'b001、2'b000(也就是对应的二进制数)。与此同时地址线上的数据(图中0x0008就是要写入MSR2寄存器中的数据)

MSR2配置时地址线14bit对应:

|----|----|----|----|----|---|---|---|---|---|---|---|---|---|---|
| 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 保留 ||||| RTT_WR: Dynamic On Die Termination during Write 写操作期间的片内终端阻抗 ||| 保留 |||| CWL: CAS Write Latency CAS延迟 |||

MSR3配置时地址线14bit对应:

|----|----|----|----|----|---|---|---|---|---|---|---|------------|-------|-----|
| 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 保留 |||||||||||| MPR Enable | MPR位置 | MPR |

MSR1配置时地址线14bit对应:

|----|----|----|----|----|---------|---------|----|---|---|------------|---|---|-----|----|
| 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 保留 ||||| RTT_NOM | RTT_NOM | AL | 输出驱动 || DLL Enable | ODS || DLL | 保留 |

MSR0配置时地址线14bit对应:

|----|----|--------------|----|----|---|-----------|---------------|---|---|---|---|---|---|---|
| 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 保留 || Precharge PD | Write Recovery ||| DLL Reset | CAS Latency高位 | CAS Latency低位 ||| Burst Type || Burst Length ||

第三步:发送ZQCL(ZQ Calibration Long,阻抗长校准指令,左边蓝框)以及一个NOP空指令(右边白框)

阻抗校准指令的作用是校准DDR3内部:

  1. 输出驱动阻抗(Output Driver Impedance)
  2. ODT终端阻抗(On Die Termination)

然后校准指令有两种:ZQCL(阻抗长校准)和ZQCS(阻抗短校准),前者在复位的时候执行(时长512个时钟周期(约640ns),是核心校准),后者在正常运行期间周期性执行(时长64个时钟周期(约80ns),主要进行微调)。发送ZQCL命令后DDR3会比较ZQ引脚上接的240Ω电阻来对内部的输出驱动阻抗 Ron和ODT终端阻抗 RTT,通过内部电路设置这两个电阻以及标定IO上的MOS导通电阻什么的。(所以这个外接240Ω电阻精度一定要高)

ZQCL的命令为:CS# = 0、RAS# = 1、CAS# = 1、WE# = 1,同时BAQ全0、地址线的第10位为1其余为0。

而NOP的指令为CS# = 0、RAS# = 0、CAS# = 1、WE# = 1,同时BA和地址线全0

为了方便大家阅读接下来的仿真图中我把信号线改了个名字

第四步:现在开始进入物理层初始化阶段,这个阶段主要包含读平衡和写平衡

)环节。

写平衡期间MIG IP核会持续翻转DQS,同时DDR3向DQ上发送相位反馈数据,用来告诉MIG IP核DQS相对时钟边沿是超前还是落后,这里使用示例工程的缘故DQS上的数据是固定的。

相关推荐
艾芯微科技1 小时前
高充放电流锂电充放 SoC:ETA9885E10,便携储能、小移动电源 BOM 选型笔记
网络·单片机·嵌入式硬件·集成测试·51单片机
2401_868534781 小时前
数据交换方式
服务器·网络
艾芯微科技1 小时前
钰泰 ETA6973PQ3Y|QFN3×3 2A 同步降压 Buck,I2C 可配置多档输出,动态调压 PMIC
网络·单片机·嵌入式硬件·fpga开发·集成测试·51单片机
默|笙1 小时前
【Linux网络】_udp_socket(认识)
linux·网络·udp
2401_868534782 小时前
以太网物理层标准
服务器·网络
2601_951615202 小时前
网站模板 网站网页模板下载
前端·网络·html
云边云科技_云网融合3 小时前
从 POS 机到访客 Wi-Fi:零售门店安全建设的完整解法
服务器·网络·数据库
天行健,君子而铎3 小时前
知形-数据库风险监测系统:非侵入式、可溯源、差异化的数据库安全方案
网络·数据库·安全
kyle~3 小时前
Linux --- Socket 用户进程与内核网络协议栈之间的统一接口
linux·arm开发·网络协议