本帖最后由 edadoc 于 2017-4-13 18:36 编辑
8 @2 r7 t! Z) N3 N, j( p( \& S7 @4 m' E7 l- _
作者:一博科技# M& a2 {0 A# U( ~
4 b2 P( z& f% S' Y) M
上篇文章我们用仿真实例向大家展示了DDR中地址相对于时钟的建立时间与保持时间。那么数据信号相对于DQS又是什么样的关系呢?我们知道,DDR和普通的SDRAM相比起来,读取速率为普通SDRAM的两倍,这个要怎么理解?原来SDRAM在写入或者读取数据的时候是靠上升沿或者下降沿来触发的,请注意,这里仅仅是上升沿或者下降沿,并不是上升沿和下降沿同时有效。如果时钟频率是800MHz,那么对应的数据率就为800Mbps。但是DDR的数据信号却是双倍速率的,如果DQS频率为800MHz,那么数据信号的速率就应该为1600Mbps。/ N6 _# L! p: W `7 h' ~
% d, @, S7 @6 C
下面通过具体的仿真实例来看一下。
* k/ t% j# g" b4 e5 J' Q3 a$ i( o9 i1 L$ I4 j, s* P
6 ] O3 L: W8 m: F" M4 f图1 DQ 与 DQS仿真示意 0 X* t9 _/ P3 k
/ n: ^/ N4 N* h- `# z M仿真通道如上图所示,驱动端和接收端为某芯片公司的IBIS模型,仿真波形如下:
( [ H! q. H% P3 w' C3 v, d+ W$ X8 ~+ U& W' B# |3 o+ F7 E
图2 DQ与DQS仿真波形 + |- o; m/ W! V. K {
0 S/ f8 @7 h( W% s; j9 G
我们将DQS和DQ信号同时生成眼图,在一个窗口观测,结果如下:% V' i1 N: r+ B% D6 m
9 `2 h/ a3 F( |5 }8 [" E
图3 DQ 与 DQS眼图
/ V2 A- a4 L' M
: d1 h8 q% M+ t( m这里,作者本来是想仿真DDR在写操作的时候DQS和DQ之间的时序对应关系。在之前的文章中,我们知道,在写操作的时候,是以高低电平的中点为触发点的,上面眼图中的波形对应关系显然不能完成数据的写入,因为DQS的边沿和数据信号翻转的边沿基本是对齐的。
. j$ X7 q7 U7 `( |- p N1 U$ \; T3 b) l0 W/ E! S0 o3 B2 U0 M
在仿真的时候只是简单的将两波形放在了一起,因为DQ和DQS的传输通道长度是一样的,所以他们的边沿是对齐的。实际工作的时候,主控芯片会有一个调节机制。一般数据信号会比DQS提前四分之一周期被释放出来,实际上,在颗粒端接收到的波形对应关系应该是这样的:* C/ N9 T$ t- r3 p) g) J
: |( d9 ]7 d: Y" x& w8 n/ m: m图4 平移后的眼图
8 K2 Q" F. D4 ^9 P% Z* l7 s# {1 ]" K" c; D
通过主控芯片的调节之后,DQS的边沿就和DQ信号位的中心对齐了,这样就能保证数据在传输到接收端有足够的建立时间与保持时间,就算DQS与DQ之间的线长匹配的不是那么严格,也会有一些时序裕量。
% @+ z3 |0 D' j R( Z- x/ j/ i0 i$ P. j. C& X- H
说了这么多,其实我们要解决的根本问题还是长度匹配的范围问题。在理解了这些基础问题之后,我们需要做的就是将这些时间参数转化为延时。线长匹配范围怎么计算?下面通过具体实例来看看时序裕量是怎么计算的。先简单的来看一张图9 V# h* U2 F+ f' x/ ?9 _
. a" |# T" f' w* ?& Q
图5 延时偏差对时序的影响
- h+ m, T7 ~* t# H! R2 A7 T0 z) t+ `; ^1 R/ o; J$ j
上图中,T_vb与T_va表示的是主控芯片在输出数据时时钟与数据之间的时序参数。在理想情况下,时钟边沿和数据电平的中心是对齐的,由于时钟和数据传输通道不等长,使得时钟边沿没有和数据脉冲的中间位置对其,使得建立时间的裕量变小。 $ a7 _ q& `" b6 Z: c, E
% W! v* K3 T1 G! T! k下面我们通过具体实例来看看时序的计算,下图是Freescale MPC8572 DDR主控芯片手册,这张图片定义了从芯片出来的时候,DQS与DQ之间的相位关系。
3 @: D5 K. z+ W8 ]' w: \/ @7 ^" I9 m* F3 I1 g: i) o H
图6 MPC8572时序图 - U1 ?7 x$ _" W; N
# r0 n1 v$ g; Y" H7 J0 I: [9 Z
8 X7 ~. I- \/ q0 u+ L
图7 MPC8572时序参数
, I8 ?! e# q0 f" h B4 z- c3 p; g. ]8 U& A0 }. y8 R
颗粒端为美光DDR,该芯片的时序图以及时序参数如下图所示,这张图片则定义了颗粒端芯片识别信号所需要的建立时间与保持时间。1 _, B) J. u" N9 z% S- T! M
0 l- E* K& \* ?' E
1 W @. z" G, c4 g2 O& L/ t图8 DDR颗粒时序图以及时序参数
* q! Y9 t$ p5 _2 O: w
* i8 B8 F2 P) S" m1 [: Q我们用T_pcbskew来表示DQ与DQS之间的延时偏差,如果想要得到足够的时序裕量,则延时偏差要满足以下关系:
$ `3 J7 N+ K" Y/ V
% U) E/ |' G* D- cT_pcbskew<T_vb-T_setup
% a: P |) `3 M# ET_pcbskew>T_hold-T_va
6 T- I- @* h% T3 c" b
1 t/ E- M! [0 t' M代入数据,有:" j' b3 d8 @9 K5 I4 C& Q
T_vb-T_setup=375-215=160ps 2 V, V$ |$ Z/ p# b1 O- E
T_hold-T_va=-160ps
& ]; ^6 w5 n2 G6 t d' p) G9 @: M! {$ z+ \, h) ^$ m
这样,如果传输线的速度按照6mil/ps来计算,T_pcbskew为+/-960mil。大家会发现裕量很大,当然这只是最理想情况,没有考虑时钟抖动以及数据信号的抖动,以及串扰、码间干扰带来的影响,如果把这些因素都考虑进来,留给我们布线偏差的裕量就比较小了。
; ~, @7 U+ I6 `: a2 z |