只读分享解决方案文档原理方案设计📅 2026-09-24🔖 Rev 1.5⏳ 29天有效(至 2026-10-31)
🔧解决方案&应用市场分析 -> 原理方案设计 -> DRAM系列产品方案 -> DDR2_电路设计指南
生成时间 2026-09-24 00:54:40 有效期至 2026-10-31 23:59:59(29天有效(至 2026-10-31))
同系列 · 原理方案设计

DDR2 SDRAM 电路设计指南

DDR2-400 / 533 / 667 / 800 / 1066(PC2-3200 ~ PC2-8500)· 颗粒(FBGA-60 / FBGA-84 / TSOP-66)与 SODIMM 200 pin / UDIMM 240 pin · SSTL_18 · 片内 ODT · T 分支拓扑 · 无 write leveling | 编制日期 2026-09-24 | 版本号 Rev 1.5

0 · 文档说明

适用范围

  • 本文针对 DDR2 SDRAM(Double Data Rate 2,JEDEC JESD79-2) 的硬件电路设计,覆盖 DDR2-400 至 DDR2-1066 全部速率等级、256 Mb ~ 4 Gb 单颗容量、x4 / x8 / x16 位宽。
  • 适用对象:SoC / FPGA / ASIC 外接 DDR2 颗粒的板级设计,以及使用 DDR2 SODIMM(200 pin)/ UDIMM(240 pin) 的工控、网络、视频、电力、医疗与存量设备维护场景。
  • 内容包含:代际对比、封装球位、电气参数、命令与模式寄存器、电源与去耦、上电时序、典型原理图(内联 SVG)、拓扑与端接、PCB Layout、信号完整性、ESD 与可靠性、焊接生产、故障排查、检查清单与 BOM。
  • 不包含:内存控制器 RTL 实现、DRAM 内核工艺、内存条 SPD 完整字节表。所有寄存器位定义、时序数值与封装尺寸一律以目标型号 datasheet 与主控 DDR 控制器设计指南为准。

本系列其他文档

文档器件类型关注重点
SPI NOR 电路设计指南串行 NOR FlashQuad/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.1HS200/HS400、1.8 V VCCQ、DS 选通与等长
SD NAND 电路设计指南贴片式 SD NANDSPI/SDIO 双模式、无休眠指令、VCC 负载开关断电
NAND MCP 电路设计指南多芯片合封存储多 die 与多 CE、双电源轨、HDI 扇出
并行NOR (PPI NOR) 电路设计指南并行 NOR Flash异步读时序、XIP、等待周期、总线扩展
PSRAM 电路设计指南伪静态 RAMOPI/HyperBus、刷新与延迟周期、XIP 与帧缓存
DDR2 电路设计指南 本文DDR2 SDRAMSSTL_18、T 分支拓扑、VTT 端接、ODT
DDR3 电路设计指南DDR3 / DDR3LFly-by 拓扑、write leveling、动态 ODT
DDR4 电路设计指南DDR4 SDRAMPOD12、bank group、DBI、2D 训练
DDR5 电路设计指南DDR5 SDRAM双子通道、On-DIMM PMIC、DFE、同帧 ECC
EEPROM 电路设计指南EEPROMI²C/SPI 接口、上拉电阻与总线电容、页写与写保护
快速决策框:DDR2 vs DDR3 vs DDR4 vs DDR5 vs LPDDR

新设计不要选 DDR2:DDR2 已处于生命周期末期,主流颗粒厂大幅缩减产能,单价常高于同容量 DDR3,且多数新一代主控已不再提供 DDR2 控制器。仅在以下情况才使用 DDR2:① 存量主控仅支持 DDR2 控制器;② 旧板卡维修 / 替换 / 延寿;③ 已量产产品的第二货源导入。

代际选择要点:需要 1.8 V I/O 与主控电压域匹配 或 成本极度敏感的小容量(≤512 MB) → DDR2;需要 1 GB 以上且有 Fly-by / write leveling 简化 Layout → DDR3 / DDR3L;需要 更低功耗与更高密度(≥4 GB) → DDR4;需要 ≥16 GB 与大带宽 → DDR5;电池供电、待机功耗是第一位 → LPDDR2 / LPDDR3 / LPDDR4,注意 LPDDR 与 DDR 的电平标准、走线拓扑与训练流程完全不同,不可直接互换。

DDR2 的三条硬约束:无 write leveling 地址/命令必须靠走线等长补偿;无 RESET# 引脚 异常恢复只能靠 CKE 与掉电;单一 VREF 地址/命令共用一个基准,噪声容限小于 DDR3/DDR4 的多基准方案。

1 · 器件基础

1.1 代际规格对比

DDR2 相对 DDR 的本质变化是:4n 预取 + 1.8 V SSTL_18 + 片内 ODT + 差分 DQS + posted CAS。理解这四点,就理解了 DDR2 与前后代际之间的所有电路差异。

项目DDR(DDR-400)DDR2(DDR2-800)DDR3(DDR3-1600)LPDDR2-1066
标准文档JESD79JESD79-2JESD79-3JESD209-2
VDD 核心电压2.5 V ±0.2(DDR-400 为 2.6 V ±0.1)1.8 V ±0.11.5 V ±0.075(DDR3L 1.35 V)VDD1 1.8 V / VDD2 1.2 V
VDDQ I/O 电压2.5 V(与 VDD 同源)1.8 V ±0.11.5 V ±0.0751.2 V
I/O 电平标准SSTL_2(2.5 V)SSTL_18SSTL_15HSUL_12 / LVCMOS
VREF0.5 × VDDQ,单一0.5 × VDDQ = 0.9 V,±1%命令/地址 VREFCA + 数据 VREFDQ 双基准0.5 × VDDQ
预取位数2n4n8n4n(S4)/ 2n(S2)
核心时钟 / 命令时钟100 ~ 200 MHz100 ~ 266 MHz(1066 为 266 MHz)400 ~ 800 MHz266 ~ 533 MHz
数据速率200 ~ 400 MT/s400 ~ 1066 MT/s800 ~ 2133 MT/s333 ~ 1066 MT/s
CAS 延迟 CL2 / 2.5 / 33 / 4 / 5 / 6 / 75 ~ 113 ~ 8(含部分 nWR 折算)
DQS 选通单端(部分厂商提供差分)差分 DQS / DQS#(强制)差分差分
片内 ODT无(DDR-400 部分型号有弱 ODT)有:75 / 150 / 50 Ω(标称)有:20 / 30 / 40 / 60 / 120 Ω,且支持动态 ODT有(部分型号)
外部端接方式主板 VTT 并联端接(必选)数据组用 ODT;地址/命令/控制末端 VTT 并联 50~56 Ω数据组 ODT;地址命令 Fly-by 末端 VTT 端接主要靠 ODT,少量外部
主流拓扑树形 / 多分支树形 / 对称 T 分支Fly-by(菊花链)点对点为主
Write leveling无无有(硬件自动补偿 CK 与 DQS 偏斜)有(训练流程)
RESET# 引脚无无有无
ZQ 校准无ZQ 球外接 240 Ω ±1%,配合 OCD 校准(ZQCL 长校准)ZQ 球 240 Ω ±1%,ZQCL / ZQCS 周期校准ZQ 球(部分型号)
突发长度2 / 4 / 84 / 88(BC4 为 8 截断)4 / 8 / 16
附加延迟机制无Posted CAS / Additive Latency 0~6AL = CL − 1 或 CL − 2类似 AL 机制
典型封装TSOP-66 / FBGA-60/66FBGA-60 / FBGA-84 / TSOP-66FBGA-78 / FBGA-96PoP / FBGA / MCP
总线位宽配置x8 / x16,DIMM 64 bitx4 / x8 / x16,DIMM 64 bit(+8 ECC)x4 / x8 / x16,DIMM 64 bit(+8 ECC)x16 / x32
单通道峰值带宽3.2 GB/s(64 bit)6.4 GB/s(64 bit @ 800 MT/s)12.8 GB/s(64 bit @ 1600 MT/s)4.26 GB/s(32 bit @ 1066)
代际不可混用的三个硬点

