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)。
图 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 | — | Ω | MR1[2: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 使能时),二者互斥,由 MR5[10]/[11]/[12] 选择 |
| TDQS_t / TDQS_c | 输出 | 差分 | x8 有 | 无 | 仅 x8 器件,用于 x4/x8 混合模组时提供端接;板载单片可关闭(MR1[5]=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 复位
| 位段 | 字段 | 可选值 | 工程建议 |
| MR0[1:0] | 突发长度 BL | 00 = BL8 固定;01 = BC4 或 BL8 动态(OTF);10 = BC4 固定 | 通用计算选 01(OTF),由 A12 动态切换;纯流式访问选 00 |
| MR0[3] | 突发类型 | 0 = 顺序(sequential);1 = 交错(interleaved) | 与控制器配置保持一致,一般 0 |
| MR0[6:4, 2] | CAS 延迟 CL | 9 ~ 24(按速率等级与是否 Gear-down 取) | 见附录 B 速率表;如 DDR4-3200 常取 CL22(Gear-down 时按 CL/2 编码) |
| MR0[8] | DLL 复位 | 1 = 复位 DLL(自清零) | 初始化必须执行一次,之后等 tDLLK = 512 nCK(部分场景 768/1024 nCK) |
| MR0[11:9] | 写恢复 WR | 10 ~ 26(对应 tWR 的 nCK 数) | 按 tWR(典型 15 ns)换算:DDR4-3200 取 24 nCK |
| MR0[12] | 读预同步 / PPD? | 厂商相关 | 按 datasheet 设为默认值 |
| MR0[13] | DLL 掉电模式控制 | 0 = 慢速退出(tXPDLL);1 = 快速退出(tXP) | 低功耗场景设 1 可缩短退出时间 |
| MR0[14] | 测试模式 | 0 = 正常 | 必须为 0 |
MR1 — DLL 使能、驱动强度、Rtt_Nom、附加延迟、Write Leveling
| 位段 | 字段 | 可选值 | 工程建议 |
| MR1[0] | DLL 使能 | 0 = 禁用(低频测试和缓);1 = 使能 | 正常工作必须为 1 |
| MR1[2:1] | 输出驱动阻抗 DIC | 00 = RZQ/7(34 Ω);01 = RZQ/5(48 Ω);10 = RZQ/6(40 Ω);11 = 保留 | 板载点对点、走线短 → 34 Ω;多负载/长走线(模组、2 rank)→ 40 或 48 Ω;需仿真确认 |
| MR1[4:3] | 附加延迟 AL | 00 = 禁用;01 = CL−1;10 = CL−2 | 由控制器调度策略决定,一般 00 |
| MR1[5] | TDQS 使能(仅 x8) | 0 = 禁用;1 = 使能 | 板载单片 x8 → 0(悬空 TDQS 引脚),混合模组 → 1 |
| MR1[7] | Write Leveling 使能 | 0 = 禁用;1 = 使能 | 训练阶段置 1,训练完成后必须清 0 |
| MR1[8] | 输出使能(Qoff) | 0 = 输出使能;1 = 输出关闭 | 正常 0 |
| MR1[10: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 Ω |
| MR1[12] | 预充电掉电 / 低功耗 | 厂商相关 | 按 datasheet 默认 |
| MR1[13] | CRC/DM 相关或保留 | — | 以 datasheet 为准 |
MR2 — CAS 写延迟 CWL、Rtt_WR(动态 ODT)、自刷新温度范围
| 位段 | 字段 | 可选值 | 工程建议 |
| MR2[2:0] | 部分阵列自刷新 PASR | 000 = 全部刷新;其余按 bank 屏蔽 | 正常 000;LPDDR 式省电才用 |
| MR2[5:3] | CAS 写延迟 CWL | 9 ~ 20 | 按速率等级:DDR4-1600 → CWL 9/11;DDR4-2400 → CWL 12/14;DDR4-3200 → CWL 16/18 |
| MR2[6] | 自动自刷新 ASR | 0 = 手动(SRT);1 = 自动 | 无温控固件时设 1,由颗粒根据内部温度传感器自动加倍刷新 |
| MR2[7] | 自刷新温度范围 SRT | 0 = 常温范围;1 = 扩展范围(85~95 °C 时 2× 刷新) | ASR=0 时由固件按温度设置;高温设备选 1 |
| MR2[9: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) |
| MR2[10:12] | LPASR / 写 CRC 使能 | 厂商相关;部分器件 MR2[12] 为写 CRC 使能 | 需要写 CRC 时置 1,并与控制器 CRC 使能同步;位段以 datasheet 为准 |
MR3 — MPR、Gear-down 模式、刷新粒度
| 位段 | 字段 | 可选值 | 工程建议 |
| MR3[1:0] | MPR 页选择 | 00 = Page 0(预定义图案);01 = Page 1;10 = Page 2;11 = Page 3 | 读/写 leveling 训练必须使用 MPR:MPR 读出固定图案(如 0x00/0xFF/交替),排除阵列数据干扰 |
| MR3[2] | MPR 操作 | 0 = 正常读;1 = MPR 读 | 训练时置 1,训练结束清 0 |
| MR3[3] | Gear-down 模式 | 0 = 1/2 速率命令(正常);1 = Gear-down(1/4 速率命令) | DDR4-2666 及以上且 Fly-by 负载重时建议使能:命令/地址以 1/2 速率发送、每个命令占 2 nCK,显著降低 CA 时序压力,代价是命令带宽略降 |
| MR3[5:4] | MPR 读格式 | 串行 / 并行 / 交错 | 按控制器训练流程选择,一般串行 |
| MR3[8:6] | 刷新粒度(Fine Granularity Refresh) | 1× / 2× / 4×(部分器件) | 抗 Row Hammer 时可配置为 2× 或 4× 刷新;以 datasheet 为准 |
| MR3[12:11] | MPR 读格式高位 | 与 MR3[5:4] 组合 | 按控制器要求 |
MR4 — 前导、最大掉电、3DS 的 CS-to-CA 延迟
| 位段 | 字段 | 可选值 | 工程建议 |
| MR4[0] | 最大掉电模式 MPD | 0 = 正常;1 = 最大掉电(DLL/PLL 关闭) | 极低功耗待机时使用,唤醒时间显著变长 |
| MR4[4] | 内部 VREF 监视 | 0 = 关闭;1 = 通过 MPR 输出内部 VREF 电平 | 调试 VREFDQ 训练时使用 |
| MR4[8:6] | CS 到命令/地址延迟(3DS) | 0 ~ 6 nCK | 3DS 堆叠(2H/4H/8H)必须配置,用于补偿 C0/C1/C2 相对 CS# 的飞行时间差 |
| MR4[9] | 写前导 | 0 = 1 tCK;1 = 2 tCK | 高速(≥ 2666)常取 2 tCK 以改善写眼图 |
| MR4[10] | 读前导 | 0 = 1 tCK;1 = 2 tCK | ≥ 2666 建议 2 tCK,与控制器 DQS 门控训练配合 |
| MR4[11] | 读前导训练模式 | 0 = 关闭;1 = 使能 | DQS 门控训练阶段必须使能,训练完成清 0 |
| MR4[12] | 自刷新中止 / 其他 | 厂商相关 | 以 datasheet 为准 |
MR5 — Rtt_Park、CA 奇偶校验、DM / DBI
| 位段 | 字段 | 可选值 | 工程建议 |
| MR5[2:0] | CA 奇偶校验延迟 PL | 000 = 禁用;其余 = 4/5/6/8 nCK(与速率相关) | 需要 CA 校验时按速率设置;控制器侧需同步使能 PAR 生成 |
| MR5[3] | CA 奇偶错误状态 | 只读,读后清除 | 调试时轮询判断是否发生 CA 传输错误 |
| MR5[4] | CA 奇偶持续错误 | 只读 | 置位说明存在系统性 SI 问题,需查 VREFCA / 时序 / 端接 |
| MR5[8:6] | Rtt_Park(空闲端接) | 同 Rtt_Nom:断开 / 240 / 120 / 80 / 60 / 48 / 40 / 34 Ω | 多 rank 系统中非选中 rank 用 Rtt_Park 端接,抑制总线浮空反射 |
| MR5[10] | 数据掩码 DM 使能 | 0 = 禁用;1 = 使能 | 与 DBI 互斥:需要字节写掩码时用 DM |
| MR5[11] | 读 DBI 使能 | 0 = 禁用;1 = 使能 | 降低读功耗与 SSN,需控制器支持 |
| MR5[12] | 写 DBI 使能 | 0 = 禁用;1 = 使能 | 降低写功耗与 SSN,需控制器支持 |
MR6 — VREFDQ 片内训练值
| 位段 | 字段 | 可选值 | 工程建议 |
| MR6[5:0] | VREFDQ 训练值 | 0 ~ 63(步进约 0.5% VDDQ,实际步进按 datasheet) | 由训练固件扫描;典型最终值落在 70%~75% VDDQ(POD12 端接到 VDDQ,摆幅中心高于 VDDQ/2) |
| MR6[6] | VREFDQ 训练值最高位 | 与 MR6[5:0] 组合成 7 bit | — |
| MR6[7] | VREFDQ 范围选择 | 0 = Range 1(60.0% ~ 92.5% VDDQ);1 = Range 2(45.0% ~ 77.5% VDDQ) | 先用 Range 1 扫描;若最优点落在边界,切到 Range 2 复扫 |
| MR6[8] | 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;可由 MR0[1: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#(输出) | MR5[2:0] 奇偶延迟 PL | 每命令 1 bit 奇偶;延迟 PL 个时钟 | ALERT# 拉低 + MR5[3]/[4] 状态位 |
| DBI(数据总线反转) | 不检错,用于降低功耗与 SSN | DM_n/DBI_n 复用 | MR5[11] 读 / MR5[12] 写 | 与 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 上电与初始化时序
图 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 位切换 | MR2[6]/MR2[7] 配置 + 控制器温度采样 | 85 °C 环境下长时间数据保持测试 |
4 · 典型应用电路
DDR4 的硬件形态分两类:板载颗粒(down device)与 内存条模组(DIMM)。板载颗粒走线短、SI 好但不可更换;模组可更换、容量灵活但对主板 Layout 与 PDN 要求更高。以下四张原理图覆盖四种典型接法。
4.1 单片 x16(16 bit 总线)板载接法
图 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 |
| A[17: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Ω 下拉 | 浮空,噪声触发连通性测试模式 |
| DQ[15: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 片)。
图 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 物理不兼容(防呆口位置不同)。
图 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 | 设计要点 |
| 数据 | DQ[63:0] + CB[7: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 |
| 地址命令 | A[17: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),进一步隔离数据总线负载。
图 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 缓冲 | 最轻 | 容量最大,延迟与成本最高 | 四路服务器、大容量数据库 |