2. DDR4/DDR5/LPDDR5协议核心精要

在Agilex平台上做DDR接口设计,真正决定“能不能跑起来、能跑多快”的,往往不是FPGA侧的逻辑,而是对JEDEC协议中几组核心机制的准确理解。本节把DDR4、DDR5、LPDDR5共通的四个关键点——时序参数、命令与地址总线、Bank Group与突发传输、ODT与ZQ校准——放在一起梳理,帮助你在配置控制器IP和做板级调试时,知道每个参数背后对应的是哪条协议规则。

一、关键时序:tCK、tRCD、tRP、tRAS与tFAW

DDR的时序体系以时钟周期tCK为基本单位。以DDR4-3200为例,数据速率3200 MT/s,I/O时钟为1600 MHz,tCK≈0.625 ns。所有内部操作时间都用tCK的整数倍表示,因此速率越高,同样的物理时间对应的周期数越多,时序窗口越紧。

最核心的四个参数是:tRCD(激活到读/写命令的最小间隔)、tRP(预充电到下一次激活的间隔)、tRAS(激活到预充电的最小保持时间)、tRC(同一Bank两次激活的最小间隔,tRC≈tRAS+tRP)。以DDR4-3200的典型值估算:tRCD≈22.5 ns、tRP≈22.5 ns、tRAS≈35 ns,换算成周期约为36、36、56个tCK。控制器IP中这些值通常以“ns”或“周期数”两种方式填写,必须与颗粒数据手册一致,否则会出现激活过早导致的读写错误。

另一个容易被忽略的是tFAW(Four Activate Window)。它限制在任意滚动窗口内同一Rank最多只能发出4个ACT命令,用于抑制峰值电流。DDR4-3200下tFAW典型约30 ns,相当于48个tCK。当控制器连续访问多个Bank时,tFAW会成为实际带宽的隐形上限,尤其在随机访问密集的场景中。

二、命令与地址总线:CA、CS、CK与ODT的协同

DDR4采用命令/地址复用总线:ACT、READ、WRITE、PRE、REF等命令通过CS_n、RAS_n、CAS_n、WE_n的组合编码,地址则通过A[17:0]分时复用(行地址、列地址、Bank地址)。DDR5改为CA总线差分对,命令与地址在同一组CA[13:0]上以双沿传输,并引入CS_n分Rank寻址。LPDDR5则使用CA[6:0]低速命令总线配合WCK数据时钟,命令与数据时钟解耦,这是移动端降低功耗的关键设计。

对Agilex设计者而言,需要关注的是控制器IP中地址映射(Address Mapping)的配置:Bank、Bank Group、Row、Column如何映射到用户逻辑的地址位。映射顺序直接影响访问局部性——把连续地址映射到同一Row的不同Column,可以最大化Row命中率,减少ACT/PRE开销。

DDR4/DDR5/LPDDR5 命令与地址总线结构对比 DDR4(并行CA复用) CS_n / RAS_n / CAS_n / WE_n A[17:0] 行/列/Bank 分时复用 CK_t/CK_c 单端命令采样 命令与地址同沿,1T/2T 可选 DDR5(差分CA总线) CA[13:0] 差分对,双沿传输 CS_n 分 Rank 寻址 CK_t/CK_c 差分命令时钟 命令带宽翻倍,支持子通道 LPDDR5(低速CA+WCK) CA[6:0] 单端低速命令总线 WCK_t/WCK_c 数据时钟 命令与数据时钟解耦 低功耗,WCK 可门控 Bank Group 结构与突发传输(以 DDR4 8Gb x16 为例) Bank Group 0 Bank 0 Bank 1 Bank 2 Bank Group 1 Bank 3 Bank 4 Bank 5 Bank Group 2 Bank 6 Bank 7 Bank 8 BL8 突发传输 D0 D1 D2 D3 D4 D5 D6 D7 BL16 / BC4 可选 连续地址 → 同 Row 高命中

三、Bank Group与突发传输:带宽的两个放大器

