EDA365电子工程师网

标题: 整理:时序分析——公共时钟(内同步,外同步),源同步 [打印本页]

作者: wcn312318697    时间: 2011-10-27 09:28
标题: 整理:时序分析——公共时钟(内同步,外同步),源同步
时钟系统可以分为公共时钟和源同步时钟,公共同步又可以分为内同步和外同步,内同步典型的即为CPU与SDRAM系统的读写。2 L/ n! |0 N+ ~9 V* ~# k9 {+ j" V. J. i
5 S* L1 |! x9 q3 X  Y5 d

) P& \% d( L, G) O & i* v0 X. m6 K+ T/ m+ o) u0 o
建立时间:要求接收端的数据信号必须先于时钟信号到达。; r5 {! X% H& Z0 f& ^7 D+ @
9 p! w  A7 ~9 p* s) k
时钟信号的延时:Tdelay = Tco_clka + Tflt_clka
+ R7 U. v- H+ W( Y9 ]
/ w. f  X7 y3 r数据信号的延时:Tdata_delay = Tco_clkb + Tflt_clkb + Tco_data + Tflt_data
/ L8 _( U8 s2 j, p) s& y1 ^
1 t" t' [5 b1 w, Q# i公共时钟中第一个时钟用来将数据锁存到驱动端输出端,第二个时钟周期则将数据锁存到接收端内部。意味着第一个数据到达接收端的时间应该早于第二个时钟到达接收端的时间,才能有足够的建立时间裕量。因此:
% q' c1 N, ^5 H& s! R$ a$ b8 C4 c: Z9 c; w& F5 g* M; w4 }
Tclka_delay = Tcycle + Tco_clka + Tflt_clka- ~- h! k2 N9 u
" ]$ r  _; n  A; R7 L0 }- X6 V
Tclka_delay_min – Tdata_delay_max – Tsetup – Tmargin > 0
5 K# n! X; [( A+ m' u  }0 N1 _7 t; S  c7 B4 a' D
即:Tcycle +(Tco_clka_min – Tco_clkb_max)+(Tflt_clka_min – Tflt_clkb_max) – Tco_data_max - Tflt_data_max – Tsetup – Tmargin >0
1 N! r& v& c  Y( n
- p- X! g7 D9 ]+ K* M9 j. I若是考虑时钟的抖动,偏移等情况则需将这部分时间扣除。6 v% l; }- \9 d4 I
( P; Q& @: F1 N* f4 m- R# b( m0 c
/ k" p/ X, C0 T# g" v( u6 M; I# }
保持时间:要求有效数据信号必须在下一个数据信号到达之前锁存到接收端的触发器中,这就要求接收时钟信号clka的延时要小于接收端数据信号的延时。具体的说就是第二个时钟信号必须先于第二个数据信号到达接收端。1 ~3 O# ?1 A1 C1 u, l
; g9 G4 B+ H- n$ _1 L" v8 S
因此:Tdata_delay_min – Tdelay_max – Thold – Th_margin > 0
4 I0 D# Y* S/ B& E; X9 C( g9 a' `2 S3 q- Y. s
即: (Tco_clkb_min – Tco_clka_max)+(Tflt_clkb_min – Tflt_clka_max)+ Tco_data_min + Tflt_data_min – Thold – Th_margin > 0- |5 c5 V/ u+ A/ ^

* b0 B8 p+ X3 f3 `! U若是考虑时钟的抖动,偏移等情况则需将这部分时间扣除。
$ y2 ^: \% o8 C( u) I- w
$ _5 [. O) I  l# Z+ Z从2个公式可看出,对于人为可控的调整项只有三个:Tflt_clka,Tflt_clkb,Tflt_data.这样就可以通过调整PCB走线来使这三项满足时序的要求。
/ m, k5 h. K* t) ~0 f0 ^& X) y
1 {4 Y% E7 }% i7 S9 x2.内同步时钟:' n% t7 N$ ?, ?' J3 l
' D1 F1 D' L+ P( L8 o% e/ s: ]
    指一种时钟或者选通信号和数据信号同时从驱动芯片产生并同步传输到接收端。它不同于公共时钟同步那样采用独立的时钟源。7 ?- \0 Z# V" F# B1 J& d9 A

% X& |) @, a* }
( J7 r  u8 T# O) V, E/ H从上图可以轻易的看出内同步时钟的工作原理,时钟信号clk的输出采用缓冲器输出,是因为可以同步CPU高速器件和存储器低速器件间的数据读写;数据信号也是从驱动端发出的,参考的时钟是驱动端的时钟信号,则有一个缓冲的延迟Tco_data在里头。这个参数可在数据手册中查得,有最大,最小值。这样我们就可通过控制PCB走线来轻易使Tflt_data和Tflt_clka来满足时序的要求。Tdelay表示驱动端的采样数据对应的时钟信号发出时间比所采样的数据信号发出时间的延后的时间,1 F8 y6 o/ V* E: u  X

3 z) Y1 N, W7 b) V" N建立时间:数据信号需在采样时钟信号之前到达接收端。3 b4 w3 `, J$ X2 x& B0 M% P

, q6 ]6 g5 D$ X0 a; y1 KTdelay +(Tflt_clk_min – Tflt_data_max)- Tsetup – Ts_margin > 0
4 a; v1 I- n, g: c5 j! o
( Y9 ?5 i7 _4 m( [7 t2 }在这里,由于数据信号和时钟信号都是由发送端产生,而数据信号的发送也必须以时钟信号为参考。因此,采样当前数据信号的时钟会落后驱动发送该数据信号的时钟一个周期,则Tdelay = Tcycle – Tco_data_max. f# G' E: v' d7 S6 r
5 j7 J: Q" A8 P  j- Q( }+ I
则建立时间为:
" }$ L/ z; Q/ S* \5 g6 }4 j* f- @7 ?, A; B* P1 v
Tcycle – Tco_data_max +( Tflt_clk_min – Tflt_data_max)- Tsetup – Ts_margin > 0
9 h2 j4 G( _! v4 I+ e
" j. D+ c: ^/ b! R8 H保持时间:前一个采样时钟必须比后一个数据信号先到达接收端。
6 D) i3 f! }. a  g  _  Q" p
9 d3 l. j4 C. }; }( r4 u( J这里,前一个采样时钟即为后一个数据信号的发送参考时钟,因此,他们从走线上开始有效传输的时间之差即为数据信号的缓冲延时时间,即Tco_data,则满足: Tco_data_min+ (Tflt_data_min – Tflt_clka_max) – Thold – Th_margin > 0
" J6 \6 d' c( g% p0 T# ^5 A! H3 s7 _6 N& f7 R

3 H! e$ T  q: j, o) v5 D6 g- A还有内同步读和源同步的时序分析,由于现在电脑无法上传图片,待续。。
作者: wcn312318697    时间: 2011-10-28 08:31
" j( t! T" b# b9 g" k

- [9 Z( {5 r# a% v通过时序图可以CPU与SDRAM的内同步系统中得到CPU读SDRAM的过程:  r8 ~1 B* g1 [4 j/ o) h/ Q
CPU首先发送一个时钟信号到SDRAM,触发SDRAM发送数据到CPU端, CPU发出的第2个时钟信号采样前一个信号触发而发送到CPU端的数据信号,从而完成一个读数据的过程。为了满足时序要求,则要求第1个被触发的数据信号必须在CPU发出第2个时钟信号之前到达CPU端,这是建立时间;第1个数据信号在第2个时间信号触发采样后所保持的时间为数据的保持时间,即第2个数据信号到达CPU端之前的部分时间,这段时间包括第2个时钟信号的飞行时间,第2个数据飞行时间以及第一个数据发出时的保持时间。
- J, D% I, T( z: y3 @则可以得到CPU读SDRAM的时序要求为:
; g, B+ ]7 _* y: Y; H建立时间: Tcycle – Tflt_clk – Tflt-data – Tacc – Tsetup – Ts_margin > 0- s: a# h. t1 [9 k+ J4 x+ R  O
保持时间: Tflt_clk + Tflt_data + Toh – Thold – Th_margin > 09 \7 k% V4 W- D& d- B+ |1 P2 L

1 o$ r# y) y4 B4 _
. j  P. Z: T/ |) G; |) `源同步:" ~) F  T- A5 G7 L, V7 c* O8 u2 O7 z
发送数据的时钟信号也由驱动端发出,而且和驱动端发出的参考时钟信号保持一个固有的相位差。3 o% R+ h6 T, X0 t
若定义Tb为在器件内数据信号先于时间采样点的时间,即驱动端数据在时钟有效前多少时间有效,为驱动端的建立时间;Ta为第二个数据信号落后于第一个采样点的时间,即驱动端数据在时钟有效后保持有效的时间,为发送端保持时间。则有:
9 ]# y# {/ p! Q- s* D4 mTb = Tdelay + Tco_clk – Tco_data  Ta = Tcycle – Tdelay– Tco-clk + Tco_data
2 h  j4 i& \5 G8 _7 @则有:6 ^- t6 b3 r" D
建立时间:Tb + (Tflt-clka_min – Tflt_data_max)- Tsetup – Ts_margin > 0
6 J+ e6 H* P8 B/ d5 ]9 C% B/ g保持时间:Ta +(Tflt_data_min – Tflt_clka_max)– Thold – Th_margin > 00 q; X. n+ [, j0 o
; K" p  `+ B5 r+ T( \* k& D) N  T
内同步不同于源同步时钟系统的地方在于:内同步系统中数据通过寄存器输出,时钟通过缓冲器输出;而源同步系统中数据与时钟信号都是通过寄存器输出,并且保持同等相位差,一般保持时钟正好在数据中间。, j2 a0 c) X1 k

外同步.jpg (24.02 KB, 下载次数: 3)

外同步.jpg

外同步.jpg (24.02 KB, 下载次数: 4)

外同步.jpg

内同步写时序.jpg (24.15 KB, 下载次数: 3)

内同步写时序.jpg

外同步.jpg (24.02 KB, 下载次数: 3)

外同步.jpg

内同步写时序.jpg (24.15 KB, 下载次数: 7)

内同步写时序.jpg

作者: wcn312318697    时间: 2011-11-16 17:24
本帖最后由 wcn312318697 于 2011-11-18 09:13 编辑 / F- B) ]. |6 \9 b' c# g' L" u

