|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ecos应用是与硬件平台无关的,虽然开发板没有涉及到SDRAM和DDR,不过,在某些高端平台上使用ecos可能会遇到内存布线问题,为了完整叙述,这里一并给出说明。
0 Q7 ?: u7 p- E( C. b- p
7 J2 {1 ^ H9 H8 O) @, d: ` 很多人对内存布线感到迷茫,找不到切入点,不知如何下手,其实高速硬件设计的主要任务就是与干扰做斗争,内存布线也不例外。可以这样考虑:内存是做什么用的呢?是用来存储数据的,写入1读出1,写入0读出0,即保证数据访问正确。那么,在什么情况会导致数据访问错误呢?7 E4 ]% }" X+ V) D U
1、判决错误,0判成1,1判成0。可能参考电平不准(为什么不准?信号线内阻造成的压降),也可能是加性干扰,或者阻抗不匹配引起信号畸变。
: z8 _( | W; |/ }$ o# R, w1 w" a 2、时序错误,不满足建立/保持时间,或者采样点相位错误,不在有效信号位置上。触发器需要维持一段时间的能量供给才能正常工作,这个时间就是建立/保持时间。' y4 u' I8 O, d7 ^
那么只要解决好这两个问题,保证内存正确访问,你的内存电路就设计成功了。7 M; [3 V, [3 G9 r
7 @2 S1 H1 b! Q7 y! b
有了这个指导思想,内存布线就可以按部就班地完成。不过,不同的RAM类型,虽然目标都是避免判决和时序错误,但实现方法因工作模式不同而有较大差异。
6 r( Y3 y! J( X1 P ; Q0 K3 P+ r D. G. p' ~! u
高速系统一般采用低压信号,电压低,摆幅小,容易提高速度,降低功耗,但这给布线带来了困难,因为低压信号功率受信号线内阻影响大,是电压平方关系,所以要尽量减少内阻,比如使用电平面,多打孔,缩短走线距离,高压传输在终点用电阻分压出较低电压的信号等。SDRAM、DDR-I、DDR-II、 DDR-III信号电压一个比一个低,越来越不容易做稳定。: G9 t4 O" D& u# R3 \$ _7 B
h0 [( G0 I* E2 A* d 电源供给也要注意,如果能量供给不足,内存不会稳定工作。8 E& n/ {( N8 i# `6 u% p- x
3 c8 F! J, j3 a) n) X- N3 u 经常看到“等长布线”,其实,等长不是目的,真正的目的是满足建立保持时间,同频同相,采样正确。等长只不过可以最简单地实现这个目的罢了。要定量分析线长,必须按照时钟模型公式计算。时钟同步电路的类型在后面有简单介绍,这里只要知道SDRAM是公共时钟同步,DDR是源同步就可以了。; d$ Q9 }# }8 `1 j' ^, Q1 ^: Q7 M
1 L6 U- o" x0 T
SDRAM是公共时钟同步模式,只关心建立时间,不关心保持时间。这些时间和各段飞行时间,经过各个门电路延时,clock skew,jitter,cycle等有关,需要按照公式精确计算。算出各种参数后下规则,让EDA软件辅助设计。选出最长的一根线,不需要计算什么,只要与之等长即可。有些软件能自己算,有些只能自己一段段计算,可以编程让EXCEL表格对某种格式的报告文件自动求和,也算半自动化了。8 u5 L) Q9 \2 _3 c
. k; ~- _6 M Q& c DDR的所有信号都要加匹配,不论多复杂,为了稳定性。7 b( B, p D, H6 Z+ C/ h
始端匹配串接一个22/33欧电阻即可,终端匹配分为AC匹配和DC匹配,阻容可以对噪点抑制,戴维宁电路可以提供高压输电,使参考电平更准确,虽然直流功耗大,但比单个50欧功耗小。
; F. ?1 v& }% R; `4 M! w CPU和DDR都是高速器件,DDR热量高,应远离。而且DDR是源同步时钟模式,对保持时间有要求,不是线越短越好,有最小距离要求。保证时钟稳定,同频同相,冗余大即可。
" ?9 a& X. `& N' E( ^) \! x 5 o2 H. L2 q. O" E, \
有时,信号线有交叉的情况,此时,可以在PCB里调线,再反标回去,因为RAM的各个数据线不需要一一对应,只要有地方存储bit就可以了。注意:刷新线A10不能调,需要读取RAM ID时也不能调整。
1 a9 ?; Z! u, u P9 B
1 z$ A; H: M) `' _7 h 评价设计的好坏要看Margin(冗余),setup time margin和hold time margin,SDRAM/DDR工作没问题并不意味着margin小,也许在实验室可以正常工作,可一到现场就死机。频率漂移,时钟抖动,相差,介电常数变化等都会导致采样错误/不满足建立保持时间,而margin大就可以尽量抵抗这些干扰,在一个恶劣的环境里仍然保持稳定。
7 r, }. C' p( X+ W. D' p0 v8 [
1 w3 R+ ]3 s5 T 内存的表现形式有两种:内存颗粒和内存条。内存条自身有走线长度,需要计算在内。问个问题:内存条有3种安装方式:竖插、斜插、平插,你认为那种方式好呢?: t9 u" w8 [# c
( K$ V5 A; C" Z" a附:时钟同步电路的类型/ ?0 M* ]" N2 x6 e
2 D6 X) y# Q: q; T* w0 X. i
( s7 W3 \) x; E A
源同步就是指时钟选通信号clk伴随发送数据一起由驱动芯片发送。公共时钟同步是指在数据的传输过程中,总线上的驱动端和接收端共享同一个时钟源,在同一个时钟缓冲器(clock buffer)发出同相时钟的作用下,完成数据的发送和接收。$ u% ?5 o+ R- h+ _" t
- i2 J3 i5 ]8 {; L, l2 J
公共时钟同步,将同一个时钟信号用时钟分配器分成2路,一路接发送器,一路接接收器。在时钟上升沿发送数据,在下一个周期的上升沿采样接收。速率在200-300MHZ以下。
* t" H% e% F3 r q 源同步是时钟和数据一起发送,时钟稍稍滞后发送,传输速率主要由数据和时钟信号间的时差决定。因此速率快。. b/ L8 V5 W' E9 c }
公共时钟同步电路走线长度有最大值len <=,源同步电路走线长度有最小值<= len <=
_5 @* x% |1 r) \ 源同步关心保持时间,TBI+10bit数据和DDR的DQS+DATA属于源同步电路。
2 Z3 V& U* W5 K- r9 ^3 N8 r2 n
4 x- w5 G8 j( j" D$ b6 S, N ------ 等长线# B) C8 A+ \) P9 Q; J, k
|时钟|----------------->发送端时钟
& J8 [7 D0 w) Z9 j K4 _/ r clk--->|驱动|----------------->接收端时钟
& d* C( ^- L" ]+ U5 F | |---
9 T% Y6 O! P v1 V ------ |
/ x G- ~& U+ _) G8 `+ n4 c2 P | |3 b) b, L- Z/ G, l% c' L
---<---PLL补偿0 N/ J7 z: ]! c' I+ ?0 |- E
公共时钟同步5 e" ^' O* Y3 Y; B; M0 f1 K
3 i/ X4 `; D7 ^0 l' U$ A) V* r) W -----8 U2 ] D, Y6 E) M: U- O) x8 @
|驱 |------------------>clk
; a4 B8 L, U$ i$ n |动 |. j0 y `3 R) ]2 w
| |================>data
1 _" V6 a- c/ a! l9 F' h7 M5 t% Y -----
+ \: O8 H! G h0 | 源同步. _% o E, g$ s, z
: L; d U1 H/ L, z9 j
K, ~) q/ F& R! s4 a" ?- y --------- ---------5 z& j j1 m9 O1 `, P% y" k
-----< >< >--------
, g) l4 u$ }/ k- K --------- ---------5 }* T# o$ m0 q1 M B
-----------5 K' d0 }1 I0 s5 u
| | L3 T+ p# x b
--------- -----------
! {( R1 r) F! [- K6 e7 l |<--->|<-->|
; f6 O2 n4 T' b( D( K7 ~6 z2 R 建立 保持 |
评分
-
查看全部评分
|