① 电平不可混:DDR 的 2.5 V SSTL_2 与 DDR2 的 1.8 V SSTL_18 绝对最大额定值不同,直接连接会击穿输入级。② 插槽有防呆键槽:DDR2 UDIMM 240 pin 与 DDR3 UDIMM 240 pin 针脚数相同但缺口位置与电气定义不同,物理上插不进(强行插入会损坏金手指与插槽)。③ DDR2 控制器无法驱动 DDR3:上电时序(200 µs / 400 ns vs 500 µs / tXPR)、ZQ 校准、write leveling 流程均不同。

DDR2 速率等级与容量组织

速率等级核心时钟CK(差分)频率tCK数据速率典型 CL-tRCD-tRP64 bit 带宽模组命名
DDR2-400100 MHz200 MHz5.00 ns400 MT/s3-3-3(部分 4-4-4)3.20 GB/sPC2-3200
DDR2-533133 MHz266 MHz3.75 ns533 MT/s4-4-44.26 GB/sPC2-4200 / PC2-4300
DDR2-667166 MHz333 MHz3.00 ns667 MT/s5-5-5(部分 4-4-4)5.30 GB/sPC2-5300 / PC2-5400
DDR2-800200 MHz400 MHz2.50 ns800 MT/s5-5-5 / 6-6-66.40 GB/sPC2-6400
DDR2-1066266 MHz533 MHz1.875 ns1066 MT/s7-7-7(部分 6-6-6)8.50 GB/sPC2-8500 / PC2-8600
单颗容量可用位宽Bank 数行地址 A列地址 A页大小(x16)说明
256 Mbx8 / x164A0~A12A0~A8(x16)1 KB常配 FBGA-60,成本低
512 Mbx8 / x164A0~A12A0~A9(x16)1 KBDDR2 最主流密度段
1 Gbx8 / x164 或 8A0~A13A0~A9(x16)1 KB4 bank 与 8 bank 版本并存,务必核对
2 Gbx8 / x168A0~A13A0~A9(x16)1 KB(x16)需 BA0~BA2 三个 bank 地址
4 Gbx4 / x8 / x168A0~A14A0~A101 KB / 2 KB末期产品,供货稳定性差

1.2 封装与球位定义

封装适用位宽球/引脚数典型本体尺寸球距 / 引脚距说明
FBGA-60x1660约 8.0 × 10.5 mm0.8 mm小容量(256 Mb / 512 Mb)常用;电源/地球数量少于 84 球,注意部分型号不引出 ZQ 球,OCD 校准不可用
FBGA-84x8 / x1684约 8.0 × 12.5 mm0.8 mmDDR2 最主流;x16 版本含 LDQS/LDQS#/LDM 与 UDQS/UDQS#/UDM 两组字节选通
FBGA-68x868约 8.0 × 10.5 mm0.8 mm少量厂商的 x8 精简封装
TSOP-66x8 / x166610.16 mm(400 mil)× 22.2 mm0.65 mm早期与低成本方案;寄生电感大,不建议用于 DDR2-800 及以上
SODIMM 200 pin64 bit(+8 ECC 可选)20067.6 × 31.75 mm0.6 mmDDR2 笔记本/工控小内存条,含 SPD EEPROM(I²C,地址 0x50/0x51)
UDIMM 240 pin64 bit(+8 ECC 可选)240133.35 × 30 mm1.0 mmDDR2 台式机/服务器无缓冲内存条;注意与 DDR3 240 pin 键槽不同
DDR2 FBGA-84(x16)球位分区示意(9 列 × 10 行,90 个球位 / 84 个有效球) 行 A–K(跳过 I)· 列 1–9 · 球距 0.8 mm · 左下角实心圆为 A1 方向标记 A1 123 456 789 ABC DEF GHJ K CK CK# CKE CS# RAS# CAS# WE# ODT A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 BA0 BA1 DQ0 DQ1 DQ2 DQ3 DQ8 DQ9 DQ10 DQ4 DQ5 DQ6 DQ7 DQ11 DQ12 DQ13 LDQS LDQS# LDM UDQS UDQS# UDM DQ14 DQ15 VDDQ VDDQ VDDQ VDDQ VDDQ VDD VDDQ VDD VDD VDD VDDQ VDD VDD VDD VDD VREF VSS VSSQ VSS VSSQ VSS VSSQ VSS VSSQ VSSQ VSS VSS VSS VSS VSSQ VSS VSSQ VSS VSS VSS VSS NC NC NC NC NC NC ZQ 数据组:DQ0~15 / DQS± / DM 地址命令组:A0~13 / BA0~2 控制时钟:CK±/CKE/CS#/RAS#/CAS#/WE#/ODT 电源组:VDD / VDDQ / VDDL / VREF 地组:VSS / VSSQ / VSSDL NC 空球(不植球,焊盘可不连) ZQ:外接 240 Ω ±1% 到 VSS x16 器件含两个独立字节组: · LDQS/LDQS#/LDM → DQ0 ~ DQ7 · UDQS/UDQS#/UDM → DQ8 ~ DQ15 FBGA-60(x16)分区相同,仅减少 VDD/VSS 球与空球数量。 注:本图为功能分区示意,用于理解信号分组与 BGA 扇出规划;不同容量、位宽(x4/x8/x16)与厂商的球位命名与排布不同, 投板前必须以目标型号 datasheet 的球位表(Ball Assignment)逐球核对。
图 1-1 DDR2 FBGA-84(x16)球位分区图:数据组、地址命令组、控制与时钟组、电源地组、ZQ 与 NC 空球
球位核对的三个高发错误

① 把 A10 当成普通地址线扇出:A10 在 PRECHARGE(全部 bank 预充电)、PRECHARGE ALL、ZQCL/ZQCS 命令中作为模式位使用,扇出与走线无特殊要求,但控制器驱动逻辑必须正确。② x16 器件的 BA2:1 Gb 以下容量通常只有 BA0/BA1,2 Gb 起需要 BA2;若把 BA2 误连到 A14,容量识别会出错。③ VDDL / VSSDL(DLL 电源):与 VDD/VSS 不可互换,VDDL 必须接 1.8 V 并单独去耦,否则 DLL 无法锁定。

1.3 关键电气参数

参数符号最小值典型值最大值说明
器件核心电源VDD1.70 V1.80 V1.90 V±0.1 V,含纹波与噪声
I/O 电源VDDQ1.70 V1.80 V1.90 V任何时刻 |VDD − VDDQ| ≤ 0.3 V
DLL 电源VDDL1.70 V1.80 V1.90 V建议经磁珠/0 Ω 从 VDD 隔离并单独去耦
输入参考电压VREF0.873 V0.900 V0.927 VVDDQ/2 ±1%(±9 mV)
端接电源VTT0.873 V0.900 V0.927 VVDDQ/2 ±3%;必须能双向(sink/source)供电流
输入高电平(DC)VIH(DC)1.025 V—1.90 VVREF + 0.125 V
输入低电平(DC)VIL(DC)−0.30 V—0.775 VVREF − 0.125 V
输入高电平(AC)VIH(AC)1.150 V——VREF + 0.250 V,眼图必须穿越此电平
输入低电平(AC)VIL(AC)——0.650 VVREF − 0.250 V,眼图必须穿越此电平
输出驱动阻抗(全驱)——约 18 Ω—EMR A1 = 0;由 ZQ/OCD 校准调整
输出驱动阻抗(减弱)——约 30 Ω—EMR A1 = 1(约全驱的 60%)
片内端接 ODT 标称值Rtt75 Ω / 150 Ω / 50 Ω(EMR A6、A2 选择)容差典型 ±15%(随温度电压变化)
ZQ 外部校准电阻R_ZQ237.6 Ω240 Ω242.4 Ω±1%,低温漂(≤100 ppm/℃),0603 及以上
引脚绝对最大额定VIN / VOUT−0.40 V—+2.30 V超出会永久损坏;含过冲也须满足(以 datasheet 为准)
工作壳温(商用)Tc0 ℃—85 ℃超过 85 ℃ 需将刷新率加倍
工作壳温(工业)Tc−40 ℃—95 ℃工业级颗粒,需确认型号后缀
存储温度Tstg−55 ℃—+125 ℃非工作状态
SSTL_18 电平窗口的工程量含义

