DDR5 Write leveling详解

DDR5 Write leveling

    • [0 开始之前](#0 开始之前)
    • [1 背景](#1 背景)
    • [2 步骤](#2 步骤)
    • [3 时序](#3 时序)
    • [4 总结](#4 总结)

本系列博客中介绍,记录一些DDR5 中涉及的特性和调试经验,大家有需要可以收藏,有问题欢迎交流讨论,不足之处欢迎指出。

0 开始之前

博主之前调试过LPDDR4 内存控制器的上电Calibration。对于LPDDR4来说,Write leveling的实现方式,简单又粗暴:调整DQS(从memory controller到DRAM方向)与DRAM CK的相位关系,并且以DRAM CK为参考,调整DQS直到与DRAM CK对齐(上升沿对上升沿)。

然而对于DDR5来说,有一些不同之处,需要先进行外部write leveling,对齐管脚,再进行内部write leveling以"降低功耗与延时"(JESD79-5的官方套话)。

对于内部write leveling 的具体作用,
Deepseek表示:"DDR5的数据速率能达到6400Mbps甚至更高,在这种极端速度下,不仅仅是PCB板级的信号延迟问题(这是External Write Leveling解决的),连芯片内部路径的微小差异都会成为瓶颈。之前几代速度没那么高,内部路径的时序差异可以靠设计余量消化掉,但DDR5不行了,必须主动进行内部校准。"

整体来看复杂了不少,因此写下这篇博文进行记录。

1 背景

本文中并不过多赘述,write leveling 的目的。

DDR5中,在write leveling方面有更新。支持两种模式,外部write leveling,内部write leveling,并且是先进行外部write leveling, 在此基础上进行内部write leveling。

如何理解这两种模式?

外部Write leveling: 使用DRAM内部产生的write leveling 脉冲作为"参考",这个脉冲信号与CK的上升沿对齐。DDR5中,DQS不再是需要单纯地,调节管脚上的DQS与CK之间的相位。而是进一步的,加入了write latency。

内部Write leveling: 在外部Write leveling的基础上,继续调节DQS,并且还要调节 DRAM内部产生的write leveling 脉冲的相位。

2 步骤

2.1 外部Write leveling

开局来张图:

步骤1,t0之前:将DQS_t拉低,DQS_c拉高

步骤2,t0,t1: 发送MRW配置Mode register MR02 第1bit,进入write leveling 模式

步骤3,t1-ta:等待至少tWLPEN(15ns)

步骤4,ta+1,ta+2:发送 写 命令

步骤5,tb+3时,内部脉冲会拉高,memory controller 发出的DQS脉冲如果在tb, tb+1处,那么采到的内部脉冲将会是0,经过tWLO之后,从DQ中返回采样值。(可参考时序部分图1)

步骤6 ,给DQS_t, DQS_c加延时

重复步骤1-6,直到DQ采样值从0变为1(大概是DQS_t,DQS_c右边的上升沿与tb+3对齐的样子),表示此时的DQS已经能够采样到内部write leveling 脉冲的高电平。(可参考时序部分图2)

2.2 内部Write leveling

在外部Write leveling 已经完成的情况下,此时DQS理当能够采集到write leveling 脉冲高电平。

步骤7 ,把DQS_t, DQS_c 往左移,移动的步长为WL_ADJ_start*,他的值需要依据write preamble来决定,JESD79-5上面有相应关系的表格。举例来说,如果Write preamble=2, WL_ADJ_start=-0.75tCK。

此时的DQ采样值应当是'0',(可参考时序部分图3)

步骤8,通过写mode register MR03设置,把内部脉冲向左移动,单位是tCK。目的是使DQ采样值从'0' 变为'1'。

步骤9,继续把DQS_t, DQS_c 往左移,知道采样值又变为'0'。目的是跟内部脉冲对齐,因为内部脉冲它每次delay的单位是tCK,步长太大。

步骤10 ,最终步。将DQS_t, DQS_c向右移动,移动的步长为WL_ADJ_end*,这个值也是根据write preamble来决定的。举例来说,如果Write preamble=2, WL_ADJ_end=+1.25tCK.。

最终相位关系见该图

*参数释义

WL_ADJ_start:开始内部write leveling的时候,首先需要移动DQS_t,DQS_c的相位, 方向:左移。

WL_ADJ_end: 完成内部write leveling的时候,需要移动DQS_t,DQS_c的相位,方向:右移。

WICA:指的是这个内部产生的write leveling 脉冲的delay,方向:左移。

3 时序

外部training开始时,可以看到DQ15:0全部输出低电平:


图 1 '步骤5'对应波形

外部training完成时,可以看到DQ15:0已经全部输出高电平了:

图 2 '步骤6'对应波形


图3 '步骤7'对应波形

4 总结

在LPDDR4 中,完成write leveling 之后,只能保证DQS与CK的相位关系,write latency错了也没关系。真正调节write latency,是在 write training中进行调节的。

但是从DDR5外部Write leveling的步骤来看,似乎DDR5的机制更加科学合理,完成write leveling之后,既保证了DQS和CK的相位关系,又保证了匹配的write latency,因此,到了后面的write training中,只需要调节DQ的延迟即可,不必再考虑write latency。

然而,做完外部和内部Write leveling,从memory controller的开发角度来看,难度可谓是增加了亿点点。

相关推荐
CSDN官方博客18 分钟前
「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令
嵌入式硬件·物联网·embedding
点灯小铭1 小时前
基于单片机的数码管定时插座设计与定时开关功能实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
云栖梦泽1 小时前
玩转RK3506SDK
linux·嵌入式硬件
数智工坊3 小时前
机器人四大主控板系统分层选型指南:树莓派、ESP32、STM32与Arduino的能力边界与实战定位
stm32·嵌入式硬件·机器人
进击的小头4 小时前
第8篇:IGBT 从零到精通:核心原理、关键参数、选型指南与工业级应用要点
经验分享·嵌入式硬件·学习
点灯小铭4 小时前
基于单片机的多模式智能洗衣机设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
项目題供诗4 小时前
STM32-AD单通道&AD多通道(十九)
stm32·单片机·嵌入式硬件
南岸的水4 小时前
BMS国标充电解析
单片机·嵌入式硬件·mcu
清风6666664 小时前
基于单片机的可调数控电源设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业
sramdram4 小时前
低功耗国产蓝牙芯片,蓝牙MCU方案
单片机·嵌入式硬件·mcu·蓝牙mcu·蓝牙方案