Khorina · 8月5日

搞DDR关键技术笔记:Initialization, Training ,Calibration

初始化、训练和校准

引言

当一个带有DRAM子系统的设备上电时,DRAM达到可操作状态之前会发生一系列事件。以下是根据JEDEC规范中的状态机所显示的DRAM从上电到可操作状态所经历的各种状态。

image.png

这可不是我们平时就一句Training阶段就能概述。

本质上,初始化过程包括四个不同的阶段:

  1. 上电和初始化
  1. ZQ校准
  1. Vref DQ校准
  1. 读写训练(也称为内存训练或初始校准)

image.png

本文的内容就按照这个流程来展开一一聊聊,有些地方,为了讲清楚,有点啰嗦,请海涵。

为了更好地理解以下部分,我们假设您有一个如下所示的系统——带有1个DIMM模块的ASIC/FPGA/处理器。

image.png

Initialization-初始化

image.png

上电和初始化是一个固定且定义明确的步骤序列。

通常,当系统加电且ASIC/FPGA/处理器中的控制器从复位状态中解除时,它会自动执行上电和初始化序列。以下是控制器所做工作的超级简化版本。有关确切的详细信息,请参阅JESD79-49A规范中的第3.3节。[1]

  • 对DRAM上电
  • 解复位并激活ClockEnable(CKE)
  • 启用时钟CK_t/CK_c
  • 发出MRS命令并加载模式寄存器[模式寄存器以特定顺序加载]
  • 执行ZQ校准[ZQCL]
  • 将DRAM置于IDLE状态

此时,DIMM模块上的DRAM了解了它们需要以什么频率运行,以及CAS延迟(CL)、CAS写入延迟(CWL)和其他一些时序参数是什么。

当DIMM(双列直插式内存模块)模块上的DRAM(动态随机存取存储器)被初始化时,它们会获取一系列关键的运行参数,这些参数对于确保内存模块能够高效、稳定地运行至关重要。
  • CAS延迟(CL,Column Address Strobe Latency)是内存时序的第一个参数,表示从发出读取命令到数据实际可用的时间(以时钟周期为单位)。它是衡量内存性能的重要指标之一。
  • CAS写入延迟(CWL,Column Address Strobe Write Latency)是DRAM在写入数据时,从列地址被激活到数据开始被写入DRAM的延迟时间。
  • tRCD(Row Address to Column Address Delay):行地址到列地址的延迟时间,即从发出行地址命令到可以发出列地址命令的时间间隔。
  • tRP(Row Precharge Time):行预充电时间,即从行地址被激活到该行可以被再次激活之前的预充电时间。
  • tRAS(Active to Precharge Delay):行有效至预充电的最短周期,即从行地址被激活到该行被预充电之前的时间间隔。
提示可以查看关于DDR4时序参数的文章,以了解更多关于CL、CWL等的信息...

在DDR4内存的初始化过程中,会执行一系列步骤来配置这些时序参数。

  • 首先,内存控制器会发出命令并加载模式寄存器,这些寄存器会按照特定顺序被编程以设置DRAM的运行参数。
  • 随后,会执行ZQ校准(ZQ Calibration),这是一个与数据引脚(DQ)相关的校准过程,用于调整DQ引脚的阻抗以匹配外部参考电阻,从而优化信号完整性。
  • 完成这些步骤后,DRAM模块就处于准备好进行数据读写操作的状态了。
  • 此时,内存控制器和PHY(物理层)会执行进一步的读/写训练(也称为内存训练或初始校准),以确保时钟和数据选通信号(DQS)在DRAM上正确对齐,并计算出DRAM的正确读写延迟。

这些步骤共同确保了DDR4内存能够高效、稳定地运行。

在DDR4内存系统中,模式寄存器(Mode Register)是一种关键的配置寄存器,用于存储和定义内存模块的操作模式和时序参数。模式寄存器允许内存控制器在内存初始化过程中,通过发送特定的模式寄存器设置(MRS)命令来配置DRAM的运行参数,以确保内存模块能够按照预定的设置进行高效、稳定的数据读写操作。

模式寄存器的主要功能和特点包括:

  1. 配置运行参数:模式寄存器中存储了多个参数,如CAS延迟(CL)、CAS写入延迟(CWL)、行地址到列地址的延迟(tRCD)、行预充电时间(tRP)等,这些参数共同决定了内存模块的性能和时序特性。
  2. 优化信号完整性:通过配置模式寄存器,可以调整数据引脚(DQ)的阻抗匹配和时序参数,以优化信号在内存模块上的传输质量,减少信号反射和噪声干扰。
  3. 支持多种操作模式:DDR4内存支持多种操作模式,如正常操作模式、自刷新模式、低功耗模式等。模式寄存器中的设置决定了内存模块在不同模式下的行为。
  4. 可编程性:内存控制器可以通过发送MRS命令来编程模式寄存器中的值。这些值在内存初始化过程中被设置,并可以在后续的操作中被修改以适应不同的应用场景和性能需求。