接收端判决门限为 VREF = 0.9 V,DC 门限带为 0.775 ~ 1.025 V,但可靠翻转必须穿越 AC 门限 0.65 V / 1.15 V。因此到达 DRAM/SoC 引脚的有效信号摆幅必须 ≥ 500 mV(1.15 − 0.65),且这一数值已经把串扰、SSN、ISI、参考平面噪声全部计入。若实测眼图在 AC 门限处的宽度不足,即使"看起来有波形"也会出现概率性误码。

2 · 接口与协议

2.1 信号定义

信号方向类型数量(x16)端接方式功能说明
CK / CK#SoC → DRAM差分,SSTL_181 对末端 100 Ω 差分(或 2×50 Ω 至 VTT)命令与地址的唯一采样时钟,所有时序以此为基准;DDR2-800 为 400 MHz 差分
CKESoC → DRAM单端,SSTL_181末端 50~56 Ω 至 VTT时钟使能。低电平进入掉电/自刷新;上电初始化期间必须为低
CS#SoC → DRAM单端,SSTL_181(每 rank)末端 50~56 Ω 至 VTT片选。高电平时 DRAM 忽略除 CKE 外的一切命令
RAS# / CAS# / WE#SoC → DRAM单端,SSTL_183末端 50~56 Ω 至 VTT命令编码位,与 CS# 组合构成命令真值表
BA0~BA2SoC → DRAM单端,SSTL_182 或 3末端 50~56 Ω 至 VTTBank 地址;4 bank 用 BA0/BA1,8 bank 需 BA2
A0~A13SoC → DRAM单端,SSTL_1814末端 50~56 Ω 至 VTT行地址 / 列地址复用;A10 兼作 Precharge All 与 ZQCL/ZQCS 模式位
DQ0~DQ15双向单端,SSTL_1816片内 ODT(75/150/50 Ω)数据总线,上下沿各传 1 bit
LDQS / LDQS#双向,源同步差分,SSTL_181 对片内 ODT低字节(DQ0~DQ7)数据选通
UDQS / UDQS#双向,源同步差分,SSTL_181 对片内 ODT高字节(DQ8~DQ15)数据选通
LDM / UDMSoC → DRAM单端,SSTL_182片内 ODT写数据掩码;读操作时 DM 状态无所谓
ODTSoC → DRAM单端,SSTL_181(每 rank)末端 50~56 Ω 至 VTT片内端接使能。写操作时拉高打开 DRAM 端 ODT
ZQ—模拟1外接 240 Ω ±1% 到 VSS输出驱动阻抗与 ODT 的校准基准;部分 60 球封装不引出
VREF—模拟输入10.1 µF + 1 µF 就近去耦SSTL_18 输入判决基准 = VDDQ/2
VDD / VDDQ / VDDL—电源多球每球 0.1 µF + 每颗 4.7~10 µF1.8 V ±0.1 V
VSS / VSSQ / VSSDL—地多球直接完整地平面每颗器件下至少 4 个地过孔直达主地
RESET#DDR2 无此引脚DDR2 没有任何硬件复位脚,异常恢复只能通过 CKE 拉低进入掉电、或掉电重启

2.2 4n 预取与带宽计算

DDR2 的 DRAM 内核阵列工作频率只有外部数据速率的 1/4:内核一次读出 4 × 数据位宽的数据送进 I/O 锁存器,再由差分时钟 CK 的上下沿分 4 次(2 个 CK 周期)送出。这就是 4n 预取,也是 DDR2 能在不提高内核频率的前提下把速率做到 1066 MT/s 的原因,同时它直接决定了最小突发长度只能是 4。

DDR2 4n 预取数据通路(以 x16 器件、DDR2-800 为例) DRAM 存储阵列 4 / 8 bank f_core = 200 MHz 64 bit 4n 预取锁存器 一次读出 4 × 16 = 64 bit = 4 个数据节拍 (4n → BL 最小为 4) 64 bit 并串转换 DDR 上下沿 各送 1 拍 16 bit SSTL_18 输出级 ODT 75/150/50 Ω 驱动强度 DIC DQ DLL(延迟锁相环) tDLLK = 200 tCK 锁定 CK / CK# = 400 MHz 差分 (DDR2-800:tCK = 2.5 ns) DLL 用于消除 DQS 输出相对 CK 的内部延迟,必须锁定 ZQ + OCD 校准 240 Ω 1% 外部基准 800 MT/s = 200 MHz 内核 × 4n 预取 × 2(上下沿)
图 2-1 DDR2 4n 预取数据通路:内核 200 MHz、I/O 800 MT/s,DLL 与 ZQ/OCD 校准环节

带宽计算公式

理论峰值带宽(Byte/s)= 数据速率(MT/s)× 总线位宽(bit)/ 8

DDR2-800,16 bit 单颗粒:800 × 16 / 8 = 1600 MB/s
DDR2-800,32 bit(两片 x16):800 × 32 / 8 = 3200 MB/s
DDR2-800,64 bit(DIMM):  800 × 64 / 8 = 6400 MB/s  ← PC2-6400 命名来源
DDR2-667,64 bit(DIMM):  667 × 64 / 8 ≈ 5333 MB/s  ← PC2-5300 命名来源

实际可用带宽 = 理论峰值 × 总线效率
总线效率典型 60% ~ 75%,折损来自:
  · 刷新开销:每 tREFI = 7.8 µs 一次 AUTO REFRESH,每次占用约 tRFC = 127.5 ns
              → 开销 ≈ 127.5 / 7800 ≈ 1.6%(1 Gb 颗粒,DDR2-800)
  · 读写总线转向:每次写→读需 tWTR = 7.5 ns(3 tCK),读→写需 bus turnaround
  · 行激活冲突:同一 bank 内行切换需 PRE + ACT,合计 tRP + tRCD ≈ 25 ns
  · 写恢复 tWR = 15 ns(6 tCK)占用总线
  · Bank 冲突与 tFAW 窗口限制(35 ns 内最多 4 次 ACT)

经验取值:顺序大块读写 70%~80%;随机小块访问 40%~55%;读写混合 50%~60%。

2.3 模式寄存器组(MR / EMR / EMR2 / EMR3)

DDR2 共 4 个模式寄存器,通过 MRS / EMRS 命令配合 BA1/BA0 选择:BA=00 → MR、BA=01 → EMR(1)、BA=10 → EMR(2)、BA=11 → EMR(3)。

MR(Mode Register,BA1:BA0 = 00)

位字段编码说明
A2:A0BL 突发长度010 = 4,011 = 8,其余保留DDR2 取消了 BL=2;常规使用 BL=8
A3BT 突发类型0 = 顺序(sequential),1 = 交错(interleaved)多数主控用顺序模式
A6:A4CL 读延迟010 = 2,011 = 3,100 = 4,101 = 5,110 = 6,111 = 7DDR2-800 常用 5 或 6;DDR2-1066 用 6 或 7
A7TM 测试模式0 = 正常工作(必须写 0),1 = 厂商测试严禁写 1
A8DLL 复位0 = 正常工作,1 = 复位 DLL初始化时先写 1,等待 tDLLK = 200 tCK 后再写 0
A11:A9WR 写恢复001 = 2,010 = 3,011 = 4,100 = 5,101 = 6,110 = 7,111 = 8WR = ceil(tWR / tCK)。DDR2-800:15 ns / 2.5 ns = 6
A12PD 掉电模式0 = 快速退出(DLL 保持使能,tXARD),1 = 慢速退出(进入时关 DLL,tXARDS)按主控支持情况选择
A13保留写 0—

