1、DDR4基础

各位好,今天我们正式开始聊DDR4。说实话,DDR4已经出来好些年了,但直到现在,我调试过的板子里十块有八块还是它。你想想看,一个DDR4系统能不能稳定跑,说到底就靠那十几个时序参数。参数配对了,板子稳如老狗;配错了,各种诡异现象全来了。

我个人习惯,讲任何协议都先从“它到底是什么”开始。搞清楚DDR4的底层逻辑,后面学那些tRCD、tCL才会觉得顺理成章。

1.1 DDR4 是个什么东西?

DDR4全称是Double Data Rate 4th Generation同步动态随机存取存储器。名字很长,但核心就三点:

  • 双倍速率:时钟上升沿和下降沿都传输数据,所以等效频率是时钟频率的两倍。
  • 同步:所有操作都跟着时钟走,这也是为什么时序约束那么重要。
  • DRAM:靠电容存储电荷来保存数据,电容会漏电,所以要不断刷新。

还记得我当年第一次调DDR3的时候,以为只要把频率设对就能跑。结果板子死活不启动,示波器一抓,发现读写命令根本没发出去。后来才明白,控制器的时序参数必须和颗粒的规格一一对应,差一个cycle都不行。

DDR4相比DDR3,主要有这几个变化:

特性 DDR3 DDR4
工作电压 1.5V 1.2V
预取宽度 8n 8n(但Bank Group增加)
Bank数量 8 16(4个Bank Group,每个4个Bank)
数据传输速率 800~2133 MT/s 1600~3200 MT/s
命令信号 CK差分 CK差分 + CKE + ODT

说白了,DDR4就是在更低功耗的前提下把带宽往上推了一截。但带来一个问题——时序容限更小了,调起来更折腾。

重要结论:DDR4的物理层和控制器之间,是靠一组精确的时序参数来对齐的。任何一个参数配错了,轻则误码,重则系统直接死掉。

1.2 关键时序参数到底有哪些?

我一般把时序参数分成三类:

  1. 读写时延类:tCL、tRCD、tRP、tRAS
  2. 刷新与预充电类:tRFC、tRC、tRRD
  3. 数据对齐类:tDQSCK、tDQSQ、tQH

咱们重点说前两类,因为调试时90%的问题都出在这儿。

tCL(CAS Latency)

从发出读命令到数据出现在DQ引脚上,需要多少个时钟周期。这个参数直接影响读延迟。我见过有人为了压tCL把系统搞得不稳定,其实没必要,差一两个cycle对带宽影响不大,稳定才是第一位的。

tRCD(RAS to CAS Delay)

行激活到列选通之间的延迟。说白了,就是你打开一行之后,要等多久才能开始读这行里的数据。这个值设小了,数据还没准备好,读出来全是错的。

tRP(Row Precharge Time)

预充电时间。关闭一行,准备打开下一行,中间要等多久。这个跟tRCD有点像,都是“等”参数。

tRAS(Active to Precharge Delay)

行激活后,最少要保持打开多长时间才能预充电。设太短,数据没读完就关了;设太长,白白消耗功耗。

我的习惯:调试初期,先把这几个参数按颗粒数据手册的保守值设上。系统能跑了,再一项一项往下压。千万别一上来就追求极限,否则你都不知道是哪个参数出了问题。

我这里有一份典型的DDR4-2400时序参数表,大家可以参考:

参数 典型值(Cycle) 含义
tCL 17 CAS延迟
tRCD 17 行到列延迟
tRP 17 行预充电时间
tRAS 39 行激活时间
tRFC 350 刷新周期时间
tRC 56 行周期时间
注意:上面的数值是按tCK=0.833ns算的(对应1200MHz时钟)。换一个频率,cycle数要重新算。我曾经遇到过一个客户,直接把2400的时序套到3200上用,结果系统频繁死机。查了半天,就是tRFC没换算。

1.3 JEDEC标准 到底是啥?

JEDEC是固态技术协会,说白了,就是制定DRAM行业规格的组织。DDR4的标准文档是JESD79-4。你买到的所有DDR4颗粒,都必须符合这个标准。

JEDEC标准主要规定了这几件事:

  • 电气特性:电压、电流、信号电平
  • 时序参数:上面说的那些tCL、tRCD的极限值和典型值
  • 命令真值表:什么样的信号组合对应什么操作
  • 初始化序列:上电后颗粒怎么配置
  • 测试方法:怎么验证颗粒是否符合规格
实用建议:调试时,我建议你手边常备三样东西:JESD79-4标准文档、颗粒的Datasheet、控制器的Reference Manual。标准文档讲通用规则,Datasheet讲具体颗粒的差异,控制器手册告诉你寄存器怎么配。三样缺一样,调起来都费劲。

我个人觉得,JEDEC标准最值得细读的部分是时序参数那一章。里面每个参数都有详细的波形图和计算公式。比如tRCD,标准里会画出来从RAS#拉低到CAS#拉低之间的时间关系。你看懂了这个图,就不会把参数配反。

DDR4时序知识体系框架 DDR4时序知识体系 DDR4简介 电气特性 时序参数 命令协议 VDD/VDDQ 信号电平规范 tCL/tRCD/tRP tRAS/tRFC/tRC 读/写命令 刷新/预充电 JEDEC JESD79-4 标准 所有参数 必须符合标准

这张图把DDR4时序的知识体系串起来了。从DDR4简介出发,分电气特性、时序参数、命令协议三个方向,最终全部收敛到JEDEC标准。你调试时不管遇到什么问题,都可以按这个框架定位:是电气问题?是某个时序参数没配好?还是命令序列不对?

一点小建议:刚开始学DDR4时序,不用急着把所有参数都背下来。你先记住tCL、tRCD、tRP、tRAS这四个最常用的,然后学会看波形图。剩下的参数,遇到了再查,查几次就记住了。

嗯,基础部分就先聊到这儿。记住三点:DDR4是双倍速率同步DRAM,时序参数是系统稳定的关键,JEDEC标准是一切调试的最终依据。把这三点刻在脑子里,后面学故障诊断就有根了。