DDR布线在PCB设计中占有举足轻重的地位,设计成功的关键就是要保证系统有充足的时序裕量。要保证系统的时序,线长匹配又是一个重要的环节。我们来回顾一下,DDR布线,线长匹配的基本原则是:地址,控制/命令信号与时钟做等长。数据信号与DQS做等长。为啥要做等长?大家会说是要让同组信号同时到达接收端,好让接收芯片能够同时处理这些信号。那么,时钟信号和地址同时到达接收端,波形的对应关系是什么样的呢?我们通过仿真来看一下具体波形。
建立如下通道,分别模拟DDR3的地址信号与时钟信号。
图1 地址/时钟仿真示意图
为方便计算,我们假设DDR的时钟频率为500MHz,这样对应的地址信号的速率就应该是500Mbps,这里大家应该明白,虽然DDR是双倍速率,但对于地址/控制信号来说,依然是单倍速率的。下面来看看波形,在地址与时钟完全等长的情况下,地址与数据端的接收波形如下图2,红色代表地址信号,绿色代表时钟信号。
图2 时钟信号与地址信号波形
上面的波形我们似乎看不出时钟与地址之间的时序关系是什么样的,我们把它放在一个眼图中,时序关系就很明确了。这里粗略的计算下建立时间与保持时间。如下图
图3 时钟信号与地址信号波形
由上图3.我们可以知道,该地址信号的建立时间大约为891ps,保持时间为881ps。这是在时钟与地址信号完全等长情况下的波形。如果地址与时钟不等长,信号又是什么样的呢?仿真中,我们让地址线比时钟线慢200ps,得到的与眼图如下:
图4 时钟信号与地址信号波形
由上图可知,在地址信号比时钟信号长的情况下,保持时间为684ps,建立越为1.1ns。可见,相对于地址线与时钟线等长来说,地址线比时钟线长会使地址信号的建立时间更短。同理,如果时钟线比地址线长,则建立时间会变长,而保持时间会变短。那么双倍速率的数据信号又是怎样的?下面通过具体的仿真实例来看一下。
图5 DQ 与 DQS仿真示意
仿真通道如上图所示,驱动端和接收端为某芯片公司的IBIS模型,仿真波形如下:
图6 DQ与DQS仿真波形
我们将DQS和DQ信号同时生成眼图,在一个窗口下观测,结果如下:
图7 DQ与DQS眼图
如上图所示,大家可能发现了,如果按照原始对应关系,数据信号的边沿和时钟信号的边沿是对齐的,如果是这样,时钟信号怎样完成对数据信号的采样呢?实际上并不是这样的。以上仿真只是简单的将两波形放在了一起,因为DQ和DQS的传输通道长度是一样的,所以他们的边沿是对齐的。实际工作的时候,主控芯片会有一个调节机制。一般数据信号会比DQS提前四分之一周期被释放出来,实际上,在颗粒端接收到的波形对应关系应该是这样的:
图8 平移后的眼图
通过主控芯片的调节之后,DQS的边沿就和DQ信号位的中心对齐了,这样就能保证数据在传输到接收端有足够的建立时间与保持时间。和上面分析时钟与地址信号一样,如果DQ与DQS之间等长做的不好,DQS的时钟边沿就不会保持在DQ的中间位置,这样建立时间或者保持时间的裕量就会变小。
先简单的来看一张图
图9 延时偏差对时序的影响
上图中,T_vb与T_va表示的是主控芯片在输出数据时时钟与数据之间的时序参数。在理想情况下,时钟边沿和数据电平的中心是对齐的,由于时钟和数据传输通道不等长,使得时钟边沿没有和数据脉冲的中间位置对其,使得建立时间的裕量变小。在理解了这些基础问题之后,我们需要做的就是将这些时间参数转化为线长。
下面我们通过具体实例来看看时序的计算,下图是Freescale MPC8572 DDR主控芯片手册,这张图片定义了从芯片出来的时候,DQS与DQ之间的相位关系。
图10 MPC8572时序图
图11 MPC8572时序参数
颗粒端为美光DDR,该芯片的时序图以及时序参数如下图所示,这张图片则定义了颗粒端芯片识别信号所需要的建立时间与保持时间。
图12 DDR颗粒时序图以及时序参数
我们用T_pcbskew来表示DQ与DQS之间的延时偏差,如果想要得到足够的时序裕量,则延时偏差要满足以下关系:
T_pcbskew《T_vb-T_setup
T_pcbskew》T_hold-T_va
代入数据,有:
T_vb-T_setup=375-215=160ps
T_hold-T_va=-160ps
这样,如果传输线的速度按照6mil/ps来计算,T_pcbskew为+/-960mil。大家会发现裕量很大,当然这只是最理想情况,没有考虑时钟抖动以及数据信号的抖动,以及串扰、码间干扰带来的影响,如果把这些因素都考虑进来,留给我们布线偏差的裕量就比较小了。
综上所述,时序控制的目的就是要保证数据在接收端有充足的建立时间与保持时间,明白了这一点,我们在线长匹配这个问题上就能做到胸有成竹,游刃有余了。