EMR / EMR(1)(Extended Mode Register 1,BA1:BA0 = 01)

位字段编码说明
A0DLL 使能0 = 使能(正常),1 = 禁止禁止 DLL 时只能低频工作,正常必须写 0
A1DIC 输出驱动强度0 = 全强度(约 18 Ω),1 = 减弱(约 60%,约 30 Ω)点对点短走线用减弱档可显著改善过冲与 EMI
A6、A2Rtt 标称 ODT00 = ODT 关闭,01 = 75 Ω,10 = 150 Ω,11 = 50 ΩDDR2 无 DDR3 意义上的"动态 ODT"寄存器
A5:A3AL 附加延迟000 = 0,001 = 1,010 = 2,011 = 3,100 = 4,101 = 5,110 = 6Posted CAS 附加延迟,通常取 AL = CL − 1
A9:A7OCD 校准000 = 退出/保持,001 = Drive(1),010 = Drive(0),100 = Adjust,111 = 默认值片外驱动校准;多数设计只做"默认值 → 退出"
A10DQS# 使能0 = 使能差分 DQS#,1 = 禁止(DQS# 停用)正常必须使能差分 DQS
A11RDQS 使能0 = 禁止(默认),1 = 使能冗余选通,仅部分 x8 器件支持;x16 通常不用
A12输出使能(Qoff)0 = 输出缓冲使能,1 = 输出缓冲关闭调试或总线隔离时使用,正常写 0

EMR(2) 与 EMR(3)

寄存器BA1:BA0有效位说明
EMR(2)10A7 = SRF 自刷新温区0 = 常规温区(0~85 ℃,tREFI = 7.8 µs);1 = 扩展温区(85~95 ℃,刷新率 ×2,tREFI = 3.9 µs)。其余位写 0。
EMR(3)11无全部为保留位,必须写 0x000。初始化时仍须发送一次以兼容后续器件。
// DDR2-800(tCK = 2.5 ns)典型模式寄存器取值,CL = 5,BL = 8,WR = 6 tCK,AL = 4
//
// MR (BA=00) 位图: A12 | A11 A10 A9 | A8 | A7 | A6 A5 A4 | A3 | A2 A1 A0
//                   PD  |    WR      | DLL| TM |    CL    | BT |    BL
//   取值:           0  |  1  0  0   | 1  | 0  | 1  0  1  | 0  | 0  1  1
//                       |   = 6      |复位| 正常|   = 5    |顺序|   = 8
//   → 0 1001 0101 0011b = 0x953      (步骤 10:DLL 复位阶段)
//   → 0 1000 0101 0011b = 0x853      (步骤 13:A8 = 0,解除 DLL 复位)
//
// EMR (BA=01) 位图: A12 | A11 | A10  | A9 A8 A7 | A6 | A5 A4 A3 | A2 | A1 | A0
//                    Qoff| RDQS| DQS# |   OCD    |Rtt1|    AL    |Rtt0| DIC| DLL
//   取值:            0  |  0  |  0   | 0  0  0  | 1  | 1  0  0  | 0  | 1  | 0
//                        |     |使能  |  退出    |     |   = 4    |     |减弱| 使能
//   → Rtt = A6:A2 = 10 → 150 Ω(点对点单 rank 写时端接)
//   → 0 0000 0110 0010b = 0x062
//
//   若 T 分支双片(两个负载)改用 75 Ω:A6 = 0,A2 = 1
//   → 0 0000 0010 0010b | A2 → 0x022 + A2 置 1 → 0x026
//
// EMR2 (BA=10) = 0x000(A7 = 0,常规温区)
// EMR2 (BA=10) = 0x080(A7 = 1,扩展温区,>85 ℃ 时刷新率加倍)
// EMR3 (BA=11) = 0x000
//
// 注意:以上位定义为通用 DDR2 约定,不同厂商/容量可能存在保留位差异,
//       投板前必须用目标型号 datasheet 的 "Mode Register Definition" 表逐位核对。

2.4 命令真值表

CKE(n−1) 表示上一个时钟上升沿时的 CKE 状态,CKE(n) 表示当前状态。CS#/RAS#/CAS#/WE# 为 L 时表示对应信号为低电平。

功能CKE(n−1)CKE(n)CS#RAS#CAS#WE#BAA10 / AP地址
MRS / EMRS(模式寄存器设置)HHLLLL寄存器选择—OP Code
Refresh(自动刷新)HHLLLHXXX
Self Refresh 进入(SRE)HLLLLHXXX
Self Refresh 退出(SRX)LHHXXXXXX
Precharge(选定 bank)HHLLHLBank 地址LX
Precharge All(全部 bank)HHLLHLXHX
Activate(行激活)HHLLHHBank 地址行地址高位行地址
Write(写)HHLHLLBank 地址L / H(自动预充)列地址
Read(读)HHLHLHBank 地址L / H(自动预充)列地址
ZQCL(ZQ 长校准)HHLHHLXHX
ZQCS(ZQ 短校准)HHLHHLXLX
No Operation(NOP)HHLHHHXXX
Device Deselect(DES)HHHXXXXXX
Active Power-Down 进入HLLHHHXXX
Precharge Power-Down 进入HLLHHHXXX
Power-Down 退出LHH 或 NOPXXXXXX
MRS 与 Refresh 的"撞车"陷阱

MRS/EMRS(LLLL)与 Refresh(LLLH)只差一个 WE# 位。若地址/命令总线等长超差或 VREF 噪声过大,WE# 采样错误会把 Refresh 误判成 MRS,导致模式寄存器被"随机值"覆盖,表现为运行一段时间后内存突然失效。排查时可在 MRS 写入后立即回读(部分主控支持)或在驱动中加 CRC 校验。

2.5 突发长度、Posted CAS 与 Additive Latency

DDR2 取消了 BL=2,只支持 BL = 4 与 BL = 8(4n 预取的必然结果)。写入时若只需 4 字节,可用 DM 屏蔽后 4 拍,或由主控配置为 BC4(部分主控支持"突发截断")。

Posted CAS 是 DDR2 相对 DDR 的关键改进:读/写命令可以在 ACTIVATE 之后提前发出,中间插入的 AL 个时钟周期用于掩盖 tRCD,从而避免总线气泡。此时:

RL(读延迟)= AL + CL          // Read 命令 → 第一个数据出现在 DQ 上
WL(写延迟)= AL + CL − 1      // Write 命令 → 第一个数据必须送到 DQ 上(DDR2 比 RL 少 1 拍)

DDR2-800,CL = 5,AL = 4 的时序序列(单位:tCK):
  t = 0   :ACTIVATE(行激活,tRCD = 5)
  t = 1   :READ(Posted CAS 已发出,实际由 DRAM 内部延迟到 t = 5 才真正读阵列)
  t = 5   :tRCD 满足,DRAM 开始读阵列
  t = 1+9 = 10 :第一个数据出现在 DQ(RL = AL + CL = 4 + 5 = 9)
  t = 13  :BL = 8 的 4 个数据节拍传完(8 bit / 上下沿 / 16 bit 总线 → 4 拍)

AL 取值规则:
  · AL 必须 ≤ CL − 1(否则内部冲突)
  · 推荐 AL = CL − 1(DDR2-800 CL=5 → AL=4;DDR2-667 CL=5 → AL=4)
  · AL = 0 即"关闭 posted CAS",等价于 DDR 的普通工作方式,总线效率下降约 15%~25%
  · AL 与 CL 必须在 MR(CL)与 EMR(AL)中分别配置,且必须一致,否则读写时序整体错位
写延迟比读延迟少 1 拍——DDR2 与 DDR3 相同,但常被记错

DDR2 的 WL = RL − 1 = AL + CL − 1(DDR3 亦为 AL + CL − 1,但 DDR3 的 AL 只有 CL−1/CL−2 两档)。若固件把 WL 配成等于 RL,写数据会整体晚 1 个 tCK,表现为写进去的数据与读出来的数据错位一拍,且往往只在特定地址对齐时才暴露。