1 i2 V9 H  N( c. j$ I今天再整理时序的时候发现上面对于源同步时序的推导有误,由于定义了Tvb和Tva则建立和保持时间应满足:* }5 l, Q( `" g# ]' c5 F
源同步写时序:
3 p% C% w& a( E5 Y建立时间:Tvb + (Tflt_data_min–Tflt_clk_max)-Tsetup–Ts_margin> 0; |. N  X8 g- d# S+ U& s- A) _
保持时间:Tva +(Tflt_clk_min–Tflt_data_max)–Thold–Th_margin> 0
& d/ j$ o$ M6 ?! o& s  \源同步读时序:
# m" o/ u( z$ Y: T9 R4 j建立时间:Tvb + Tflt_clk_min + Tflt_data_min – Tsetup – Ts_margin > 0
% O8 C: K5 P) x2 B3 }8 u/ A1 h& c( H保持时间:Tva – Tflt_clk_max – Tflt_data_max – Thold – Th_margin > 0! n) j  m( @# o" M
若有其他错误,欢迎大家指正啊!!' D+ h' V; h' k' p9 U: x

- B! ?5 g( v5 O* B: L3 b- |补充内容 (2011-12-13 15:11):
' N' \* V4 h2 G' y8 B" {) X哎。。俺又错了。。竟然都没人来指正。。。。。
3 m, j" {' p7 u) k原来对于源同步的了解不够,现在再改一次。。' \2 e. m' Q; K: s6 H. P) y& ^
源同步的读与写应该是一样的过程,都是采样信号与数据信号进行同相,同向的传输,4 `) S, W, W/ h5 z2 \3 _- ~

