EDA365电子论坛网

标题: 从ARM板块拷了点东西来,自己写了点SDRAM的等长计算,对9260(转自ouravr) [打印本页]

作者: zlei    时间: 2009-2-27 10:43
标题: 从ARM板块拷了点东西来,自己写了点SDRAM的等长计算,对9260(转自ouravr)
作者:xiaoerge
. A3 j1 Q' {+ ^! r# z1 ?0 {; H; u* _2 A( G/ A+ p" j! N
SDRAM中的信号都是以时钟为参考的,等长的关系三言两语讲不清楚,说一下最复杂的数据线的等长,  & y& P2 f# z# ^* X  s
地址线和控制线因为是单向的,比数据线的等长简单,以9260外频100M为例。  
/ t' _7 S& a; ?0 Q" W
" h: C, ^( m( v) h2 S对于9260,从手册中可以看到,  
( h0 m/ n1 s' JSDRAMC19 D0-D15 in Setup before SDCK Rising Edge         0.2 ns  : ?6 `- z$ w3 x2 Z* W6 s
SDRAMC20 D0-D15 in Hold after SDCK Rising Edge                 1.1 ns  
! D5 N% g% J& ~2 iSDRAMC21 D16-D31 in Setup before SDCK Rising Edge         0 ns  
, ^1 h0 W. y# Q* H8 o; v/ j7 aSDRAMC22 D16-D31 in Hold after SDCK Rising Edge         1.2 ns  % d( j+ M. C- M$ e: ~1 u; r
3 d& p% k8 I, J7 }; M; B! ~
这里去掉了1.8V的数据。  # W! H9 k0 ], f/ o
对每个方向分别作分析,首先看9260输入/SDRAM输出,这里以MT48LC16M16A2的数据手册作为参考,  ( W' T, J6 \2 [& T
HY57V561620可能更常用,但是其数据手册没有时序图。  
4 @. z5 p- o1 Y0 M5 i% D8 dMT48LC16M16A2-75在100M下CL设为2。  6 ]1 q, G- p# H; Z2 ?% Z9 P1 w
- e. m; ]# C' P, A$ _3 t
Access time from CLK (pos.edge)        CL = 2 tAC(2)                6 ns  
8 |- v& r, y5 ^: O$ E6 EData-out hold time (load)                         tOH        3 ns  
- Z8 p/ G. o; R/ M2 c6 e9 _" T/ L6 i
实际上上面的数据也就是说相对于SDRAM的时钟上升沿,数据输出保持时间是3ns,数据建立时间是(10-6)=4ns,  7 V, B9 r7 f0 I) n6 I
100M的周期是10ns。  & V. g; i+ B) Y6 C6 c+ ~
从9260给出时钟信号上升沿到数据出现在9260的引脚上,由于走线会有一定延时,使得SDRAM的输出时序在9260  
7 P" [8 H0 d6 d7 U7 {看来,建立时间和保持时间的(4ns-Tpd(CLK)-Tpd(DATA))/(3ns+Tpd(CLK)+Tpd(DATA)),Tpd(CLK)是时钟线走线延迟,  
0 x6 l% D5 p$ E! q4 H8 u也就是从从9260给出时钟上升沿到SDRAM收到时钟上升沿的时间是,Tpd(DATA)是数据线走线延迟,  ) V/ d+ x/ x( C
数据从SDRAM发出到9260收到的延迟。  ) }; R, u' u9 ?9 s2 b! W+ Y; r
设1英寸走线的延迟时间是150ps,数据线的走线是2英寸,时钟线和数据线一样长,也是2英寸,可以计算出建立时间  
# u& p8 m' N9 [( @和上升时间的裕量,也就是从9260的引脚上看到的实际的数据的建立时间和保持时间分别减去9260要求的数据  
# |7 ?8 l' ?$ H8 Y' l! B建立时间和保持时间。前面的建立时间和保持时间分别是3.7ns和3.3ns,裕量分别有(对应D0-D15)3.5ns和2.2ns。  4 [2 G/ r$ ?/ H" c: N
为了将时钟上升沿放在数据的中心,数据线需要比时钟线长,改变时钟线和数据线的长度会影响前面的上升时间和保持时间  ! z+ \/ {6 b9 e0 r$ A6 c6 j
(4ns-Tpd(CLK)-Tpd(DATA))/(3ns+Tpd(CLK)+Tpd(DATA))。实际的长度要求可以用时序裕量除以单位长度的走线延迟  # {! O+ X! W3 I: s
得到,每英寸的走线的延迟时间在一百多ps。  - n# {% W" M5 s9 X

4 Z  Q+ @9 w$ R6 Q5 o* d对于9260输出数据,SDRAM输入数据,参数如下:  
! N0 Q2 D+ }: F6 W" |  f' FSDRAMC25 D0-D15 Out Valid before SDCK Rising Edge        4.2 ns  
, I% X1 W: j. m* G: qSDRAMC26 D0-D15 Out Valid after SDCK Rising Edge        5.9 ns  7 J3 |, e8 {& f" j
SDRAMC27 D16-D31 Out Valid before SDCK Rising Edge        3.1 ns  : Y5 V9 w( K( r2 F8 b' j. E8 s
SDRAMC28 D16-D31 Out Valid after SDCK Rising Edge        6.4 ns    Z" f1 K( O" U8 L
- ^) F0 E! o) Z7 A  M
Data-in hold time         tDH        0.8 ns  " a0 X; P/ L2 ~! U' X$ ]
Data-in setup time         tDS        1.5 ns  ' k7 r" T8 U" `* n0 e" E: p

" Y; o! j0 q* o  Q7 ]4 d: `4 u对于SDRAM,其引脚上看到的数据的建立时间和保持时间分别是(4.2ns+Tpd(CLK)-Tpd(DATA))/(5.9ns-Tpd(CLK)+Tpd(DATA))  + K" A' I! G; E9 [/ N9 W
走线长度同上,则SDRAM的建立时间和保持时序裕量分别为2.7ns/5.1ns。  
  b' B+ q0 M, y; T8 W) Z9 @" Y  ~$ _# C
9260输入数据的时序裕量比输出数据的时序裕量总体上来说要小,上面的计算只是理想情况下的计算,  6 o9 o. f" u; a% C
实际上影响数据时序裕量的因素有很大分布参数,如时钟的抖动,数据的抖动,手册中给出的参数中都是最小值,  
: k! T4 S& B4 E+ o! ^( b可以认为包括了数据的抖动(我是这样想的)。建立时间和保持时间的时序裕量都需要减去时钟的抖动值。  
4 G# t3 f2 i. k) X另外的一些分布参数包括负载电容、串扰、电源等,都会减小信号的时序裕量。  
, c( S+ E: P5 H9 G8 R, W/ V8 P
# w: S3 S" F$ g. y对于地址线和控制线,手册中有相应的参数,和9260输出数据、SDRAM输入数据的情况是一样的。  
- v* Q/ G7 p; }" \/ C9260的时序还算相对宽松的,POWER PC的处理器要求的时序裕量比9260要大,计算下来不到一个纳秒。  
8 m- t& h+ D& W( X从上面的计算上来看,就算减掉部分分布参数带来的时序裕量的减小,也还允许若干英寸的长度不匹配。  
- m* r# _, f3 X; a0 C2 F" q7 d' g& J+ T  y; Y' R" t
走线等长所需要做的就是保证上述时序裕量为正值,地址线和控制线的与时钟线的相对长度都通过时序裕量换算得到。  
$ C* K* B* p, a0 ~- R5 p; f( T' X* O
先写这么些,有错误请指出。
作者: zlfxia    时间: 2009-3-8 22:07
好好学习天天向上
作者: kukulang    时间: 2009-3-12 17:28
写的很好   赞!
作者: hallen_jumper    时间: 2009-3-16 17:08
再补上一些

高速PCB设计中的信号完整性和传输延时分析.pdf

399.97 KB, 下载次数: 296, 下载积分: 威望 -5


作者: ljb_s1    时间: 2009-3-25 21:22
初学者,不懂,先看看
作者: kljy911    时间: 2009-3-26 16:39
感谢分享
作者: quaid_wang    时间: 2009-5-19 13:19
good good study...day day up...thank you
作者: lilinyf    时间: 2009-5-29 10:49
收下,顶了
作者: longchaoe    时间: 2009-6-5 09:50
看不懂啊,怎么办?
作者: wcn312318697    时间: 2011-8-26 17:20
很好,值得参考,谢谢楼主的分享哈!
作者: blue_dh    时间: 2011-8-30 16:53
能看懂一点,差距还很大啊
6 J: [2 W5 }4 @
作者: wcn312318697    时间: 2011-9-5 20:28
疑问点:Access time from CLK (pos.edge)        CL = 2 tAC(2)                6 ns  
/ Z5 u' r' p+ c; C6 v& Q+ t# x. ?Data-out hold time (load)                         tOH        3 ns  0 9 X, L" A2 w+ d5 g- i
实际上上面的数据也就是说相对于SDRAM的时钟上升沿,数据输出保持时间是3ns,数据建立时间是(10-6)=4ns,100M的周期是10ns! k  {! o. o$ V( [
从9260给出时钟信号上升沿到数据出现在9260的引脚上,由于走线会有一定延时,使得SDRAM的输出时序在9260  看来,建立时间和保持时间的(4ns-Tpd(CLK)-Tpd(DATA))/(3ns+Tpd(CLK)+Tpd(DATA)),Tpd(CLK)是时钟线走线延迟。
6 k$ g3 V4 e9 V& \
5 w5 f* b* m, ^6 X" f1.对于SDRAM输出数据,我们不是应该去关心9260接收端的数据建立和保持时间吗?那么以上所指的‘对于SDRAM的时钟上升沿,数据输出保持时间是3ns,数据建立时间是(10-6)=4ns,100M的周期是10ns’是怎么说法??' e3 N, ?' P) ~% z

. e- C! X7 M4 U3 D  \2.对于它数据建立时间和保持时间的计算:(4ns-Tpd(CLK)-Tpd(DATA))/(3ns+Tpd(CLK)+Tpd(DATA)),怎么理解??按我看到的资料来说,数据的建立时间裕量应该是第一个数据先于第一个采样时钟到达接收端的时间减去器件要求的建立时间。保持时间的裕量是第一个采样时钟先于第二个数据到达接收端的时间减去器件要求的保持时间。; L, C" a, e/ K2 k* q) h

$ w9 U5 C* a, M! f6 X7 s0 E感觉后面的计算看的不太懂了。。。

作者: 风信子—yiyi    时间: 2011-9-7 18:17
看不懂啊,尤其有一点:如果我的走线延时大于时钟的上升沿时间,那么在读的时候,9260接收数据的时钟沿,经过一段时间到达SDRAM,SDRAM在那个时钟沿再发送数据给9260,可是当该数据到达9260的时候,9260这边的时钟已经不是原来的那个沿了,那么就读不到数据啦?可是实际上并不会这样呀
作者: lcywzg2008    时间: 2011-9-10 12:47
不懂,先看看
作者: lcywzg2008    时间: 2011-9-16 09:49
看不懂啊
作者: ugi929    时间: 2011-9-17 11:20
这个是共同步时钟吗?是否有ARM时序计算方面的资料可以分享一下?
作者: jiangchao3392    时间: 2020-4-6 00:28
学习学习




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2