芯参谋(41):DDR2_电路设计指南

快速决策框: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
标准文档 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 键槽不同

DDR2 FBGA-84(x16)球位分区示意(9 列 × 10 行,90 个球位 / 84 个有效球)行 A--K(跳过 I)· 列 1--9 · 球距 0.8 mm · 左下角实心圆为 A1 方向标记A1123456789ABCDEFGHJKCKCK#CKECS#RAS#CAS#WE#ODTA0A1A2A3A4A5A6A7A8A9A10A11A12A13BA0BA1DQ0DQ1DQ2DQ3DQ8DQ9DQ10DQ4DQ5DQ6DQ7DQ11DQ12DQ13LDQSLDQS#LDMUDQSUDQS#UDMDQ14DQ15VDDQVDDQVDDQVDDQVDDQVDDVDDQVDDVDDVDDVDDQVDDVDDVDDVDDVREFVSSVSSQVSSVSSQVSSVSSQVSSVSSQVSSQVSSVSSVSSVSSVSSQVSSVSSQVSSVSSVSSVSSNCNCNCNCNCNCZQ数据组:DQ0~15 / DQS± / DM地址命令组:A0~13 / BA0~2控制时钟:CK±/CKE/CS#/RAS#/CAS#/WE#/ODT电源组:VDD / VDDQ / VDDL / VREF地组:VSS / VSSQ / VSSDLNC 空球(不植球,焊盘可不连)ZQ:外接 240 Ω ±1% 到 VSSx16 器件含两个独立字节组:· LDQS/LDQS#/LDM → DQ0 ~ DQ7· UDQS/UDQS#/UDM → DQ8 ~ DQ15FBGA-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 关键电气参数

参数 符号 最小值 典型值 最大值 说明
器件核心电源 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 ℃ 非工作状态

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_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。

DDR2 4n 预取数据通路(以 x16 器件、DDR2-800 为例)DRAM 存储阵列4 / 8 bankf_core = 200 MHz64 bit4n 预取锁存器一次读出 4 × 16 = 64 bit= 4 个数据节拍(4n → BL 最小为 4)64 bit并串转换DDR 上下沿各送 1 拍16 bitSSTL_18 输出级ODT 75/150/50 Ω驱动强度 DICDQDLL(延迟锁相环)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: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 与 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#DQSDQ↑采样↓采样↑采样↓采样DQ 位中心写方向时序要求:· tDQSS = ±0.25 tCK (DQS 首个上升沿相对 CK)· tDSS / tDSH ≥ 0.20 tCK (DQS 下降沿相对 CK 的建立/保持)· tDS / tDH:查 datasheet derating 表(随压摆率变化)读操作:DQS 由 DRAM 发出 → 边沿与 DQ 位边界对齐(边沿对齐)CK/CK#DQSDQ位边界(需移相 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-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 撤除后残留

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 µ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

DDR2 上电初始化时序波形图ttINIT1 = 200 µstINIT2 = 400 nsVDDVDDQ1.8 VVDDLVREF0.9 VVTT0.9 V(不得先于 VDDQ 建立)CKE≤ 0.2 × VDDQCKE 拉高 + NOPCKCK#CKE 拉高前时钟须稳定 ≥ 10 ns 或 5 tCKtDLLK = 200 tCKCMDPREAEMR2EMR3EMRMRRSTZQCLPREAREF×2MR+EMRMRS 序列(间隔 tMRD = 2 tCK)tRFCOCDDLL 锁定中(200 tCK)ZQ 校准正常读写1234① 上电 ② 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-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 端接。