DDR4中的模式寄存器数量

DDR4内存标准定义了多个模式寄存器(MR),通常包括MR0到MR6等。不同的模式寄存器负责不同的配置内容和功能。例如,MR0可能用于控制内存模块的基本操作模式和时序参数;MR1可能用于配置输出驱动器阻抗和片上终结电阻(ODT)等特性;而MR5和MR6等则可能用于更高级的配置选项,如奇偶校验和CRC校验等。

ZQ校准

ZQ(Zero Quiet Calibration)在DDR(动态随机存取存储器)内存模块中是一个关键的校准电阻引脚,其名称来源于“Zero Quinn”,意味着当所有数据线预充电到Vcc/2(电源电压的一半)时,通过ZQ进行校准应使所有线路的阻抗为零。然而,这里的“零”是一个理想状态,实际上ZQ校准是为了使线路的阻抗达到一个优化值,以确保信号在传输过程中的完整性和稳定性。

image.png

ZQ校准与数据引脚DQ有关。为了了解ZQ校准的作用以及为什么需要它,我们首先需要查看每个DQ引脚后面的电路。

请记住,DQ引脚是双向的。它负责在读取时发送数据,在写入时接收数据。

image.png

现在,如果你查看DRAM内部,每个DQ引脚后面的电路都由一组并联的240Ω电阻支路组成,如图4所示。由于CMOS设备的特性,这些电阻永远不会精确到240Ω。电阻值甚至会受到电压和温度变化的影响。因此,它们被制成可调谐的。

为了将这些电阻精确调节到240Ω,每个DRAM都包含:

  1. 一个称为DQ校准控制块的特殊模块

  2. 一个ZQ引脚,该引脚连接有一个外部精密(±1%)240Ω电阻。

这个外部精密电阻是“参考”电阻,它在所有温度下都保持在240Ω。在初始化期间发出ZQCL命令时,DQ校准控制块被激活,并产生一个调谐值。然后,该值被复制到每个DQ的内部电路中。

DQ电路中的240Ω电阻支路是一种称为“多晶硅电阻”的电阻器,其阻值通常略大于240Ω(多晶硅电阻器是一种与CMOS技术兼容的电阻器类型)。有许多p型沟道器件与该多晶硅电阻并联连接,以便能够精确地将其调至240Ω。

下图放大了DQ电路中的一个240Ω支路,并显示了与多晶硅电阻相连的5个p型沟道器件。这些小晶体管是根据输入VOH[0:4]设置的。

image.png

现在,连接到DQ校准控制块的电路本质上是一个电阻分压电路,其中一个电阻是多晶硅电阻,另一个是精确的240Ω电阻。

在初始化过程中发出ZQCL命令时,DQ校准控制块被激活,DQ校准控制块内的内部比较器使用VOH[0:4]调节p通道器件,直到电压恰好为VDDq/2(经典电阻分压)。此时,校准完成,VOH值被传输到所有DQ引脚。

image.png

接下来,你可能会好奇为什么DQ引脚一开始就有这个由240Ω电阻组成的并联网络!

拥有一组并联的240Ω电阻允许您调整驱动强度(用于读取)和端接电阻(用于写入)。每个PCB布局都是不同的,因此这种调整能力是改善信号完整性、最大化信号眼图大小并允许DRAM以高速运行的必要条件。

DRAM的信号驱动强度可以通过设置模式寄存器MR1[2:1]来控制。端接可以使用模式寄存器MR1、2和5中的RTT_NOM、RTT_WR和RTT_PARK的组合来控制。

Vref DQ Calibration-Vref 数据队列(DQ)校准

“Vref DQ Calibration”指的是对内存模块中DQ引脚的参考电压进行校准的过程,以确保数据传输的准确性和可靠性。这个过程通常涉及到调整DQ引脚上的参考电压值,以匹配内存控制器的要求,并优化信号传输的电气特性。

image.png

在DDR4中,数据线(DQ)的端接方式从CTT(中心抽头端接,也称为SSTL系列钉状端接逻辑)更改为POD(伪开漏)。这是为了改善高速下的信号完整性并节省I/O功耗。这并不是首次采用这种方式,GDDR5(图形DRAM)也使用了POD。

image.png

这句话的意思是,在DDR3中,Vdd/2被用作电压参考来决定DQ信号是0还是1。再看一下图9的左侧,接收器基本上是一个分压电路。

但在DDR4中,接收器上没有分压电路。相反,它有一个内部电压参考,用于决定数据线(DQ)上的信号是0还是1。这个电压参考被称为VrefDQ。VrefDQ可以通过模式寄存器MR6进行设置,并且需要在VrefDQ校准阶段由内存控制器正确设置。

ZQ Calibration(Zero Quiet Calibration)VS  Vref DQ Calibration

目的与作用

  • ZQ Calibration主要关注于校准DRAM(动态随机存取存储器)接口中DQ(数据队列)引脚的电气特性,特别是驱动强度和端接电阻。
  • 它通过连接在VDDQ和DRAM ZQ pin上的精确电阻(通常为240Ω)来校准DRAM内部的电阻值,这些电阻值可能会随着温度和电压的变化而漂移。
  • ZQ Calibration能够补偿这些外部因素的变化,确保DQ引脚的电气特性保持在最佳状态,从而提高信号传输的完整性和可靠性。

工作方式

  • 在LPDDR5中,用户可以选择background ZQ或command-based ZQ两种方式进行校准。
  • DRAM会自动进行周期性的ZQ Calibration,得到合适的驱动/ODT(片上终结)电阻值,并在适当的时候通过发送ZQ latch命令来更新这些值。

Vref DQ Calibration

目的与作用

  • Vref DQ Calibration关注于校准DQ引脚上的参考电压(VrefDQ),这是用于确保数据传输过程中信号电平正确性的基准电压。
  • 通过调整VrefDQ的值,可以优化信号传输的电气特性,减少信号噪声和干扰,从而提高数据传输的准确性和可靠性。

工作方式

  • Vref DQ Calibration通常涉及设置VrefDQ的电压范围和步进大小,并根据需要进行调整以确保信号电平在可接受的范围内。
  • 在DDR5等现代内存技术中,Vref DQ Calibration可能还包括对VrefDQ设置容差和步进时间的精确控制。

POD、CTT、SSTL、ODT技术的对比

image.png

备注说明

  • POD:在DDR4中引入,旨在通过降低接收端终端电压和减少高电平时的电流流动来降低功耗。POD技术有助于提升DDR4在高速传输下的信号完整性和稳定性。
  • CTT:虽然在此表格中提及,但并非DDR内存接口中的主流技术,更多是作为历史背景或与其他技术(如SSTL)进行比较时提及。
  • SSTL:在DDR3及以前版本中广泛使用,通过串联电阻实现信号端接,接收端终端电压为VDDQ/2。适用于较低速率的DDR版本,但在高速传输时可能面临信号完整性问题。
  • ODT:从DDR2开始引入,将终端电阻内置到DRAM颗粒内部(称为片上终结)。ODT技术通过允许DRAM控制器独立控制开关终端电阻来改善信号完整性,降低主板制造成本,并减少内存闲置时的功率消耗。此外,ODT还支持多种模式以适应不同的应用场景和性能需求。

ZQ VS Vref DQ

image.png

综上所述,ZQ Calibration和Vref DQ Calibration虽然都是内存技术中的校准过程,但它们在校准的目标、方式和工作原理上存在差异。

ZQ Calibration更侧重于电气特性的校准和补偿,而Vref DQ Calibration则更关注于参考电压的精确性和稳定性。这两种校准过程共同确保了内存模块在数据传输过程中的高可靠性和准确性。

Read/Write Training

在这一点上,初始化过程已完成,DRAM处于空闲状态,但内存仍然不可操作。在数据能够可靠地写入或从DRAM读取之前,控制器和PHY必须执行几个更重要的步骤。这个重要的阶段被称为读写训练(或内存训练或初始校准),其中控制器(或PHY)

  • 运行算法以在DRAM处对齐时钟[CK]和数据选通[DQS]
  • 运行算法并计算出对DRAM进行正确读写操作的延迟
  • 为读取操作调整数据眼图的中心位置
  • 如果信号完整性不佳且数据无法可靠地写入或读取,则报告错误

本节涉及状态机中的以下循环

image.png

为什么需要读写训练?

让我们更深入地了解我们的示例系统。下面的图片展示了在ASIC/SoC/处理器和DIMM上的DRAM之间,数据信号和地址/命令信号是如何连接的。

数据和数据选通(DQ & DQS)以星形拓扑结构连接到每个内存,因为每个内存都连接到72条数据线的不同部分。

image.png

DIMM上的时钟、命令和地址线(A、CK、CKE、WE、CSn)采用一种称为飞越路由拓扑的技术进行连接。这是因为DIMM上的所有DRAM共享相同的地址线,而飞越路由是实现更好信号完整性和高速运行所必需的。

