目标
- 确保在写入路径中的每个数据位都能够正确对齐,特别是在0到1的转换时,确保数据传输的可靠性和准确性。
算法步骤
1. 初始写入操作
- 算法首先执行一系列写入操作,以确保数据正确写入指定的地址,包括DTAR0(x0000)、DTAR1(x0008)和DTAR2(x0010)。这些地址是用于后续的数据对齐和错误检测的基础。
2. 执行顺序
- 写入比特去偏移必须在写入均衡(write leveling)和写入均衡调整(write leveling adjustment,若适用)之后进行。通常建议在执行读取比特去偏移(read bit deskew)或读取比特去偏移和读取眼中心化(read eye centering)之后执行写入比特去偏移。这并不是强制要求,尤其是在已知读取操作正常的情况下。
3. 检测数据眼的左边缘
- 算法首先尝试检测数据眼(data eye)的左边缘,即至少有一个写入数据位发生故障的位置。数据眼是描述数据传输中有效信号的时序窗口。DQS和DQS#信号在这一位置的最新的0到1的转换会被检测到。
4. 逐位右移检测
- 每个数据位将被逐个右移,直到检测到相应位的读取故障。比较失败的次数由寄存器“DTCR.DTRPT”定义。当达到这一失败次数时,表明该数据位的时序可能需要调整。
5. 数据掩码对齐
- 在完成每个写入数据位的去偏移之后,算法可以选择定位数据掩码(data mask)相对于数据位的位置,并随后进行掩码的去偏移。这有助于确保掩码信号与数据信号的同步。
6. 定位数据眼的右边缘
- 在去偏移掩码之后,算法还可以选择进一步定位数据眼的右边缘。当右边缘被检测到后,算法会计算数据眼的中心位置,并将DQS/DQS#信号定位在数据眼的中心。这是为了确保数据的稳定性和正确性,使得信号在其最佳时机内被读取。
总结
总的来说,这段文字描述了写入比特去偏移算法的目的和步骤,通过精确的时序调整和检测,确保数据在DDR内存中的写入操作是可靠的。通过对数据位和掩码的同步管理,算法能够优化数据传输的完整性,减少错误发生的可能性。
本文作者:
ICXNM-ZLin
本文链接: https://talent-tudou.github.io/2024/10/30/DDR/Write-Bit-De-skew-Algorithm/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
本文链接: https://talent-tudou.github.io/2024/10/30/DDR/Write-Bit-De-skew-Algorithm/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!