ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DDR4 SDRAM - 2. 初始化、训练和校准

2022-07-05 20:35:00  阅读:258  来源: 互联网

标签:SDRAM 校准 写入 控制器 DDR4 寄存器 DRAM DQ


如前所诉,本文为翻译学习大佬博客。强烈推荐直接去看大佬原博:DDR4 SDRAM - Initialization, Training and Calibration

引言

当带有DRAM子系统的设备上电后,在 DRAM 进入运行状态之前会发生许多事情。 以下来自JEDEC规范的状态机显示了DRAM从上电后的各种状态切换。

image

                                                                             Figure 1: DDR4状态机

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

• 上电和初始化
• ZQ校准
• Vref DQ 校准
• 读/写训练(又名记忆训练或初始校准)

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

image

                                                                             Figure 2: 系统示例

初始化

image

                                                                             Figure 3: 初始化阶段

上电和初始化是一个固定的、定义良好的步骤序列。。通常情况下,当系统上电后,ASIC/FPGA/处理器中的控制器被移出复位,它就会自动执行上电和初始化序列。这是控制器功能的超级简化版本。有关详细信息,请参阅 JESD79-49A规范 中的第 3.3 节。

• 1.为 DRAM 通电
• 2.取消置位 RESET 并激活 ClockEnable CKE
• 3.启用时钟 CK_t/CK_c
• 4.发出 MRS 命令并加载模式寄存器 [模式寄存器按特定顺序加载]
• 5.执行 ZQ 校准 [ZQCL]
• 6.将DRAM带入IDLE状态

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

→ 请查看关于DDR4计时参数的文章,以了解更多关于CL、CWL等的信息...

ZQ校准

image

                                                                             Figure 4: ZQCL

ZQ 校准与数据引脚 [DQ] 有关。要了解 ZQ 校准的作用以及为什么需要它,我们需要首先查看每个 DQ 引脚后面的电路。请记住,DQ 引脚是双向的。它负责在读取期间发回数据并在写入期间接收数据。

image

                                                                             Figure 5: DQ 校准块

现在,如果您在 DRAM 内部查看,每个 DQ 引脚后面的电路都由一组并联的 240Ω 电阻支路组成,如图 4 所示。由于 CMOS 器件的性质,这些电阻从来都不是精确的240Ω。这些电阻从来都不是精确的240Ω。

为了将这些电阻精确地调整到 240Ω,每个 DRAM 都有
• 一个称为 DQ 校准控制块的特殊模块和
• 一个 ZQ 引脚,连接了一个外部精度 (+/- 1%) 240Ω 电阻。

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

DQ 电路中的 240Ω 电阻器支路是一种称为“多晶硅电阻器”的电阻器,通常略大于 240Ω(多晶硅电阻是一种与 CMOS 技术兼容的电阻)。有一些p沟道器件与该多晶电阻并联,这样它就可以精确地调到240Ω。

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

image

                                                                             Figure 6: DQ 驱动器/接收器电路 [来源:Micron datasheet]

现在,连接到 DQ 校准控制块的电路本质上是一个电阻分压电路,其中一个电阻是多晶硅,另一个是精度 240Ω。当在初始化期间发出 ZQCL 命令时,该 DQ 校准控制块被启用,并且 DQ 校准控制块内的内部比较器使用 VOH[0:4] 调谐 p 沟道器件,直到电压恰好为 VDDq/2(经典电阻分压)。此时校准已完成,VOH 值已传输到所有 DQ 引脚。

image

                                                                             Figure 7: DQ 校准块 [来源:Micron datasheet]

接下来,你可能会想,为什么DQ引脚首先要有这个240Ω电阻的并联网络!

拥有一组并联的 240Ω 电阻器可以让您调整驱动强度(用于 READ)和终端电阻(用于 WRITE)。每个PCB布局都是不同的,所以需要这种调整能力来改善信号的完整性,最大限度地提高信号的视距,并允许DRAM高速运行。

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

Vref DQ 校准

image

                                                                             Figure 7: Vref DQ 校准

在 DDR4 中,数据线 [DQ] 的端接样式从 CTT(中心抽头端接,也称为 SSTL 系列螺柱端接逻辑)更改为 POD(伪开漏)。这样做是为了提高高速信号完整性并节省 IO 功率。这不是同类产品中的第一个,GDDR5(图形 DRAM)也使用 POD

image

                                                                             Figure 9: SSTL in DDR3 vs POD in DDR4 [来源:Micron datasheet]