image.png

因此,从ASIC/处理器的视角来看,DIMM上的每个DRAM内存模块都位于不同的距离上。而从DIMM的视角来看,由于每个DRAM的位置不同,它们接收到的时钟和数据信号之间的偏斜(skew)也会有所不同。

DRAM是一个相对简单的设备。当你打算进行写入操作时,在初始化阶段,你需要通过编程DRAM的模式寄存器之一来设置CAS写入延迟(CWL),这是列地址和数据在DRAM输入端之间的时间延迟。

这个定时参数必须始终得到遵守。内存控制器需要考虑到板载线路延迟和飞越路由延迟,并以适当的偏斜启动地址和数据信号,以确保它们以CWL延迟到达DRAM。

例如,如果你将CAS写入延迟设置为9,那么当ASIC/处理器启动列地址时,它需要在不同的时间点启动不同的数据位,以确保它们都在CWL为9的时间点上到达DRAM。

对于读取操作,也需要进行类似的处理。由于DIMM上的每个DRAM都位于不同的距离,因此当发出读取命令时,它们会在不同的时间点接收到该命令,随后每个DRAM返回的数据也会在不同的时间点到达ASIC/处理器。

在初始校准阶段,ASIC/处理器会测量来自每个DRAM的延迟,并相应地调整其内部电路,以确保在正确的时刻捕获来自不同DRAM的数据。

就是为了保证大家到的时候,能整整齐齐的,不要因为各自端口走的路程不一样,而导致数据不一样,目的就是确认路径长短,然后告诉大家每个人多久出发,最后大家一起在终点碰头。

对于读写训练,控制器/PHY IP通常提供多种算法。最常见的算法包括:

  1. 写入电平调整(Write Leveling)
  1. 多用途寄存器(MPR)模式写入(Multi-Purpose Register Pattern Write)
  1. 读取中心化(Read Centering)
  1. 写入中心化(Write Centering)

以下各节将更详细地介绍这些算法。

写入电平调整

在向DRAM写入数据时,有一个重要的时序参数tDQSS,它是不能违反的。tDQSS是数据选通信号(DQS)相对于时钟信号(CK)的位置。tDQSS必须位于规格中定义的tDQSS(MIN)和tDQSS(MAX)范围内。如果tDQSS超出此范围,则可能会向内存写入错误的数据。

由于DIMM上每个DRAM的时钟到数据/数据选通信号的偏斜不同,内存控制器需要进行训练,以便能够补偿这种偏斜,并保持DIMM上每个DRAM输入端的tDQSS。

当您在控制器中启用写入电平调整时,它将执行以下步骤:

  1. 向模式寄存器MR1写入数据,将位7设置为1。这将DRAM置于写入电平调整模式。在写入电平调整模式下,当DRAM看到数据选通信号(DQS)时,它会使用该信号对时钟(CK)进行采样,并通过DQ总线将采样值返回给控制器。

  1. 控制器然后发送一系列DQS脉冲。由于DRAM处于写入电平调整模式,因此它会使用DQS对CK的值进行采样,并通过DQ总线将采样值(1或0)返回给控制器。
  1. 控制器随后查看DRAM返回的DQ位的值,并根据需要增加或减少DQS延迟,然后在一段时间后发送下一组DQS脉冲。

  1. DRAM再次对CK进行采样,并通过DQ总线返回采样值。

  1. 重复步骤2到4,直到控制器看到0到1的转换。此时,控制器锁定DQS延迟设置,并针对该DRAM设备完成写入电平调整。
  1. 然后,对整个DIMM的每个DQS重复步骤2到5,以完成写入电平调整过程。

  1. 最后,通过向MR1[7]写入0,将DRAM从写入电平调整模式中移除。

下面的图表展示了写入电平调整的概念。

image.png

MPR(多用途寄存器)模式写入

MPR模式写入实际上并不直接被视为一种校准算法,而是通常作为读取中心化和写入中心化之前的一个准备步骤。

DDR4 DRAM中内置了四个8位的可编程寄存器,这些寄存器被称为MPR寄存器(多用途寄存器),它们专门用于DQ位(数据位)的训练过程,即读取中心化和写入中心化。为了启用MPR访问模式,需要将模式寄存器MR3的第2位(MR3[2])设置为1。

一旦这个模式被激活,原本应该针对DRAM内存库执行的读取和写入操作就会被重定向到这些多用途寄存器上,而不是直接操作内存库中的数据。这样做的目的是为了在正式进行读写操作之前,通过MPR寄存器对DRAM的数据路径进行配置和优化,以确保后续操作的准确性和稳定性。

