目录
DDR2 SDRAM 与 DDR SDRAM 区别
前言
本文通过对比两款镁光 DDR2 SDRAM 和 DDR SDRAM 芯片(型号分别为:MT47H128M16RT、MT46V32M16)手册来对比 DDR2 SDRAM 与 DDR SDRAM 的区别。
注:后文 DDR SDRAM 简称为 DDR,DDR2 SDRAM 简称为 DDR2。
概述
DDR2 与 DDR 最大区别在于接口时钟提升为 DDR 接口时钟的两倍,同时为了保证数据在高速时钟下传输的正确性,做了些其他的变化,总结如下:
- 接口时钟频率变为内核时钟频率的 2 倍,随之预取变为 4 倍,突发长度是预取整数倍,只支持 4 和 8
- 最大内核时钟由 200 MHz 提升至 266.67MHz
- 数据选通信号改为差分信号(为提高数据传输的稳定性)
- bank 个数由 4 个变为 8 个,相应 bank 地址信号位宽变为 3 bit(增加 1 位)
- CL 的值增加了,并且在发出行激活命令后,可以在下个时钟上升沿直接发出读、写指令,相当于将读写指令提前,早点空出地址线,避免因为总线冲突引起的延时。但激活指令之后的延时仍然存在的,由附加潜伏期 AL 替代,所以读潜伏期等于 AL+CL,写潜伏期等于 AL+CL-1
- 增加了 OCD 校准技术,确保 DQ 与 DQS 数据传输的准确性
- DDR2 把 DDR 设计中 PCB 上的终端电阻引入到芯片内部,从而简化 PCB 的设计
结构框图
DDR SDRAM 开始采用双沿传输数据,为了提高传输数据的速率,先后推出了 DDR-200、DDR-266、DDR-333、DDR-400,后面的数字表示数据传输速率,分别对应接口时钟频率 100MHz、133MHz、166MHz、200MHz。
当 DDR 速度提升到 200MHz 后,人们发现由于温度等因素的影响,导致 DDR 内部时钟的频率不能再提高了。但 PC 的发展需要更快读写速率的内存芯片,既然内核时钟频率不能继续提高,那就保持 200MHz 不动,提高 IO 端口的时钟频率,使得 IO 端口的时钟频率变为内核时钟频率的 2 倍,同时内部传输的数据位宽增加 2 倍,从而实现数据传输速率翻倍,这就是 DDR2 的设计思路。
从上两个结构框图可以看出,忽略容量大小,主要区别如下:
- 内部数据传输位宽变为接口数据位宽 4 倍,即 4 倍预取
- 数据选通信号 DQS 变为差分信号
- bank 个数由 4 个变为 8 个,相应 bank 地址信号位宽变为 3 bit(增加 1 位)
- DDR2 把 DDR 设计中 PCB 上的终端电阻引入到芯片内部,从而简化 PCB 的设计
模式寄存器
-
突发长度只支持 4/8
-
CAS 延迟变长,支持 3/4/5/6/7 个周期,不支持半个时钟周期延迟
-
增加 Write Recovery(写恢复延迟)设置
-
用于设置自动预充电的写操作写完最后一个数据到自动执行预充电命令间的延时
-
WR(cycles)= ROUNDUP { tWR (ns) / tCK (ns)},向上取整
-
- 较低的 tWR 可以提高系统性能,但可能导致数据未完全正确写入内存单元,就发生了预充电操作,导致数据的丢失和损坏。
扩展模式寄存器
RDQS
用于 x8 的 DDR2 芯片的读操作,时序和作用同 DQS,但写操作该信号忽略
On-Die Termination (ODT)
终端电阻为了吸收 DQS、RDQS、DQ 和 DM 信号的余波,防止这些信号在电路上形成反射,进而增强信号完整性。(涉及到信号完整性分析)
电阻值 RTT 取值:50Ω,75Ω,150Ω
Off-Chip Driver (OCD) Impedance Calibration
OCD 的主要作用在于调整 I/O 接口端的电压,来补偿上拉与下拉电阻值,从而调整 DQS 与 DQ 之间的同步确保信号的完整与可靠性,目的是让DQS与DQ数据信号之间的偏差降低到最小。
Posted CAS Additive Latency (AL)
- 之前激活命令之后需要等待 tRCD 后才能发出读写命令,增加 AL 延迟后,读写命令可以在激活命令下个时钟周期发出,只是读写命令提前发出了,但是激活后 tRCD 延时仍然存在
- AL + CL -1 为写入潜伏期,即发送写命令到写第一个数据的时间
- AL + CL 为读取潜伏期,即发送读命令到第一个数据读出的时间
SRT
如果温度超过 85°C,bit7 必须为 1,以便提供更快的刷新率
时序
初始化时序
图释:
-
CKE 置位后,至少等待 400ns 才能发起所有 bank 预充电命令
-
设置 EMR2 扩展模式寄存器的 bit7(其余保留 0 ),如果温度超过 85°C,bit7 必须为 1,以便提供更快的刷新率
-
设置 EMR3 扩展模式寄存器全为 0,因为该扩展寄存器为保留寄存器
-
设置 EMR 扩展模式寄存器 bit 0 为 1,使能 DLL,其余设置为 0(该步骤只为了使能 DLL)
-
设置 MR 模式寄存器 bit8 为 1,复位 DLL(复位后需要 200 个时钟周期才能 lock DLL)
-
设置 MR 模式寄存器其他参数,同时 bit8 设置为 0(不复位 DLL)
-
设置 EMR 扩展模式寄存器其他参数,同时使能 OCD 功能(bit9-7 = 111)
-
设置 EMR 扩展模式寄存器其他参数,同时退出 OCD 功能(bit9-7 = 000)
-
初始化完成,等待 200 个时钟周期后即可正常操作(从复位 DLL 开始计算,即图释 8)