DDR4 SDRAM 电路设计指南
DDR4-1600 / 1866 / 2133 / 2400 / 2666 / 2933 / 3200(PC4-12800 ~ PC4-25600)· 2 Gb ~ 16 Gb 颗粒(x4 / x8 / x16)· UDIMM / SODIMM / RDIMM / LRDIMM · POD12 · Fly-by · Write Leveling · 2D Training | 编制日期 2026-09-24 | 版本号 Rev 1.5
0 · 文档说明
适用范围
- 本文针对 DDR4 SDRAM (JEDEC JESD79-4)的硬件电路设计,覆盖速率等级 DDR4-1600 ~ DDR4-3200 ,颗粒容量 2 Gb ~ 16 Gb ,位宽 x4 / x8 / x16。
- 覆盖三种落地形态:板载颗粒(down device,直接焊接 FBGA) 、内存条插槽(288 pin UDIMM/RDIMM/LRDIMM、260 pin SODIMM) 、以及 3DS 堆叠封装(2H/4H/8H)。
- 内容包含:DDR3/DDR4/DDR5 差异、封装球位、电气参数、接口与模式寄存器、三轨电源与时序、典型原理图、Bank Group 与训练机制、PCB Layout、SI 与 ODT、ESD 与可靠性、焊接生产、故障排查与检查清单。
- 不含 :控制器 IP 寄存器全表、内存控制器微架构、具体厂商模式寄存器保留位。所有位段、时序数值一律以目标颗粒 datasheet 与主控 DDR 控制器设计指南为准。
本系列其他文档
| 文档 | 器件类型 | 关注重点 |
|---|---|---|
| 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 接口、上拉电阻与总线电容、页写与写保护 |
快速决策:DDR3 / DDR4 / DDR5 / LPDDR4 该怎么选
成本敏感、速率 ≤ 1866 MT/s、主控只有 DDR3 控制器 → DDR3/DDR3L(1.5 V / 1.35 V,8 bank,SSTL_15,需要外部 VTT)。主流通用、速率 2133~3200 MT/s、容量 4~64 GB → DDR4 (1.2 V + VPP 2.5 V,16 bank / 4 bank group,POD12,数据组无外部 VTT,支持 DBI/CRC/CA 校验与内部 VREFDQ 训练)。追求带宽 ≥ 4800 MT/s、单条大容量、可接受更高 BOM 与仿真成本 → DDR5(1.1 V、16n 预取、双 32 bit 子通道、模组上 PMIC、片内 ECC,但控制器与 PDN/热设计难度显著上升)。电池供电、待机功耗第一、无需插槽 → LPDDR4/LPDDR4X(VDD2 1.1 V / VDDQ 0.6 V,双 16 bit 通道,BGA 直焊,不可插拔)。
反例提醒:DDR4 的 VPP 2.5 V 是容易被遗漏的第四轨电源;把 DDR3 的 VTT 端接照搬到 DDR4 数据组会直接拉坏 POD12 眼图(数据组端接到 VDDQ,不是 VDDQ/2)。
本文数值使用约定
表中除明确标注"JEDEC 规定"外,均为典型工程取值示例 。DDR4 不同厂商、不同密度、不同速率等级的参数差异较大:上板前必须用目标型号的 datasheet 与主控控制器设计指南逐项核对,尤其是 tRFC(随密度变化)、tREFI(随温度变化)、ODT 阻值、驱动强度与 VREFDQ 训练范围。
1 · 器件基础
1.1 DDR3 / DDR4 / DDR5 关键规格对比
| 项目 | DDR3 / DDR3L | DDR4 | DDR5 |
|---|---|---|---|
| VDD / VDDQ | 1.5 V ±0.075(DDR3L 1.35 V ±0.067) | 1.2 V ±0.06(1.14~1.26 V) | 1.1 V ±0.055(1.045~1.155 V) |
| 字线升压轨 | 无外接(片内电荷泵) | VPP = 2.5 V(+0.25 / −0.125) | VPP = 1.8 V(部分器件,以 datasheet 为准) |
| I/O 电平标准 | SSTL_15(推挽,端接到 VTT = VDDQ/2) | POD12(伪开漏,接收端端接到 VDDQ) | POD12 兼容电平(更低摆幅) |
| 数据组外部 VTT 端接 | 需要(VTT = 0.75 V,端接电阻排) | 取消,改由片内 ODT | 取消,片内 ODT |
| 预取(Prefetch) | 8n | 8n | 16n |
| 突发长度 | BL8 / BC4 | BL8 / BC4(含 OTF 动态切换) | BL16 / BC8(BL32 OTF 可选) |
| 数据速率 | 800 ~ 2133 MT/s | 1600 ~ 3200 MT/s | 3200 ~ 8800 MT/s |
| Bank 结构 | 8 bank(BA0~BA2) | 16 bank = 4 bank group × 4 bank | 32 bank = 8 bank group × 4 bank |
| Bank Group | 无 | 有(BG0~BG1,x16 部分器件为 BG0 单bit 2 组) | 有(BG0~BG2) |
| DBI 数据总线反转 | 不支持 | 支持(读 DBI / 写 DBI 独立使能) | 支持 |
| 写 CRC | 不支持 | 支持 | 支持(含链路 EDC) |
| 命令/地址奇偶校验 | 不支持 | 支持(PAR 输入 / ALERT# 开漏输出) | 支持 |
| VREF 获取方式 | 外部 VREFCA / VREFDQ 电阻分压 | VREFCA 外部、VREFDQ 片内训练(含 2D) | 片内 + DFE 均衡 |
| 命令编码 | RAS# / CAS# / WE# 独立引脚 | ACT# + RAS#(A16)/CAS#(A15)/WE#(A14) 复用 | 同 DDR4 |
| 3DS 堆叠 | 2H / 4H(有限) | 2H / 4H / 8H(C0/C1/C2 逻辑 rank) | 支持更高堆叠 |
| 片内 ECC | 无 | 无(DIMM ECC 需 72 bit 总线 + 控制器 ECC) | 有(On-die ECC) |
| 颗粒封装 | FBGA-78(x4/x8)/ FBGA-96(x16),0.8 mm pitch | 同 DDR3:FBGA-78(x4/x8)/ FBGA-96(x16),0.8 mm pitch | FBGA(0.8 mm pitch,球数随厂商,约 82~104 球) |
| 模组形态 | 240 pin DIMM / 204 pin SODIMM | 288 pin UDIMM/RDIMM/LRDIMM、260 pin SODIMM | 288 pin(引脚不兼容 DDR4) |
| 模组端稳压 | 全部在主板上 | 全部在主板上(VPP 亦由主板提供) | PMIC 移到模组上(12 V 输入) |
| 颗粒容量 | 1 Gb ~ 8 Gb | 2 Gb ~ 16 Gb | 8 Gb ~ 32 Gb(并继续上探) |
DDR4 相对 DDR3 的六项本质差别(设计时必须逐一落实)
① 电压 1.5 V→1.2 V 且新增 VPP 2.5 V ;② 电平 SSTL_15→POD12 ,端接从 VTT 改为 VDDQ;③ 数据组取消外部 VTT 端接电阻 ,改用片内 ODT(Rtt_Nom / Rtt_WR / Rtt_Park);④ 新增 Bank Group ,tCCD 拆成 tCCD_S / tCCD_L;⑤ 新增 DBI、写 CRC、CA 奇偶校验(PAR/ALERT#)、Gear-down 模式 ;⑥ VREFDQ 改为片内生成并训练(2D training:延迟 × 参考电压二维扫描)。
1.2 封装与球位定义
DDR4 颗粒沿用 0.8 mm 球距的 FBGA 封装:x4 / x8 为 78 球 ,x16 为 96 球 。封装外形常见 9 mm × 10.5 mm(78 球)与 9 mm × 14 mm(96 球),具体以 datasheet 的 package outline 为准,Layout 前必须下载对应型号的封装库与推荐焊盘(NSMD Ø0.35~0.40 mm)。
FBGA-96(x16)球位功能分区FBGA-78(x8)球位功能分区123456789ABCDEFGHJKLVPPZQREFA1(1 脚)地址/命令控制数据组123456789ABCDEFGHJVPPZQREF地址命令数据图例数据组 DQ / DQS / DQS# / DM_n / DBI_n地址命令组 A0~A17 / BA0~1 / BG0~1 / ACT#控制组 CKE / CS# / ODT / RESET# / PAR / ALERT# / TEN / C0~C2电源地 VDD / VDDQ / VSS / VSSQVPP 2.5 V 字线升压模拟/参考 ZQ、VREFCANC / 空位球注 1:上图为功能分区示意,非逐球 pin-map;实际球位顺序、NC 位置、VDD/VSS 数量请查目标型号 datasheet 的 Ball Assignments 表。注 2:球距 0.8 mm,球径典型 Ø0.40~0.45 mm(SAC305),推荐 NSMD 焊盘 Ø0.35~0.40 mm、阻焊开窗 Ø0.50 mm。注 3:A1 球位于封装左上角(凹点/斜角侧),贴片方向与丝印 1 脚标识必须一致;x16 器件比 x8 多出的球主要为 DQ8~DQ15、UDQS/UDQS#、DMU_n/DBIU_n。注 4:电源/地球(灰)占比约 40%~50%,是 PDN 低阻抗回路的主要通道,扇出时优先保证其过孔数量与就近去耦。
图 1-1 DDR4 FBGA-96(x16)与 FBGA-78(x8)球位功能分区示意图(数据组 / 地址命令组 / 控制组 / 电源区 / VPP / ZQ·VREFCA,含 A1 标记)
球位分区的工程含义
| 分区 | 主要信号 | x8 球数(约) | x16 球数(约) | Layout 关注点 |
|---|---|---|---|---|
| 数据组 | DQ0~DQ7(x16 为 DQ0~15)、DQS/DQS#(x16 为 LDQS/LDQS#、UDQS/UDQS#)、DM_n/DBI_n | 20 | 38 | 点对点(板载)/ 共享总线(模组),组内等长 ±5 mil,阻抗 40 Ω 单端 |
| 地址命令组 | A0~A17、BA0~BA1、BG0~BG1、ACT#、RAS#/A16、CAS#/A15、WE#/A14 | 26 | 26 | Fly-by 菊花链,末端端接,分支残桩尽量短 |
| 控制组 | CK/CK#、CKE、CS#(3DS 为 CS_n + C0/C1/C2)、ODT、RESET#、PAR、ALERT#、TEN | 13 | 14 | CK 为差分 80 Ω;RESET#/TEN 可加 10 kΩ 上下拉 |
| 电源地 | VDD、VDDQ、VSS、VSSQ | 16 | 18 | 每个电源球配一个过孔 + 就近 0.1 µF |
| 模拟/参考 | ZQ、VREFCA、VPP | 3 | 3 | ZQ 接 240 Ω ±1% 到 VSSQ,走线短而粗;VREFCA 单独铺铜并包地 |
| NC / 保留 | NC、DNU、RFU | 3 | 3 | 悬空,不连任何网络,焊盘按 datasheet 处理 |
球位三大易错点
① VPP 误接 1.2 V 或悬空 :颗粒无法完成字线升压,表现为刷新后数据丢失或直接训练失败。
② ZQ 电阻用 5% 或 1% 但选错阻值(如 240 kΩ / 24 Ω) :ODT 与驱动强度全部失准,眼图严重闭合。必须 240 Ω ±1%(0402/0603) ,且紧靠 ZQ 球到 VSSQ,走线 ≤ 5 mm。
③ 把 NC 球当 GND 焊接:部分 NC 为内部测试点或 DNU,接地会造成内部短路或参数漂移。
1.3 关键电气参数
| 参数 | 符号 | 最小 | 典型 | 最大 | 单位 | 说明 |
|---|---|---|---|---|---|---|
| 器件电源 | VDD | 1.14 | 1.20 | 1.26 | V | ±5%(JEDEC 规定 ±0.06 V) |
| I/O 电源 | VDDQ | 1.14 | 1.20 | 1.26 | V | 需与 VDD 同源或严格跟踪,偏差 ≤ 30 mV |
| 字线升压电源 | VPP | 2.375 | 2.50 | 2.75 | V | +0.25 / −0.125 V,电流小(典型 1~5 mA,刷新瞬时可达 10 mA) |
| 命令地址参考电压 | VREFCA | 0.49 VDDQ | 0.50 VDDQ | 0.51 VDDQ | V | 需跟踪 VDDQ/2,容差 ±1%(约 ±12 mV),噪声 ≤ ±1% |
| 数据参考电压(片内) | VREFDQ | 60% VDDQ | 70~75% VDDQ | 92.5% VDDQ | V | Range 1:60.0%~92.5% VDDQ;Range 2:45.0%~77.5% VDDQ,由 MR6 训练 |
| ZQ 外部校准电阻 | RZQ | 237.6 | 240 | 242.4 | Ω | ±1%,接 ZQ 球到 VSSQ |
| 输入高电平(DC) | VIH(DC) | VREF+0.065 | --- | VDDQ+0.3 | V | POD12,以 datasheet 的 AC/DC 表为准 |
| 输入低电平(DC) | VIL(DC) | −0.3 | --- | VREF−0.065 | V | 同上 |
| 输出驱动阻抗 | Ron | --- | 34 / 40 / 48 | --- | Ω | MR12:1 配置(RZQ/7、RZQ/6、RZQ/5) |
| 片内端接 | Rtt | 34 | 40~120 | 240 | Ω | RZQ/1~RZQ/7,见 §7.1 |
| 刷新间隔(≤ 85 °C) | tREFI | --- | 7.8 | --- | µs | 85~95 °C 时减半为 3.9 µs |
| 刷新周期(2 Gb / 4 Gb / 8 Gb / 16 Gb) | tRFC | --- | 160 / 260 / 350 / 550 | --- | ns | 随密度变化,务必按型号核对 |
| 工作壳温(商业 / 工业) | TCASE | 0 / −40 | --- | 95 / 95 | °C | 超过 85 °C 需启用 2× 刷新或降额 |
| 存储温度 | TSTG | −55 | --- | 100 | °C | 非工作状态 |
典型工作电流(单颗 8 Gb x8,DDR4-2400,示例值)
| 电流项 | 符号 | 条件 | 典型值 | 单位 | 电源设计用途 |
|---|---|---|---|---|---|
| 激活-预充电电流 | IDD0 | tRC = tRC(min),全 bank 轮转 | 45 ~ 65 | mA | VDD 稳态能力 |
| 预充电待机 | IDD2N | CKE 高,无操作 | 22 ~ 35 | mA | 待机功耗 |
| 激活待机 | IDD3N | 行打开,CKE 高 | 35 ~ 55 | mA | 待机功耗 |
| 突发读 | IDD4R | 连续读 BL8 | 90 ~ 140 | mA | VDDQ 峰值能力 |
| 突发写 | IDD4W | 连续写 BL8 | 100 ~ 165 | mA | VDDQ 峰值能力 |
| 刷新电流(突发) | IDD5B | 突发刷新 | 150 ~ 260 | mA | 刷新瞬间压降 |
| 自刷新(25 °C) | IDD6N | 自刷新,常温 | 6 ~ 12 | mA | 休眠功耗 |
| 自刷新(85 °C) | IDD6N | 自刷新,高温 | 20 ~ 45 | mA | 高温休眠功耗 |
| VPP 电流 | IPP | 平均 / 峰值 | 1 ~ 3 / 10 | mA | VPP LDO 选型裕量 ≥ 50 mA |
上表为量级参考,用于电源芯片选型与 PDN 目标阻抗估算;精确值必须取自目标型号 datasheet 的 IDD Specification 表,并按最坏温度、最坏速率等级取上限。
2 · 接口与协议
DDR4 的命令编码相对 DDR3 发生了结构性变化:RAS# / CAS# / WE# 与地址位 A16 / A15 / A14 复用 ,由 ACT# 引脚区分;同时新增 BG0~BG1(bank group)、PAR(命令地址奇偶校验输入)、ALERT#(开漏错误上报)、TEN(连通性测试使能)。硬件设计的第一件事是把这些信号全部连对,尤其是常常被漏掉的 PAR、ALERT#、TEN、VPP、ZQ。
2.1 信号定义全表
| 信号 | 方向 | 类型 | x4 / x8 | x16 | 说明与设计要点 |
|---|---|---|---|---|---|
| CK / CK# | 输入 | 差分时钟 POD | 1 对 | 1 对 | DDR4-3200 为 1600 MHz 差分;差分阻抗 80 Ω,对内等长 ±2 mil;Fly-by 时是时序基准 |
| CKE | 输入 | 单端 POD | 1 | 1 | 时钟使能;上电后必须保持低电平 ≥ 200 µs,自刷新/掉电入口 |
| CS#(CS_n) | 输入 | 单端 POD | 1 | 1 | 片选;3DS 器件配合 C0/C1/C2 选择物理 rank 内的逻辑 die |
| ACT# | 输入 | 单端 POD | 1 | 1 | DDR4 新增;低电平时 RAS#/CAS#/WE# 有效,高电平时该三引脚复用为 A16/A15/A14 |
| RAS# / A16 | 输入 | 复用 | 1 | 1 | 见命令真值表 |
| CAS# / A15 | 输入 | 复用 | 1 | 1 | 见命令真值表 |
| WE# / A14 | 输入 | 复用 | 1 | 1 | 见命令真值表 |
| BG0 ~ BG1 | 输入 | 单端 POD | 2 | 2 | Bank Group 选择;决定 tCCD_S / tCCD_L,影响实际带宽 |
| BA0 ~ BA1 | 输入 | 单端 POD | 2 | 2 | Bank 组内 bank 选择(4 个) |
| A0 ~ A17 | 输入 | 单端 POD | 18 | 15~17 | 行/列复用;实际使用位数随密度与位宽变化,未用位为 NC;A10 用于 Auto-Precharge,A12 用于 BC4 on-the-fly |
| ODT | 输入 | 单端 POD | 1 | 1 | 片内端接使能;配合 MR1 Rtt_Nom / MR2 Rtt_WR / MR5 Rtt_Park |
| RESET# | 输入 | 单端 POD(施密特) | 1 | 1 | 低有效复位;上电时保持低 ≥ 200 µs;建议 4.7~10 kΩ 下拉 + 100 nF(可选) |
| PAR | 输入 | 单端 POD | 1 | 1 | 命令/地址奇偶校验位;不用时必须接固定电平(推荐 10 kΩ 下拉),不能浮空 |
| ALERT# | 输出 | 开漏 | 1 | 1 | CRC / CA 奇偶 / 温度事件上报;必须外接 4.7~10 kΩ 上拉到 VDDQ(或 1.8 V,按 datasheet),多片时可线与 |
| TEN | 输入 | 单端 POD | 1 | 1 | 连通性测试模式(Connectivity Test Mode);正常工作时必须 10 kΩ 下拉到 VSS |
| DQ | I/O | POD12 | 4 / 8 | 16 | 数据总线;40 Ω 单端,组内等长 ±5 mil |
| DQS / DQS# | I/O | 差分 POD12 | 1 对 | 2 对(LDQS/UDQS) | 数据选通;差分 80 Ω;x16 分上下字节各一对 |
| DM_n / DBI_n | I/O | POD12 | 1 | 2(LDM/UDM) | 写数据掩码(DM 使能时)或数据总线反转(DBI 使能时),二者互斥,由 MR510/11/12 选择 |
| TDQS_t / TDQS_c | 输出 | 差分 | x8 有 | 无 | 仅 x8 器件,用于 x4/x8 混合模组时提供端接;板载单片可关闭(MR15=0)并悬空 |
| ZQ | 参考 | 模拟 | 1 | 1 | 接 240 Ω ±1% 到 VSSQ,走线 ≤ 5 mm,不可与任何信号并行 |
| VREFCA | 参考 | 模拟输入 | 1 | 1 | VDDQ/2(0.60 V),±1%;需 0.1 µF + 10 nF 去耦,单独走线并包地 |
| VDD / VDDQ | 电源 | --- | 1.2 V ±0.06 | VDD 与 VDDQ 可同源,但需分别去耦 | |
| VPP | 电源 | --- | 2.5 V(+0.25 / −0.125) | 字线升压;电流小,可用 3.3 V LDO 或电荷泵;不可省 | |
| VSS / VSSQ | 地 | --- | --- | 信号回流;每个地球至少一个过孔 |
四个最常被漏接 / 错接的引脚
PAR :不使用时若浮空,会在 Fly-by 上引入不确定电平,且部分控制器在上电训练期间会驱动 PAR,浮空会导致 CA 校验误报。→ 10 kΩ 下拉。
ALERT# :开漏输出,无上拉则永远读不到错误,且上电自检可能卡住。→ 4.7~10 kΩ 上拉到 VDDQ,走线远离 DQS/DQ,长度 ≤ 100 mm。
TEN :浮空时噪声可能把器件带入连通性测试模式,表现为"所有 DQ 被内部上下拉、读写全错"。→ 10 kΩ 下拉。
VPP:漏接时部分颗粒仍能通过基本读写,但刷新保持能力极差,高温老化后大面积比特翻转。→ 必须与 VDD 同时甚至更早建立。
2.2 8n 预取与 Bank Group
8n 预取(Prefetch = 8n)
- DDR4 内部阵列一次读出 8 × 总线位宽 的数据到 I/O 缓冲,再用 DDR 方式在 4 个时钟周期内送出(BL8 突发 = 8 个数据拍 = 4 tCK)。
- 核心(阵列)频率 = 数据速率 / 8:DDR4-3200 → 核心 400 MHz,I/O 时钟 1600 MHz。
- 这是 DDR4 能到 3200 MT/s 而核心仍停留在几百 MHz 的根本原因,也是 最小突发长度为 8(BL8) 的原因。
- BC4(突发截断 4)只是把 8n 中的一半丢弃或按 A12 动态选择,不提升峰值效率,仅在窄访问时减少总线占用。
Bank Group(4 组 × 4 bank = 16 bank)
- 16 个 bank 被划分为 4 个 bank group ,每组 4 个 bank。
BG0~BG1选组,BA0~BA1选组内 bank。 - 同组内的连续列访问受 tCCD_S (较长,典型 4 nCK)限制;跨组的连续列访问只受 tCCD_L(较短)限制。
- 因此跨 bank group 交错访问才能真正跑满带宽;访问模式全落在同一组时,有效带宽会明显下降。
- 控制器侧的 bank 交织策略(如 addr bit 映射)必须让连续地址落到不同 bank group。
| 速率等级 | I/O 时钟 | 核心频率(8n 预取) | tCK | BL8 突发时长 | tCCD_S | tCCD_L |
|---|---|---|---|---|---|---|
| DDR4-1600 | 800 MHz | 200 MHz | 1.250 ns | 5.000 ns | 4 nCK | 4 nCK |
| DDR4-1866 | 933 MHz | 233 MHz | 1.071 ns | 4.286 ns | 4 nCK | 4 nCK |
| DDR4-2133 | 1066 MHz | 267 MHz | 0.938 ns | 3.750 ns | 4 nCK | 4 nCK |
| DDR4-2400 | 1200 MHz | 300 MHz | 0.833 ns | 3.333 ns | 4 nCK | 4 nCK |
| DDR4-2666 | 1333 MHz | 333 MHz | 0.750 ns | 3.000 ns | 4 nCK | 4 nCK |
| DDR4-2933 | 1466 MHz | 367 MHz | 0.682 ns | 2.727 ns | 4 nCK | 5 nCK |
| DDR4-3200 | 1600 MHz | 400 MHz | 0.625 ns | 2.500 ns | 4 nCK | 6 nCK |
表中 tCCD_S / tCCD_L 为典型工程取值;不同厂商、不同密度会有差异,请以目标 datasheet 的 speed bin 表为准。
2.3 命令真值表
DDR4 命令由 CS#、ACT#、RAS#/A16、CAS#/A15、WE#/A14 共同编码。关键规则:ACT# = 0 时,三个引脚为 RAS#/CAS#/WE#;ACT# = 1 时,它们被解释为地址位 A16/A15/A14。
| 命令 | CS# | ACT# | RAS#/A16 | CAS#/A15 | WE#/A14 | 附加条件 |
|---|---|---|---|---|---|---|
| MRS(模式寄存器写) | L | H | L | L | L | BG/BA 选择 MR0~MR6;地址位承载配置值 |
| REFRESH(刷新) | L | H | L | L | H | 需满足 tRFC / tREFI |
| 自刷新进入 SRE | L | H | L | H | L | 同时 CKE 拉低 |
| 自刷新退出 SRX | L | H | H | H | H | CKE 拉高后等待 tXSR |
| ACTIVATE(激活行) | L | L | L | H | H | BG/BA 选 bank,A 为行地址 |
| READ | L | L | H | L | H | A10=1 时读后自动预充电 |
| WRITE | L | L | H | L | L | A10=1 时写后自动预充电 |
| PRECHARGE(预充电) | L | L | L | H | L | A10=1 为全部 bank 预充电 |
| ZQ 校准(ZQCL / ZQCS) | L | H | H | H | L | ZQCL 用于上电(等 tZQinit);ZQCS 用于周期性维护(等 tZQCS),两者命令编码相同,由所处阶段区分 |
| NOP / DESELECT | L / H | H | H | H | H | 空操作 |
| 掉电进入 / 退出 | L | H | H | H | H | CKE 低进入,CKE 高退出(tXP / tCKE) |
命令编码的硬件含义(对 Layout 的直接影响)
ACT#与RAS#/CAS#/WE#、A14/A15/A16属于同一命令组 ,必须与地址/命令信号同组等长、同层、同 Fly-by 顺序,否则 ACT# 与地址位的相对偏移会直接造成命令译码错误。- 由于 A14/A15/A16 与命令复用,地址组等长公差必须按命令时序(而非宽松的地址建立时间)来约束,通常整组 ≤ ±25 mil 到 CK。
- CS# 上升/下降沿同样是命令译码的一部分,CS# 必须与 CK 保持严格的建立保持关系,且在多 rank 时每 rank 独立等长。
2.4 模式寄存器 MR0 ~ MR6
模式寄存器通过 MRS 命令写入,BG/BA 选择寄存器编号,地址位承载配置值。以下为硬件工程师必须理解并与固件/控制器对齐的字段 ;位段编号以 JEDEC 通用定义给出,保留位与厂商自定义位以目标 datasheet 为准。
MR0 --- 突发长度、CAS 延迟、DLL 复位
| 位段 | 字段 | 可选值 | 工程建议 |
|---|---|---|---|
| MR01:0 | 突发长度 BL | 00 = BL8 固定;01 = BC4 或 BL8 动态(OTF);10 = BC4 固定 | 通用计算选 01(OTF),由 A12 动态切换;纯流式访问选 00 |
| MR03 | 突发类型 | 0 = 顺序(sequential);1 = 交错(interleaved) | 与控制器配置保持一致,一般 0 |
| MR06:4, 2 | CAS 延迟 CL | 9 ~ 24(按速率等级与是否 Gear-down 取) | 见附录 B 速率表;如 DDR4-3200 常取 CL22(Gear-down 时按 CL/2 编码) |
| MR08 | DLL 复位 | 1 = 复位 DLL(自清零) | 初始化必须执行一次,之后等 tDLLK = 512 nCK(部分场景 768/1024 nCK) |
| MR011:9 | 写恢复 WR | 10 ~ 26(对应 tWR 的 nCK 数) | 按 tWR(典型 15 ns)换算:DDR4-3200 取 24 nCK |
| MR012 | 读预同步 / PPD? | 厂商相关 | 按 datasheet 设为默认值 |
| MR013 | DLL 掉电模式控制 | 0 = 慢速退出(tXPDLL);1 = 快速退出(tXP) | 低功耗场景设 1 可缩短退出时间 |
| MR014 | 测试模式 | 0 = 正常 | 必须为 0 |
MR1 --- DLL 使能、驱动强度、Rtt_Nom、附加延迟、Write Leveling
| 位段 | 字段 | 可选值 | 工程建议 |
|---|---|---|---|
| MR10 | DLL 使能 | 0 = 禁用(低频测试和缓);1 = 使能 | 正常工作必须为 1 |
| MR12:1 | 输出驱动阻抗 DIC | 00 = RZQ/7(34 Ω);01 = RZQ/5(48 Ω);10 = RZQ/6(40 Ω);11 = 保留 | 板载点对点、走线短 → 34 Ω ;多负载/长走线(模组、2 rank)→ 40 或 48 Ω;需仿真确认 |
| MR14:3 | 附加延迟 AL | 00 = 禁用;01 = CL−1;10 = CL−2 | 由控制器调度策略决定,一般 00 |
| MR15 | TDQS 使能(仅 x8) | 0 = 禁用;1 = 使能 | 板载单片 x8 → 0(悬空 TDQS 引脚),混合模组 → 1 |
| MR17 | Write Leveling 使能 | 0 = 禁用;1 = 使能 | 训练阶段置 1,训练完成后必须清 0 |
| MR18 | 输出使能(Qoff) | 0 = 输出使能;1 = 输出关闭 | 正常 0 |
| MR110:8 | Rtt_Nom | 000 = 断开;001 = RZQ/1(240 Ω);010 = RZQ/2(120 Ω);011 = RZQ/3(80 Ω);100 = RZQ/4(60 Ω);101 = RZQ/5(48 Ω);110 = RZQ/6(40 Ω);111 = RZQ/7(34 Ω) | 见 §7.1 选型表;板载单 rank 常用 60 Ω 或 48 Ω ,2 rank 常用 40 Ω |
| MR112 | 预充电掉电 / 低功耗 | 厂商相关 | 按 datasheet 默认 |
| MR113 | CRC/DM 相关或保留 | --- | 以 datasheet 为准 |
MR2 --- CAS 写延迟 CWL、Rtt_WR(动态 ODT)、自刷新温度范围
| 位段 | 字段 | 可选值 | 工程建议 |
|---|---|---|---|
| MR22:0 | 部分阵列自刷新 PASR | 000 = 全部刷新;其余按 bank 屏蔽 | 正常 000;LPDDR 式省电才用 |
| MR25:3 | CAS 写延迟 CWL | 9 ~ 20 | 按速率等级:DDR4-1600 → CWL 9/11;DDR4-2400 → CWL 12/14;DDR4-3200 → CWL 16/18 |
| MR26 | 自动自刷新 ASR | 0 = 手动(SRT);1 = 自动 | 无温控固件时设 1,由颗粒根据内部温度传感器自动加倍刷新 |
| MR27 | 自刷新温度范围 SRT | 0 = 常温范围;1 = 扩展范围(85~95 °C 时 2× 刷新) | ASR=0 时由固件按温度设置;高温设备选 1 |
| MR29:8 | Rtt_WR(写动态 ODT) | 00 = 动态 ODT 关闭;01 = RZQ/2(120 Ω);10 = RZQ/1(240 Ω);11 = 保留 | 多 rank 共享 DQ 总线时必须使能:被写 rank 用 Rtt_WR,非目标 rank 用 Rtt_Nom(或 Rtt_Park) |
| MR210:12 | LPASR / 写 CRC 使能 | 厂商相关;部分器件 MR212 为写 CRC 使能 | 需要写 CRC 时置 1,并与控制器 CRC 使能同步;位段以 datasheet 为准 |
MR3 --- MPR、Gear-down 模式、刷新粒度
| 位段 | 字段 | 可选值 | 工程建议 |
|---|---|---|---|
| MR31:0 | MPR 页选择 | 00 = Page 0(预定义图案);01 = Page 1;10 = Page 2;11 = Page 3 | 读/写 leveling 训练必须使用 MPR:MPR 读出固定图案(如 0x00/0xFF/交替),排除阵列数据干扰 |
| MR32 | MPR 操作 | 0 = 正常读;1 = MPR 读 | 训练时置 1,训练结束清 0 |
| MR33 | Gear-down 模式 | 0 = 1/2 速率命令(正常);1 = Gear-down(1/4 速率命令) | DDR4-2666 及以上且 Fly-by 负载重时建议使能:命令/地址以 1/2 速率发送、每个命令占 2 nCK,显著降低 CA 时序压力,代价是命令带宽略降 |
| MR35:4 | MPR 读格式 | 串行 / 并行 / 交错 | 按控制器训练流程选择,一般串行 |
| MR38:6 | 刷新粒度(Fine Granularity Refresh) | 1× / 2× / 4×(部分器件) | 抗 Row Hammer 时可配置为 2× 或 4× 刷新;以 datasheet 为准 |
| MR312:11 | MPR 读格式高位 | 与 MR35:4 组合 | 按控制器要求 |
MR4 --- 前导、最大掉电、3DS 的 CS-to-CA 延迟
| 位段 | 字段 | 可选值 | 工程建议 |
|---|---|---|---|
| MR40 | 最大掉电模式 MPD | 0 = 正常;1 = 最大掉电(DLL/PLL 关闭) | 极低功耗待机时使用,唤醒时间显著变长 |
| MR44 | 内部 VREF 监视 | 0 = 关闭;1 = 通过 MPR 输出内部 VREF 电平 | 调试 VREFDQ 训练时使用 |
| MR48:6 | CS 到命令/地址延迟(3DS) | 0 ~ 6 nCK | 3DS 堆叠(2H/4H/8H)必须配置,用于补偿 C0/C1/C2 相对 CS# 的飞行时间差 |
| MR49 | 写前导 | 0 = 1 tCK;1 = 2 tCK | 高速(≥ 2666)常取 2 tCK 以改善写眼图 |
| MR410 | 读前导 | 0 = 1 tCK;1 = 2 tCK | ≥ 2666 建议 2 tCK,与控制器 DQS 门控训练配合 |
| MR411 | 读前导训练模式 | 0 = 关闭;1 = 使能 | DQS 门控训练阶段必须使能,训练完成清 0 |
| MR412 | 自刷新中止 / 其他 | 厂商相关 | 以 datasheet 为准 |
MR5 --- Rtt_Park、CA 奇偶校验、DM / DBI
| 位段 | 字段 | 可选值 | 工程建议 |
|---|---|---|---|
| MR52:0 | CA 奇偶校验延迟 PL | 000 = 禁用;其余 = 4/5/6/8 nCK(与速率相关) | 需要 CA 校验时按速率设置;控制器侧需同步使能 PAR 生成 |
| MR53 | CA 奇偶错误状态 | 只读,读后清除 | 调试时轮询判断是否发生 CA 传输错误 |
| MR54 | CA 奇偶持续错误 | 只读 | 置位说明存在系统性 SI 问题,需查 VREFCA / 时序 / 端接 |
| MR58:6 | Rtt_Park(空闲端接) | 同 Rtt_Nom:断开 / 240 / 120 / 80 / 60 / 48 / 40 / 34 Ω | 多 rank 系统中非选中 rank 用 Rtt_Park 端接,抑制总线浮空反射 |
| MR510 | 数据掩码 DM 使能 | 0 = 禁用;1 = 使能 | 与 DBI 互斥:需要字节写掩码时用 DM |
| MR511 | 读 DBI 使能 | 0 = 禁用;1 = 使能 | 降低读功耗与 SSN,需控制器支持 |
| MR512 | 写 DBI 使能 | 0 = 禁用;1 = 使能 | 降低写功耗与 SSN,需控制器支持 |
MR6 --- VREFDQ 片内训练值
| 位段 | 字段 | 可选值 | 工程建议 |
|---|---|---|---|
| MR65:0 | VREFDQ 训练值 | 0 ~ 63(步进约 0.5% VDDQ,实际步进按 datasheet) | 由训练固件扫描;典型最终值落在 70%~75% VDDQ(POD12 端接到 VDDQ,摆幅中心高于 VDDQ/2) |
| MR66 | VREFDQ 训练值最高位 | 与 MR65:0 组合成 7 bit | --- |
| MR67 | VREFDQ 范围选择 | 0 = Range 1(60.0% ~ 92.5% VDDQ);1 = Range 2(45.0% ~ 77.5% VDDQ) | 先用 Range 1 扫描;若最优点落在边界,切到 Range 2 复扫 |
| MR68 | VREFDQ 训练使能 | 0 = 训练完成(冻结);1 = 训练中 | 训练结束必须置 0,否则数值不生效 |
MRS 配置序列示例(寄存器级伪代码)
// ---------- DDR4-2400, 8Gb x8, 板载 2 rank, 64 bit 总线 ----------
// 说明:以下为工程示例,地址/位段编码以目标 datasheet 为准
// 1) 复位释放后先发 DLL 复位
MRS( MR = 0, value = 0x0A10 | (CL_Encode(16) << 4) | (1 << 8) ); // MR0: BL8 OTF + DLL reset
wait( tDLLK = 512 nCK ); // DLL 锁定等待
// 2) MR1: DLL 使能 + 驱动强度 40 Ω + Rtt_Nom = 60 Ω(RZQ/4) + WL 关闭
MRS( MR = 1, value = (1 << 0) // DLL enable
| (0b10 << 1) // DIC = RZQ/6 = 40 Ω
| (0b100 << 8) // Rtt_Nom = RZQ/4 = 60 Ω
| (0 << 7) ); // Write leveling = off
// 3) MR2: CWL = 14, ASR = 1, Rtt_WR = 120 Ω(RZQ/2), 写 CRC 使能
MRS( MR = 2, value = (CWL_Encode(14) << 3)
| (1 << 6) // ASR = auto self-refresh
| (0b01 << 8) // Rtt_WR = RZQ/2 = 120 Ω
| (1 << 12) ); // write CRC enable (位段以 datasheet 为准)
// 4) MR3: MPR page0 + gear-down 关闭 + 1x 刷新
MRS( MR = 3, value = (0b00 << 0) | (0 << 2) | (0 << 3) );
// 5) MR4: 读/写前导 1 tCK, CS-to-CA latency = 0 (非 3DS)
MRS( MR = 4, value = 0x0000 );
// 6) MR5: Rtt_Park = 240 Ω(RZQ/1), DM 使能, DBI 关闭, CA parity 关闭
MRS( MR = 5, value = (0b001 << 6) // Rtt_Park = RZQ/1 = 240 Ω
| (1 << 10) ); // DM enable
// 7) MR6: VREFDQ 先给默认中点, 训练阶段再扫描
MRS( MR = 6, value = (0 << 7) | (0x20 << 0) ); // Range1, code 0x20, training on
wait( tMRD = 8 nCK ); wait( tMOD = max(24 nCK, 15 ns) ) 之间插 NOP;
MRS 时序硬约束(违反会导致初始化随机失败)
相邻两条 MRS 命令间隔 ≥ tMRD = 8 nCK ;MRS 之后到任何非 MRS 命令需等待 tMOD = max(24 nCK, 15 ns) ;DLL 复位之后必须等 tDLLK ;VREFDQ 训练值写入后需等 tVREF_long / tVREF_short(随步进跨度变化)才能采样。写固件时把这四个等待做成显式宏,不要靠经验延时。
2.5 突发长度、CRC 与命令地址奇偶校验
突发长度 BL8 / BC4
- BL8:8 拍数据,占 4 tCK,是 DDR4 的原生突发(8n 预取)。
- BC4 :突发截断到 4 拍,占 2 tCK;可由 MR01:0 固定,或在 OTF 模式下由 A12 在读写命令时动态选择。
- CRC 与 BC4 冲突 :写 CRC 使能时,CRC 需要额外的突发拍,因此 写 CRC 只能与 BL8 配合使用(CRC 占第 9、10 拍,写突发变为 10 拍 / 5 tCK)。控制器与 DRAM 必须一致配置。
- 硬件影响:使能写 CRC 后,写数据的 DQ 有效窗口延长 2 拍,tWR、tWTR 等写相关时序需按 datasheet 追加。
CRC 与 CA 奇偶校验的作用边界
- 写 CRC :由控制器在写数据后附加 CRC 码,DRAM 校验;出错时拉低
ALERT#,并记录错误状态。只检错不纠错,需由软件重试。 - CA 奇偶校验 :控制器在每个命令/地址周期给出
PAR奇偶位,DRAM 校验奇偶;出错同样通过ALERT#上报。 - 两者的价值在于把间歇性 SI 失效从"静默数据损坏"变成"可检测、可上报的错误",是服务器/工业产品的必选项。
- 硬件代价:PAR 需要与地址/命令同组等长(它是命令编码的一部分);ALERT# 需上拉并连到控制器中断或 GPIO。
| 机制 | 保护对象 | 关键引脚 | 使能位 | 开销 | 错误上报 |
|---|---|---|---|---|---|
| 写 CRC | 写数据 DQ | ALERT# | MR2(位段以 datasheet 为准) | 写突发 +2 拍(BL8 → 10 拍) | ALERT# 拉低 + 错误状态位 |
| CA 奇偶校验 | ACT#/RAS#/CAS#/WE#/A/BA/BG | PAR(输入)、ALERT#(输出) | MR52:0 奇偶延迟 PL | 每命令 1 bit 奇偶;延迟 PL 个时钟 | ALERT# 拉低 + MR53/4 状态位 |
| DBI(数据总线反转) | 不检错,用于降低功耗与 SSN | DM_n/DBI_n 复用 | MR511 读 / MR512 写 | 与 DM 互斥 | --- |
| ECC(外部) | 全数据路径 | 额外 8 bit DQ(72 bit 总线) | 控制器侧 | 容量 +12.5%,延迟略增 | 控制器中断 |
2.6 带宽计算
理论峰值带宽 (GB/s) = 数据速率(MT/s) × 总线位宽(bit) / 8 / 1000
64 bit 单通道:
DDR4-1600 : 1600 × 64 / 8 = 12800 MB/s = 12.8 GB/s (PC4-12800)
DDR4-2133 : 2133 × 64 / 8 = 17064 MB/s = 17.0 GB/s (PC4-17000)
DDR4-2400 : 2400 × 64 / 8 = 19200 MB/s = 19.2 GB/s (PC4-19200)
DDR4-2666 : 2666 × 64 / 8 = 21328 MB/s = 21.3 GB/s (PC4-21300)
DDR4-2933 : 2933 × 64 / 8 = 23464 MB/s = 23.4 GB/s (PC4-23400)
DDR4-3200 : 3200 × 64 / 8 = 25600 MB/s = 25.6 GB/s (PC4-25600)
32 bit(单片 x16 ×2 或单片 x16 32bit): 峰值减半 → DDR4-3200 = 12.8 GB/s
双通道 64 bit ×2 : DDR4-3200 = 51.2 GB/s
有效带宽估算:
有效带宽 ≈ 峰值 × 效率系数 × (1 − 刷新开销 − 读写切换开销)
刷新开销 = tRFC / tREFI
8 Gb @ 85 °C 以下: 350 ns / 7800 ns = 4.5%
8 Gb @ 85~95 °C : 350 ns / 3900 ns = 9.0%
16 Gb @ 85 °C 以下: 550 ns / 7800 ns = 7.1%
效率系数经验值:
纯顺序流式访问(跨 bank group 交错): 0.85 ~ 0.92
常规应用(随机 + 顺序混合) : 0.60 ~ 0.75
随机小颗粒访问(行命中率低) : 0.35 ~ 0.55
读写频繁切换(每 64 B 切换一次) : 再打 0.85 ~ 0.95
示例: DDR4-3200 64 bit, 8 Gb 颗粒, 常温, 常规应用
有效 ≈ 25.6 × 0.70 × (1 − 0.045) ≈ 17.1 GB/s
带宽设计的工程结论:与其把速率从 2666 提到 3200(+20% 峰值),不如优化访问模式让其跨 bank group 交错、减少读写切换、降低刷新占用,往往能拿到更大收益;同时 3200 对 PDN、Layout 与训练的要求陡增,成本与风险不成正比。
3 · 电源设计
DDR4 的电源是四轨 :VDD(1.2 V,核心逻辑)、VDDQ(1.2 V,I/O)、VPP(2.5 V,字线升压)、VREFCA(0.6 V,命令地址参考)。与 DDR3 相比多了一条 VPP ,且数据组的 VREFDQ 改为片内生成 、数据组取消外部 VTT 端接------这两点是最容易沿用 DDR3 经验而出错的地方。
3.1 三轨电源与 POD12 电平
| 电源轨 | 标称 | 允许范围 | 精度要求 | 典型电流(4 片 8 Gb x8) | 推荐实现 | 失效后果 |
|---|---|---|---|---|---|---|
| VDD | 1.2 V | 1.14 ~ 1.26 V(±5%) | ±5% | 0.2 ~ 0.8 A | 与主 VDDQ 同源的 DCDC 或独立 DCDC(≥ 6 A) | 欠压→DLL 失锁、训练失败;过压→器件永久损伤 |
| VDDQ | 1.2 V | 1.14 ~ 1.26 V(±5%) | 与 VDD 偏差 ≤ 30 mV | 0.15 ~ 0.6 A | 与 VDD 同源(磁珠/0 Ω 隔离 + 各自去耦)或独立路 | 眼图中心漂移、VREFCA/VREFDQ 跟踪失效 |
| VPP | 2.5 V | 2.375 ~ 2.75 V(+0.25 / −0.125) | +10% / −5% | 5 ~ 40 mA | 由 3.3 V 经 LDO 降压,或 1.2 V/1.8 V 经电荷泵升压;输出能力 ≥ 50 mA | 字线升压不足→行无法完全打开→刷新保持能力丧失、高温丢数据 |
| VREFCA | 0.60 V(VDDQ/2) | 0.49 ~ 0.51 VDDQ | 跟踪 VDDQ/2,偏差 ≤ ±1%(±12 mV) | < 1 mA | 专用 DDR VREF 缓冲、或 1 kΩ/1 kΩ ±0.1% 分压 + 运放跟随 | 偏小→命令采样窗口整体上移,误触发 ACTIVATE;偏大→命令漏检 |
| VREFDQ | 片内生成 | Range 1:60% ~ 92.5% VDDQ Range 2:45% ~ 77.5% VDDQ | 由训练确定 | --- | 无需外部电路,由 MR6 训练 | --- |
| VTT(可选) | 0.60 V | VDDQ/2 ±1% | 仅地址/命令 Fly-by 末端端接使用 | 0.1 ~ 0.5 A | VTT LDO(吸/灌型),配 ≥ 20 µF + 0.1 µF | 误接到 DQ 上会严重破坏 POD12 眼图 |
POD12 与 SSTL 的端接差异(硬件设计的核心分水岭)
DDR3 的 SSTL_15 是推挽 输出,端接电阻接到 VTT = VDDQ/2 ,因此数据组需要一片 VTT 电源与大量端接电阻排。
DDR4 的 POD12(Pseudo Open Drain) :驱动器只主动下拉 (低电平由驱动管的 Ron 建立),高电平由接收端的片内 ODT 上拉到 VDDQ 提供。因此:
① 端接点是 VDDQ 而不是 VTT ,数据组不再需要任何外部端接电阻与 VTT 电源 ;
② 信号摆幅不再关于 VDDQ/2 对称:低电平约 VDDQ × Ron/(Ron+Rtt)(Ron=40 Ω、Rtt=60 Ω 时约 0.48 V),高电平约 VDDQ,所以 VREFDQ 的合理值在 70%~75% VDDQ 而非 50% ;
③ 静态功耗上,POD 在传输高电平时几乎不耗电(无 DC 通路),这也是 DDR4 更省电的原因之一;
④ 地址/命令组是 Fly-by 多负载拓扑 ,DDR4 颗粒通常不在片内端接 C/A,因此 Fly-by 末端仍需端接 :可由控制器侧 ODT 提供,或外接 39~56 Ω 到 VTT(0.6 V),具体取决于主控设计与仿真结果。
VREFCA 生成电路设计要求
- VREFCA 必须实时跟踪 VDDQ 的一半 。用固定 LDO 输出 0.6 V 而不跟踪,会在 VDDQ 波动时引入共模误差;推荐做法:由 VDDQ 经 两颗 1 kΩ ±0.1%(≤ 25 ppm/°C)电阻分压 ,再经低失调运放/专用缓冲驱动。
- 缓冲输出必须稳定驱动容性负载:加 10 nF + 0.1 µF + 1 µF(并联)到地,并保证运放在该容性负载下不振荡(输出端串 1~2 Ω 隔离电阻)。
- VREFCA 走线:独立走线、两侧包地、线宽 ≥ 10 mil,长度尽量短(≤ 80 mm),不与 DQ/DQS/CK 相邻或平行。
- 每颗颗粒的 VREFCA 球旁放置 0.1 µF + 10 nF(0402)到地。
- 允许的 VREFCA 噪声(含 DC 误差 + 纹波 + 噪声)一般按 ≤ ±1% VDDQ(约 12 mV) 设计,纹波分量控制在 ≤ 5 mV rms。
3.2 上电与初始化时序
t0电源稳定RESET# 释放CKE↑训练开始就绪上电复位保持 ≥200 µs初始化(等待 → MRS → ZQCL → DLL 锁定)训练(WL/门控/读/2D)VPP 2.5 V2.5 V(+0.25 / −0.125)上升VDD 1.2 V1.2 V ±0.06VDDQ 1.2 V与 VDD 偏差 ≤ 30 mV① VPP 必须不晚于 VDD 建立,且不得晚于 VDDQ;缓升/迟滞是初始化随机失败的常见原因RESET#低电平 ≥ 200 µs(电源稳定后计)≥ 500 µsCKEtXPR = max(5 nCK, tRFC + 10 ns)CK / CK#时钟必须早于第一条 MRS 稳定(≥ 5 nCK 稳定期)命令M3M6M5M4M2ZQCLM1M0*MRS 序列(示例:MR3→MR6→MR5→MR4→MR2→MR1→MR0,MR0 带 DLL 复位)tDLLK = 512 nCK
图 3-1 DDR4 上电、复位、初始化与训练时序波形(VPP→VDD→VDDQ 建立、RESET# 200 µs、CKE、tXPR、ZQCL、MRS、DLL 锁定、训练阶段)
上电/初始化硬性顺序(逐条落实)
// ---------- DDR4 上电初始化序列(硬件时序约束) ----------
T0 : VPP 开始上升 // VPP 不得晚于 VDD
T1 : VDD 开始上升 // VDD 与 VDDQ 可同时
T2 : VDDQ 开始上升 // |VDD − VDDQ| ≤ 30 mV(稳态与瞬态均需满足)
└─ 上电全过程 RESET# 必须保持 ≤ 0.2 × VDDQ,CKE 保持 ≤ 0.2 × VDDQ
T3 : 电源全部稳定(VDD/VDDQ 进入 1.14~1.26 V,VPP 进入 2.375~2.75 V)
└─ RESET# 继续保持低电平 ≥ 200 µs ← JEDEC 硬性要求
└─ CKE 继续保持低电平
T4 : RESET# 释放(拉高)
└─ CKE 仍保持低电平
└─ 等待 ≥ 500 µs(部分器件按 datasheet 为 tINIT3/tINIT5,需核对)
T5 : CKE 拉高,等待 tXPR = max(5 nCK, tRFC + 10 ns)
└─ 时钟 CK/CK# 必须在 CKE 拉高前已稳定(≥ 稳定 5 nCK 且抖动达标)
T6 : 发送 MRS 序列(相邻 MRS 间隔 ≥ tMRD = 8 nCK)
MR3 → MR6 → MR5 → MR4 → MR2 → MR1 → MR0(DLL reset = 1)
└─ 最后一条 MRS 之后等待 tMOD = max(24 nCK, 15 ns) 才能发非 MRS 命令
T7 : ZQCL(上电长校准),等待 tZQinit = 512 nCK
T8 : 等待 tDLLK = 512 nCK(DLL 锁定;低速/特殊模式可能 768 或 1024 nCK)
T9 : 训练(Training)
a) Write Leveling ------ 每字节通道独立,补偿 Fly-by 的 CK→DQS 偏移
b) DQS 门控训练 ------ 确定读 DQS 前导窗口(配合 MR4[11] 读前导训练模式)
c) Read Leveling ------ MPR 图案,扫描 DQS 延迟确定读数据眼中点
d) Write Leveling 复检 ------ 部分控制器在写 DQ 延迟确定后复扫
e) VREFDQ 训练(1D) ------ 扫描 MR6,找到最大 VREF 裕量
f) 2D Training ------ 延迟 × VREFDQ 二维扫描,取联合窗口中心
g) (可选)CA 训练 / VREFCA 训练、读/写 DBI 训练
T10: 训练完成 → 清除训练模式位(MR1[7]=0、MR3[2]=0、MR4[11]=0、MR6[8]=0)
→ 进入正常工作,开始周期性刷新(tREFI)与 ZQCS(tZQCS = 64 nCK)
掉电与自刷新
| 场景 | 操作顺序 | 关键时序 | 注意事项 |
|---|---|---|---|
| 进入自刷新 | 所有 bank 预充电 → 发 SRE(CKE 拉低)→ 保持 VDD/VDDQ/VPP/VREFCA | tCKE ≥ max(3 nCK, 5 ns);退出后等 tXSR = tRFC + 10 ns | 自刷新期间 VREFCA 必须保持有效;温度 > 85 °C 时自动 2× 刷新(若 ASR=1) |
| 进入掉电(Power-Down) | 预充电掉电:所有 bank 预充电 → CKE 低;激活掉电:行保持打开 → CKE 低 | 退出等待 tXP = max(4 nCK, 6 ns)(DLL 保持)或 tXPDLL(DLL 掉电) | 掉电期间刷新停止,停留时间不得超过 9 × tREFI(典型 64 ms 内),否则数据丢失 |
| 受控掉电(断电关机) | CKE 低 → 撤 VDDQ → 撤 VDD → 撤 VPP | VDD 与 VDDQ 压差始终 ≤ 0.3 V(部分器件要求,以 datasheet 为准) | 严禁在 VDD 仍有效时撤 VPP;严禁 VPP 高于 VDD 超过规格 |
| 突然断电 | --- | --- | 掉电检测电路应在 ≤ 1 ms 内把 CKE 拉低进入自刷新或切断负载,防止刷新中途断电造成行数据破坏 |
3.3 去耦电容配置与 PDN 目标阻抗
PDN 目标阻抗计算
Z_target = (VDD × 允许纹波百分比) / ΔI_max
示例:4 片 8 Gb x8,DDR4-2400,连续写
ΔI_max(动态电流跳变)≈ 0.6 A(VDD)+ 0.5 A(VDDQ)
允许纹波 = ±3%(留 2% 给 DC 容差与器件差异,规格为 ±5%)
Z_target(VDD) = (1.2 V × 0.03) / 0.6 A = 60 mΩ
Z_target(VDDQ) = (1.2 V × 0.03) / 0.5 A = 72 mΩ
→ 工程上取更严格者,统一按 ≤ 30~50 mΩ 设计整个 PDN(DC ~ 100 MHz)
频段划分与责任元件:
DC ~ 100 kHz : DCDC 环路响应 + 大容量 Bulk 电容
100 kHz ~ 2 MHz: Bulk(100~220 µF)+ 中频陶瓷(10 µF)
2 MHz ~ 30 MHz : 高频陶瓷(0.1 µF 0402,靠近 BGA)
30 MHz ~ 200 MHz: 电源/地平面对电容(平面间距 ≤ 4 mil)+ 封装内电容
> 200 MHz : 由颗粒封装内去耦与片内电容承担,PCB 侧已难以改善
去耦电容配置表(以 4 片 x8 板载设计为例)
| 位置 | 容值 | 封装 | 数量 | 耐压 | 作用 | 布局要求 |
|---|---|---|---|---|---|---|
| DCDC 输出 | 100 ~ 220 µF | 聚合物钽/低 ESR 铝电解 | 1 ~ 2 | 2.5 V / 6.3 V | Bulk,维持 DC~100 kHz | 距 DCDC 输出端 ≤ 15 mm |
| DDR 区域入口 | 10 µF | 0805 X5R | 4 ~ 8 | 6.3 V | 中频储能 | 沿 DDR 阵列两侧均匀分布 |
| 每颗颗粒 VDD/VDDQ 球区 | 0.1 µF | 0402 X5R | 4 ~ 6 / 片 | 6.3 V | 高频去耦(至 ~25 MHz) | 背面紧贴 BGA 投影区,过孔到焊盘总长 ≤ 1.5 mm |
| 每颗颗粒 VDD/VDDQ 球区 | 1 µF | 0402/0603 X5R | 1 ~ 2 / 片 | 6.3 V | 中高频补位 | 与 0.1 µF 交替排布 |
| VPP(每片) | 1 µF + 0.1 µF | 0402/0603 X5R | 各 1 / 片 | 6.3 V / 10 V | VPP 纹波 ≤ 50 mV | 靠近 VPP 球,注意 2.5 V 走线载流足够(≥ 10 mil) |
| VREFCA(每片) | 0.1 µF + 10 nF | 0402 X7R | 各 1 / 片 | 6.3 V | 参考电压滤波 | 紧靠 VREFCA 球,回流到干净地 |
| VTT(若使用) | 20 µF + 0.1 µF × 4 | 0805 + 0402 | --- | 6.3 V | 吸/灌瞬态 | 紧靠 VTT LDO 与末端端接电阻 |
| ZQ | 240 Ω ±1% | 0402 | 1 / 片 | --- | ODT 与驱动强度基准 | 紧靠 ZQ 球,两引脚走线总长 ≤ 5 mm |
去耦电容的三个反直觉要点
① 容值越大不一定越好 :0.1 µF 0402 的自谐振频率(SRF)约 15~25 MHz,1 µF 0402 约 5~8 MHz。超过 SRF 后电容呈感性,只对更低频有用。因此必须多容值并联 且优先用小封装(0402 > 0603 > 0805,ESL 更低)。
② 过孔电感常常毁掉去耦效果 :一对过孔(电源+地)的回路电感约 0.5~1 nH,与 0402 电容自身的 ESL 相当。做法:电容电源/地焊盘各打 2 个过孔 、电源地过孔紧邻且方向相反 (回路面积最小)。
③ 直流偏压效应 :X5R 0402 10 µF/6.3 V 在 1.2 V 偏置下容量可能衰减到标称的 30%~50%。选型时要看 DC bias 曲线,或选更高耐压(10 V)与更大封装。
3.4 功耗估算与热设计
// ---------- 功耗估算示例:4 片 8 Gb x8,DDR4-2400,70% 写 + 30% 读 ----------
P_VDD = VDD × ΣIDD = 1.2 V × (0.15 A × 4) = 0.72 W
P_VDDQ = VDDQ × ΣIDDQ = 1.2 V × (0.10 A × 4) = 0.48 W
P_VPP = VPP × ΣIPP = 2.5 V × (0.003 A × 4)= 0.03 W
P_ODT ≈ (VDDQ² / Rtt) × 线数 × 写占空比
= (1.44 / 60 Ω) × 72 × 0.35 ≈ 0.60 W // 端接功耗,常被忽略!
P_Refresh ≈ IDD5B × VDD × (tRFC / tREFI)
= 0.2 A × 1.2 V × (350 ns / 7800 ns) × 4 片 ≈ 0.04 W
------------------------------------------------
P_total ≈ 1.87 W(4 片,约 0.47 W/片)
温升估算:
θJA(FBGA-96,4 层板 + 底部散热过孔)≈ 30 ~ 40 °C/W
ΔT = P_per_device × θJA = 0.47 W × 35 °C/W ≈ 16.5 °C
环境温度 55 °C → TCASE ≈ 71.5 °C → 接近 85 °C 的 2× 刷新阈值,需优化
降额策略:
· TCASE > 85 °C:tREFI 由 7.8 µs 缩到 3.9 µs → 刷新功耗翻倍、带宽降 5%~9%
· TCASE > 55 °C:建议每升高 10 °C 降一档速率(如 3200 → 2933 → 2666)
· 改善手段:颗粒底部铺完整铜皮 + Ø0.3 mm 散热过孔阵列(间距 1.0~1.2 mm)
导热垫(1.0~1.5 W/m·K)连到金属外壳或散热器
避免颗粒正上方堆叠发热器件(PMIC、功率电感、CPU)
| 热设计项 | 目标值 | 实现手段 | 验证方法 |
|---|---|---|---|
| TCASE(商业级) | ≤ 85 °C(推荐)/ ≤ 95 °C(极限) | 散热过孔 + 铺铜 + 风道 | 热电偶贴颗粒表面,跑满带宽压力测试 30 min |
| TCASE(工业级) | −40 ~ 95 °C | 选工业级颗粒(-40~95 °C 型号) | 高低温箱 + 内存压力测试 |
| 颗粒间温差 | ≤ 5 °C | 均匀分布、对称布局、避免串联风道 | 红外热像仪 |
| 温度补偿自刷新 | ASR = 1(自动)或固件按 SRT 位切换 | MR26/MR27 配置 + 控制器温度采样 | 85 °C 环境下长时间数据保持测试 |
4 · 典型应用电路
DDR4 的硬件形态分两类:板载颗粒(down device) 与 内存条模组(DIMM)。板载颗粒走线短、SI 好但不可更换;模组可更换、容量灵活但对主板 Layout 与 PDN 要求更高。以下四张原理图覆盖四种典型接法。
4.1 单片 x16(16 bit 总线)板载接法
SoC / FPGADDR4 控制器 + PHY· 1 × 16 bit 通道· DDR4-2400(示例)· 支持 write leveling· 支持 2D VREFDQ 训练· 内建 ODT 控制逻辑· 地址/命令为 Fly-by· DQ/DQS 点对点· PAR 生成、ALERT# 输入· 温度补偿刷新(可选)· 预留 I²C 读取模组 SPD(板载时不用)DDR4 SDRAM x168 Gb · FBGA-96 · 0.8 mm pitch· 16 bank = 4 BG × 4 bank· POD12,片内 ODT· VDD/VDDQ 1.2 V· VPP 2.5 V· VREFCA 外部 0.6 V· VREFDQ 片内训练· DQ0~DQ15· LDQS/LDQS#、UDQS/UDQS#· LDM/LDBI#、UDM/UDBI#· 行地址 A0~A15 / 列 A0~A9CK / CK#(差分 80 Ω,对内 ±2 mil)CKECS# / ODTACT# / RAS#(A16) / CAS#(A15) / WE#(A14)A17:0 / BA0~BA1 / BG0~BG1(Fly-by,40 Ω)PAR(命令地址奇偶)10 kΩ 下拉(不用 PAR 时)ALERT#(开漏输出,CRC/CA 错误上报)4.7~10 kΩ 上拉到 VDDQRESET#(4.7~10 kΩ 下拉) / TEN(10 kΩ 下拉,正常模式)DQ15:0(16 根,40 Ω 单端,组内等长 ±5 mil)LDQS/LDQS#、UDQS/UDQS#(差分 80 Ω,双向)LDM/LDBI#、UDM/UDBI#(DM 与 DBI 互斥,由 MR5 选择)VDD / VDDQ 1.2 V ±5%DCDC ≥ 6 A;220 µF ×110 µF ×4;0.1 µF ×16(0402)|VDD − VDDQ| ≤ 30 mVVPP 2.5 V3.3 V → LDO(≥ 50 mA)或 1.2 V → 电荷泵1 µF + 0.1 µF 每片VREFCA 0.60 VVDDQ/2,跟踪 ±1%1 kΩ/1 kΩ ±0.1% + 缓冲0.1 µF + 10 nF,包地走线ZQ240 Ω ±1%(0402)ZQ 球 → VSSQ,走线 ≤ 5 mm不可与高速信号并行① 数据组不接任何外部 VTT 端接电阻:DDR4 用 POD12,端接由颗粒片内 ODT 上拉到 VDDQ 提供(Rtt_Nom / Rtt_WR / Rtt_Park)。② 地址/命令组为多负载 Fly-by:板载单片时负载轻,可不加末端端接;若控制器支持 C/A ODT 则优先用片内方式。③ 单 x16 片仅提供 16 bit 数据总线;需要 32/64 bit 时按 §4.2 方式扩展为多片共享 C/A、DQ 各自独立。
图 4-1 单片 x16 DDR4 颗粒与 SoC 的典型应用电路(CK/CK#、ADDR/BA/BG、ACT#/RAS#/CAS#/WE#、CKE/CS#/ODT/RESET#/PAR/ALERT#/TEN、DQ/DQS/DM/DBI、VREFCA、ZQ 240 Ω 1%、VPP 2.5 V、去耦电容)
逐网络说明表(单片 x16)
| 网络 | 数量 | 拓扑 | 阻抗 / 等长 | 关键器件 | 常见错误 |
|---|---|---|---|---|---|
| CK / CK# | 1 对 | 点对点差分 | 80 Ω 差分;对内 ±2 mil | 无串阻、无端接 | 加 DDR3 习惯的 100 Ω 差分端接电阻 |
| CKE | 1 | 点对点 | 40 Ω;与 CK 长度差 ≤ ±50 mil | --- | 上电时序未满足 200 µs / 500 µs |
| CS# / ODT | 2 | 点对点 | 40 Ω;与 CK 长度差 ≤ ±50 mil | --- | 漏接 ODT,导致读操作时无端接 |
| ACT# / RAS# / CAS# / WE# | 4 | 与地址同组 Fly-by | 40 Ω;整组与 CK 等长 ≤ ±25 mil | --- | 把 ACT# 当普通地址处理,等长放到 ±100 mil |
| A17:0 / BA / BG | 22 | Fly-by | 40 Ω;组内 ±25 mil | --- | 未使用的地址位未接地/悬空造成误命令 |
| PAR | 1 | 与地址同组 | 40 Ω,同地址组等长 | 10 kΩ 下拉(不启用时) | 浮空导致 CA 校验误报 |
| ALERT# | 1 | 开漏,可多片线与 | 长度 ≤ 100 mm,远离 DQS | 4.7~10 kΩ 上拉到 VDDQ | 忘记上拉,错误永远读不到 |
| RESET# | 1 | 点对点 | 普通走线即可 | 4.7~10 kΩ 下拉 | 直接接电源,失去复位能力 |
| TEN | 1 | 点对点 | 普通走线 | 10 kΩ 下拉 | 浮空,噪声触发连通性测试模式 |
| DQ15:0 | 16 | 点对点 | 40 Ω;与同字节 DQS 等长 ±5 mil | 无外部端接 | 误加 39 Ω 端接到 VTT |
| LDQS/UDQS 差分 | 2 对 | 点对点差分 | 80 Ω 差分;对内 ±2 mil | 无外部端接 | 差分对走成 100 Ω |
| LDM/UDM(或 DBI) | 2 | 点对点 | 40 Ω;与 DQ 组等长 | --- | DBI 与 DM 同时使能(互斥) |
| ZQ | 1 | --- | ≤ 5 mm | 240 Ω ±1% | 用 5% 电阻或阻值选错 |
| VREFCA | 1 | --- | ≤ 80 mm,包地 | 0.1 µF + 10 nF;分压 0.1% | 用普通 LDO 固定 0.6 V 不跟踪 VDDQ |
| VDD / VDDQ | 多球 | 电源平面 | PDN ≤ 30~50 mΩ | 220 µF + 10 µF + 0.1 µF | 去耦放在板边而非 BGA 背面 |
| VPP | 1~2 球 | ≥ 10 mil 走线或铜皮 | 纹波 ≤ 50 mV | 1 µF + 0.1 µF | 漏接或误接 1.2 V |
4.2 九片 x8 拼 72 bit(64 bit 数据 + 8 bit ECC)
DDR4 的 x8 颗粒每片提供 8 bit 数据。4 片 x8 只能拼出 32 bit ;要得到 64 bit 数据总线 需要 8 片 x8,若再带 ECC 则需额外 1 片,共 9 片 x8 = 72 bit。另一种更省面积的做法是用 4 片 x16 拼 64 bit(再加 1 片 x8 做 ECC,共 5 片)。
SoC / CPUDDR4 控制器 · 72 bit· CK/CK# ×1 对(1 rank)· C/A + CTRL:Fly-by· DQ71:0:9 字节通道· DQS 差分 ×9· DM/DBI ×9· ODT 控制(片内)· Write leveling 训练· DQS 门控 + 读 leveling· VREFDQ 2D 训练· ECC 校验(8 bit)· CRC / CA parity 可选CK/CK# + ADDR/BA/BG + ACT#/RAS#/CAS#/WE# + CKE/CS#/ODT + PAR (Fly-by 主干,40 Ω)39~56 ΩVTT 0.6 VDDR4 x8 #1DQ7:0DQS0 / DM0DDR4 x8 #2DQ15:8DQS1 / DM1DDR4 x8 #3DQ23:16DQS2 / DM2DDR4 x8 #4DQ31:24DQS3 / DM3x8 #5 ~ #8(略)DQ63:32DQS4~7x8 #9 ECCECC7:0DQS8 / DM8残桩 ≤ 80 mil(≥DDR4-2666)字节 0字节 1字节 2字节 3字节 4~7ECC 字节① 地址/命令/时钟为 Fly-by 菊花链:串联经过每一片,分支残桩必须尽量短(≥2666 时 ≤ 80 mil),末端用 39~56 Ω 端接到 VTT 0.6 V(或控制器侧 ODT)。② 数据/选通/掩码为点对点:每片 8 bit 数据独立直连控制器,不共享、不端接、无外部 VTT;9 条字节通道之间等长公差 ±25 mil。
图 4-2 九片 x8 拼 72 bit(64 bit 数据 + 8 bit ECC)的 Fly-by 拓扑与点到点数据通道
多片并联的关键设计规则
| 项目 | 规则 | 原因 | 违反后果 |
|---|---|---|---|
| C/A + CK 拓扑 | Fly-by:从控制器出发依次穿过每一片,禁止 T 型分支 | Fly-by 让每片的 CK 到达时间不同,由 write leveling 逐字节补偿 | T 分支造成多重反射,C/A 眼图完全闭合 |
| 分支残桩长度 | DDR4-1600/1866 ≤ 150 mil;2133/2400 ≤ 100 mil;≥ 2666 ≤ 80 mil | 残桩是开路支节,产生反射与谐振 | 高速下 C/A 采样错误、训练无法收敛 |
| 末端端接 | 39~56 Ω 到 VTT(0.6 V),或控制器侧 C/A ODT | 吸收 Fly-by 末端反射 | 末端颗粒(离控制器最远)命令错误率最高 |
| CS# 走线 | 单 rank 时可共用;多 rank 时每 rank 独立且单独等长 | CS# 参与命令译码 | 多 rank 时 CS# 与地址偏斜导致误选片 |
| 片数上限 | 板载颗粒建议 ≤ 9 片(72 bit);更多走 REG/LRDIMM | Fly-by 负载电容累积,C/A 上升沿退化 | 负载过重导致速率上不去 |
| ECC 片处理 | ECC 片与数据片完全同等对待:同一 Fly-by 链、同样的等长与阻抗规则 | ECC 字节与数据字节必须时序一致 | ECC 字节延迟不同 → 校验错,系统降速或宕机 |
| ODT 分工(单 rank) | 写:Rtt_WR 使能;读:Rtt_Nom 关闭(点对点无反射源) | 点对点拓扑本来无多负载反射 | 读时开 ODT 白白增加功耗、压低幅度 |
| ODT 分工(多 rank 共享 DQ) | 被选中 rank 用 Rtt_WR / Rtt_Nom,非选中 rank 用 Rtt_Park(如 240 Ω) | 抑制浮空 rank 的桩线反射 | 非选中 rank 开路桩造成总线振铃 |
4.3 UDIMM / SODIMM 插槽接法
DDR4 模组接口:288 pin UDIMM / RDIMM / LRDIMM (台式机/服务器)、260 pin SODIMM (笔记本/嵌入式)。与 DDR3 的 240 pin 物理不兼容(防呆口位置不同)。
SoC / CPUDDR4 控制器 + PHY· 最多 2 slot / 2 rank· 72 bit(64 + ECC)· CK0/CK0#、CK1/CK1#· C/A + CTRL:Fly-by· DQ/DQS/DM:点到点· I²C 主(读 SPD)· 提供 VREFCA 0.6 V· 提供 VPP 2.5 V· 提供 VTT 0.6 V· VDD/VDDQ 1.2 V· ODT / 训练引擎· 支持 2D VREFDQ· ALERT# / EVENT# 输入插槽288 pin(SODIMM260 pin)DDR4 UDIMM 模组Rank 0(9 × x8 = 72 bit)含 ECC 时 9 片;无 ECC 时 8 片Rank 1(可选,双面贴装)2 rank 时 C/A 负载翻倍,速率需降档SPD EEPROM(I²C 0x50~0x57)SA0~SA2 地址选择;VDDSPD 上电温度传感器 TS(0x18~0x1F,可选)用于固件温度补偿刷新模组上 C/A 端接电阻到 VTTUDIMM 自带,主机需提供 VTT 0.6 V(RDIMM/LRDIMM 见 §4.4)C/A + BA/BG + ACT#/RAS#/CAS#/WE# + PAR(Fly-by,40 Ω)CK0/CK0#、CK1/CK1#(差分 80 Ω)CKE / CS# / ODT / RESET# / ALERT# / EVENT#DQ63:0 + CB7:0(72 根,40 Ω)DQS/DQS# ×9 + DM_n/DBI_n ×9(差分 80 Ω)SCL / SDA(SPD I²C,2.2 kΩ 上拉到 VDDSPD)+ SA0~SA2 接地/上拉VDD/VDDQ 1.2 V、VPP 2.5 V、VTT 0.6 V、VREFCA 0.6 V、VDDSPD① 主机必须提供 VPP 2.5 V 与 VTT 0.6 V 给 UDIMM:UDIMM 上的 C/A 端接电阻需要 VTT;VPP 供模组上所有颗粒的字线升压。② SPD 的 I²C 上拉必须接到 VDDSPD(不是 VDDQ),上拉 2.2 kΩ;SA0~SA2 按插槽编码接地或上拉。③ DDR4 插槽与 DDR3 插槽 物理防呆口位置不同,但外形相近,贴片前务必核对料号,插错会顶弯针脚甚至短路烧毁。
图 4-3 DDR4 UDIMM / SODIMM 插槽接法(C/A 与 CK 的 Fly-by、72 bit 数据通道、SPD I²C、VDD/VDDQ/VPP/VTT/VREFCA 供电)
UDIMM / SODIMM 关键信号与电源表
| 类别 | 信号 | UDIMM 288 pin | SODIMM 260 pin | 设计要点 |
|---|---|---|---|---|
| 数据 | DQ63:0 + CB7:0(ECC) | 72 根(非 ECC 模组为 64) | 40 Ω 单端;同一字节通道内 DQ 与 DQS 等长 ±5 mil | |
| 选通 | DQS/DQS# ×9(ECC 为 ×9,非 ECC 为 ×8) | 9 对 | 80 Ω 差分;差分对内 ±2 mil | |
| 掩码 | DM_n / DBI_n | 9 | 与对应 DQ 组同长 | |
| 时钟 | CK0/CK0#、CK1/CK1# | 2 对(2 rank 模组用满) | 80 Ω 差分;走线尽量等长以简化 write leveling | |
| 地址命令 | A17:0、BA0~1、BG0~1、ACT#、RAS#/A16、CAS#/A15、WE#/A14、PAR | 约 26~28 | Fly-by;总长与 CK 匹配,公差按控制器设计指南(常见 ±50~100 mil) | |
| 控制 | CKE、CS#(×2 rank)、ODT、RESET#、ALERT#、EVENT#、TEN | 约 8 | RESET# 建议 4.7 kΩ 下拉;ALERT# 上拉到 VDDQ | |
| SPD | SCL、SDA、SA0~SA2、VDDSPD、EVENT# | 5 ~ 6 | 2.2 kΩ 上拉到 VDDSPD;走线尽量短并远离 DQS | |
| 电源 | VDD / VDDQ 1.2 V | 多 pin(数十) | 每 pin 至少 1 个过孔;主板侧 PDN ≤ 20~30 mΩ(模组满载电流可达 8~15 A) | |
| 电源 | VPP 2.5 V | 数 pin | 主板提供;单条模组峰值约 50~200 mA | |
| 电源 | VTT 0.6 V(C/A 端接用) | 数 pin | 需吸/灌型 LDO;配 ≥ 20 µF + 多颗 0.1 µF | |
| 参考 | VREFCA 0.6 V | 1 ~ 2 pin | 跟踪 VDDQ/2,±1% |
4.4 RDIMM / LRDIMM 与 RCD 缓冲
当内存容量/槽位数增加时,C/A 与 CK 的 Fly-by 负载会超出驱动能力,此时需要在模组上增加寄存器时钟驱动器 RCD(Registering Clock Driver) :C/A 先到 RCD,由 RCD 重新驱动后再 Fly-by 到各 DRAM;RDIMM 只缓冲命令地址,LRDIMM 还额外在 DQ 通道上加入数据缓冲 DB(Data Buffer),进一步隔离数据总线负载。
SoC / CPU· 内存控制器· C/A + CK 输出· DQ/DQS 72 bit· 只需驱动 RCD 一个负载(RDIMM)· 支持 DB(LRDIMM)· 通过 I²C/SMBus 配置RCD/DB 的控制寄存器· RCD 有 1~2 tCK 的额外延迟,训练时计入RCD寄存器时钟驱动缓冲 C/A、CK、CTRL,重驱动输出(LRDIMM 还有 DB缓冲 DQ)C/A + CK + CTRL(点到点,负载仅 RCD)DRAMx8DRAMx8DRAMx8......RCD 输出后 Fly-by 串接全部 DRAM(×9 或 ×18 片 / rank)DQ/DQS 通道(UDIMM/RDIMM:直连;LRDIMM:经 DB 缓冲)DB 数据缓冲(仅 LRDIMM)隔离 DQ 负载,支持大容量① RCD 引入 1~2 tCK 的额外命令/地址延迟,控制器的 write leveling 与读 leveling 训练必须把它计入,否则训练偏移一个时钟周期。② RDIMM/LRDIMM 的 RCD/DB 需要通过 SMBus/I²C 控制寄存器配置(驱动强度、ODT、延迟),上电流程比 UDIMM 多一步"RCD/DB 配置"。③ 选型:≤ 2 slot / ≤ 2 rank → UDIMM;服务器级 4~8 slot 或大容量 → RDIMM;单条超大容量(如 128 GB+)→ LRDIMM。
图 4-4 RDIMM / LRDIMM 的 RCD(寄存器时钟驱动)与 DB(数据缓冲)拓扑
| 模组类型 | C/A + CK 路径 | DQ 路径 | 主机负载 | 容量/速率折中 | 典型应用 |
|---|---|---|---|---|---|
| UDIMM | Fly-by 直连所有 DRAM | 直连 | 重(C/A 负载 = 片数 × rank) | 速率最高,容量最小 | 台式机、工业主板、嵌入式 |
| SODIMM | 同 UDIMM,260 pin 小型化 | 直连 | 重 | 同 UDIMM,体积受限 | 笔记本、边缘计算盒、COM Express |
| RDIMM | 经 RCD 缓冲后再 Fly-by | 直连 | 轻(仅 RCD 一个负载) | 可多插槽,速率略降(+1~2 tCK 延迟) | 单路/双路服务器 |
| LRDIMM | 经 RCD 缓冲 | 经 DB 缓冲 | 最轻 | 容量最大,延迟与成本最高 | 四路服务器、大容量数据库 |
后续章节请下载「芯参谋」查看
......(篇幅原因, 还有10章· 详见芯参谋→方案设计)
当前分享仅开放前 5 章正文。详细资料请在芯参谋客户端中打开完整文档。
打开路径:🔧解决方案&应用市场分析 -> 原理方案设计 -> DRAM系列产品方案 -> DDR4_电路设计指南
相关报告 · 1
- XTX_存储器件跨RTOS移植速查原理方案设计
- 光储充一体机(Integrated PV-Storage-Charging)_市场分析市场应用分析
- MOSFET_烧毁与开关异常_样机排查调试&解决方案
- 高温老化后启动失败_数据保持_量产排查调试&解决方案
- 无源光网络(PON)_市场分析市场应用分析
相关报告 · 2
- 3D打印机(3D Printer)_市场分析市场应用分析
- Unknown_ID_主控不认芯片_量产排查调试&解决方案
- SPI_NOR_首次启动失败_样机排查调试&解决方案
- 步进电机(Stepper Motor)_市场分析市场应用分析
- 数字隔离器电路设计指南原理方案设计