pub手册4.4.5, 数据眼训练(Data Eye Training),它是 DDR 内存中的一种自动校准过程,旨在优化时序,特别是在数据传输速率较高时(例如 2133Mbps 及以上),由于信号传输过程中的延迟和偏差,可能导致数据的传输质量下降。这里主要介绍了如何通过 延迟线 和 眼图中心化 来校正和优化 DDR4 的数据传输。
1. 背景和挑战
随着数据传输速率的提高,DDR4 接口的时序裕度变得更加困难。特别是在更高的比特率(如 2133Mbps 或更高)下,信号的延迟和时序偏差可能更难以控制。造成延迟和偏差的因素包括:
- PHY 到 IO 路由的偏差:信号从PHY到IO的传输过程中,可能存在不均匀的延迟。
- 封装(Package)和 PCB 布局偏差:内存封装和 PCB 布局也可能引入延迟差异。
为了补偿这些问题,DDR4 mPHY 解决方案中使用了 延迟线(Delay Line) 来补偿由于各种因素(如路由偏差、封装偏差等)引起的每个数据位的时序偏差。
2. 数据眼训练的目的和过程
数据眼训练的主要目的是对 数据位 和 数据时钟(DQS) 之间的偏差进行校准,使其对齐并满足时序要求。数据眼训练包括两个主要步骤:
- 位偏移(Bit Deskew):这个过程会通过 位延迟线(BDL) 对各个数据位进行调整,确保时序最迟的位(即延迟最长的位)与其他数据位同步。通过这种调整,使得所有的数据位的时序都被对齐。
- 眼图居中(Eye Centering):调整完成位偏移后,接下来的步骤是将数据时钟(DQS)调整到“数据眼”中心的位置。数据眼是指在一个周期内,数据传输可以稳定进行的时域范围。眼图中心化的目的是确保 DQS 信号位于每个字节的数据位的中间位置,确保数据的采样是准确的。
3. 数据眼训练的执行步骤
数据眼训练通过一系列的 读 和 写 访问操作来执行,具体包括:
- 写偏移(Write Deskewing):对写操作中的数据进行时序偏差的校正。
- 读偏移(Read Deskewing):对读操作中的数据进行时序偏差的校正。
训练过程中会使用 32-beat 数据传输,并多次重复。在每个 32-beat 的传输中,只对第 4-11 和第 20-27 的数据进行比较。通过这种方式,系统会确定哪些数据位的时序需要调整,并利用 位延迟线(BDL) 来补偿延迟。
4. 数据眼训练的算法流程
在数据眼训练过程中,首先会执行 读偏移校正,然后是 写偏移校正,接下来是 读眼图中心化,最后是 写眼图中心化。这些步骤会依次进行,但也可以根据需要调整顺序,尤其是在多通道的情况下:
- 如果启用了每通道的眼图中心化(per-rank centering),那么会对每个通道分别进行眼图中心化。
- 如果禁用了每通道眼图中心化,眼图中心化只会在一个通道上执行。
5. 眼图训练的注意事项
- 眼图训练中的位校准和中心化:如果 DQS 与数据位之间的偏差非常大,DQS 很难保持在校准位置(即 1/4 tCK)。这会导致后续的写入/读取操作失败,进而导致数据错误。因此,位校准(Deskew) 和 眼图中心化(Centering) 必须一起执行,以确保数据的稳定传输。
- 训练步骤的执行顺序:如果启用了每通道眼图中心化,建议不要在中心化之后重新执行偏移校正算法,因为这可能会导致不一致的结果。
6. 训练过程中的地址配置
数据眼训练使用 可编程地址 进行内存访问,要求必须满足以下条件:
- 每次训练只能访问 单一通道(Rank),而这个通道是在 DTCR.DTRANK 寄存器中指定的。
- 数据眼训练使用 DTAR0-3 寄存器来定义四个内存地址(分别对应不同的银行、行和列),这些地址用于执行 BL8(Burst Length 8) 或 两个连续的 BL4 写读操作。训练过程中需要访问 32 个内存单元。
7. 总结
- 数据眼训练 主要目的是通过 位校准 和 眼图中心化 来确保数据时序准确,解决高比特率下信号传输的偏差问题。
- 训练过程包括多个步骤,首先校正数据的位偏差(Deskew),然后调整数据时钟的位置(Centering)。
- 地址配置非常关键,数据眼训练只能在特定的内存通道上进行,并需要确保使用的地址满足内存访问的要求。
本文链接: https://talent-tudou.github.io/2024/11/25/DDR/Data Training-Data Eye Trainging/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!