DDR3的理

来源:互联网 发布:参加淘宝培训班有用吗 编辑:程序博客网 时间:2024/04/29 21:23

最近在弄DDR3,就把所学记录下来,不对之处请还请批评指正!

拓扑结构

从DDR3的拓扑结构说起,DDR3采用的不再是DDR2的“T”型拓扑,而是“Fly-by”拓扑结构,如下图:


通过故意造成每个DRAM之间数据和选通信号传输时间(flight-time)偏移,降低了同步切换噪声(SSN)。

Write Leveling

引入Fly-by拓扑结构降低了SSN,但同时也导致了CLK和DQS信号到达每个DRAM的时间不一样,使得CPU很难以保持tDQSS、tDSS和tDSH这些时序,为此DDR3采用了Write Leveling机制来改善这一问题,在上电时,需要执行Write Leveling自检。

Write Leveling,写入均衡。Write Leveling的功能是调整DRAM颗粒端DQS信号和CLK信号边沿对齐;调节过程描述:CPU不停地调整DQS信号相对于CLK的延迟,DRAM芯片在每个DQS上升沿采样CLK管脚上的时钟信号,如果采样值一直低,则会将所有的DQ[n]保持为低电平来告知CPU,tDQSS相位关系还未满足,如果发现在某个DQS上升沿,采样到此时的CLK电平发现了迁越(由之前的低跳变为高),则认为此时DQS和CLK已经满足tDQSS,同时通过DQ[n]向CPU发送一个高,表征一个写均衡成功,同时CPU会锁住这个相位差。这样,在每个DRAM端,看到的CLK和DQS信号都是边沿对齐的。

CPU在从DRAM读数据时,道理是一样的,DRAM端DQS和CLK是同步输出的,DQS同样会通过CPU内部的延迟机构,和CLK对齐。

时序关系

上面提到了,写均衡是为了满足“tDQSS”,这是一个在写时序里面特有的,表征的是DQS和CLK信号的沿关系,在JEDEC的DDR3标准“JESD79-3F”的83页中对tDQSS有明确的要求:±0.25tCK

在读写操作中,也有一个DQS和CLK信号的关系,叫做:tDQSCK,在标准中也是有的,我认为,这个时间和写操作中的tDQSS其实是一样的意思,只是叫法不一样罢了,但是,tDQSCK往往比tDQSS更为严格。

注意:命令和地址只在时钟的上升沿有效,数据则是在DQS信号的上升和下降沿都有效,DQS和时钟是边沿对齐的(当然,在±0.25tCK内都是可以的),所以也是时钟的上升和下降沿都有效。

下图是一个对DDR3拓扑结构中CK和DQ信号组的简单呈现



从上图可以看到:CK信号走的是“Fly-by”拓扑,地址和命令也是,而DQ信号组走的是“Point to Point”。

为了很好的满足tDQSS关系,应该满足如下关系:

(CKi – CK) – DQSi > 0        (0 =< i < number of components – 1)

我认为:CPU内部的内存控制器只能对DQS信号做延迟,不能做超前处理,所以CK要大于DQS信号线的长度,否则将不能满足tDQSS

此处,我还有一个想法,对每个DRAM芯片,应该有:

(CKi – CK) – DQSi <1 * Tck

因为如果这个时间差大于一个周期,在写调整时,内存端将分不清是以哪个脉冲为基准的。也可以这样理解,如果大于一周期,超过一周期的延迟其实是没有意义的,这相当于是在重复一周期内的延迟,因为相位超过一周期就没有意义了。如果布线时,所有DQ信号组都差不多一样长,那就要着重考虑最远端那颗DRAM了。

有的资料还给出要求满足下面这个等式:

(CKi – CK + DQSi)max – (CKi – CK + DQSi)min < 1 *Tck

其实,这个等式可以近似为:

CKi – CK0< 1 * Tck

这里我有疑问,我认为这个CKiCK0应该小于0.5 * Tck才对,因为时钟的上升和下降沿都会有数据,大于半个周期,新的数据就会出现在数据线上了,这会不会覆盖原来的信号呢?

在写入时,DQS边沿和DQ[n]中部对齐;在读取时,由于CPU内部对DQS有90°相移,所以,DRAM端DQS中部和DQ[n]中部对齐。

布线规则

CK/CK#,DQSi/DQSi#走差分线,并且positive和negative要严格等长,一般±10mils(理论上DDR3自我修正的能力是20ps)。离其他信号满足3W原则。

地址和控制信号与CLK信号等长。

(后面待续)

0 0
原创粉丝点击