image.png

读取中心化

读取中心化的核心目标是调整控制器(或PHY)内部的读取捕获机制,确保数据在数据眼图的中心位置被准确捕获。为了实现这一目标,内存控制器(或PHY)会执行以下步骤:

  1. 通过设置模式寄存器MR3的第2位,启用对多用途寄存器(MPR)的访问,这样DRAM在读取操作时就会返回MPR中的数据,而不是直接从DRAM内存读取。
  1. 随后,控制器会发起一系列连续的读取操作。这些读取操作会返回之前在MPR模式写入步骤中写入的数据模式,假设这个模式是交替的1-0-1-0...序列。
  1. 在读取过程中,控制器内部的读取捕获机制会动态调整内部的读取延迟寄存器,以找到数据眼图的左边缘和右边缘。这通常是通过逐步增加或减少读取延迟来实现的。
  1. 一旦确定了数据眼图的边缘,控制器就会相应地设置读取延迟寄存器,以确保数据始终在眼图的中心位置被捕获。

  1. 上述步骤会针对每个DQ数据位重复执行,以确保所有数据位的读取操作都能达到最佳性能。

写入中心化

写入中心化的目的是为每个数据位设置合适的写入延迟,以确保写入数据在DRAM设备的相应写入选通(DQS)边缘上居中。为了实现这一目标,PHY会执行以下写入-读取-移位-比较循环:

  1. PHY会连续地发起写入和读取操作。这些操作会针对DRAM的特定数据位进行。

  1. 在每次写入操作后,PHY会逐步改变该数据位的写入延迟,并随后执行读取操作以验证写入的数据。
  1. 通过比较读取回的数据与原始写入的数据,PHY可以评估不同写入延迟下的数据质量。

  1. 经过多次迭代后,PHY可以确定一个写入延迟范围,在该范围内读取回的数据与写入的数据一致。这个范围就代表了写入数据眼图的左边缘和右边缘。

  1. 最后,PHY会根据这个范围设置最佳的写入延迟,以确保写入数据在DQS边缘上居中,从而提高写入操作的准确性和稳定性。

定期校准

在网络交换机或路由器等设备中,其运行过程中可能会遇到电压和温度的变化。为了保持信号完整性和数据访问的可靠性,一些在初始化和读写训练期间校准的参数需要重新运行。内存控制器和PHY IP通常提供以下两种定期校准过程:

  • 定期ZQ校准 - 也称为ZQ校准短周期(ZQCS)。它用于定期运行ZQ校准,以调整之前描述的240Ω电阻器。
  • 定期读取中心化 - 重新计算读取延迟和其他与读取相关的参数。

启用定期校准是可选的,因为如果你知道你的设备将在稳定的温度条件下部署,那么初始的ZQ校准和读写训练就足够了。

通常,内存控制器或PHY允许你通过它们的寄存器设置定时器并启用定期校准。一旦定时器设置完成,每次定时器到期时都会执行定期校准。

总结

在DRAM可以使用之前,需要完成以下四个步骤:

  1. 上电和初始化
  1. ZQ校准
  1. Vref DQ校准

  1. 读写训练

完成这些步骤后,系统正式进入空闲和运行状态。当然你可能需要根据你的设备部署条件来启用定期校准。

Reference

  • JEDEC specification
  • A number of Micron DDR4 Datasheets[2]
  • A number of Micron DDR3 Datasheets[3]
  • Rambus - Fly-By Topology[4]
  • AIC Design - Resistors and Inductors (100419 "AIC Design - Resistors and Inductors").pdf)
  • Bit-Tech[5]
  • EETimes[6]
  • JEDEC DDR4 Mini Workshop[7]
  • Cadence[8]
  • Texas Instruments[9]
这里对DDR的Training内容还是聊的比较简洁,如果想聊的更加深入的话,记得点赞告诉我!

参考资料

[1]JESD79-49A规范中的第3.3节
[2]A number of Micron DDR4 Datasheets
[3]A number of Micron DDR3 Datasheets
[4]Rambus - Fly-By Topology
[5]Bit-Tech
[6]EETimes
[7]JEDEC DDR4 Mini Workshop
[8]Cadence
[9]Texas Instruments

作者:TrustZone
文章来源:TrustZone

推荐阅读

更多物联网安全,PSA等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA技术交流群,请备注研究方向。
推荐阅读
关注数
4569
内容数
186
Arm发布的PSA旨在为物联网安全提供一套全面的安全指导方针,使从芯片制造商到设备开发商等价值链中的每位成员都能成功实现安全运行。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息