2.6 读写操作的 DQS 时序关系

这是 DDR2 时序的核心,也是布线与训练的直接依据:

  • 写操作(DQS 由 SoC 发出):DQS 的边沿对准 DQ 数据位的中心,即"中心对齐(center-aligned)"。DRAM 用 DQS 边沿锁存 DQ,因此 SoC 必须保证 DQS 跳变落在 DQ 眼图中央,容差由 tDS / tDH 约束。
  • 读操作(DQS 由 DRAM 发出):DQS 的边沿与 DQ 位边界对齐,即"边沿对齐(edge-aligned)"。SoC 内部必须把 DQS 移相约 90°(1/4 个 tCK) 后再去采样 DQ,这一步由控制器的 DQS gating + delay line(读捕获窗口训练) 完成。
  • DDR2 没有 write leveling,所以写方向 DQS 与 CK 之间的偏斜只能靠 PCB 走线等长 补偿,无法由硬件自动校准。
DDR2 读/写方向的 DQS 与 DQ 相位关系 写操作:DQS 由 SoC 发出 → 边沿对准 DQ 中心(中心对齐) CK/CK# DQS DQ ↑采样 ↓采样 ↑采样 ↓采样 DQ 位中心 写方向时序要求: · tDQSS = ±0.25 tCK  (DQS 首个上升沿相对 CK) · tDSS / tDSH ≥ 0.20 tCK  (DQS 下降沿相对 CK 的建立/保持) · tDS / tDH:查 datasheet  derating 表(随压摆率变化) 读操作:DQS 由 DRAM 发出 → 边沿与 DQ 位边界对齐(边沿对齐) CK/CK# DQS DQ 位边界(需移相 90° 再采样) 读方向时序要求: · tDQSCK = ±350 ~ 400 ps  (DDR2-800,DQS 相对 CK 的偏移) · tDQSQ ≤ 350 ps  (同一字节组内 DQ 与 DQS 的偏差) · SoC 内部移相 ≈ 90°(1/4 tCK) 注:波形为示意,未标注具体时间刻度;DQS 与 DQ 的实际相对关系以 datasheet 的时序图与 derating 表为准。
图 2-2 DDR2 写方向 DQS 中心对齐、读方向 DQS 边沿对齐,以及 SoC 内部 90° 移相采样

关键 DQS / DQ 时序参数

参数含义DDR2-400DDR2-667DDR2-800DDR2-1066备注
tCK时钟周期5.0 ns3.0 ns2.5 ns1.875 ns由主控 PLL 提供
tDQSS写:DQS 首个上升沿相对 CK 位置±0.25 tCK±0.25 tCK±0.25 tCK±0.25 tCK±625 ps @800
tDSS / tDSH写:DQS 下降沿相对 CK 建立/保持0.20 tCK0.20 tCK0.20 tCK0.20 tCK500 ps @800
tDS / tDH写:DQ 相对 DQS 的建立/保持按 datasheet derating 表,随 DQ/DQS 压摆率修正压摆率越低,要求越严
tDQSCK读:DQS 输出相对 CK 的偏移±450 ps±400 ps±350~400 ps±300 psDLL 锁定的直接体现
tDQSQ读:同组内 DQ 相对 DQS 的偏差450 ps400 ps350 ps300 ps决定读眼宽度上限
tQH读:DQ 相对 DQS 的保持时间tHP − tQHS(tHP = 半个 tCK)与 tDQSQ 共同构成读眼
tAC读:DQ 输出相对 CK 的访问时间±600 ps±500 ps±400~450 ps±375 ps以 datasheet 为准
tIS / tIH地址/命令相对 CK 的建立/保持基值约 0.25 / 0.275 tCK,再按压摆率 derating决定 ADDR/CMD 等长容差

3 · 电源设计

3.1 电源域与容差

DDR2 一共有 5 个电源相关网络:VDD、VDDQ、VDDL、VREF、VTT。前三者是 1.8 V 供电源,VREF 是基准,VTT 是端接电源且必须能双向供电流。

网络标称值设计目标电流能力要求来源方案关键约束
VDD1.8 V1.80 V ±0.05 V按颗粒数 × IDD7 峰值,见 3.5 节DC-DC 降压或 LDO与 VDDQ 斜率同步上电,任何时刻压差 ≤ 0.3 V
VDDQ1.8 V1.80 V ±0.05 VI/O 电流,含 ODT 吸收电流可与 VDD 同源,经磁珠隔离纹波 ≤ ±2%(36 mVp-p)
VDDL1.8 V1.80 V ±0.10 V数 mA ~ 数十 mA经磁珠或 0 Ω 从 VDD 引出必须独立去耦,否则 DLL 抖动增大甚至失锁
VREF0.9 VVDDQ/2 ±1%数 mA(输入电流极小)1 kΩ/1 kΩ 0.1% 分压 + 运放缓冲;或专用 DDR 端接 IC 的 VTTREF 输出必须跟随 VDDQ 变化;交流噪声 ≤ ±1% VDDQ
VTT0.9 VVDDQ/2 ±3%双向 sink/source,见 5.4 节计算专用 DDR 端接 LDO(sink/source 型)不得先于 VDDQ 建立;不得在 VDDQ 撤除后残留
VTT 必须能双向供电流(DDR2 电源设计最容易被忽略的一条)

地址/命令/控制信号通过 50~56 Ω 电阻上拉到 VTT。当信号为高电平时,驱动器向 VTT 灌入电流,VTT 电源必须吸收(sink);当信号为低电平时,VTT 通过端接电阻向负载提供(source)电流。普通 LDO 只能 source 不能 sink,若直接用作 VTT,高电平时电压会被抬高、甚至损坏前级。必须使用 sink/source 型 DDR 端接稳压器,且其输出电容与 ESR 需按芯片手册严格选型。

3.2 去耦电容配置

频段容值封装数量(每颗 DDR2 颗粒)安装位置作用
高频(> 50 MHz)0.1 µF(100 nF)0402(优先)或 0201每个 VDD / VDDQ 球 1 个,x16 通常 8~14 个背面紧贴对应 BGA 球,过孔直接下地,走线总长 ≤ 60 mil提供 I/O 开关瞬态电流,抑制SSN
高频补充0.01 µF(10 nF)0402 / 0201每颗 2~4 个靠近 CK 与 DQS 相关电源球抑制 200 MHz 以上噪声
中频(1 ~ 20 MHz)4.7 µF / 10 µF0603 / 0805,X5R每颗 4~6 个颗粒四周 5 mm 内均匀分布补充 Bulk 与高频之间的阻抗峰
低频(< 1 MHz)47 ~ 100 µF钽电容或 X5R 1206/1210每通道(或每 4 颗)1~2 个靠近 1.8 V 电源入口抑制 DC-DC 输出纹波与负载阶跃
VDDL 专用0.1 µF + 1 µF0402 + 0603各 1 个紧贴 VDDL 球隔离 DLL 电源噪声,保证 tDQSCK
VREF 专用0.1 µF + 1 µF0402 + 0603各 1 个(每器件的 VREF 脚)距离 VREF 引脚 ≤ 100 mil把 VREF 交流噪声压到 ±1% 以内
VTT 专用10 µF × 2~4 + 0.1 µF × 8~12 + 100 µF × 10805 + 0402 + 钽按端接电阻数量:每 2 个端接电阻配 1 个 0.1 µF每个端接电阻排附近 100 mil 内吸收端接电流瞬态,维持 VTT 精度
去耦电容的"三不"原则

① 不使用 Y5V/Z5U 材质:直流偏压下容量会衰减 60% 以上,1.8 V 下 10 µF 的 Y5V 实际可能只剩 3 µF。一律用 X5R 或 X7R。② 不共用过孔:每个电容至少 1 个独立地过孔,两个电容共用 1 个过孔会让 ESL 翻倍。③ 不把电容放到 BGA 正下方远离电源球的位置:0402 电容放在背面时,电源球 → 过孔 → 电容 → 过孔 → 地平面的总路径必须 ≤ 60 mil,否则高频去耦失效。

