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就是在更低功耗的前提下把带宽往上推了一截。但带来一个问题——时序容限更小了,调起来更折腾。
1.2 关键时序参数到底有哪些?
我一般把时序参数分成三类:
- 读写时延类:tCL、tRCD、tRP、tRAS
- 刷新与预充电类:tRFC、tRC、tRRD
- 数据对齐类: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 | 行周期时间 |
1.3 JEDEC标准 到底是啥?
JEDEC是固态技术协会,说白了,就是制定DRAM行业规格的组织。DDR4的标准文档是JESD79-4。你买到的所有DDR4颗粒,都必须符合这个标准。
JEDEC标准主要规定了这几件事:
- 电气特性:电压、电流、信号电平
- 时序参数:上面说的那些tCL、tRCD的极限值和典型值
- 命令真值表:什么样的信号组合对应什么操作
- 初始化序列:上电后颗粒怎么配置
- 测试方法:怎么验证颗粒是否符合规格
我个人觉得,JEDEC标准最值得细读的部分是时序参数那一章。里面每个参数都有详细的波形图和计算公式。比如tRCD,标准里会画出来从RAS#拉低到CAS#拉低之间的时间关系。你看懂了这个图,就不会把参数配反。
这张图把DDR4时序的知识体系串起来了。从DDR4简介出发,分电气特性、时序参数、命令协议三个方向,最终全部收敛到JEDEC标准。你调试时不管遇到什么问题,都可以按这个框架定位:是电气问题?是某个时序参数没配好?还是命令序列不对?
嗯,基础部分就先聊到这儿。记住三点:DDR4是双倍速率同步DRAM,时序参数是系统稳定的关键,JEDEC标准是一切调试的最终依据。把这三点刻在脑子里,后面学故障诊断就有根了。