数据眼训练(Data Eye Training) 过程中,如何在进行数据训练的同时插入 刷新(Refresh) 操作,以及训练结果的处理。
1. 在数据眼训练中插入刷新(Refresh Insertion during Data Eye Training)
DDR 内存中,刷新操作(Refresh) 是用来保持存储单元中的数据不丢失的。当内存中的数据位长时间未被访问时,必须定期执行刷新操作。在数据眼训练过程中,为了避免影响训练的准确性,通常会暂停刷新操作,直到数据眼训练的相关步骤执行完成。然而,在一些情况下,可以插入刷新操作,以保证数据不会因为长时间没有访问而丢失。
- 数据眼训练算法支持刷新插入:这意味着在进行数据训练时,可以在写入和读取操作的某些点之间插入刷新操作。特别是当数据训练算法中的写入或读取操作序列重复时,刷新操作可以插入这些重复序列之间,或者在读取数据结果的评估过程中插入。
- 相关寄存器:
- PGCR2.tREFPRD:这个寄存器定义了刷新周期(即多长时间插入一次刷新)。
- DTCR.RFSHDT:这个寄存器定义了在刷新周期内插入的刷新次数。
通过这些寄存器配置,系统可以在数据训练过程中合理地插入刷新操作,而不会干扰训练的过程。
2. 数据训练结果(Data Training Results)
在数据眼训练的过程中,系统会为每个字节通道(byte lane)维护一个状态寄存器,记录训练过程中是否发生了错误或警告。
- DXnGSR2寄存器:每个字节通道都有一个
DXnGSR2
寄存器,其中包含了当前数据眼训练的错误和警告状态标志。- ESTAT位域:这个位域包含了错误状态代码,用来标识在训练过程中失败发生的位置。每种错误状态代码都对应一个特定的子步骤,手册会描述发生错误的条件及相应的错误状态代码。
- 错误条件(Error Conditions):错误是致命的,一旦发生错误,PUB(处理单元)会立即终止数据训练。错误通常表示在数据眼训练的某个子步骤中发生了问题。
- 警告状态(Warning Status):警告状态一般表明数据眼的左右边缘无法被正确检测到,尤其是在写入位偏移(write bit de-skew)或写眼图中心化(write eye centering)过程中。这可能是由于以下原因:
- 当算法尝试定位数据眼的边缘时,可能会遇到资源的限制(例如,延迟线资源用尽),导致算法假设数据眼边缘已经被检测到,尽管实际上边缘可能并未准确对齐。这样会导致数据眼中心的位置偏移,从而影响数据时序。
- 处理警告的方法:一种常见的解决方法是对所有的 位延迟线(BDL) 进行“初始化(seeding)”,尤其是写入路径和读取路径中的 BDL。初始化的目的是为了解决由于 DQS 和 DQ 之间存在偏差时,可能导致眼图中心化不准确的问题。
3. BDL的初始化(Seeding BDLs)
BDL(Bit Delay Line)是用来调整数据位的延迟的,它在写入和读取路径中都起到至关重要的作用。初始化(seeding)BDL的目的是通过为延迟线设置初始值,减少由于信号偏移引起的问题。
- 写路径中的 BDL 初始化:列举了一些寄存器(如
DXnBDLR0.DQ0WBD
,DXnBDLR0.DQ1WBD
等),这些寄存器是用来控制写操作中的各个数据位的延迟线。 - 读路径中的 BDL 初始化:列举了类似的寄存器(如
DXnBDLR3.DQ0RBD
,DXnBDLR3.DQ1RBD
等),它们用于控制读取操作中的延迟线。
这些寄存器的初始化值应根据 DQS 和 DQ 之间的偏移量来设置。通常建议将这些延迟线初始化为一个较大的值(例如 x4
或 x8
),以便在执行数据训练之前对延迟进行适当的调整。
4. 总结
这段内容主要讨论了两个方面:
- 刷新操作的插入:在进行数据眼训练时,为了保证内存的数据不丢失,可以在不干扰训练过程的情况下插入刷新操作。通过配置相关寄存器,可以控制刷新操作的频率和插入时机。
- 训练结果的错误和警告处理:数据眼训练的过程中,如果检测到错误,训练会立即终止。警告通常是因为数据眼的边缘未能准确检测到,可能导致眼图中心位置的偏移。为了解决这个问题,可以通过初始化所有的 BDL 来对齐 DQS 和 DQ 之间的偏差,确保数据训练的准确性。
本文链接: https://talent-tudou.github.io/2024/11/25/DDR/Data Training-Data Eye Trainging (2)/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!