聊一聊DDR(12)-DRAM的CS Training Mode(CSTM)

文摘   2024-12-11 08:02   美国  

引言 — 聊一聊DDR系列的第十二篇,来自于行业内小伙伴DRAMer的投稿。


今天咱们来聊一聊DRAM神秘的training过程。本文针对有一定行业背景基础的同学。

咱们都知道,不同Memory controller有不同的training sequencetraining item

本文这里主要以Intel平台为例,详细展开聊一聊DDR5繁多training item中的early CS training.

首先咱们需要知道CS是什么,我们通常称之为片选command信号,DDR5中的具体定义如下:



在知道CS信号的定义后,这里再解释一下normal CS operationMultiple cycle CS operation。在做CS training时,主要关注的是后者。


两者主要区别是Multiple cycle CShost始终保持CS信号在多个CLK上升沿的时期下处于low的状态,而Normal CS operationsingle CLK上升沿下处于Low的状态。


上面这个时序图刚好把跑通了整个CS training的过程和结果。

前面的Mutiple cycle CS是为了将CS信号进行training,一方面是VrefCSsetting,另外一方面是Align CLK and CS

CSt raining到一个最佳的结果之后,后续DRAMoperation可以按照normal CS去工作。


前面也说到CS training的目的是为了得到一个最佳的CS voltage Timing.通常的VrefCS voltagetraining range60%-70%Timing range0-255.(一个tCK分成256份)。


整个VrefCS training的过程比较简单,无非就是先初始化一个default VrefCs voltage,然后在一个tCK内一个或者几个PIsweep,找到该VrefCS voltage下的最大眼宽。

继而再次调整VrefCS,再次timing sweep,找到眼高。

直到最后Eye size太小或者没有eye的时候退出CS training

这个时候VrefCS的眼高和眼宽都找到了,综合所有颗粒选择最合适的VrefCS value后,继而更新到相应的MR寄存器。


这里的难一点的地方是CS training mode output feedback的过程理解。我们知道VrefCS timing sweep的结果都是以DQ输出的结果判断。在连续的4CLK的上升沿去对CS信号进行采样。

从上面的图,我们可以看出,当CS信号在CLK的第0次和第2次采样是0,第1次和第3次采样是1的时候,此时DRAM将会驱动所有的DQ逻辑电平为0输出。

所以这个时候我们只要观察DQ输出是data"*”, 还是Data"0"就能知道CS信号在该颗粒上的眼宽和眼高。

这样一来,我们也可以从DRAM training log中去寻找CS training的蛛丝马迹。

这里想用一个Intel平台CS training log中的片段来举例说明。

下图可以看出来VrefCS setting29offset时,PIstep=4时的眼宽Training 结果, 

    

这张图其实是对上张图training过程的总结,可以看到每一个Byteleft,right的情况,以及widthcenter


这张图是对所有VrefCs Setting结果的眼宽记录,相当于一个总的summary,这个时候Host就会综合选择一个最合适的VrefCs。




为感谢支持,已点赞/分享/赞赏10篇/次以上的朋友,请加微信,进入微信群。我将发放免费加入知识星球的链接。

IT奶爸-知识星球



高阅读量文章

IT奶爸
实践是检验“专家”的唯一标准。一群认真执着的IT奶爸的学习和分享。
 最新文章