DDR3 命令与时序

命令

ACTIVATE

执行激活命令时

Signal Description
BA2..0 指定 Bank 地址
A11, 9..0 指定 Row

对某一行激活后,该行将一直处于激活状态,直到下一次 PRECHARGE. 打开新行前必须对旧行执行 PRECHARGE.

PRECHARGE

预充电命令用于关闭一个已经打开的工作行。当 PRECHARGE 命令执行后需等待 tRP 才能执行下一个工作行的激活操作。PRECHARGE 后的行处于 Idle 状态,必须 ACTIVATE 才能进行读写操作。

预充电与刷新

PRECHARGE

预充电时对数据线上的分布电容 Cb 进行充电。刷新则是对存储体的电容 C 进行重写。

动作 预充电 充电
时序 不定期 定期

预充电是一种 Idle 状态,不能保证存储电容不丢失。只有 REFRESH 才能保证存储电容不丢失。

读操作是对存储电容的破坏性读取。原本逻辑状态为 1 的电容在读取操作后,会因放电而变成逻辑 0,因此,读操作都伴有数据刷新动作。该动作由刷新放大器 (现合并到感应放大器 S-AMP) 完成,其根据逻辑状态将数据重写。

PRECHARGE 既可以通过命令控制,也可通过对 A10 引脚的设定,设置为自动预充电。

REFRESH

由于线路存在寄生阻抗,存储电容的电量会慢慢变小。因此,必须定时对这些电容进行充电,这就是刷新。刷新是对存储体的电容 C 进行重写,先读再写。

刷新以 Row 为单位进行。要求 64 ms 内所有行刷新一次。对于 12-bit 行址,平均刷新频率为

64ms/212=15.6μs64ms / 2^{12} = 15.6 \mu{s}

对 13-bit 行址则为 7.8μs,以此类推。

Auto Refresh

周期性自动刷新,外部无需提供行址。通过自动行址生成器 (刷新计数器) 自动生成。但不生成列址,因此,相当于一个不会让数据上总线的 READ 操作,从而达成刷新效果。

Self Refresh

自刷新模式,在控制器下电或复位时,通过 SRE 命令进入子刷新模式,保证数据不丢失。

当 DDR3 Idle 且满足 tRP 后,允许执行 SRE 命令。

READ

对一个已经激活的行指定一个 Burst 读操作。

WRITE

同 READ.

Burst

指定起始地址与突发长度后,SDRAM 依次对后面相应数量的存储单元进行读写,而不需要连续提供列址。因此,除第一个数据需满足 tRCDtCL 外,气候每个数据仅需一拍。

DDR3 的突发模式包括

  1. BC4
  2. BL8
  3. 4 or 8 on the FLY

BC4 主要是为了兼容 DDR2 的 BL4 模式,通过掩码屏蔽四个 Burst,浪费一半带宽。实际多使用 BL8.

时序

熟悉如下定义。

  1. tRCD:RAS-to-CAS Latency
  2. tRP:预充电命令周期 / 关闭现有行到打开新行的间隔
  3. tCL (tCWL):CAS 潜伏期 / 列选通到读写命令的延迟
  4. tAL:附加延迟 / 随前置 CAS 引入
  5. tRLtAL + tCL