1. <object id="q5s5r"></object>

    2. <code id="q5s5r"><small id="q5s5r"></small></code>
      <code id="q5s5r"></code>

      <nav id="q5s5r"><video id="q5s5r"></video></nav>
      <big id="q5s5r"></big>

      DDR时序学习笔记(二)

      来源:一博自媒体 时间:2015-11-16 类别:微信自媒体

      作者:袁波    一博科技高速先生团队成员     DDR设计序列文章

      上篇文章《DDR时序学习笔记(一)》说道,时序就是为了维持数据信号与其参考时钟信号之间的相对位置,保证在时钟上升沿或者下降沿附近的数据能够维持稳定,这样数据就能被有效的读取。怎么让这些时序关系在系统运行中有效的实现呢?PCB设计中,是通过定义时序参数来实现的,下面就来看看这些时序参数的具体含义。


      这里作者按照自己的理解把时序参数分成了三类,一类是用来描述驱动端的,一类是用来描述接收端的,还有一类是用来描述传输通道的。对于驱动端,描述它的时序参数是Tco,Tco是指时钟触发开始到有效数据输出的器件内部所有延时的总和。这个参数描述了最开始信号从芯片出来的时候,时钟与数据之间的一个位置关系。对于源同步时序,不是直接用Tco来定义的,而是使用Tvb和Tva,如下图1




      图1


      图1中,Tvb指的是在驱动端,时钟上升沿之前(before)数据的有效时间;Tva指的是时钟上升沿之后,数据的有效时间。这些参数在驱动芯片手册上可以查到。

      对于接收端,主要是建立时间和保持时间,这两个时序参数是时序分析中提到最多的两个参数,如下图2所示:

       



      图2


      看图2,有没有觉得和图1很相似呢,它们都是以时钟信号为参考。对于接收端来说,数据在时钟信号上升沿之前的有效时间称为建立时间,在时钟上升沿之后的叫保持时间。和驱动端对比,它们的叫法不一样罢了,定义方式都是相似的。时序分析的最终目的就是要保证数据被接收端有效的读取,所以我们在评估一个系统的时序是否满足要求,是通过评估建立时间和保持时间的裕量来实现的。


      对于传输通道来说,是通过飞行时间来描述的。飞行时间包括最大飞行时间和最小飞行时间。最大最小飞行时间和传输线的长度有关,也和负载的轻重有关,负载较重会导致上升时间变缓,定义方式如下图3




      在理解这些时序参数的含义之后,就可以进行时序裕量的计算了。这里以数据信号为例进行说明,我们知道,DDR总线中,数据信号是参考DQS的,在写方向:

      Data信号从驱动到接收总的延时为:Tdata=Tco_data+Tflt_data (1)

      DQS信号从驱动到接收总的延时为:Tstrobe=Tco_strobe+Tflt_strobe+Tdelay (2)

      式中:Tco和Tflt分别代表数据、选通信号在器件的内部延迟和信号传输的飞行时间;Tdelay是指数据信号和选通信号之间的延迟,由系统内延时器件决定。建立时序裕量的公式为:Tsetup_margin=Tstrobe-Tdata-Tsetup(3)

      把式(1)和式(2)带入得式(3)得: 

      Tsetup_margin=Tco_strobe+Tflt_strobe+Tdelay- (Tco_data+Tflt_data)-Tsetup(4)

      式中:Tsetup表示接收数据端数据的建立时间,从器件手册上获取;将数据和Strobe信号在器件内的延时差异定义为Tvb,其值从器件手册上获取;

      Tvb=Tco_strobe+Tdelay-Tco_data (5)将PCB走线引起的延时差异,定义为Tpcb_skew:Tpcb_skew= Tflt_data- Tflt_strobe(6)将式(5)和式(6)带入式(4),这样可以得到一个简单的建立时间裕量方程: 

      Tsetup_margin=Tvb-Tsetup- (Tflt_data(max)-Tflt_strobe(min))(7)

      使用同样的方法分析,保持时间裕量: 

      Thold_margin=(Tco_strobe+Tflt_strobe+Tdelay)-(Tco_data+Tflt_data)-Thold(9)

      同样定义: 

      Tva=Tco_strobe+Tdelay-Tco_data(10)

      Tpcb_skew=Tflt_data-Tflt_strobe(11)

      Thold_margin=Tva-Thold+(Tflt_data(min)-Tflt_strobe(max))(12)

      综上所述,我们可以看出,对于DDR的时序来说,影响时序裕量的关键因素是驱动芯片的Tva与Tvb,以及接收端的建立时间与保持时间。我们布线可以控制的只是数据与选通时钟之间的长度差值。数据线与数据选通线长度的差值有正负之分,从(7)和(9)式可以看出,建立时间很保持时间与Tpcb_skew之间的关系,在增大建立时间的时候必然会牺牲保持时间。所以在布线的时候,数据与数据选通即DQ与同组的DQS之间应该保持严格的等长,这样可以减少Tpcb_skew,增大建立时间裕量。


      时序问题是很复杂的,文中分析的情况没有考虑Jitter与串扰。我们也很少会手动计算一个系统的时序关系,一般会借助软件分析。本文只是学习时序仿真的一个入门,感兴趣的网友,让我们一起查阅更多的资料,进行更加深入的学习吧!

       

      DDR时序学习笔记(二)   
      DDR线长匹配与时序(上)   
      DDR线长匹配与时序(下)   
      上一篇:论层叠设计的重要性下一篇:DDR时序学习笔记(一)

      文章标签

      案例分享 Cadence等长差分层叠设计串扰 串行 DDR | DDR3DFM 电阻电源Fly ByEMC反射高速板材 HDIIPC-D-356APCB设计误区PCB设计技巧 SERDES与CDR S参数 时序射频 拓扑和端接 微带线 信号传输 Allegro 17.2 小工具 阻抗


      线路板生产

      热门文章

      典型案例


      北京赛车软件手机版