3.3 上电初始化时序

DDR2 上电必须严格按 JEDEC JESD79-2 的顺序执行。任意一步跳过,轻则 DLL 不锁定、数据错误,重则器件不响应。

// DDR2 SDRAM 上电初始化序列(JEDEC JESD79-2;最终以主控 DDR 控制器设计指南为准)
//
// 步骤 1:VDD / VDDQ / VDDL 同时上电,斜率单调且 ≤ 200 mV/µs(示例值)
//         VREF 跟随 VDDQ/2;VTT 在 VDDQ 之后或同时建立,且任何时刻 VTT ≤ VDDQ
// 步骤 2:CKE 保持低电平(≤ 0.2 × VDDQ),ODT 保持无效
// 步骤 3:电源稳定后等待          tINIT1 = 200 µs        (对比:DDR3 为 500 µs)
// 步骤 4:CK/CK# 必须在 CKE 拉高前已稳定翻转 ≥ 10 ns(或 5 × tCK,取大者)
// 步骤 5:CKE 拉高,发 NOP / DESELECT,等待  tINIT2 = 400 ns
// 步骤 6:PRECHARGE ALL                       (A10 = 1,BA = X)
// 步骤 7:EMRS(EMR2):BA[1:0] = 10,A[12:0] = 0x000     // 常规温区;高温用 0x080
// 步骤 8:EMRS(EMR3):BA[1:0] = 11,A[12:0] = 0x000     // 保留位全部清零
// 步骤 9:EMRS(EMR): BA[1:0] = 01,A0 = 0              // 使能 DLL
//步骤 10:MRS:      BA[1:0] = 00,A8 = 1              // DLL 复位,同时写 CL/BL/WR
//步骤 11:PRECHARGE ALL
//步骤 12:AUTO REFRESH × 2(间隔 ≥ tRFC,部分器件要求 8 次)
//步骤 13:MRS:      A8 = 0                            // 解除 DLL 复位,写入最终 CL/BL/WR
//步骤 14:EMRS(EMR):A[9:7] = 111                      // OCD 默认值(OCD calibration default)
//步骤 15:EMRS(EMR):A[9:7] = 000                      // OCD 退出,保持校准结果
//        [可选] 完整 OCD 校准流程:
//          Drive(1) = 001 → Drive(0) = 010 → Adjust = 100 → Exit = 000
//步骤 16:等待 tDLLK = 200 × tCK 完成 DLL 锁定
//        DDR2-800:200 × 2.5 ns = 500 ns;DDR2-1066:200 × 1.875 ns = 375 ns
//步骤 17:[可选,推荐] ZQCL(A10 = 1),等待 tZQCL ≥ 128 × tCK(DDR2-800 = 320 ns)
//步骤 18:进入正常操作,按 tREFI ≤ 7.8 µs(≤ 85 ℃)周期性发 AUTO REFRESH
//
// 关键间隔:
//   tMRD  = 2 × tCK        两个 MRS / EMRS 命令之间的最小间隔
//   tDLLK = 200 × tCK      DLL 锁定时间,期间不能发除 NOP/DES 外的任何命令
//   tZQCL = 128 × tCK      ZQ 长校准(ZQCL);短校准 ZQCS = 64 × tCK
//   tRFC                   每次 AUTO REFRESH 的周期(1 Gb ≈ 127.5 ns)
//   tINIT1 / tINIT2        200 µs / 400 ns
//
// 掉电顺序(必须遵守):
//   1) 停止所有访问,发出 PRECHARGE ALL,等待 tRP
//   2) 若需保持数据:进入 Self Refresh(CKE 拉低 + REFRESH),然后才能关 VTT 与 VDDQ
//   3) 若不需保持数据:CKE 拉低 → 关 VTT → 关 VDDQ → 关 VDD
//   4) 任何时刻 VDD / VDDQ 的压差不得超过 0.3 V
DDR2 上电初始化时序波形图 t tINIT1 = 200 µs tINIT2 = 400 ns VDD VDDQ 1.8 V VDDL VREF 0.9 V VTT 0.9 V(不得先于 VDDQ 建立) CKE ≤ 0.2 × VDDQ CKE 拉高 + NOP CK CK# CKE 拉高前时钟须稳定 ≥ 10 ns 或 5 tCK tDLLK = 200 tCK CMD PREAEMR2 EMR3EMR MRRST ZQCLPREA REF×2MR+EMR MRS 序列(间隔 tMRD = 2 tCK) tRFC OCD DLL 锁定中(200 tCK) ZQ 校准 正常读写 1 2 3 4 ① 上电 ② 200 µs 电源稳定 ③ CKE 拉高 400 ns ④ MRS 序列 ⑤ DLL 锁定 ⑥ ZQCL ⑦ PREA + REFRESH ⑧ MR + OCD ⑨ 正常读写
图 3-1 DDR2 上电初始化时序:电源稳定、CKE 拉低、时钟稳定、200 µs、模式寄存器加载、DLL 复位与锁定、ZQCL、OCD 校准

3.4 掉电与自刷新

模式进入条件电流水平退出延迟数据保持说明
Active Power-DownCKE 拉低,行仍处于激活态IDD3P,数 mAtXP = 2 tCK(快速)/ tXARD(慢速)保持适合短时空闲
Precharge Power-DownCKE 拉低,所有 bank 已预充电IDD2P,数 mAtXP = 2 tCK(快速)/ tXP + tXARDS(慢速)保持比 Active PD 更省电
Self RefreshCKE 拉低 + REFRESH 命令IDD6,通常 4~12 mA(每颗)tXSRD = 200 tCK 到读;tXSNR = tRFC + 10 ns 到非读命令保持(DRAM 内部自动刷新)系统休眠时的主要手段;此期间可关闭 CK
深度掉电切断 VDD / VDDQ0完整重新初始化(200 µs + 400 ns + 序列)丢失必须按 3.3 节的掉电顺序执行
自刷新期间的温度与时钟

① 自刷新期间 DRAM 用内部振荡器计时,外部 CK 可以停掉,但退出后必须等待 tXSRD = 200 tCK 才能读。② 自刷新电流 IDD6 随温度指数上升:85 ℃ 时的 IDD6 可能是 25 ℃ 时的 3~5 倍,做待机功耗预算时务必用高温值。③ 壳温超过 85 ℃ 时,必须把 EMR2 的 A7(SRF)置 1 使刷新率加倍(tREFI = 3.9 µs),否则会出现高温数据丢失。④ 进入自刷新前必须先 PRECHARGE ALL。

3.5 功耗估算与热设计