这意味着,在 DDR3 中,Vdd/2 用作电压参考来决定 [DQ] 信号是 0 还是 1。再看一下图 8 的左侧,接收器本质上是一个分压电路。
但在DDR4中,接收器上没有分压电路。相反,它有一个内部电压基准,用来决定数据线[DQ]上的信号是0还是1。这个电压基准被称为VrefDQ。VrefDQ可以使用模式寄存器MR6来设置,在VrefDQ校准阶段,它需要由内存控制器正确设置。

Read/Write 训练

至此,初始化过程完成,DRAM 处于空闲状态,但内存仍然无法运行。控制器和 PHY 必须执行一些更重要的步骤,然后才能可靠地将数据写入 DRAM 或从 DRAM 中读取。这个重要的阶段被称为读写训练(或内存训练或初始校准),控制器(或PHY)在此过程中。

• 1.运行算法以对齐DRAM的时钟[CK]和数据选通[DQS]。
• 2.运行算法并计算出正确的 DRAM 读写延迟。
• 3.读取数据眼的中心。
• 4.如果信号完整性不好并且无法可靠地写入或读取数据,则报告错误。

本节是关于状态机中的以下圆圈

image

                                                                             Figure 10: read/wirte 训练状态

为什么需要read/write训练?

让我们仔细看看我们的示例系统。下图显示了数据信号和地址/命令信号如何在 ASIC/处理器和 DIMM 上的 DRAM 之间连接。
• Data 和 DataStrobe [DQ & DQS] 以星形拓扑连接到每个存储器,因为每个存储器连接到 72 条数据线的不同部分.
• DIMM 上的时钟、命令和地址线 [A、CK、CKE、WE、CSn] 使用称为 fly-by 路由拓扑的技术连接。这样做是因为 DIMM 上的所有 DRAM 共享相同的地址线,并且需要 fly-by 路由以实现更好的信号完整性和高速。

image

                                                                             Figure 11: 详细示例系统

因此,从ASIC/处理器的角度来看,DIMM上的每个DRAM内存都位于不同的距离。或者从DIMM的角度来看,DIMM上每个DRAM的时钟和数据之间的偏移是不同的。

DRAM是一个相当愚蠢的设备。假设你打算进行WRITE操作,在初始化过程中,你要通过编程它的一个模式寄存器来告诉DRAM的CAS写入延迟是什么(CWL是DRAM输入端列地址和数据之间的时间延迟),并且你必须在任何时候都遵守这个时间参数。内存控制器需要考虑电路板走线延迟和fly-by路由延迟,并以正确的偏差启动地址和数据,以便地址和数据以它们之间的 CWL 延迟到达内存。

例如,如果你将CAS写延迟编程为9,一旦ASIC/uP启动列地址,它将需要在不同的时间启动不同的数据位,以便它们都在CWL为9时到达DRAM。

对于READ,也需要做与上述类似的事情。由于DIMM上的每个DRAM位于不同的距离,当发出READ时,DIMM上的每个DRAM将在不同的时间看到READ命令,随后每个DRAM的数据将在不同的时间到达ASIC/处理器。在初始校准期间,ASIC/Processor 找出每个DRAM的延迟,并相应地训练其内部电路,以便它在正确的时刻锁住来自不同DRAM的数据。

对于read/write训练,Controller/PHY IP 通常提供多种算法。最常见的是:

• 1. Write Leveling 写调平
• 2. MPR Pattern Write MPR 模式写入
• 3. Read Centering 读居中
• 4. Write Centering 写居中

上述所有的算法都是由内存控制器执行的,通常只需要你通过一个寄存器来启用/禁用单个算法,并在报告失败时采取措施。以下部分更详细地介绍了启用这些算法时控制器会做什么。

Write Leveling 写调平

写入 DRAM 时,不能违反的重要时序参数是 tDQSS。 tDQSS 是 DataStrobe (DQS) 相对于时钟 (CK) 的位置。 tDQSS 必须在规范中定义的 tDQSS(MIN) 和 tDQSS(MAX) 范围内。如果违反 tDQSS 并超出范围,则可能会将错误的数据写入内存.

由于 DIMM 上的每个 DRAM 的时钟到Data/DataStrobe 偏差都不同,因此内存控制器需要训练自己,以便它可以补偿这种偏差并在 DIMM 上的每个 DRAM 的输入处保持 tDQSS。

当你在控制器中启用 write-leveling 时,它会执行以下步骤:

• 1. 对MR1进行模式寄存器写入,将第7位设置为1,这将使DRAM进入write-leveling模式。在write-leveling模式下,当 DRAM 看到 DataStrobe (DQS) 时,它会使用它对时钟 (CK) 进行采样,并通过 DQ 总线将采样值返回给控制器。