DDR4引入Bank Group结构,把8个Bank分成4组,每组2个Bank。同一Bank Group内的Bank共享部分时序约束(如tCCD_L),而不同Bank Group之间可以交错访问(tCCD_S更短)。这意味着:如果控制器能把连续访问分散到不同Bank Group,就能在tCCD_S的节奏下连续发出READ/WRITE,显著提升有效带宽。DDR5进一步把Bank Group扩展到8组,LPDDR5则采用16 Bank架构,交错能力更强。

突发传输(Burst)是另一个关键。DDR4支持BL8和BC4(Burst Chop 4),DDR5支持BL16和BL8,LPDDR5支持BL16/BL32。突发长度决定了单次READ/WRITE命令搬运的数据量。以DDR4-3200 x16颗粒、BL8为例,单次突发传输16bit×8=128bit=16Byte。若控制器能保持Bank Group交错,理论峰值带宽为3200 MT/s×2 Byte=6.4 GB/s(单颗粒),多颗粒并联后可达数十GB/s。

在Agilex的控制器IP中,Burst Length和Bank Interleaving是两个必须与颗粒匹配的参数。如果颗粒只支持BL8,而IP配置为BL16,会出现数据错位;如果Bank Interleaving顺序与地址映射不一致,Row命中率会下降,实测带宽可能只有理论值的60%~70%。

四、ODT与ZQ校准:信号完整性的最后一道防线

ODT(On-Die Termination)是颗粒内部的可切换终端电阻。DDR4的ODT阻值可选RZQ/6(约40Ω)、RZQ/7(约34Ω)等,通过MR1寄存器配置。ODT的作用是吸收传输线反射,尤其在多Rank、多颗粒并联时,必须根据拓扑选择“写ODT”和“读ODT”的阻值。典型配置:单Rank点对点拓扑,写ODT设为RZQ/6;双Rank时,非目标Rank保持ODT开启以吸收反射。

ZQ校准则是补偿PVT(工艺、电压、温度)漂移的机制。颗粒通过ZQ引脚外接240Ω±1%精密电阻,控制器发出ZQCS(短校准,约64个tCK)或ZQCL(长校准,约512个tCK)命令,颗粒内部比较ZQ电阻与输出驱动/ODT电阻,自动调整驱动强度。上电初始化时必须执行ZQCL,之后每隔一定时间(如64ms)执行ZQCS。Agilex控制器IP中通常有“ZQ Calibration Interval”参数,建议按颗粒手册设置,过频会占用命令带宽,过疏则温漂导致眼图恶化。

实操提示:在Agilex的DDR4 IP配置界面中,ODT和ZQ相关参数通常位于“Memory Timing”和“Board Settings”页。建议先用颗粒手册的典型值生成初始配置,再通过SignalTap观察读写误码率,逐步微调ODT阻值。ZQ校准周期可先设为颗粒手册推荐值,若系统温度变化剧烈,可适当缩短。

五、参数配置速查(示例)

参数 DDR4-3200 典型值 DDR5-4800 典型值 LPDDR5-6400 典型值
tCK 0.625 ns 0.416 ns 0.312 ns
tRCD 22.5 ns(36 tCK) 16.0 ns(38 tCK) 18.0 ns(58 tCK)
tRP 22.5 ns(36 tCK) 16.0 ns(38 tCK) 18.0 ns(58 tCK)
tRAS 35 ns(56 tCK) 32 ns(77 tCK) 42 ns(134 tCK)
tFAW 30 ns(48 tCK) 25 ns(60 tCK) 40 ns(128 tCK)
突发长度 BL8 / BC4 BL16 / BL8 BL16 / BL32
ODT典型值 RZQ/6(40Ω) RZQ/6(40Ω) RZQ/6(40Ω)
ZQ校准周期 64 ms(ZQCS) 64 ms(ZQCS) 32 ms(ZQCS)

表中数值为JEDEC标准中的典型参考值,实际设计必须以所选颗粒的Datasheet为准。Agilex的DDR控制器IP在生成时会根据你填写的速率和颗粒型号自动计算部分时序,但tFAW、ODT阻值、ZQ周期等仍需手动确认。把这些参数理解清楚,后续做板级调试时,才能从“眼图差”快速定位到是ODT阻值不对、ZQ校准失效,还是Bank交错配置不合理。