6 d2 d7 H( E+ }6 Y2 r# n/ Q补充内容 (2011-12-13 15:12):
  H7 n: D9 K' q" w0 y, p0 T那么:
" g  N" ?& e8 a) J) [建立时间:Tvb + (Tflt_probe_min–Tflt_data_max)-Tsetup–Ts_margin> 0
7 Z1 I& ^6 j3 T保持时间:Tva +(Tflt_data_min–Tflt_probe_max)–Thold–Th_margin> 0
3 @1 H% t3 ?" n: {probe:即为数据的采样信号
, E- x+ s" X, G4 ^" n' J% `# |
作者: babadashagua    时间: 2011-11-16 23:18
谢谢分享
作者: redeveryday    时间: 2012-6-6 16:04

作者: qiangqssong    时间: 2012-6-6 16:20
谢谢分享,学习下!!
作者: yejialu    时间: 2012-6-6 16:27
不错, 再研究深一点呀
作者: guokeqin    时间: 2012-9-26 20:09
新手学习中...
作者: willyeing    时间: 2012-10-10 17:23
看晕了,我自己写过,现在都已经忘了。反正你就画个时序图,自己写公式就可以,要细心些不难的。
作者: James‘    时间: 2012-10-11 14:45
怎么感觉PCB设计越来越难了呢?
作者: dck    时间: 2014-3-16 17:30
好文章,重新顶起来




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2