DDR2-800 x16 单颗粒点对点典型应用电路VDDQ = VDD = 1.8 V ±0.1 VSoC / FPGADDR2 控制器SSTL_18 I/O16 bit 数据总线DLL / PHY 训练DQS gatingODT 控制(写时拉高)VREF 输入(内部或外部基准)DDR2 SDRAM x16FBGA-84 / FBGA-601 Gb / 2 Gb,4n 预取片内 ODT 75/150/50 ΩDLL + OCD + ZQ1.8 V SSTL_184 bank / 8 bank刷新 tREFI = 7.8 µsCK / CK#(差分 100 Ω,末端跨接 100 Ω 或 2×50 Ω 至 VTT)100 Ω地址 / 命令 / 控制组(SSTL_18,末端 VTT 并联端接)ADDR13:0 + BA2:0RAS# / CAS# / WE#CKE / CS# / ODT共约 25 根,每根末端 50~56 Ω(1%)上拉至 VTT50 Ω 1%数据组(差分 DQS,源同步,靠片内 ODT 端接,外部不加并联电阻)DQ15: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 VR1 = 1 kΩ 0.1%VREF 0.9 VR2 = 1 kΩ 0.1%也可用专用基准源或端接IC 的 VTTREF输出(推荐)0.1 µF + 1 µFVTT 端接电源(sink / source)DDR 端接 LDOsink + source≥ 1 AVIN 1.8 VVTTVTTREF → VREFGND输出电容: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;包地处理
ADDR13:0 14 末端并联至 VTT 50 ~ 56 Ω 1% 单端 50 Ω ±10% 与 CK 等长 ±25 mil 与 BA/命令同组同层;端接电阻排在最后一颗器件之后
BA2: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;读操作时保持无效
DQ15: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 拼 32 位:数据组独立点对点,地址/命令/控制与时钟做对称 T 分支SoC / FPGADDR2 控制器32 bit 数据总线4 字节组 / 4 个 DQS1 组地址命令(两片共享)1 对 CK(T 分支到两片)1 个 CS#(同 rank)DDR2 #1(x16)DQ15:0 + LDQS± + UDQS±LDM / UDMADDR / CMD / CTRL / CK(来自 T 分支,等长)DDR2 #2(x16)DQ31:16 + LDQS± + UDQS±LDM / UDMADDR / CMD / CTRL / CK(来自 T 分支,等长)DQ15:0 / LDQS± / UDQS± / LDM / UDM → 器件 #1(19 根,点对点)DQ31:16 / LDQS± / UDQS± / LDM / UDM → 器件 #2(19 根,点对点)ADDR13:0 / BA / RAS# / CAS# / WE# / CKE / CS# / ODT / CK / CK#(共享,25+2 根)分支 L1分支 L2L1 = 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) 工程说明
数据总线 DQ15:0,1 组 DQS DQ31:16 与 DQ15: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 并联端接(并联到端接电源)驱动器SoCZo = 50 Ω接收50 ΩVTT = 0.9 V· 用于 ADDR / CMD / CTRL / CK· 端接效果最好,反射完全吸收· 静态功耗大:P = VTT² / R = 0.81/50 ≈ 16 mW/根· VTT 必须可 sink / sourceB · 片内 ODT(DDR2 数据组首选)驱动器SoC / DRAMZo = 50 Ω接收端内部 ODT75/150 Ω· 用于 DQ / DQS / DM· 由 EMR 的 A6、A2 选择 75/150/50 Ω· 无外部电阻,节省面积与 BOM· 只在需要时打开(写时 DRAM 端)· 端接值受 PVT 影响,容差约 ±15%· DDR2 动态 ODT 寄存器,切换档位需重新发 EMRSC · 源端串联阻尼(辅助手段)驱动器SoC15~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 时应当更保守(缩短走线、减小容性负载)。

后续章节请下载「芯参谋」查看

......(篇幅原因, 还有10章· 详见芯参谋→方案设计)

当前分享仅开放前 5 章正文。详细资料请在芯参谋客户端中打开完整文档。

打开路径:🔧解决方案&应用市场分析 -> 原理方案设计 -> DRAM系列产品方案 -> DDR2_电路设计指南

📥 下载芯参谋客户端(免费查看)

相关报告 · 1

相关报告 · 2

相关推荐
Zhao136824553913 小时前
国产替代DPE5500百兆以太网控制芯片兼容W5500
嵌入式硬件·物联网
yuehuaxin013 小时前
LP20R100FN 同步整流|3C 认证适配器 CCM 工况倒灌、温升超标样机避坑解析
嵌入式硬件·智能家居·适配器模式·智能硬件
国科安芯4 小时前
商业立方星平台中高集成度抗辐射MCU的功耗优化与批量化应用可行性探讨
单片机·嵌入式硬件·架构·risc-v·抗辐射·as32x601
女神下凡4 小时前
芯参谋(40):UFS 电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
iCxhust5 小时前
CAN信号电平与485信号电平实测
单片机·can·通讯·rs485
深圳市恒锐丰科技杨生5 小时前
EG1125 准谐振原边反馈 CC‑CV 功率开关|屹晶 EGmicro
嵌入式硬件·硬件工程
iCxhust5 小时前
51单片机电力载波应用开发(七)广播通讯
c语言·开发语言·单片机·嵌入式硬件·51单片机
深圳市恒锐丰科技杨生6 小时前
EG4005 微波 / 红外感应信号处理芯片|屹晶 EGmicro
嵌入式硬件·硬件工程
Brilliantwxx6 小时前
【STM32】基础定时器 TIM 详解:从极简原理到寄存器全解析
stm32·单片机·嵌入式硬件·mcu