• 2. 然后控制器发送一系列 DQS 脉冲。由于 DRAM 处于write-leveling模式,它使用 DQS 对 CK 的值进行采样,并通过 DQ 总线将该采样值(1 或 0)返回给控制器。

• 3. 然后控制器
              •查看 DRAM 返回的 DQ 位的值
              •要么增加或减少 DQS 延迟和
              •一段时间后启动下一组 DQS 脉冲

• 4. RAM再次采样CK,并通过DQ总线返回采样值

• 5. 重复步骤 2 到 4,直到控制器看到 0 到 1 的转换。此时,控制器锁定 DQS 延迟设置,该DRAM设备就实现了write-leveling。

• 6. 然后为整个 DIMM 的每个 DQS 重复步骤 2 到 5,以完成wite-leveing过程

• 7. 通过将 0 写入 MR1[7],DRAM 最终退出write-leveling模式

下图显示了 write-leveling 的概念。

image

                                                                             Figure 12: write-leveling

MPR 模式写入

MPR(多用途寄存器)模式写入并不完全是一种校准算法。它通常是在读取居中和写入居中之前执行的步骤。

DDR4 DRAM 包含四个 8 位可编程寄存器,称为 MPR 寄存器,用于 DQ 位训练(即读写居中)。通过设置模式寄存器 MR3[2] = 1 启用 MPR 访问模式。启用此模式后,发送到 DRAM 的 READ 和 WRITE 被转移到多用途寄存器而不是内存bank。

image

                                                                             Figure 13: MPR read/write

Read Centering 读居中

读取居中的目的是训练控制器(或 PHY)中的内部读取捕获电路来捕获数据眼中心的数据。内存控制器(或 PHY):

• 1. 启用模式寄存器MR3中的第2位,使DRAM从多用途寄存器(MPR)而不是DRAM存储器中返回数据。

• 2. 然后启动一个连续的READ流。存储器返回在前一个 MPR 模式写入步骤中写入的模式。假设这种模式是交替的 1-0-1-0-...

• 3. 在读取过程中,内部读取捕获电路要么增加或减少内部读取延迟寄存器,以找到数据眼的左右边缘。

• 4. 当检测到眼图边缘时,读取延迟寄存器会被适当设置,以确保在眼图中心捕获数据。

• 5. 对每个 DQ 数据位重复上述步骤。

Write Centering 写居中

与读居中步骤类似,写居中的目的是为每个数据位设置写延迟,使写数据居中于 DRAM 设备上相应的写选通沿上。

在写入居中期间,PHY 连续执行以下 WRITE-READ-SHIFT-COMPARE 循环:

• 1. 启动连续的 WRITE 和 READ 流

• 2.逐渐改变数据位的写入延迟

• 3.将读回的数据与写入的数据进行比较

从上面的循环中,PHY可以确定它在什么写延迟范围内读回好的数据,因此它可以算出写数据眼的左边缘和写边缘。利用这个数据,DQ被集中到DQS上进行写入。

定期校准

在诸如网络交换机或路由器这样的设备中,在其运行过程中,电压和温度可能会发生变化。为了保持信号完整性和数据访问的可靠性,一些在初始化和读/写训练中训练的参数必须重新运行。内存控制器和PHY IPs通常提供以下两个定期校准过程。

• 1. 周期性 ZQ - 也称为 ZQ 校准短路 (ZQCS)。它用于定期运行 ZQ 校准以调整前面描述的 240Ω 电阻器。

• 2. 定期读居中 - 重新计算读取延迟和其他读取相关参数

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

通常,内存控制器或 PHY 允许您设置定时器并通过其寄存器启用定期校准。设置定时器后,每次定时器到期时都会运行定期校准。

总结

在使用DRAM之前,有4个步骤需要完成:

• 1. 上电和初始化

• 2. ZQ校准

• 3. Vref DQ 校准

• 4. Read/Write训练

一旦完成,系统就正式处于空闲状态并可以运行。根据设备部署的条件,您可能需要启用定期校准。

参考

JEDEC规范

Micron DDR4 Datasheets

Micron DDR3 Datasheets

Rambus - Fly-By Topology

AIC Design - Resistors and Inductors

Bit-Tech

EETimes

JEDEC DDR4 Mini Workshop

Cadence

Texas Instruments

标签:SDRAM,校准,写入,控制器,DDR4,寄存器,DRAM,DQ
来源: https://www.cnblogs.com/xyjk1002-rejuvenation/p/16423434.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有