芯耀辉软硬结合的智能DDRPHY训练技术( 二 )


为了解决这个问题 , 通常会根据版图设计估算出大概的路径差值 , 从而自行得到路径差值的整数部分 , 直接配置到DDRPHY的寄存器中 。 这种做法在频率比较低、量产一致性比较好的时候问题不大 。 但在大规模量产的时候 , 如果平台之间的不一致性超过一个时钟周期(LPDDR4最高频下周期为468ps)的话 , 上述直接配置整数部分的方法就没法进行工作了 , 必然会导致部分芯片无法正常工作 。
芯耀辉采用固件的训练方式 , 通过DDR写操作时特殊调节方法 , 能够帮助客户计算出路径差值整数加小数部分 , 无需客户根据版图设计估算路径差值范围 。
芯耀辉软硬结合的智能DDRPHY训练技术
文章图片
图5路径差值整数部分训练和小数部分训练
过滤训练时DQS的高阻态
读操作时 , DQS信号在前导(preamble)前是高阻态 , 同时DQS信号的前导部分也不能达到最稳定的状态 , 所以需要训练出读DQS的gate信号来过滤掉前面的高阻态和前导 , 恰好得到整个读突发(ReadBurst)操作的有效DQS , 这就是读DQSgate训练 。
芯耀辉采用特定的方法 , 在训练的时候 , 排除不稳定DQS的干扰 , 用读DQS的gate信号得到读突发数据对应的第一个DQS的上升沿位置 , 从而得到gate的位置 。
芯耀辉软硬结合的智能DDRPHY训练技术
文章图片
图6读DQSgate训练
延迟DQS提高读DQ训练的准确性
一般在DDRPHY中没有这个训练 , 因为该训练不是固态技术协会标准要求的 , 可是在实际应用中 , 这个训练却有着比较重要的意义 。
芯耀辉软硬结合的智能DDRPHY训练技术
文章图片
图7LPDDR4突发读(来源固态技术协会标准JESD209-4B)
读DQS和读DQ之间的偏差为tDQSQ , 这个值的范围是0~0.18UI(在高频下约为0~42ps) 。 读训练的时候 , 采用延迟DQS的方法 , 找到DQ的左右窗口 , 最后把DQS放在DQ窗口的中心点 。 由于DDRPHY内部的DQS-DQ延迟偏差、封装的pad延迟偏差、以及PCB走线偏差 , 虽然DRAM端输出的tDQSQ为正数(DQ的延迟比DQS大) , 但在DDRPHY内部看到的tDQSQ却可能为负数(DDRPHY内部DQS的延迟比DQ大) , 如图8上半部分所示 。
在这种情况下 , 即使DQS的延迟为0 , DQS也落在DQ的窗口内 , PHY内部会通过从0延迟开始增加DQS的延迟来搜索DQ的左右窗口 , 这样必然导致最终搜索到的DQ的窗口比实际的窗口要小 , 读训练后的DQS的采样点不在DQ的正中间 , 而在偏右的位置 , 最终读余量(margin)变小 。
芯耀辉通过特定的方法 , 能让每个DQ的窗口都在DQS右边 , 这样做读训练的时候 , 可以搜索到DQ的完整窗口 , 提高了读训练的准确性 , 提升DDR的读性能 。
芯耀辉软硬结合的智能DDRPHY训练技术
文章图片
图8ReadDQskewtraining
用固件的训练方法获取读数据眼图(Readdataeye)的优化值
芯耀辉软硬结合的智能DDRPHY训练技术】读数据眼图训练通过延迟读DQS的方法 , 把读DQS放在DQ窗口的中间 。 目前最大的问题是固态技术协会标准对读数据眼图的读序列定义的比较简单 , 比如对于DDR4 , 定义的序列是01010101的固定序列 。 因为高速信号的符号间干扰以及信号反射 , 在不同的读序列的情况下DQ窗口是有差异的 , 所以采用简单固定的序列并不能很好地覆盖实际的使用场景 , 导致训练结果在实际工作时并不是一个优化值 。