DDRx 的技术介绍-Write leveling、Fly_by 拓扑、DBI 功能与 POD 电平
原创:此文由一博科技原创,转载请注明出处。
Write leveling 功能与 Fly_by 拓扑
Write leveling 功能和 Fly_by 拓扑密不可分。Fly_by 拓扑主要应用于时钟、地址、命令和控制信号,
该拓扑可以有效的减少 stub 的数量和他们的 长度,但是却会导致时钟和 Strobe 信号在每个芯片上
的飞行时间偏移,这使得控制器(FPGA 或者 CPU)很难保持 tDQSS、tDSS 和 tDSH 这些参数满足时序
规格。因此 write leveling 应运而生,这也是为什么在 DDR3 里面使用 fly_by 结构后数据组可以不
用和时钟信号去绕等长的原因,数据信号组与组之间也不用去绕等 长,而在 DDR2 里面数据组还是需
要和时钟有较宽松的等长要求的。DDR3 控制器调用 Write leveling 功能时,需要 DDR3 SDRAM 颗粒
的反馈来调整 DQS 与 CK 之间的相位关系,具体方式如下图一所示。
图一、 Write leveling
Write leveling 是一个完全自动的过程。控制器(CPU 或 FPGA)不停的发送不同时延的 DQS 信号,
DDR3 SDRAM 颗粒在 DQS-DQS#的上升沿采样 CK 的状态,并通过 DQ 线反馈给 DDR3 控制器。控制器端
反复的调整 DQS-DQS#的延时,直到控制器端检测到 DQ 线上 0 到 1 的跳变(说明 tDQSS 参数得到了
满足),控制器就锁住此时的延时值,此时便完成了一个 Write leveling 过程;同时在 Leveling 过
程中,DQS-DQS#从控制器端输出,所以在 DDR3 SDRAM 侧必须进行端接;同理,DQ 线由 DDR3 SDRAM
颗粒侧输出,在控制器端必须进行端接;
需要注意的是,并不是所有的 DDR3 控制器都支持 write leveling 功能,所以也意味着不能使用 Fly_by
拓扑结构,通常这样的主控芯片会有类似以下的描述: