内存架构基础 - DDR3 时序入门
DDR3 时序基础
前言
其实 DDR4,DDR5 很多思路是差不多的,DDR3 算是一个分水岭。这里分两部分讲解:1)时序与命令;2)初始化与训练。
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 行址,平均刷新频率为
对 13-bit 行址则为 7.8μs,以此类推。
Auto Refresh
周期性自动刷新,外部无需提供行址。通过自动行址生成器 (刷新计数器) 自动生成。但不生成列址,因此,相当于一个不会让数据上总线的 READ 操作,从而达成刷新效果。
Self Refresh
自刷新模式,在控制器下电或复位时,通过 SRE 命令进入子刷新模式,保证数据不丢失。
当 DDR3 Idle 且满足 tRP 后,允许执行 SRE 命令。
READ
对一个已经激活的行指定一个 Burst 读操作。
WRITE
同 READ.
Burst
指定起始地址与突发长度后,SDRAM 依次对后面相应数量的存储单元进行读写,而不需要连续提供列址。因此,除第一个数据需满足 tRCD 和 tCL 外,气候每个数据仅需一拍。
DDR3 的突发模式包括
- BC4
- BL8
- 4 or 8 on the FLY
BC4 主要是为了兼容 DDR2 的 BL4 模式,通过掩码屏蔽四个 Burst,浪费一半带宽。实际多使用 BL8.
DDR3 时序
熟悉如下定义。网上有时序波形图,这里地方太小,写不下 (绝对不是懒)
- tRCD:RAS-to-CAS Latency
- tRP:预充电命令周期 / 关闭现有行到打开新行的间隔
- tCL (tCWL):CAS 潜伏期 / 列选通到读写命令的延迟
- tAL:附加延迟 / 随前置 CAS 引入
- tRL:tAL + tCL
DDR3 Initialization
graph LR
A[上电] --> B[复位] --> C[CKE 使能] --> D[MR 配置]
D --> E[ZQ 校准] --> F[写 Training] --> G[读 Training]
G --> H((END))
DDR3 训练
Data Eye Training (DET)
开眼训练。通俗理解,为了电平对正。包含电压开眼和时序开眼,后者流程如下。
- Eye Open
- LB Search
- DeSkew
- RB Search
- DQS Centering // 中心对齐,最佳时序
Write Leveling
写调平技术。CK / DQS 调平意义是减小 tDQSCK,简化 PHY 侧 DQS 设计。





