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 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 接口、上拉电阻与总线电容、页写与写保护 |
新设计不要选 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 |
|---|---|---|---|---|
| 标准文档 | JESD79 | JESD79-2 | JESD79-3 | JESD209-2 |
| VDD 核心电压 | 2.5 V ±0.2(DDR-400 为 2.6 V ±0.1) | 1.8 V ±0.1 | 1.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.1 | 1.5 V ±0.075 | 1.2 V |
| I/O 电平标准 | SSTL_2(2.5 V) | SSTL_18 | SSTL_15 | HSUL_12 / LVCMOS |
| VREF | 0.5 × VDDQ,单一 | 0.5 × VDDQ = 0.9 V,±1% | 命令/地址 VREFCA + 数据 VREFDQ 双基准 | 0.5 × VDDQ |
| 预取位数 | 2n | 4n | 8n | 4n(S4)/ 2n(S2) |
| 核心时钟 / 命令时钟 | 100 ~ 200 MHz | 100 ~ 266 MHz(1066 为 266 MHz) | 400 ~ 800 MHz | 266 ~ 533 MHz |
| 数据速率 | 200 ~ 400 MT/s | 400 ~ 1066 MT/s | 800 ~ 2133 MT/s | 333 ~ 1066 MT/s |
| CAS 延迟 CL | 2 / 2.5 / 3 | 3 / 4 / 5 / 6 / 7 | 5 ~ 11 | 3 ~ 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 / 8 | 4 / 8 | 8(BC4 为 8 截断) | 4 / 8 / 16 |
| 附加延迟机制 | 无 | Posted CAS / Additive Latency 0~6 | AL = CL − 1 或 CL − 2 | 类似 AL 机制 |
| 典型封装 | TSOP-66 / FBGA-60/66 | FBGA-60 / FBGA-84 / TSOP-66 | FBGA-78 / FBGA-96 | PoP / FBGA / MCP |
| 总线位宽配置 | x8 / x16,DIMM 64 bit | x4 / 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-tRP | 64 bit 带宽 | 模组命名 |
|---|---|---|---|---|---|---|---|
| DDR2-400 | 100 MHz | 200 MHz | 5.00 ns | 400 MT/s | 3-3-3(部分 4-4-4) | 3.20 GB/s | PC2-3200 |
| DDR2-533 | 133 MHz | 266 MHz | 3.75 ns | 533 MT/s | 4-4-4 | 4.26 GB/s | PC2-4200 / PC2-4300 |
| DDR2-667 | 166 MHz | 333 MHz | 3.00 ns | 667 MT/s | 5-5-5(部分 4-4-4) | 5.30 GB/s | PC2-5300 / PC2-5400 |
| DDR2-800 | 200 MHz | 400 MHz | 2.50 ns | 800 MT/s | 5-5-5 / 6-6-6 | 6.40 GB/s | PC2-6400 |
| DDR2-1066 | 266 MHz | 533 MHz | 1.875 ns | 1066 MT/s | 7-7-7(部分 6-6-6) | 8.50 GB/s | PC2-8500 / PC2-8600 |
| 单颗容量 | 可用位宽 | Bank 数 | 行地址 A | 列地址 A | 页大小(x16) | 说明 |
|---|---|---|---|---|---|---|
| 256 Mb | x8 / x16 | 4 | A0~A12 | A0~A8(x16) | 1 KB | 常配 FBGA-60,成本低 |
| 512 Mb | x8 / x16 | 4 | A0~A12 | A0~A9(x16) | 1 KB | DDR2 最主流密度段 |
| 1 Gb | x8 / x16 | 4 或 8 | A0~A13 | A0~A9(x16) | 1 KB | 4 bank 与 8 bank 版本并存,务必核对 |
| 2 Gb | x8 / x16 | 8 | A0~A13 | A0~A9(x16) | 1 KB(x16) | 需 BA0~BA2 三个 bank 地址 |
| 4 Gb | x4 / x8 / x16 | 8 | A0~A14 | A0~A10 | 1 KB / 2 KB | 末期产品,供货稳定性差 |
1.2 封装与球位定义
| 封装 | 适用位宽 | 球/引脚数 | 典型本体尺寸 | 球距 / 引脚距 | 说明 |
|---|---|---|---|---|---|
| FBGA-60 | x16 | 60 | 约 8.0 × 10.5 mm | 0.8 mm | 小容量(256 Mb / 512 Mb)常用;电源/地球数量少于 84 球,注意部分型号不引出 ZQ 球,OCD 校准不可用 |
| FBGA-84 | x8 / x16 | 84 | 约 8.0 × 12.5 mm | 0.8 mm | DDR2 最主流;x16 版本含 LDQS/LDQS#/LDM 与 UDQS/UDQS#/UDM 两组字节选通 |
| FBGA-68 | x8 | 68 | 约 8.0 × 10.5 mm | 0.8 mm | 少量厂商的 x8 精简封装 |
| TSOP-66 | x8 / x16 | 66 | 10.16 mm(400 mil)× 22.2 mm | 0.65 mm | 早期与低成本方案;寄生电感大,不建议用于 DDR2-800 及以上 |
| SODIMM 200 pin | 64 bit(+8 ECC 可选) | 200 | 67.6 × 31.75 mm | 0.6 mm | DDR2 笔记本/工控小内存条,含 SPD EEPROM(I²C,地址 0x50/0x51) |
| UDIMM 240 pin | 64 bit(+8 ECC 可选) | 240 | 133.35 × 30 mm | 1.0 mm | DDR2 台式机/服务器无缓冲内存条;注意与 DDR3 240 pin 键槽不同 |
① 把 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 关键电气参数
| 参数 | 符号 | 最小值 | 典型值 | 最大值 | 说明 |
|---|---|---|---|---|---|
| 器件核心电源 | VDD | 1.70 V | 1.80 V | 1.90 V | ±0.1 V,含纹波与噪声 |
| I/O 电源 | VDDQ | 1.70 V | 1.80 V | 1.90 V | 任何时刻 |VDD − VDDQ| ≤ 0.3 V |
| DLL 电源 | VDDL | 1.70 V | 1.80 V | 1.90 V | 建议经磁珠/0 Ω 从 VDD 隔离并单独去耦 |
| 输入参考电压 | VREF | 0.873 V | 0.900 V | 0.927 V | VDDQ/2 ±1%(±9 mV) |
| 端接电源 | VTT | 0.873 V | 0.900 V | 0.927 V | VDDQ/2 ±3%;必须能双向(sink/source)供电流 |
| 输入高电平(DC) | VIH(DC) | 1.025 V | — | 1.90 V | VREF + 0.125 V |
| 输入低电平(DC) | VIL(DC) | −0.30 V | — | 0.775 V | VREF − 0.125 V |
| 输入高电平(AC) | VIH(AC) | 1.150 V | — | — | VREF + 0.250 V,眼图必须穿越此电平 |
| 输入低电平(AC) | VIL(AC) | — | — | 0.650 V | VREF − 0.250 V,眼图必须穿越此电平 |
| 输出驱动阻抗(全驱) | — | — | 约 18 Ω | — | EMR A1 = 0;由 ZQ/OCD 校准调整 |
| 输出驱动阻抗(减弱) | — | — | 约 30 Ω | — | EMR A1 = 1(约全驱的 60%) |
| 片内端接 ODT 标称值 | Rtt | 75 Ω / 150 Ω / 50 Ω(EMR A6、A2 选择) | 容差典型 ±15%(随温度电压变化) | ||
| ZQ 外部校准电阻 | R_ZQ | 237.6 Ω | 240 Ω | 242.4 Ω | ±1%,低温漂(≤100 ppm/℃),0603 及以上 |
| 引脚绝对最大额定 | VIN / VOUT | −0.40 V | — | +2.30 V | 超出会永久损坏;含过冲也须满足(以 datasheet 为准) |
| 工作壳温(商用) | Tc | 0 ℃ | — | 85 ℃ | 超过 85 ℃ 需将刷新率加倍 |
| 工作壳温(工业) | Tc | −40 ℃ | — | 95 ℃ | 工业级颗粒,需确认型号后缀 |
| 存储温度 | Tstg | −55 ℃ | — | +125 ℃ | 非工作状态 |
接收端判决门限为 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_18 | 1 对 | 末端 100 Ω 差分(或 2×50 Ω 至 VTT) | 命令与地址的唯一采样时钟,所有时序以此为基准;DDR2-800 为 400 MHz 差分 |
| CKE | SoC → DRAM | 单端,SSTL_18 | 1 | 末端 50~56 Ω 至 VTT | 时钟使能。低电平进入掉电/自刷新;上电初始化期间必须为低 |
| CS# | SoC → DRAM | 单端,SSTL_18 | 1(每 rank) | 末端 50~56 Ω 至 VTT | 片选。高电平时 DRAM 忽略除 CKE 外的一切命令 |
| RAS# / CAS# / WE# | SoC → DRAM | 单端,SSTL_18 | 3 | 末端 50~56 Ω 至 VTT | 命令编码位,与 CS# 组合构成命令真值表 |
| BA0~BA2 | SoC → DRAM | 单端,SSTL_18 | 2 或 3 | 末端 50~56 Ω 至 VTT | Bank 地址;4 bank 用 BA0/BA1,8 bank 需 BA2 |
| A0~A13 | SoC → DRAM | 单端,SSTL_18 | 14 | 末端 50~56 Ω 至 VTT | 行地址 / 列地址复用;A10 兼作 Precharge All 与 ZQCL/ZQCS 模式位 |
| DQ0~DQ15 | 双向 | 单端,SSTL_18 | 16 | 片内 ODT(75/150/50 Ω) | 数据总线,上下沿各传 1 bit |
| LDQS / LDQS# | 双向,源同步 | 差分,SSTL_18 | 1 对 | 片内 ODT | 低字节(DQ0~DQ7)数据选通 |
| UDQS / UDQS# | 双向,源同步 | 差分,SSTL_18 | 1 对 | 片内 ODT | 高字节(DQ8~DQ15)数据选通 |
| LDM / UDM | SoC → DRAM | 单端,SSTL_18 | 2 | 片内 ODT | 写数据掩码;读操作时 DM 状态无所谓 |
| ODT | SoC → DRAM | 单端,SSTL_18 | 1(每 rank) | 末端 50~56 Ω 至 VTT | 片内端接使能。写操作时拉高打开 DRAM 端 ODT |
| ZQ | — | 模拟 | 1 | 外接 240 Ω ±1% 到 VSS | 输出驱动阻抗与 ODT 的校准基准;部分 60 球封装不引出 |
| VREF | — | 模拟输入 | 1 | 0.1 µF + 1 µF 就近去耦 | SSTL_18 输入判决基准 = VDDQ/2 |
| VDD / VDDQ / VDDL | — | 电源 | 多球 | 每球 0.1 µF + 每颗 4.7~10 µF | 1.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。
带宽计算公式
理论峰值带宽(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:A0 | BL 突发长度 | 010 = 4,011 = 8,其余保留 | DDR2 取消了 BL=2;常规使用 BL=8 |
| A3 | BT 突发类型 | 0 = 顺序(sequential),1 = 交错(interleaved) | 多数主控用顺序模式 |
| A6:A4 | CL 读延迟 | 010 = 2,011 = 3,100 = 4,101 = 5,110 = 6,111 = 7 | DDR2-800 常用 5 或 6;DDR2-1066 用 6 或 7 |
| A7 | TM 测试模式 | 0 = 正常工作(必须写 0),1 = 厂商测试 | 严禁写 1 |
| A8 | DLL 复位 | 0 = 正常工作,1 = 复位 DLL | 初始化时先写 1,等待 tDLLK = 200 tCK 后再写 0 |
| A11:A9 | WR 写恢复 | 001 = 2,010 = 3,011 = 4,100 = 5,101 = 6,110 = 7,111 = 8 | WR = ceil(tWR / tCK)。DDR2-800:15 ns / 2.5 ns = 6 |
| A12 | PD 掉电模式 | 0 = 快速退出(DLL 保持使能,tXARD),1 = 慢速退出(进入时关 DLL,tXARDS) | 按主控支持情况选择 |
| A13 | 保留 | 写 0 | — |
EMR / EMR(1)(Extended Mode Register 1,BA1:BA0 = 01)
| 位 | 字段 | 编码 | 说明 |
|---|---|---|---|
| A0 | DLL 使能 | 0 = 使能(正常),1 = 禁止 | 禁止 DLL 时只能低频工作,正常必须写 0 |
| A1 | DIC 输出驱动强度 | 0 = 全强度(约 18 Ω),1 = 减弱(约 60%,约 30 Ω) | 点对点短走线用减弱档可显著改善过冲与 EMI |
| A6、A2 | Rtt 标称 ODT | 00 = ODT 关闭,01 = 75 Ω,10 = 150 Ω,11 = 50 Ω | DDR2 无 DDR3 意义上的"动态 ODT"寄存器 |
| A5:A3 | AL 附加延迟 | 000 = 0,001 = 1,010 = 2,011 = 3,100 = 4,101 = 5,110 = 6 | Posted CAS 附加延迟,通常取 AL = CL − 1 |
| A9:A7 | OCD 校准 | 000 = 退出/保持,001 = Drive(1),010 = Drive(0),100 = Adjust,111 = 默认值 | 片外驱动校准;多数设计只做"默认值 → 退出" |
| A10 | DQS# 使能 | 0 = 使能差分 DQS#,1 = 禁止(DQS# 停用) | 正常必须使能差分 DQS |
| A11 | RDQS 使能 | 0 = 禁止(默认),1 = 使能 | 冗余选通,仅部分 x8 器件支持;x16 通常不用 |
| A12 | 输出使能(Qoff) | 0 = 输出缓冲使能,1 = 输出缓冲关闭 | 调试或总线隔离时使用,正常写 0 |
EMR(2) 与 EMR(3)
| 寄存器 | BA1:BA0 | 有效位 | 说明 |
|---|---|---|---|
| EMR(2) | 10 | A7 = 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# | BA | A10 / AP | 地址 |
|---|---|---|---|---|---|---|---|---|---|
| MRS / EMRS(模式寄存器设置) | H | H | L | L | L | L | 寄存器选择 | — | OP Code |
| Refresh(自动刷新) | H | H | L | L | L | H | X | X | X |
| Self Refresh 进入(SRE) | H | L | L | L | L | H | X | X | X |
| Self Refresh 退出(SRX) | L | H | H | X | X | X | X | X | X |
| Precharge(选定 bank) | H | H | L | L | H | L | Bank 地址 | L | X |
| Precharge All(全部 bank) | H | H | L | L | H | L | X | H | X |
| Activate(行激活) | H | H | L | L | H | H | Bank 地址 | 行地址高位 | 行地址 |
| Write(写) | H | H | L | H | L | L | Bank 地址 | L / H(自动预充) | 列地址 |
| Read(读) | H | H | L | H | L | H | Bank 地址 | L / H(自动预充) | 列地址 |
| ZQCL(ZQ 长校准) | H | H | L | H | H | L | X | H | X |
| ZQCS(ZQ 短校准) | H | H | L | H | H | L | X | L | X |
| No Operation(NOP) | H | H | L | H | H | H | X | X | X |
| Device Deselect(DES) | H | H | H | X | X | X | X | X | X |
| Active Power-Down 进入 | H | L | L | H | H | H | X | X | X |
| Precharge Power-Down 进入 | H | L | L | H | H | H | X | X | X |
| Power-Down 退出 | L | H | H 或 NOP | X | X | X | X | X | X |
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)中分别配置,且必须一致,否则读写时序整体错位
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 走线等长 补偿,无法由硬件自动校准。
关键 DQS / DQ 时序参数
| 参数 | 含义 | DDR2-400 | DDR2-667 | DDR2-800 | DDR2-1066 | 备注 |
|---|---|---|---|---|---|---|
| tCK | 时钟周期 | 5.0 ns | 3.0 ns | 2.5 ns | 1.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 tCK | 0.20 tCK | 0.20 tCK | 0.20 tCK | 500 ps @800 |
| tDS / tDH | 写:DQ 相对 DQS 的建立/保持 | 按 datasheet derating 表,随 DQ/DQS 压摆率修正 | 压摆率越低,要求越严 | |||
| tDQSCK | 读:DQS 输出相对 CK 的偏移 | ±450 ps | ±400 ps | ±350~400 ps | ±300 ps | DLL 锁定的直接体现 |
| tDQSQ | 读:同组内 DQ 相对 DQS 的偏差 | 450 ps | 400 ps | 350 ps | 300 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 是端接电源且必须能双向供电流。
| 网络 | 标称值 | 设计目标 | 电流能力要求 | 来源方案 | 关键约束 |
|---|---|---|---|---|---|
| VDD | 1.8 V | 1.80 V ±0.05 V | 按颗粒数 × IDD7 峰值,见 3.5 节 | DC-DC 降压或 LDO | 与 VDDQ 斜率同步上电,任何时刻压差 ≤ 0.3 V |
| VDDQ | 1.8 V | 1.80 V ±0.05 V | I/O 电流,含 ODT 吸收电流 | 可与 VDD 同源,经磁珠隔离 | 纹波 ≤ ±2%(36 mVp-p) |
| VDDL | 1.8 V | 1.80 V ±0.10 V | 数 mA ~ 数十 mA | 经磁珠或 0 Ω 从 VDD 引出 | 必须独立去耦,否则 DLL 抖动增大甚至失锁 |
| VREF | 0.9 V | VDDQ/2 ±1% | 数 mA(输入电流极小) | 1 kΩ/1 kΩ 0.1% 分压 + 运放缓冲;或专用 DDR 端接 IC 的 VTTREF 输出 | 必须跟随 VDDQ 变化;交流噪声 ≤ ±1% VDDQ |
| VTT | 0.9 V | VDDQ/2 ±3% | 双向 sink/source,见 5.4 节计算 | 专用 DDR 端接 LDO(sink/source 型) | 不得先于 VDDQ 建立;不得在 VDDQ 撤除后残留 |
地址/命令/控制信号通过 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 µF | 0603 / 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 µF | 0402 + 0603 | 各 1 个 | 紧贴 VDDL 球 | 隔离 DLL 电源噪声,保证 tDQSCK |
| VREF 专用 | 0.1 µF + 1 µF | 0402 + 0603 | 各 1 个(每器件的 VREF 脚) | 距离 VREF 引脚 ≤ 100 mil | 把 VREF 交流噪声压到 ±1% 以内 |
| VTT 专用 | 10 µF × 2~4 + 0.1 µF × 8~12 + 100 µF × 1 | 0805 + 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
3.4 掉电与自刷新
| 模式 | 进入条件 | 电流水平 | 退出延迟 | 数据保持 | 说明 |
|---|---|---|---|---|---|
| Active Power-Down | CKE 拉低,行仍处于激活态 | IDD3P,数 mA | tXP = 2 tCK(快速)/ tXARD(慢速) | 保持 | 适合短时空闲 |
| Precharge Power-Down | CKE 拉低,所有 bank 已预充电 | IDD2P,数 mA | tXP = 2 tCK(快速)/ tXP + tXARDS(慢速) | 保持 | 比 Active PD 更省电 |
| Self Refresh | CKE 拉低 + REFRESH 命令 | IDD6,通常 4~12 mA(每颗) | tXSRD = 200 tCK 到读;tXSNR = tRFC + 10 ns 到非读命令 | 保持(DRAM 内部自动刷新) | 系统休眠时的主要手段;此期间可关闭 CK |
| 深度掉电 | 切断 VDD / VDDQ | 0 | 完整重新初始化(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 端接。
逐网络说明表(单颗 x16)
| 网络 | 数量 | 端接方式 | 电阻取值 | 阻抗要求 | 等长要求(相对基准) | Layout 要点 |
|---|---|---|---|---|---|---|
| CK / CK# | 1 对 | 末端跨接 100 Ω 差分 | 100 Ω 1%(或 2×50 Ω 至 VTT) | 差分 100 Ω ±10% | 基准(组内 ±2 mil) | 差分对等长、等距、同层;不打孔优先;远离数据组 ≥ 3W;包地处理 |
| ADDR[13:0] | 14 | 末端并联至 VTT | 50 ~ 56 Ω 1% | 单端 50 Ω ±10% | 与 CK 等长 ±25 mil | 与 BA/命令同组同层;端接电阻排在最后一颗器件之后 |
| BA[2:0] | 2~3 | 末端并联至 VTT | 50 ~ 56 Ω 1% | 单端 50 Ω | 与 CK 等长 ±25 mil | 与 ADDR 同组,注意 2 Gb 起需要 BA2 |
| RAS# / CAS# / WE# | 3 | 末端并联至 VTT | 50 ~ 56 Ω 1% | 单端 50 Ω | 与 CK 等长 ±25 mil | 与 WE# 的误采样会导致 REF 变 MRS,务必控制过冲与串扰 |
| CKE | 1 | 末端并联至 VTT | 50 ~ 56 Ω 1% | 单端 50 Ω | 与 CK 等长 ±25 mil | 上电/复位期间必须为低,必要时加 4.7~10 kΩ 下拉(以主控指南为准) |
| CS# | 1 | 末端并联至 VTT | 50 ~ 56 Ω 1% | 单端 50 Ω | 与 CK 等长 ±25 mil | 单 rank 时可由主控内部常驱;多 rank 时每 rank 一根 |
| ODT | 1 | 末端并联至 VTT | 50 ~ 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 / UDM | 2 | 片内 ODT | — | 单端 50 Ω | 与所属 DQS 等长 ±5~10 mil | 与 DQ 视为同一字节组一起绕线 |
| VREF | 1 | — | 分压 1 kΩ ×2(0.1%) | — | — | 走线宽 10~15 mil,两侧包地,长度 ≤ 2 inch;每端 0.1 µF + 1 µF |
| ZQ | 1 | 外接电阻到 VSS | 240 Ω ±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(16 bit) | 两片 x16(32 bit) | 工程说明 |
|---|---|---|---|
| 数据总线 | DQ[15:0],1 组 DQS | DQ[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 与去耦细节
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 时应当更保守(缩短走线、减小容性负载)。