DDR3 / DDR3L SDRAM 电路设计指南
DDR3-800 / 1066 / 1333 / 1600 / 1866 / 2133 · 颗粒 x4 / x8 / x16 · SODIMM / UDIMM / RDIMM · Fly-by 拓扑 · Write Leveling · ZQ 校准 | 编制日期 2026-09-24 | 版本号 Rev 1.5
0 · 文档说明
适用范围
- 本文针对 DDR3 / DDR3L SDRAM(JESD79-3 系列)的硬件电路设计,覆盖 DDR3-800 到 DDR3-2133 六个速率等级、1 Gb ~ 8 Gb 单颗粒容量、x4 / x8 / x16 三种位宽,以及 SODIMM(204 pin)、UDIMM(240 pin)、RDIMM(240 pin)模块形态。
- 适用对象:应用处理器 / FPGA / 网络与工业 SoC 的外部主存(Main Memory)、图形与 AI 边缘设备的片外缓存与帧存。
- 内容包含:代际对比、封装球位、信号与命令、模式寄存器、电源与 VREF/VTT、上电复位时序、典型原理图(内联矢量图)、Fly-by 拓扑与训练、PCB Layout 规则、SI 与端接、ESD 与可靠性、焊接生产、故障排查与设计检查清单。
- 不包含:DDR PHY 内部实现、内存控制器 RTL、BIOS 移植细节。所有寄存器、时序与电气参数一律以目标型号 datasheet 与主控 DDR 控制器设计指南(Design Guide / BKM)为准。
- 本文中的阻值、容值、线长与阻抗为工程常用取值,落地前须用 IBIS / HSPICE 对目标叠层与拓扑做仿真确认。
本系列其他文档
| 文档 | 器件类型 | 关注重点 |
|---|---|---|
| SPI NOR 电路设计指南 | 串行 NOR Flash | Quad/QPI 提速、dummy cycles、XIP、DPD 低功耗 |
| SPI NAND 电路设计指南 | 串行 NAND Flash | 页/块管理、片内 ECC、坏块表、主机 FTL |
| 并行NAND (PPI NAND) 电路设计指南 | 8/16 位并行 NAND | 宽总线时序、ECC 引擎、40+ 引脚 Layout |
| eMMC 电路设计指南 | eMMC 5.0/5.1 | HS200/HS400、1.8 V VCCQ、DS 选通与等长 |
| SD NAND 电路设计指南 | 贴片式 SD NAND | SPI/SDIO 双模式、无休眠指令、VCC 负载开关断电 |
| NAND MCP 电路设计指南 | 多芯片合封存储 | 多 die 与多 CE、双电源轨、HDI 扇出 |
| 并行NOR (PPI NOR) 电路设计指南 | 并行 NOR Flash | 异步读时序、XIP、等待周期、总线扩展 |
| PSRAM 电路设计指南 | 伪静态 RAM | OPI/HyperBus、刷新与延迟周期、XIP 与帧缓存 |
| DDR2 电路设计指南 | DDR2 SDRAM | SSTL_18、T 分支拓扑、VTT 端接、ODT |
| DDR3 电路设计指南 本文 | DDR3 / DDR3L | Fly-by 拓扑、write leveling、动态 ODT |
| DDR4 电路设计指南 | DDR4 SDRAM | POD12、bank group、DBI、2D 训练 |
| DDR5 电路设计指南 | DDR5 SDRAM | 双子通道、On-DIMM PMIC、DFE、同帧 ECC |
| EEPROM 电路设计指南 | EEPROM | I²C/SPI 接口、上拉电阻与总线电容、页写与写保护 |
新设计若主控原生支持 DDR4 且成本可接受,优先选 DDR4(1.2 V、Bank Group、更高带宽、未来供货)。若主控只有 DDR3 控制器或需要复用成熟平台,选 DDR3L(1.35 V):它与 DDR3 引脚兼容,功耗与发热更低,且多数 DDR3L 颗粒允许在 1.5 V 下短时工作。DDR2 仅用于老平台维护(1.8 V、T 分支、速率上限 800 MT/s,已不推荐新设计)。电池供电 / 手持设备走 LPDDR2/3/4(低电压、部分自刷新、窄通道)。服务器 / 大容量用 RDIMM / LRDIMM(带寄存器缓冲,减轻 ADDR 负载)。DDR3 的短板是1.5 V 功耗偏高、单通道带宽上限 17 GB/s;长板是生态最成熟、主控 IP 最便宜、颗粒与模块价格低。
1 · 器件基础
1.1 代际规格对比(DDR2 / DDR3 / DDR3L / DDR3U / DDR4)
| 项目 | DDR2 | DDR3 | DDR3L | DDR3U | DDR4 |
|---|---|---|---|---|---|
| VDD / VDDQ | 1.8 V ±0.1 | 1.5 V ±0.075 | 1.35 V ±0.067 | 1.25 V ±0.0625 | 1.2 V ±0.06 |
| 电平标准 | SSTL_18 | SSTL_15 | SSTL_15(1.35 V 域) | SSTL_15(1.25 V 域) | POD12(伪开漏) |
| 预取 | 4n | 8n | 8n | 8n | 8n |
| 数据速率 | 400 ~ 800 MT/s | 800 ~ 1600 MT/s (JEDEC 至 2133) | 800 ~ 1866 MT/s | 800 ~ 1600 MT/s | 1600 ~ 3200 MT/s |
| CK 时钟 | 200 ~ 400 MHz | 400 ~ 1066 MHz | 400 ~ 933 MHz | 400 ~ 800 MHz | 800 ~ 1600 MHz |
| 突发长度 | 4 / 8 | BL8 / BC4(BC4 需 OTF) | 同 DDR3 | 同 DDR3 | BL8 / BC4 |
| 地址命令拓扑 | T 分支(Tree / Balance T) | Fly-by 菊花链 | Fly-by | Fly-by | Fly-by |
| Write Leveling | — | 有(MR1.A7) | 有 | 有 | 有 |
| Read Leveling | 无(仅 DQS 门控) | 有(PHY 侧) | 有 | 有 | 有 |
| VREF | VREF 单一(CA/DQ 共用) | VREFCA 与 VREFDQ 分离 | 分离 | 分离 | VREFCA 单一(内部 DQ 训练) |
| ODT | 静态 ODT(Rtt 固定) | 静态 + 动态 ODT(Rtt_WR) | 同 DDR3 | 同 DDR3 | Rtt_Nom / Rtt_WR / Rtt_Park |
| ZQ 校准 | 有(部分支持) | 强制:ZQCL / ZQCS + 240 Ω 1% | 强制 | 强制 | 强制(ZQCL / ZQCS) |
| RESET# | — | 专用 RESET# 引脚 | 有 | 有 | 有 |
| 温度自刷新 | 无(仅扩展温需 2× 刷新) | ASR / SRT(MR2.A6/A7) | 有 | 有 | 有 |
| MPR(多用途寄存器) | — | 有(MR3) | 有 | 有 | 有 |
| Bank 结构 | 4 / 8 bank | 8 bank | 8 bank | 8 bank | 16 bank(4 bank group) |
| 额外电源 | VREF、VTT | VREFCA、VREFDQ、VTT | 同 DDR3 | 同 DDR3 | VPP = 2.5 V、VTT(仅模块) |
| 数据总线反转 DBI | 无 | 无 | 无 | 无 | 有 |
① Fly-by 拓扑取代 T 分支,ADDR/CMD/CK 依次菊花链穿过各颗粒,末端接 VTT;② 因 Fly-by 造成时钟与数据到达不同颗粒的偏差(flight-time skew),必须用 Write Leveling 补偿,故 DDR3 控制器必须支持 WL;③ VREFCA 与 VREFDQ 分离(DDR2 只有一个 VREF),DDR3 颗粒必须两个基准都给;④ 新增 RESET#(低有效,上电须保持 ≥ 200 µs);⑤ 动态 ODT(Rtt_WR),写操作时目标 rank 用 Rtt_WR、非目标 rank 用 Rtt_Nom;⑥ ZQ 校准成为强制项,ZQ 引脚必须外接 240 Ω ±1% 到 VSS。
1.2 封装与球位定义
| 封装 | 典型位宽 | 球数 / 阵列 | 球距 | 外形(约) | 说明 |
|---|---|---|---|---|---|
| FBGA-78 | x16 | 78 球(9 × 9 阵列去 3 球) | 0.8 mm | 9.0 × 10.5 mm | 最常用;2 片 x16 拼 32 bit,4 片拼 64 bit |
| FBGA-78 | x8 | 78 球 | 0.8 mm | 9.0 × 10.5 mm | 4 片 x8 拼 32 bit,8 片拼 64 bit |
| FBGA-96 | x8 / x4 | 96 球(9 × 11 阵列去 3 球) | 0.8 mm | 9.0 × 13.0 mm | 多出的球为 NC / 附加电源地,散热更好 |
| BGA-96(DDR3L x16) | x16 | 96 球 | 0.8 mm | 13.0 × 7.5 mm | XTX M42K04G16ABEWGA-F / M42K04G16ABEJGA-F(4 Gb,1.35 / 1.5 V)采用此封装;2 片拼 32 bit、4 片拼 64 bit |
| SODIMM 204 pin | 64 bit (+8 ECC) | 金手指 204 | 0.6 mm | 67.6 × 30 mm | 笔电 / 工控板,自带 SPD EEPROM |
| UDIMM 240 pin | 64 bit (+8 ECC) | 金手指 240 | 1.0 mm | 133.35 × 30 mm | 台式机 / 服务器无缓冲条 |
| RDIMM 240 pin | 64 bit (+8 ECC) | 金手指 240 | 1.0 mm | 133.35 × 30 mm | 含寄存器 + PLL,ADDR 负载轻,可插更多 rank |
容量与寻址参数
| 容量 | x8 行地址 | 列地址 | 页大小(x8 / x16 / x4) | Bank 数 | 刷新行数 | tRFC(min,典型) |
|---|---|---|---|---|---|---|
| 1 Gb | A0~A13(16 K) | A0~A9(1024) | 1 KB / 2 KB / 512 B | 8 | 8 K / 64 ms | 110 ns |
| 2 Gb | A0~A14(32 K) | A0~A9(1024) | 1 KB / 2 KB / 512 B | 8 | 8 K / 64 ms | 160 ns |
| 4 Gb | A0~A15(64 K) | A0~A9(1024) | 1 KB / 2 KB / 512 B | 8 | 8 K / 64 ms | 300 ns |
| 8 Gb | A0~A16(128 K) | A0~A9(1024) | 1 KB / 2 KB / 512 B | 8 | 8 K / 64 ms | 350 ns |
行 / 列地址位数随容量与位宽变化(同为 4 Gb,x16 的行数只有 x8 的一半),务必核对 datasheet 的 Address Table;主控 DDR 控制器的行 / 列 / bank 位宽配置填错会表现为"容量识别错误"或"读写越界错数据"。
1.3 关键电气参数
| 参数 | 符号 | DDR3(1.5 V) | DDR3L(1.35 V) | 说明 |
|---|---|---|---|---|
| 器件电源 | VDD | 1.5 V ±0.075(±5%) | 1.35 V ±0.067(±5%) | 含纹波与噪声全容差带 |
| 输出电源 | VDDQ | 1.5 V ±0.075 | 1.35 V ±0.067 | 与 VDD 同时上电,|VDD−VDDQ| ≤ 0.3 V |
| 命令地址基准 | VREFCA | 0.75 V(= VDDQ/2 ±1%) | 0.675 V(±1%) | 必须跟随 VDDQ,DC 精度 ±1% |
| 数据基准 | VREFDQ | 0.75 V(= VDDQ/2 ±1%) | 0.675 V(±1%) | 与 VREFCA 分离,可独立去耦 |
| 端接电源 | VTT | 0.75 V(= VDDQ/2) | 0.675 V | 需能灌 / 拉双向电流,容差 ±3%~±5% |
| ZQ 校准电阻 | RZQ | 240 Ω ±1%(ZQ 引脚到 VSS) | 定义 RZQ/6 = 40 Ω、RZQ/7 ≈ 34 Ω 等 | |
| 输入高 / 低(DC) | VIH / VIL | ≥ VREF + 0.10 V / ≤ VREF − 0.10 V | AC 门限更宽(±0.175 V,与压摆率相关) | |
| 输出驱动强度 | RON | RZQ/6 = 40 Ω(默认) | 40 Ω / 34 Ω(1600+ 常用 34 Ω) | MR1.A[5,1] 选择 |
| 片内端接 | Rtt | 120 / 60 / 40 / 30 / 20 Ω(RZQ/2、/4、/6、/8、/12) | MR1 Rtt_Nom、MR2 Rtt_WR | |
| 工作温度(商用) | TC | 0 ~ 85 ℃(DDR3 标准) | 工业级 −40 ~ 95 ℃,需 SRT | |
| 结温上限 | TJ | 95 ~ 105 ℃(按型号) | 超温须降速率或加散热 | |
| ESD(HBM / CDM) | VESD | ≥ 2 kV / ≥ 500 V(JESD22-A114 / C101) | 属 ESDS 器件,见第 8 章 | |
| 输入漏电流 | II | ≤ ±2 µA(典型) | RESET# 内部下拉除外 | |
2 · 接口与协议
2.1 完整信号定义
| 信号 | 方向 | 类型 / 电平 | 数量(x16 / x8 / x4) | 说明 |
|---|---|---|---|---|
| CK / CK# | 主控→DRAM | 差分 SSTL_15 | 1 对 | 地址命令采样时钟;Fly-by 时与 ADDR 同向菊花链 |
| CKE | 主控→DRAM | SSTL_15 | 1 | 时钟使能;低电平进入掉电 / 自刷新;上电须保持低 |
| CS# | 主控→DRAM | SSTL_15 | 每 rank 1 个 | 片选;多 rank 时每个 rank 独立 CS# |
| ODT | 主控→DRAM | SSTL_15 | 每 rank 1 个 | 片内端接使能;多 rank 下非目标 rank 用 Rtt_Nom |
| RAS# / CAS# / WE# | 主控→DRAM | SSTL_15 | 3 | 命令编码;与 CS# 组合成命令真值表 |
| BA0 / BA1 / BA2 | 主控→DRAM | SSTL_15 | 3 | Bank 地址;MRS 时用于选择 MR0~MR3 |
| A0~A15(A16) | 主控→DRAM | SSTL_15 | 16(8 Gb 为 17) | 行 / 列复用;A10 = AP 自动预充电,A12 = BC 突发截断 |
| DQ0~DQn | 双向 | SSTL_15 | 16 / 8 / 4 | 数据总线;每 8 位配 1 对 DQS(x16 有 LDQS / UDQS) |
| DQS / DQS# | 双向 | 差分 SSTL_15 | 2 对 / 1 对 / 1 对 | 数据选通;读时边沿对齐,写时中心对齐 |
| DM / LDM / UDM | 主控→DRAM | SSTL_15 | 2 / 1 / 1 | 写数据掩码;x16 分低 / 高字节掩码 |
| TDQS / TDQS# | DRAM→ | SSTL_15 | x8:1 对(复用 DM) | 仅 x8 有;双 rank 共享数据总线时代替 DM 做端接,MR1.A11 使能 |
| RESET# | 主控→DRAM | SSTL_15(施密特) | 1 | 低有效异步复位;上电须保持 ≥ 200 µs(tINIT1) |
| ZQ | — | 模拟 | 1 | 外接 240 Ω ±1% 到 VSS,用于输出阻抗 / ODT 校准 |
| VREFCA | 电源 | 模拟基准 | 1 | 地址命令输入判决基准 = VDDQ/2 ±1% |
| VREFDQ | 电源 | 模拟基准 | 1 | 数据输入判决基准;与 VREFCA 分离 |
| VDD / VDDQ | 电源 | 1.5 / 1.35 V | 多个球 | 核心 / 输出电源;两者须同时上电 |
| VSS / VSSQ | 地 | 0 V | 多个球 | 核心地 / 输出地;BGA 扇出优先打地孔 |
| NC / NU / NF | — | — | 若干 | 不连;不得用作测试点或接地 |
2.2 命令真值表
| 功能 | CKEn-1 | CKEn | CS# | RAS# | CAS# | WE# | BA / A |
|---|---|---|---|---|---|---|---|
| Mode Register Set(MRS) | H | H | L | L | L | L | BA[2:0] 选 MR0~MR3,A 为配置值 |
| Refresh(REF) | H | H | L | L | L | H | X |
| Self Refresh 进入(SRE) | H | L | L | L | L | H | X |
| Self Refresh 退出(SRX) | L | H | H | X | X | X | 或 CKE=H + NOP |
| Single Bank Precharge | H | H | L | L | H | L | A10=L,BA 选 bank |
| Precharge All | H | H | L | L | H | L | A10=H |
| Bank Activate | H | H | L | L | H | H | BA 选 bank,A 发行地址 |
| Write(BL8 / BC4) | H | H | L | H | L | L | A10=AP,A12=BC,BA + 列地址 |
| Write with Auto Precharge | H | H | L | H | L | L | A10=H |
| Read(BL8 / BC4) | H | H | L | H | L | H | A10=AP,A12=BC |
| Read with Auto Precharge | H | H | L | H | L | H | A10=H |
| ZQ Calibration Long(ZQCL) | H | H | L | H | H | L | A10=H |
| ZQ Calibration Short(ZQCS) | H | H | L | H | H | L | A10=L |
| No Operation(NOP) | H | H | L | H | H | H | X |
| Device Deselect | H | H | H | X | X | X | X |
| Power-Down 进入 / 退出 | H / L | L / H | L / H | H | H | H | 退出后须等 tXP / tXPDLL |
| MPR Read(训练) | H | H | L | H | L | H | 先 MR3.A2=1 进入 MPR 模式 |
注:H = 高电平,L = 低电平,X = 无关。CKEn-1 / CKEn 指相邻两个 CK 上升沿上的 CKE 状态。
2.3 模式寄存器 MR0 ~ MR3
| 寄存器 | 选择(BA2/BA1/BA0) | 主要功能 | 关键位 |
|---|---|---|---|
| MR0 | 000 | 突发长度、CAS 延迟、DLL 复位、写恢复、掉电模式 | A[1:0] BL,A[6,5,4,2] CL,A3 BT,A8 DLL 复位,A[11:9] WR,A12 PD |
| MR1 | 001 | DLL 使能、驱动强度、Rtt_Nom、附加延迟、Write Leveling、TDQS、Qoff | A0 DLL,A[5,1] DIC,A[9,6,2] Rtt_Nom,A[4,3] AL,A7 WL,A11 TDQS,A12 Qoff |
| MR2 | 010 | PASR、CAS 写延迟 CWL、自动 / 温度自刷新 ASR / SRT、动态 ODT Rtt_WR | A[2:0] PASR,A[5:3] CWL,A6 ASR,A7 SRT,A[10:9] Rtt_WR |
| MR3 | 011 | MPR(多用途寄存器)读训练图样选择 | A[1:0] MPR 图样,A2 MPR 使能 |
/* MR0 (BA=000) —— 突发长度 / CL / DLL 复位 / WR / 掉电 */
A[1:0] = 2'b00 BL8 固定; 01 = BC4(OTF); 10 = BC4 固定
A[2] = CL bit0
A[3] = 1'b0 突发类型:0 = 顺序(sequential);1 = 交错(interleaved)
A[6:4] = CL bit3..1
A[7] = 1'b0 测试模式,必须为 0
A[8] = 1'b1 DLL 复位(自清零;发出后须等 tDLLK = 512 nCK)
A[11:9] = 3'b010 WR = 8 nCK(须满足 tWR ≥ 15 ns,按 tCK 取值)
A[12] = 1'b0 DLL-off 慢速退出(快速退出置 1,仅 DLL-off 模式用)
CL 编码 (A6,A5,A4,A2):0010=5 0100=6 0110=7 1000=8 1001=9
1010=10 1011=11 1100=12 1101=13 1110=14 1111=15
例:DDR3-1600 11-11-11 → A[6:0]=0b1_010_0_1_0 → MR0 = 0x0B50 | ... 以主控宏定义生成
/* MR1 (BA=001) —— DLL / 驱动强度 / Rtt_Nom / AL / Write Leveling */
A0 = 1'b0 DLL 使能(1 = DLL off,仅 DDR3-800/1066 允许)
A[5:1] = 2'b01 DIC 输出驱动:00 = RZQ/6(40 Ω);01 = RZQ/7(34 Ω)
A[9,6,2]= 3'b011 Rtt_Nom = RZQ/6 = 40 Ω
000=ODT 关 001=RZQ/4(60 Ω) 010=RZQ/2(120 Ω)
011=RZQ/6(40 Ω) 100=RZQ/12(20 Ω) 101=RZQ/8(30 Ω)
A[4:3] = 2'b00 AL 附加延迟:00 = 0;01 = CL-1;10 = CL-2
A7 = 1'b1 Write Leveling 使能(训练完成后软件/硬件清零退出)
A8 = 1'b0 保留 = 0
A11 = 1'b1 TDQS 使能(x8 双 rank 共享总线时启用;x16 必须为 0)
A12 = 1'b0 Qoff = 0,输出缓冲使能
/* MR2 (BA=010) —— PASR / CWL / 温度自刷新 / 动态 ODT */
A[2:0] = 3'b000 PASR:全阵列自刷新(部分自刷新按需要配置)
A[5:3] = 3'b011 CWL = 8(000=5 001=6 010=7 011=8 100=9 101=10 110=11)
A6 = 1'b1 ASR 自动自刷新使能(工业宽温强烈建议开启)
A7 = 1'b0 SRT:0 = 0~85 ℃;1 = 85~95 ℃(ASR=1 时硬件自动)
A[10:9] = 2'b01 Rtt_WR = RZQ/4 = 60 Ω(动态 ODT;00 = 关闭,沿用 Rtt_Nom)
A11,A12 = 0 保留
/* MR3 (BA=011) —— MPR 训练图样 */
A[1:0] = 2'b00 预定义图样(0-1-0-1 交替);01/10/11 = 用户自定义图样
A2 = 1'b1 进入 MPR 读数据流(仅训练期间使用,训练后置 0)
① 顺序一般为 MR2 → MR3 → MR1 → MR0,因为 MR0 的 DLL 复位会触发 512 nCK 的锁定等待,放最后最省时间;② 相邻两条 MRS 之间须满足 tMRD(4 nCK @ ≤1066,12 nCK @ ≥1333);③ MR0.A8 = 1 后须等 tDLLK = 512 nCK 才能发 REF 或读写;④ 改 MR2 的 CWL / Rtt_WR 后须满足 tMOD;⑤ 每次改 MR1 的 DIC / Rtt_Nom 后须重发 ZQCL(tZQinit = 512 nCK);⑥ 整个初始化与训练由主控 PHY 固件完成,硬件只需保证电源、时钟、ZQ、RESET#、拓扑正确。
2.4 8n 预取、突发类型与读写时序
DDR3 内部核心阵列以 8n 预取运行:一次读命令从阵列取出 8 × 数据位宽的数据(x8 即 64 bit = 8 字节),在 I/O 上用 8 个双倍数据率周期送出(4 个 CK 周期)。因此 DDR3 的最小突发为 BL8,另有 BC4(Burst Chop 4)用于提高短突发效率——BC4 通过 MR0 固定,或用命令期 A12 = 1 做 On-The-Fly(OTF)截断(BL8 的后半段被丢弃,但内部仍取 8n)。
| 项目 | DDR3 行为 | 工程含义 |
|---|---|---|
| 读延迟 | tAA = CL × tCK;DQS 前沿与数据边沿对齐 | 控制器内部把 DQS 移相 90° 后采样(read leveling / DQS 门控训练) |
| 写延迟 | CWL(5~11);DQS 与数据中心对齐 | CWL 由 MR2 设置,写前导 tWPRE ≥ 0.9 tCK |
| 写恢复 | tWR ≥ 15 ns(MR0 WR 编码) | 最后一个写数据后须等 tWR 才允许预充电 |
| 附加延迟 | AL = 0 / CL−1 / CL−2 | AL > 0 时有效读延迟 = AL + CL,可提升命令总线效率 |
| 写到读切换 | tWTR = max(4 nCK, 7.5 ns) | 总线转向 + ODT 切换开销 |
| 读到写切换 | tRTW = BL/2 + 2 nCK(约) | 与 ODT 保持时间相关 |
| 写到写(同 / 跨 rank) | tCCD = 4 nCK;tWTR 跨 rank 另计 | 连续写不同 byte lane 需注意 ODT 切换窗口 |
| 读到读(同 / 跨 rank) | tCCD = 4 nCK(BL8) | 跨 rank 读需 CS# 间满足 tCSH/tCSS |
| 刷新 | tREFI = 7.8 µs(0~85 ℃)/ 3.9 µs(85~95 ℃) | 控制器需支持刷新与 postponed refresh |
| 自刷新 | 进入 tCKESR、退出 tXSR = max(512 nCK, tRFC + 10 ns) | 掉电保存数据靠自刷新,退出后须等 tXSRD 才发读命令 |
| 掉电 | Precharge Power-Down / Active Power-Down;CKE 低 | DLL-off 模式退出需 tXPDLL = max(10 nCK, 24 ns) |
2.5 带宽计算与 DDR3L 混用
| 等级 | 模块名 | CK 时钟 | 数据速率 | 典型 CL / CWL | tCK | 64 bit 理论带宽 | 峰值功耗倾向 |
|---|---|---|---|---|---|---|---|
| DDR3-800 | PC3-6400 | 400 MHz | 800 MT/s | 5~6 / 5 | 2.50 ns | 6.40 GB/s | 低 |
| DDR3-1066 | PC3-8500 | 533 MHz | 1066 MT/s | 6~8 / 6 | 1.875 ns | 8.53 GB/s | 较低 |
| DDR3-1333 | PC3-10600 | 667 MHz | 1333 MT/s | 8~9 / 7 | 1.50 ns | 10.67 GB/s | 中 |
| DDR3-1600 | PC3-12800 | 800 MHz | 1600 MT/s | 9~11 / 8 | 1.25 ns | 12.80 GB/s | 中高 |
| DDR3-1866 | PC3-14900 | 933 MHz | 1866 MT/s | 10~13 / 8~9 | 1.07 ns | 14.93 GB/s | 高 |
| DDR3-2133 | PC3-17000 | 1066 MHz | 2133 MT/s | 11~14 / 9~11 | 0.938 ns | 17.06 GB/s | 高(需 1.65 V XMP 或特挑颗粒) |
/* 带宽与速率计算 */
理论带宽 (MB/s) = 数据速率 (MT/s) × 总线位宽 (bit) / 8
64 bit @ DDR3-1600 : 1600 × 64 / 8 = 12800 MB/s ≈ 12.8 GB/s
32 bit @ DDR3-1600 : 1600 × 32 / 8 = 6400 MB/s ≈ 6.4 GB/s
16 bit @ DDR3-1333 : 1333 × 16 / 8 = 2666 MB/s ≈ 2.67 GB/s
有效带宽 ≈ 理论带宽 × 总线效率(0.60 ~ 0.85,取决于 bank 交错、读写混合比、刷新开销)
实测方法:STREAM Copy/Triad、lmbench bw_mem、mbw、ddr-grp 压力工具
① 两者引脚兼容、命令集相同,多数 DDR3L 颗粒允许在 1.5 V 与 1.35 V 双电压下工作(标明 "1.35 V / 1.5 V compatible"),但纯 1.35 V 的 DDR3L 长期加 1.5 V 会加速老化甚至损坏;② 反之,纯 1.5 V DDR3 颗粒绝不可供 1.35 V——VIH/VIL 与 VREF 门槛不满足,会出现零星误码、高低温失效;③ 同一条总线上禁止混插不同耐压等级的颗粒;④ 用 SODIMM / UDIMM 时,模块的 SPD 会声明电压(DDR3L SPD byte 中 Low Voltage 位),控制器须按 SPD 配置 VDD;⑤ 硬件上若需兼容两种模块,VDD 电源须可调(1.35 / 1.5 V 两档),并由板上逻辑或 GPIO 在上电前确定,不允许热切换;⑥ DDR3L 与 DDR3 的 tRFC 与 IDD 规格不同,混用会让刷新与功耗计算失真。
与 DDR4 的硬件差异(不可混用):DDR4 为 1.2 V POD12 伪开漏(端接到 VDDQ 而非 VTT)、多 VPP = 2.5 V 电源、288 pin 金手指且金手指为中间凹(弯曲式防呆)、引入 Bank Group / DBI / CRC / CA Parity;DDR3 为 1.5 V SSTL_15、无 VPP、240 pin 直插金手指。两者电气与机械均不兼容。
3 · 电源设计
3.1 电源轨与容差
| 电源轨 | DDR3 标称 | DDR3L 标称 | 容差 | 电流能力 | 工程要求 |
|---|---|---|---|---|---|
| VDD(核心) | 1.5 V | 1.35 V | ±5%(±75 / ±67 mV) | 按 IDD7 峰值 × 颗粒数 × 1.5 裕量 | 与 VDDQ 同源或同步上电,|VDD−VDDQ| ≤ 0.3 V,上电时间 ≤ 200 ms |
| VDDQ(I/O) | 1.5 V | 1.35 V | ±5% | 按 IDD4R/W + VTT 折算 | 可与 VDD 通过磁珠 / 0 Ω 隔离,但压差全程受控 |
| VREFCA | 0.75 V | 0.675 V | = VDDQ/2 ±1% | ≤ 数 mA | 跟随 VDDQ 变化;每颗 DRAM 就近 0.1 µF + 1 µF |
| VREFDQ | 0.75 V | 0.675 V | = VDDQ/2 ±1% | ≤ 数 mA | 与 VREFCA 分离布线、独立去耦 |
| VTT(端接) | 0.75 V | 0.675 V | ±3%(建议) | 双向:灌 / 拉各 ≥ 1~3 A(模块) | 须用能吸收电流的 LDO/开关(如带 sink 能力的 VTT 稳压器) |
| VSS / VSSQ | 0 V | 0 V | — | — | 完整地平面,BGA 下尽量多打地孔 |
VREF 目标 0.75 V,总偏差预算 ±1% = ±7.5 mV。误差来源:① 分压电阻精度(1% 电阻两颗最坏 ±1% = ±15 mV 已超标,必须选 0.1%~0.5% 或改用专用基准);② 电源纹波(VDDQ 上 50 mV 纹波经 1/2 分压 → 25 mV,严重超标);③ 温度漂移;④ 噪声耦合。结论:DDR3-1333 以上速率强烈建议使用专用 VREF 缓冲 / 基准源(由 VTT 稳压器或主控提供的 VREF 输出,或多个 VDDQ 分压 + 运放缓冲),并紧靠每一个 VREF 引脚放置 0.1 µF。
3.2 VREF 生成、VTT 端接电源与 ZQ
VREFCA / VREFDQ 三种方案
| 方案 | 做法 | 适用 | 风险 |
|---|---|---|---|
| A 电阻分压 | 两颗 1 kΩ(0.1%)VDDQ→GND,中点引出 + 0.1 µF | ≤ DDR3-1066、成本敏感 | 精度与温漂差,负载调整差 |
| B 分压 + 缓冲 | 分压后经运放 / 射随缓冲,多颗共享 | DDR3-1333 / 1600 | 运放带宽与稳定性需验证 |
| C 专用基准 | VTT/VREF 组合稳压器(如 LP2996、TPS51200A 类) | ≥ DDR3-1600 推荐 | 成本略高,需参考设计 |
ZQ 校准硬件要求
- ZQ 引脚到 VSS 接一颗 240 Ω ±1%(推荐 0.5%) 电阻,温度系数 ≤ 100 ppm/℃。
- 电阻紧靠 ZQ 球(走线 ≤ 200 mil),不允许分支 / 残桩,不允许与 VSSQ 焊盘共用过孔。
- ZQ 网络不得加电容(会破坏校准),不得串电阻。
- ZQCL 在上电初始化与每次改变 DIC / Rtt 后执行;ZQCS 由控制器周期性发出(典型每 1~128 ms,或按温度 / 电压变化触发)。
| VTT 设计要点 | 数值 / 做法 |
|---|---|
| 电压精度 | VDDQ/2 ±3%(含纹波与瞬态) |
| 电流能力 | 按端接网络最坏情况估算:N 根线同时为高,Isink = N × (VDDQ − VTT)/Rt;同时为低时 Isource = N × VTT/Rt。64 bit 总线 + ADDR/CMD 通常 1~3 A,必须双向 |
| 去耦 | 输出端 10 µF × 2(陶瓷 X5R)+ 100 µF(钽 / 聚合物)+ 0.1 µF × 4;端接电阻处每 2~3 颗电阻配 0.1 µF |
| 是否可省 | 若地址命令与时钟全部使用颗粒 ODT 或主控端接且仿真通过,可省 VTT;但多 rank / 多片 Fly-by 通常仍需在末端接 VTT |
| 上电顺序 | VTT 应在 VDDQ 建立后使能,且不得先于 VDDQ 上电(否则通过 ESD 二极管倒灌);掉电时先关 VTT |
3.3 去耦电容配置
| 位置 | 容值 | 封装 | 数量(每颗粒) | 材质 / 耐压 | 说明 |
|---|---|---|---|---|---|
| VDD / VDDQ 高频 | 0.1 µF | 0402 | 每个 VDD/VDDQ 球组 1 颗(典型 6~10 颗) | X5R / X7R,6.3~10 V | 优先放 BGA 背面,过孔 ≤ 2 个到球 |
| VDD / VDDQ 中频 | 1 µF | 0603 | 2~4 颗 | X5R,6.3 V | 补中频阻抗峰 |
| VDD / VDDQ 体电容 | 10 µF + 100 µF | 0805 / 1210 | 电源入口 1~2 颗 | X5R / 聚合物 | 抑制低频与瞬态压降 |
| VREFCA / VREFDQ | 0.1 µF + 1 µF | 0402 / 0603 | 各 1 组 | X7R / X5R | 紧靠引脚,地回路过孔独立 |
| VTT 端接 | 0.1 µF(每 2~3 电阻)+ 10 µF ×2 | 0402 / 0805 | 按端接电阻数 | X5R,6.3 V | 吸收端接瞬态电流 |
| 电源入口 | 22 µF + 0.01 µF | 0805 / 0402 | 1 组 | X5R | 滤除 DC-DC 开关噪声 |
目标阻抗法:Ztarget = ΔV / ΔI,例如允许 VDDQ 纹波 30 mV、瞬态电流 1 A,则 Ztarget = 30 mΩ;在 100 kHz ~ 200 MHz 范围内用上述电容组合把 PDN 阻抗压在该线以下。0402 优于 0603(ESL 更小);电容接地过孔与电源过孔紧邻打孔(≤ 30 mil 间距),过孔数量 ≥ 2。
3.4 上电、复位与掉电时序
/* DDR3 上电与初始化序列(JESD79-3 通用流程,以主控 Design Guide 为准) */
1. 上电:VDD 与 VDDQ 同时上升(|VDD − VDDQ| ≤ 0.3 V,200 ms 内完成)
VREFCA / VREFDQ 跟随 VDDQ/2(±1%);VTT 在 VDDQ 稳定后使能
2. 驱动 RESET# = 0(≥ 200 µs),同时 CKE = 0(RESET# 期间 CKE 必须保持低)
3. 启动 CK/CK# 差分时钟:必须在 CKE 拉高前稳定 ≥ tCKSRX(10 ns)
4. RESET# 释放为高;等待 tXPR = max(5 nCK, tRFC + 10 ns)
5. CKE 拉高;等待 tXSR = max(512 nCK, tRFC + 10 ns)(内含 DLL 锁定 tDLLK = 512 nCK)
6. 依次加载模式寄存器:MR2 → MR3 → MR1 → MR0(MR0.A8 = 1 触发 DLL 复位)
相邻 MRS 间隔 tMRD(≤1066: 4 nCK;≥1333: 12 nCK)
7. 发 ZQCL(ZQ 长校准,tZQinit = 512 nCK);运行期周期性发 ZQCS(64 nCK)
8. Write Leveling:MR1.A7 = 1 → 控制器发 DQS 脉冲由 DRAM 用 CK 采样回吐 →
调整每个 byte lane 的写 DQS 延迟 → 完成后 MR1.A7 = 0 退出
9. Read Leveling / DQS 门控(Gate Training)/ 读 DQS 去斜:可用 MPR(MR3)读固定图样
10. 进入正常读写:控制器按 tREFI 自动刷新;温度变化时触发 ZQCS 与 ASR/SRT 切换
| 阶段 | 关键时序参数 | 典型值 | 违反后果 |
|---|---|---|---|
| 上电斜坡 | VDD/VDDQ 上升时间 | ≤ 200 ms;两轨压差 ≤ 0.3 V | 闩锁 / 上电失败 |
| 复位保持 | tINIT1(RESET# 低) | ≥ 200 µs | DLL 未复位,初始化后死机 |
| 复位释放 | tXPR | max(5 nCK, tRFC + 10 ns) | CKE 过早拉高导致状态机异常 |
| CKE 释放 | tXSR / tDLLK | max(512 nCK, tRFC + 10 ns) | DLL 未锁定即发命令,读写错 |
| MRS 间隔 | tMRD / tMOD | 4 nCK(≤1066)/ 12 nCK(≥1333);tMOD = max(12 nCK, 15 ns) | 寄存器未生效 |
| ZQ 校准 | tZQinit / tZQoper / tZQCS | 512 / 256 / 64 nCK | 驱动强度与 ODT 偏差,眼图塌陷 |
| 掉电 | CKE 低保持 | ≥ tCKE = max(3 nCK, 5.625 ns) | 掉电未进入,功耗不降 |
| 掉电退出 | tXP / tXPDLL | max(3 nCK, 6 ns) / max(10 nCK, 24 ns) | 退出后首个命令丢失 |
① 有序掉电:先让主控发完最后一个命令 → 进入自刷新(SRE)或全部预充电 + CKE 拉低 → 再关闭 VTT → 最后关闭 VDD/VDDQ;不允许在 DRAM 处于激活状态时直接断电;② 突发掉电:VDD 跌落超过 10%/µs 时数据无法保证,需要硬件掉电检测 + 快速拉低 RESET# 与 CKE,或系统级备用电源维持自刷新;③ 自刷新期间 VDD 必须保持在规格内,且 CKE 全程为低、时钟可关闭以省电;④ 退出自刷新后须等 tXSR 且按 tREFI 立即补刷新;⑤ 高温(> 85 ℃)场景必须启用 ASR / SRT 并把 tREFI 降到 3.9 µs,否则刷新不足导致数据丢失。
3.5 功耗估算与热设计
| 电流项 | 含义 | 4 Gb x8 DDR3L-1600 典型值 | 用途 |
|---|---|---|---|
| IDD0 | 激活-预充电电流 | 60 ~ 90 mA | 基础工作电流 |
| IDD1 | 单 bank 激活读电流 | 70 ~ 100 mA | 轻量负载 |
| IDD2P / IDD2N | 预充电掉电 / 待机 | 3 ~ 20 mA | 待机功耗 |
| IDD3P / IDD3N | 激活掉电 / 激活待机 | 20 ~ 45 mA | 中等负载 |
| IDD4R / IDD4W | 连续突发读 / 写 | 120 ~ 190 mA | 峰值电流主项 |
| IDD5 | 刷新电流 | 120 ~ 200 mA(脉冲) | 刷新瞬间尖峰 |
| IDD6 / IDD6ET | 自刷新(常温 / 扩展温) | 5 ~ 15 mA(DDR3L 更低) | 休眠续航 |
| IDD7 | 全 bank 交错读(功耗设计基准) | 180 ~ 260 mA | 电源与热设计依据 |
/* 功耗估算示例:4 片 4 Gb x8 DDR3L-1600 组成 64 bit / 2 GB */
P_VDD = VDD × ΣIDD = 1.35 V × 4 × 0.22 A(IDD7) ≈ 1.19 W
P_VTT = VTT × I_VTT_rms ≈ 0.675 V × 0.6 A ≈ 0.41 W(端接网络,与数据图样相关)
P_termination(片内 ODT 部分已含在 IDD 内)
P_total ≈ 1.6 ~ 2.2 W(满载连续读写);待机约 0.15 ~ 0.3 W
/* 热设计 */
θJA(FBGA-96 自然对流,JESD51)≈ 30 ~ 45 ℃/W(与铺铜、过孔强相关)
ΔT = P_total × θJA = 2.0 W × 35 ℃/W = 70 ℃ → 85 ℃ 环境时结温将严重超标
措施:① 颗粒下方铺大面积 GND 铜 + 散热过孔阵列(Ø0.3 mm,间距 1 mm)
② 顶层/底层裸铜开窗 + 导热垫接外壳或散热片
③ 限制连续满载带宽(控制器侧做带宽整形或温度节流 throttling)
④ 高温时降速到 DDR3-1333 并启用 2× 刷新(SRT)
4 · 典型应用电路
4.1 单片 x16(16 bit 总线)
| 网络 | 连接 | 端接 / 上拉下拉 | 布线要点 |
|---|---|---|---|
| CK / CK# | SoC 差分时钟输出 → DRAM CK/CK# | 差分端接 100 Ω(若主控要求)或源端串阻 22~33 Ω | 对内等长 ≤ 2 mil;差分阻抗 80~100 Ω;全程不跨分割;包地处理 |
| A[15:0] / BA[2:0] | SoC → DRAM | 末端 VTT 端接(多片时);单端走线阻抗 40~50 Ω | Fly-by 菊花链;与 CK 总长匹配 ±25 mil;残桩 ≤ 100 mil |
| RAS# / CAS# / WE# | SoC → DRAM | 同 ADDR | 与 ADDR 同组,一起做等长 |
| CKE / CS# / ODT | SoC → DRAM | CKE 建议 4.7 kΩ 下拉(保证上电低电平) | 纳入 ADDR 组等长;每 rank 独立 CS# / ODT |
| RESET# | SoC GPIO(或电源监控)→ DRAM | 4.7 kΩ ~ 10 kΩ 下拉到 VSS;由 SoC 上拉释放 | 可与其他 DRAM 共用;上电保持 ≥ 200 µs 低电平;避免与高频信号平行 |
| DQ[15:0] | SoC ↔ DRAM(双向) | 片内 ODT(Rtt_Nom 40~60 Ω);无外部端接 | 与同组 DQS 等长 ±5 mil;组内同层同介质;3W 间距 |
| LDQS/±、UDQS/± | SoC ↔ DRAM(双向) | 片内 ODT;必要时源端串阻 | 差分阻抗 80~100 Ω;对内 ≤ 2 mil;与 DQ/DM 组等长 |
| LDM / UDM | SoC → DRAM | — | 与同组 DQ 等长 ±10 mil |
| ZQ | DRAM ZQ → 240 Ω 1% → VSS | 电阻紧靠球(≤ 200 mil),禁止并联电容 | 独立走线,不与 VSSQ 焊盘共用过孔 |
| VREFCA / VREFDQ | 基准源 → DRAM | 每个引脚 0.1 µF + 1 µF 到 GND | 加粗 ≥ 20 mil;两侧包地;远离 DQ / DQS / 开关节点 |
| VDD / VDDQ | 1.5 V(或 1.35 V)电源 → DRAM | 0.1 µF ×8 + 1 µF ×2 + 10 µF(每颗) | 电源铜皮 ≥ 40 mil;BGA 背面放置;多打地孔 |
| VTT | VTT LDO → 末端端接电阻(多片时) | 10 µF ×2 + 0.1 µF ×4 + 100 µF | 端接电阻靠近末端器件;VTT 铜皮 ≥ 100 mil 或铺铜 |
4.2 多片拼接:两片 x16 拼 32 bit / 四片 x8 拼 32 bit / 八片 x8 拼 64 bit
| 配置 | 颗粒 | 总位宽 | ADDR/CMD 负载 | 数据组数 | 片选 | 典型应用 |
|---|---|---|---|---|---|---|
| 1 × x16 | 1 | 16 bit | 1 个负载 | 2 字节组(LDQS/UDQS) | CS#0 | 低成本 IoT、FPGA 软核 |
| 2 × x16 | 2 | 32 bit | 2 个负载 | 4 字节组 | 共用 CS#0 | 工控 SoC、网络处理器 |
| 4 × x16 | 4 | 64 bit | 4 个负载 | 8 字节组 | 共用 CS#0 | 高性能 SoC / 服务器 |
| 4 × x8 | 4 | 32 bit | 4 个负载 | 4 字节组 | 共用 CS#0 | 32 bit 主流配置 |
| 8 × x8 | 8 | 64 bit | 8 个负载 | 8 字节组 | 共用 CS#0 | 64 bit + ECC 需 9 片 |
| 2 rank × 4 × x8 | 8 | 32 bit | 8 个负载 | 4 组(DQ 总线被 2 rank 共享) | CS#0 / CS#1 | 大容量,ADDR 负载重,需仿真 |
| SODIMM / UDIMM | 模块自带 | 64 bit (+8) | 模块已处理 | 8 组 | 模块 SPD 描述 | 可插拔、易升级 |
| RDIMM | 模块自带 | 64 bit (+8) | 寄存器隔离 | 8 组 | 经寄存器 | 服务器多路大容量 |
设计提示:ADDR/CMD 每增加一个负载,容性负载约增加 2~3 pF;8 负载时总线电容可达 20~25 pF,需要较强的驱动(34 Ω)与合适的末端 VTT 端接。超过 4 个负载(无寄存)时应做 IBIS 仿真确认眼高与单调性,或改用 RDIMM。
4.3 电源、VREF、VTT 与去耦细节
| 元件 | 位号示例 | 参数要求 | 封装 | 数量(每颗 DRAM) |
|---|---|---|---|---|
| ZQ 校准电阻 | RZQ1 | 240 Ω ±1%(推荐 0.5%),≤ 100 ppm/℃ | 0402 | 1 |
| VREF 分压电阻 | RV1 / RV2 | 1 kΩ ~ 10 kΩ,精度 0.1% ~ 0.5%(两颗配对) | 0402 | 共用 1 组(或每颗 1 组) |
| VREF 去耦 | CV1 / CV2 | 0.1 µF + 1 µF,X7R/X5R,6.3 V | 0402 / 0603 | VREFCA、VREFDQ 各 1 组 |
| VDD/VDDQ 去耦 | CD1~CD10 | 0.1 µF,X5R,6.3 V | 0402 | 6 ~ 10 |
| VDD/VDDQ 中频 | CD11~CD12 | 1 µF,X5R,6.3 V | 0603 | 2 ~ 4 |
| 体电容 | CD20 | 10 µF(陶瓷)+ 100 µF(聚合物) | 0805 / D 型 | 电源入口 1 ~ 2 |
| VTT 端接电阻 | RT1~RTn | 40 ~ 60 Ω(1%),0402 及以上 | 0402 / 0603 | ADDR/CMD/CK/CTRL 各 1(末端) |
| VTT 去耦 | CT1~CT4 | 10 µF ×2 + 0.1 µF ×4 | 0805 / 0402 | VTT 网络 1 组 |
| RESET# 下拉 | RR1 | 4.7 kΩ ~ 10 kΩ(保证上电低电平) | 0402 | 每 rank 1 颗(可共用) |
| CKE 下拉 | RK1 | 4.7 kΩ(可选,防止上电浮空) | 0402 | 每 rank 1 颗 |
| 源端串阻(可选) | RS1~RSn | 10 ~ 33 Ω(改善过冲,需仿真确认) | 0402 | 按仿真结果 |
① RESET# 必须能被主控在上电时可靠驱动为低,并持续 ≥ 200 µs;若主控 GPIO 在上电复位期间为高阻,必须外置 4.7 kΩ 下拉,否则 DRAM 可能带着不确定状态启动;② 若主控不驱动 RESET#(不推荐),则须用电源监控 / RC 延时电路保证 VDD 稳定后 RESET# 再释放;③ CKE 在 RESET# 期间必须为低,建议同样加 4.7 kΩ 下拉;④ RESET# 与 CKE 上不得串大电阻(会影响沿速率与时序),一般 ≤ 100 Ω;⑤ 多 rank 时 RESET# 可共用一根(同时复位),但 CKE 需每 rank 独立(才能单独控制掉电)。