目录
DDR3 SDRAM 与 DDR2 SDRAM 区别
前言
本文通过对比两款镁光 DDR3 SDRAM 和 DDR2 SDRAM 芯片(型号分别为:MT41J128M16HA、MT47H128M16RT)手册来对比 DDR3 SDRAM 与 DDR2 SDRAM 的区别。
注:后文 DDR2 SDRAM 简称为 DDR2,DDR3 SDRAM 简称为 DDR3。
概述
- DDR3 外部接口时钟频率变为内核时钟频率 4 倍,实现 8 倍预取
- 新增复位和 ZQ 校准引脚
- CL、AL 时钟个数增加,并新增写入延迟参数 CWL
- 增加 Write leveling 功能,用来解决 fly-by 架构导致的 skew 问题
- 增加 MPR 模式寄存器用于读出预设数据,用于系统校准,默认输出 b‘01010101
- RDQS 引脚变为 TDQS 引脚,功能上有所区别
- RDQS(Redundant Data Strobe):用于 x8 的 DDR2 芯片,RQDS 除了提供负载,还能输出 strobe,估计设计 DDR3 时发现这个功能多余,所以简化为 TDQS,只剩下负载功能
- 增加动态 ODT 功能
引脚及定义
名称 | 类型(对于 SDRAM) | 定义 |
---|---|---|
CLK,CK# | Input | 差分时钟 |
CKE | Input | CLK 时钟使能,高有效 |
CS# | Input | 片选信号,低有效 |
CAS#,RAS#,WE# | Input | 命令信号,同 CS# 组成不同操作命令 |
RESET# | Input | 异步复位信号 |
DM | Input | 写数据掩码,高有效 |
ODT | Input | On-die temination,高有效,但可以通过模式寄存器禁用 ODT 功能 |
BA[2:0] | Input | bank 地址 |
A[14:0] | Input | ① 激活命令时,A[14:0] 作为行地址;② 读/写命令时,A[9:0] 和 A[11] 作为列地址;A[10] 用来指示是否使能自动预充电(高电平有效);当 MR0[1:0] = 01时,A[12] 用作 BL8 和 BC4 突发长度选择;③ 预充电命令时,A[10] 高电平表示对所有 bank 进行预充电,低电平表示只对 BA[2:0] 指示的 bank 进行预充电; ④ 加载模式寄存器命令时,A[14:0] 用来表示操作码 |
x16: DQ[15:0]; x8: DQ[7:0]; x4: DQ[3:0] | Inout | 数据 |
DQS, DQS# | Inout | 数据选通信号,与读数据边沿对齐,与写数据中心对齐 |
TDQS, TDQS# | Output | Termination data strobe,提供额外终端电阻输出;TDQS 和 DM 引脚共用,TDQS# 引脚是独立的,所以使能了 TDQS后就不能用 DM |
VDD | Supply | 芯片电源 |
VDDQ | Supply | DQ 电源 |
VREFCA | Supply | 控制、命令、地址信号参考电压 |
VREFDQ | Supply | 数据信号参考电压 |
VSS | Supply | 芯片地 |
VSSQ | Supply | DQ 地 |
ZQ | Reference | 通过 240Ω 高精度电阻 RZQ (±1%)连接 VSSQ,用作 output drive calibration |
命令真值表
模式寄存器
MR0
Burst Length
支持 BL8、BC4 两种突发长度
- 当 M1-0 = 00,固定为 BL8
- 当 M1-0 = 10,固定为 BC4
- 当 M1-0 = 01,可在发送读/写命令时根据 A12 动态选择 BL8(A12 = 1) 或者 BC4(A12 = 0)
Burst Type
DLL RESET
Write Recovery
- 用于设置自动预充电的写操作写完最后一个数据到自动执行预充电命令间的延时
- WR(cycles)= ROUNDUP { tWR (ns) / tCK (ns)},向上取整
Precharge Power-Down
设置 DRAM 进入节电模式下 DLL的状态以及退出节电模式的快慢
CAS Latency(CL)
支持配置 5-14 个 CK 时钟周期延迟
MR1
DLL Enable/Disable
-
若要进行 DDR3 正常操作,必须在上电初始化时使能 DLL,并进行 DLL 复位,具体时序见 “初始化时序” 章节
-
若 DLL 已使能,则进入自刷新模式(self refresh mode)时,会自动禁用 DLL,退出自刷新模式后自动使能 DLL
-
禁用 DLL 时,CL 和 CWL 只支持设置为 6
-
禁用 DLL 会影响 RL 和 tDQSCK,DLL-off 的 tDQSCK 会远大于 DLL-on 的 tDQSCK
- DLL-on:RL = AL + CL
- DLL-off:RL = AL + CL -1
Output Drive Strength
- 支持 RZQ/6(40Ω [NOM])和 RZQ/7(34Ω [NOM]),主要设置为 RZQ/7(34Ω [NOM])
- RZQ 阻值由 ZQ 和 VSSQ 引脚间的高精度电阻决定,固定为 240Ω ± 1%
Output Enable/Disable
- 禁用输出时,所有 DDR3 的输出(DQ, DQS, DQS#)均为高阻态
TDQS Enable
- 当一个 DDR 控制器连接不同型号 DDR(例如 x4 和 x8 DDR) 时,如果没有 TDQS 这功能,DQSa 和 DQSb 的负载将会不一样,这样会造成系统工程师在 SI 设计上的一大挑战。
-
Termination data strobe(TDQS)只支持在 x8 DDR3 SDRAM 下使能,x4 or x8 DDR3 必须禁用 TDQS
-
DQS 和 DM 引脚共用,所以使能了 TDQS后就不能用 DM
On-Die Termination(ODT)
-
RTT 终端电阻作用于 DQ,DM,DQS,DQS#,TDQS,TDQS# 引脚
-
RTT 支持 RZQ / n(n = 2/4/6/8/12,RZQ = 240 Ω)
-
与 DDR2 不同,DDR3 ODT 必须在读操作前禁用,直到读突发结束
-
DRAM 初始化且校准完成后,RTT,nom 除了读操作和自刷新模式下,其余都允许。但是写操作使用动态 ODT(RTT(WR))
-
DLL 禁用模式下,ODT 无法使用
-
ODT 引脚控制 ODT 功能开关,模式寄存器控制 RTT 电阻状态
-
ODT 又分为同步 ODT 模式和异步 ODT 模式。只要DLL处于开启且是锁定状态,就处于同步ODT模式。
同步 ODT 模式时序
Write Leveling(写入均衡)
在 DDR2 的架构下,信号 CLK/CMD/ADD 从 MC 用 balance tree(T 型拓扑)的方式,送到每颗 DRAM,所以每颗 DRAM 接收到的 CLK/ADD/CMD 信号可由 PCB layout 走线的技巧来得到相同的延迟,再控制 DQ/DQS PCB 走线长度,这样就能符合 tDQSS、tDSS、tDSH 的要求。
由于 balance tree 拓扑结构的 SI (Signal integrity) 较差,不利于高速应用。 因此从 DDR3 开始,CLK/CMD/ADD 信号改用 fly-by 拓扑结构,而 DQS/DQ 信号依然是点对点的架构。如下图所示,共有四颗 DRAM 使用 fly-by 架构,CLK/CMD/ADD 信号从 MC 送出后,将先抵达第一颗 DRAM,再到第二颗、第三颗,最后才抵达第四颗 DRAM。fly-by 架构除了 SI 表现较好、较适合高速应用外,也可节省 PCB layout 的走线难度和面积。但 fly-by 架构会导致 CLK/CMD/ADD 信号到达每颗 DRAM 的时间都不同,这会造成不是每颗 DRAM 都符合 tDQSS、tDSS、tDSH 要求。
Write leveling 就是用来解决 fly-by 架构导致的 skew 问题。系统 MC 在系统初始化时,先让 DRAM 进入 Write leveling 模式,DRAM 根据将接收到 DQS 上升沿时对应的 CK 时钟的状态反馈到 DQ 上并输出给 MC,MC 不断调整 DQS 输出延时直至 MC 接收到 DQ 由 0 跳变为1 时,表示 CK 和 DQS上升沿对齐。
如果 DRAM 颗粒的类型、信号线的长度、DRAM 颗粒间的拓扑关系都是固定的,那么控制器使用提前设定的参数,即可以保持 tDQSS,tDSS,tDSH 等时序参数,则无需 write leveling。
Posted CAS Additive Latency(AL)
- 支持 0,CL-1,CL-2 三个配置
MR2
CAS Write Latency(CWL)
-
DDR3 应该是为了更加精确控制读、写延时,所以将读数据延时 CL 与写入延时 CWL 分开设置了
-
支持 5/6/7/8/9/10 CK 六种配置
Auto Self Refresh(ASR)
- 使能 ASR 后,DDR3 自动根据实际温度切换 DDR 自刷新速率
Self Refresh Temperature(SRT)
- SRT 使能后,不管实际温度多少,直接强制使用 x2 自刷新速率
- SRT 和 ASR 不能同时使能
Dynamic On-Die Termination(ODT)
- 只有写操作时使用动态 ODT(RTT(WR))
- Write leveling 时动态 ODT 无法使用
MR3
Multipurpose Register(MPR)
- MPR 模式寄存器用于读出预设数据,用于系统校准,默认输出 b‘01010101
- 在发送读指令时,通过 A12 的值选择突发长度为 BL8(A12 = 1) 或者 BC4(A12 = 0)
MPR 时序
时序
初始化时序
- 电源稳定前,RESET# 要维持低电平,保证所有输出为高阻态;电源稳定后正式初始化之前,RESET# 必须至少维持 200us 的低电平
- CKE 至少先于 RESET# 置位前 10ns 拉低
- RESET# 置位后,等待 CKE 维持低电平 500us
- 输入信号要满足建立保持时间 tIS、tIH
- 采集到 CKE 为高电平后,等待 tXPR 时间后开始进行模式寄存器配置
- 配置 MR2 模式寄存器
- 配置 MR3 模式寄存器
- 配置 MR1 模式寄存器,包括使能 DLL 和 ODT 配置
- 配置 MR0 模式寄存器,包括复位 DLL(DLL 复位后需要等待 tDLLK 才能 lock)
- 发出 ZQCL 命令以校准过程电压温度 (PVT) 的 RTT 和 RON 值。在正常操作之前,必须满足 tZQinit
- 满足 tDLLK 和 tZQinit 时间后即可正常操作了
读时序
连续读
非连续读
读后写
读后自动预充电
写时序
连续写
非连续写
写后读
写后预充电
tWR 写恢复时间
输入时钟频率切换
在 Self Refresh 和 Precharge power-down 这两种模式下可以进行输入时钟频率切换
ZQ 校准
ZQ 是 DDR3 新增的引脚,该引脚通过 240Ω 高精度电阻 RZQ (±1%)连接 VSSQ,用作 output drive calibration。这个引脚利用内置的片上校准引擎(On-Die Calibration Engine,ODCE)执行一系列指令,以自动检测并调整数据输出驱动器的导通电阻和ODT(On-Die Termination)的终端电阻值,确保数据传输的准确性。
DDR3 定义了 ZQCL 和 ZQCS 两个 ZQ 校准命令,ZQ 校准时序如下所示。当系统发出这一指令后,将用相应的时钟周期(在加电与初始化之后用 512 个时钟周期,在退出自刷新操作后用 256个 时钟周期、在其他情况下用 64 个时钟周期)对导通电阻和 ODT 电阻进行重新校准。