// DDR2 功耗估算方法(以 2 颗 x16、DDR2-800、32 bit 总线为例)
//
// 一、器件电流(全部取自 datasheet 的 IDD 表,下列为典型量级,务必以实测型号为准)
//   IDD0  :激活待机(所有 bank 已激活并预充电)      约  80 ~ 100 mA / 颗
//   IDD1  :单 bank 激活,读写交替                    约 120 ~ 160 mA / 颗
//   IDD4R :连续读                                    约 170 ~ 220 mA / 颗
//   IDD4W :连续写                                    约 190 ~ 240 mA / 颗
//   IDD5B :自动刷新(峰值)                          约 180 ~ 230 mA / 颗
//   IDD6  :自刷新(25 ℃ / 85 ℃)                    约   4 ~ 25 mA / 颗
//   IDD7  :所有 bank 全速读写(最恶劣)               约 260 ~ 380 mA / 颗
//
// 二、器件功耗
//   P_device = VDD × IDD
//   2 颗 × IDD7 = 320 mA → P = 1.8 V × 0.64 A ≈ 1.15 W
//
// 三、ODT 端接功耗(数据组,写操作期间)
//   单根 DQ 被拉低时:I = VTT / Rtt = 0.9 / 75 ≈ 12 mA;P = VTT² / Rtt ≈ 10.8 mW
//   16 DQ + 2 DQS 对 + 2 DM ≈ 20 根线,按 50% 占空比:
//   P_ODT ≈ 20 × 10.8 mW × 0.5 ≈ 108 mW
//
// 四、VTT 并联端接功耗(地址/命令/控制,常开)
//   端接电阻 50 Ω,25 根线(A0~A13 14 根 + BA 3 根 + RAS#/CAS#/WE# 3 根 + CKE/CS#/ODT 3 根 + 时钟 2 根)
//   最恶劣(全部为低):I = 25 × 0.9 / 50 = 450 mA;P = 0.9 × 0.45 ≈ 405 mW
//   典型(约 50% 为低):P ≈ 200 mW
//   → VTT 稳压器至少要按 ±450 mA 的双向能力选型,留 2 倍余量取 1 A 以上
//
// 五、总功耗估算
//   P_total ≈ P_device + P_ODT + P_VTT + P_controller_io
//           ≈ 1.15 W + 0.11 W + 0.41 W + 0.30 W ≈ 1.97 W(最恶劣工况)
//
// 六、热设计
//   · DDR2 FBGA 的 θJA 典型 40 ~ 60 ℃/W(取决于铺铜与过孔,datasheet 会给出 θJA / θJB)
//   · 单颗按 0.6 W、θJA = 50 ℃/W 估算:ΔT ≈ 0.6 × 50 = 30 ℃
//   · 环境温度 55 ℃ → 壳温约 85 ℃,已到商用级上限,必须优化散热
//   措施:
//   a) 器件下方地平面完整铺铜,每颗器件至少 9 个地过孔(阵列式)直连主地
//   b) 顶层/底层在 BGA 区域做大面积 1.8 V 与地铺铜,兼作散热
//   c) 高功耗场景加导热垫连到机壳或散热片(注意 FBGA 表面平整度)
//   d) 固件层面:空闲时进入 Precharge Power-Down,长期待机进入 Self Refresh
//   e) 温度监控:在颗粒附近布 NTC 或读取主控内部温度传感器,
//      超过 85 ℃ 时切换 EMR2 的 SRF 位使刷新率加倍

4 · 典型应用电路

4.1 单颗 x16 点对点(16 bit 总线)

这是 DDR2 最简洁、SI 最好的应用形态:一颗 x16 颗粒直接挂在 SoC 的 DDR2 控制器上,数据组点对点,地址/命令/控制单负载 + 末端 VTT 端接。

DDR2-800 x16 单颗粒点对点典型应用电路 VDDQ = VDD = 1.8 V ±0.1 V SoC / FPGA DDR2 控制器 SSTL_18 I/O 16 bit 数据总线 DLL / PHY 训练 DQS gating ODT 控制(写时拉高) VREF 输入 (内部或外部基准) DDR2 SDRAM x16 FBGA-84 / FBGA-60 1 Gb / 2 Gb,4n 预取 片内 ODT 75/150/50 Ω DLL + OCD + ZQ 1.8 V SSTL_18 4 bank / 8 bank 刷新 tREFI = 7.8 µs CK / CK#(差分 100 Ω,末端跨接 100 Ω 或 2×50 Ω 至 VTT) 100 Ω 地址 / 命令 / 控制组(SSTL_18,末端 VTT 并联端接) ADDR[13:0] + BA[2:0] RAS# / CAS# / WE# CKE / CS# / ODT 共约 25 根,每根末端 50~56 Ω(1%)上拉至 VTT 50 Ω 1% 数据组(差分 DQS,源同步,靠片内 ODT 端接,外部不加并联电阻) DQ[15:0](16 根,点对点) LDQS/LDQS#、UDQS/UDQS#(2 对差分 100 Ω) LDM / UDM(2 根,写数据掩码) VREF = VDDQ / 2 = 0.9 V ±1%(SoC 与 SDRAM 各需 0.1 µF + 1 µF 就近去耦) VTT = VDDQ / 2 = 0.9 V(专用 sink/source 端接稳压器,电流双向) VREF 生成 VDDQ 1.8 V R1 = 1 kΩ 0.1% VREF 0.9 V R2 = 1 kΩ 0.1% 也可用专用 基准源或端接 IC 的 VTTREF 输出(推荐) 0.1 µF + 1 µF VTT 端接电源(sink / source) DDR 端接 LDO sink + source ≥ 1 A VIN 1.8 V VTT VTTREF → VREF GND 输出电容: 22 µF×2 + 0.1 µF×8 去耦电容与 ZQ 校准电阻 ZQ(DRAM) 240 Ω ±1% 尽量靠近 ZQ 球, 走线 ≤ 200 mil,包地 · 每 VDDQ 球:0.1 µF 0402 · 每颗:4.7 µF 0603 × 4~6 · 每通道 bulk:47~100 µF · VDDL:0.1 µF + 1 µF · VREF:0.1 µF + 1 µF · VTT:22 µF×2 + 0.1 µF×8
图 4-1 DDR2-800 x16 单颗粒点对点典型应用电路:CK/CK#、ADDR/BA、RAS#/CAS#/WE#/CKE/CS#/ODT、DQ/DQS/DM、VREF、ZQ 240 Ω 1%、VTT 端接与上拉电阻、去耦电容

逐网络说明表(单颗 x16)

网络数量端接方式电阻取值阻抗要求等长要求(相对基准)Layout 要点
CK / CK#1 对末端跨接 100 Ω 差分100 Ω 1%(或 2×50 Ω 至 VTT)差分 100 Ω ±10%基准(组内 ±2 mil)差分对等长、等距、同层;不打孔优先;远离数据组 ≥ 3W;包地处理
ADDR[13:0]14末端并联至 VTT50 ~ 56 Ω 1%单端 50 Ω ±10%与 CK 等长 ±25 mil与 BA/命令同组同层;端接电阻排在最后一颗器件之后
BA[2:0]2~3末端并联至 VTT50 ~ 56 Ω 1%单端 50 Ω与 CK 等长 ±25 mil与 ADDR 同组,注意 2 Gb 起需要 BA2
RAS# / CAS# / WE#3末端并联至 VTT50 ~ 56 Ω 1%单端 50 Ω与 CK 等长 ±25 mil与 WE# 的误采样会导致 REF 变 MRS,务必控制过冲与串扰
CKE1末端并联至 VTT50 ~ 56 Ω 1%单端 50 Ω与 CK 等长 ±25 mil上电/复位期间必须为低,必要时加 4.7~10 kΩ 下拉(以主控指南为准)
CS#1末端并联至 VTT50 ~ 56 Ω 1%单端 50 Ω与 CK 等长 ±25 mil单 rank 时可由主控内部常驱;多 rank 时每 rank 一根
ODT1末端并联至 VTT50 ~ 56 Ω 1%单端 50 Ω与 CK 等长 ±25 mil写入时拉高打开 DRAM 端 ODT;读操作时保持无效
DQ[15:0]16片内 ODT—单端 50 Ω(部分 40 Ω)与所属 DQS 等长 ±5~10 mil按字节分组,组内同层同走线层;尽量不打孔
LDQS± / UDQS±2 对片内 ODT—差分 100 Ω ±10%组内 ±2 mil;与 CK 差 ≤ 100 mil差分对全程等长等距;与同组 DQ 保持 ≥ 3W 间距
LDM / UDM2片内 ODT—单端 50 Ω与所属 DQS 等长 ±5~10 mil与 DQ 视为同一字节组一起绕线
VREF1—分压 1 kΩ ×2(0.1%)——走线宽 10~15 mil,两侧包地,长度 ≤ 2 inch;每端 0.1 µF + 1 µF
ZQ1外接电阻到 VSS240 Ω ±1%——紧贴 ZQ 球,走线 ≤ 200 mil,两侧铺地屏蔽;不得与其他信号共用过孔
VDD / VDDQ / VDDL多球————VDDL 从 VDD 经磁珠隔离;每球 0.1 µF;平面铜厚 ≥ 1 oz
VTT—————铺铜宽度按电流 ≥ 1 A 设计;每个端接排旁 0.1 µF;整条 VTT 铺铜远离 DQS

4.2 两片 x16 拼接 32 位总线

32 位是 DDR2 在嵌入式 SoC 上最常见的配置。要点:数据组各片独立点对点(不共享),地址/命令/控制与时钟共享并做对称 T 分支。

两片 x16 拼 32 位:数据组独立点对点,地址/命令/控制与时钟做对称 T 分支 SoC / FPGA DDR2 控制器 32 bit 数据总线 4 字节组 / 4 个 DQS 1 组地址命令 (两片共享) 1 对 CK (T 分支到两片) 1 个 CS#(同 rank) DDR2 #1(x16) DQ[15:0] + LDQS± + UDQS± LDM / UDM ADDR / CMD / CTRL / CK (来自 T 分支,等长) DDR2 #2(x16) DQ[31:16] + LDQS± + UDQS± LDM / UDM ADDR / CMD / CTRL / CK (来自 T 分支,等长) DQ[15:0] / LDQS± / UDQS± / LDM / UDM → 器件 #1(19 根,点对点) DQ[31:16] / LDQS± / UDQS± / LDM / UDM → 器件 #2(19 根,点对点) ADDR[13:0] / BA / RAS# / CAS# / WE# / CKE / CS# / ODT / CK / CK#(共享,25+2 根) 分支 L1 分支 L2 L1 = L2,误差 ≤ 10 mil 分支点即端接点(R = Zo/2) R = Zo/2 ≈ 25 ~ 28 Ω VTT = 0.9 V(sink/source) 要点 1:两个分支必须严格等长(≤ 10 mil),且分支本身尽量短(≤ 300 mil),否则分支点会形成强反射源。 要点 2:数据组各自点对点,互不共享,靠片内 ODT 端接;双负载时 ODT 建议用 75 Ω(单负载用 150 Ω)。 要点 3:更优方案是菊花链 + 末端单端接:地址命令依次经过 #1、#2,在 #2 后放一组 50~56 Ω 到 VTT,无 stub。
图 4-2 两片 x16 拼接 32 位:数据组独立点对点,地址/命令/控制与时钟做对称 T 分支并在分支点端接

两片方案的逐网络说明

项目单颗 x16(16 bit)两片 x16(32 bit)工程说明
数据总线DQ[15:0],1 组 DQSDQ[31:16] 与 DQ[15:0],2 组 DQS(4 个 DQS 引脚对)数据组始终点对点,不随片数变化
地址/命令/控制单负载两负载,对称 T 分支或菊花链负载数增加使容性负载翻倍,边沿变缓,需重新仿真
ODT 推荐值150 Ω75 Ω两片数据总线不共享,但地址总线共享;ODT 按数据组负载选择
端接电阻末端 50~56 Ω 至 VTT(每根)分支点 25~28 Ω,或每分支末端各 50~56 Ω两个 50 Ω 并联等效 25 Ω
VTT 电流约 0.45 A(25 根,最恶劣)约 0.5 ~ 0.6 A(含分支电流)稳压器按 2 倍余量选型(≥ 1.5 A)
走线层数4 层可行(≤ DDR2-533)建议 6 层(DDR2-800 及以上必用 6 层)T 分支需要额外的走线空间与完整地平面
等长难度低中(需同时满足 T 分支等长与数据组等长)先布数据组,再布地址组,最后绕时钟
容量拼法两片同容量同型号:容量 = 单片 × 2,位宽 × 2;两片不同容量会导致地址线数量不同、无法同 rank 使用,必须分时片选且固件分别初始化

4.3 端接方式、VREF、ZQ 与去耦细节

DDR2 三种端接方式对比:地址命令用 VTT 并联、数据组用片内 ODT、可选源端串联阻尼 A · VTT 并联端接(并联到端接电源) 驱动器 SoC Zo = 50 Ω 接收 50 Ω VTT = 0.9 V · 用于 ADDR / CMD / CTRL / CK · 端接效果最好,反射完全吸收 · 静态功耗大: P = VTT² / R = 0.81/50 ≈ 16 mW/根 · VTT 必须可 sink / source B · 片内 ODT(DDR2 数据组首选) 驱动器 SoC / DRAM Zo = 50 Ω 接收端 内部 ODT 75/150 Ω · 用于 DQ / DQS / DM · 由 EMR 的 A6、A2 选择 75/150/50 Ω · 无外部电阻,节省面积与 BOM · 只在需要时打开(写时 DRAM 端) · 端接值受 PVT 影响,容差约 ±15% · DDR2 无 动态 ODT 寄存器, 切换档位需重新发 EMRS C · 源端串联阻尼(辅助手段) 驱动器 SoC 15~33 Ω Zo = 50 Ω 接收 · 串在驱动器输出端 · 阻值 ≈ Zo − 驱动器输出阻抗 (约 50 − 18 ≈ 22~33 Ω) · 抑制过冲与振铃,减缓边沿 · 降低 EMI · 不适用于多负载总线 · 会增大信号上升/下降时间, 高频下可能吃掉建立/保持裕量 工程结论:DDR2 常规配置为「数据组 = 方案 B(ODT)」+「地址/命令/控制/时钟 = 方案 A(VTT 并联)」,方案 C 仅在仿真显示过冲超标时作为补充。
图 4-3 DDR2 端接方式对比:地址/命令/控制用 VTT 并联端接、数据组用片内 ODT、源端串联电阻作为可选阻尼手段

VREF 设计要点

项目要求说明
电压精度VDDQ/2 ±1%(0.9 V ±9 mV)DDR2 只有一个 VREF(地址/命令/控制共用),不区分 VREFCA 与 VREFDQ
产生方式1 kΩ / 1 kΩ(0.1%)电阻分压 + 运放缓冲;或专用 DDR 端接 IC 的 VTTREF 输出纯电阻分压的输出阻抗约 500 Ω,多器件并联时会互相牵拉,强烈建议加缓冲
电流能力≥ 3 mA(多器件时 ≥ 10 mA)DRAM 的 VREF 输入电流很小,但分压电阻自身要流 0.9 mA
去耦每个 VREF 引脚 0.1 µF + 1 µF,距离 ≤ 100 mil目标是 VREF 上的交流噪声 ≤ ±1% VDDQ(±18 mV)
走线线宽 10~15 mil,两侧包地,长度 ≤ 2 inch,不得与 DQS/DQ 平行走线VREF 被干扰会同时移动所有输入门限,是"概率性误码"的常见根因
跟随性必须跟随 VDDQ 变化(用 VDDQ 分压,不能用固定基准独立供电)若 VDDQ 有 5% 漂移而 VREF 固定,门限会偏离窗口中心

ZQ 与 OCD 校准要点

  • ZQ 电阻:240 Ω ±1%,低温漂(≤ 100 ppm/℃),封装建议 0603 及以上以保证功率与精度;走线 ≤ 200 mil,两侧铺地屏蔽,不得与其他信号共用过孔。
  • ZQCL(长校准):上电初始化后执行一次,耗时 tZQCL ≥ 128 tCK(DDR2-800 = 320 ns)。在校准完成前不得发读写命令。
  • ZQCS(短校准):温度或电压大幅变化后执行,耗时 ≥ 64 tCK,可按 tREFI 周期穿插执行。
  • OCD 校准:可选的片外驱动阻抗校准(Drive(1) → Drive(0) → Adjust → Exit)。多数设计只执行"默认值(111)→ 退出(000)"两步;若主控支持且保留了 OCD 校准流程,可获得更精确的输出阻抗与更好的眼图。
  • DLL 与 OCD 的关系:DLL 负责 DQS 相对 CK 的相位,OCD/ZQ 负责输出阻抗与 ODT 阻值,两者独立,缺一都会导致时序/电平劣化。
  • 注意 部分 FBGA-60 精简封装不引出 ZQ 球,此时无法做 OCD/ZQ 校准,输出阻抗与 ODT 精度依赖器件内部默认值,Layout 时应当更保守(缩短走线、减小容性负载)。