|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ecos应用是与硬件平台无关的,虽然开发板没有涉及到SDRAM和DDR,不过,在某些高端平台上使用ecos可能会遇到内存布线问题,为了完整叙述,这里一并给出说明。& z- ]& L0 }, a8 G
4 y2 x5 i, \0 J j
很多人对内存布线感到迷茫,找不到切入点,不知如何下手,其实高速硬件设计的主要任务就是与干扰做斗争,内存布线也不例外。可以这样考虑:内存是做什么用的呢?是用来存储数据的,写入1读出1,写入0读出0,即保证数据访问正确。那么,在什么情况会导致数据访问错误呢?. o8 W& I: J4 y) D
1、判决错误,0判成1,1判成0。可能参考电平不准(为什么不准?信号线内阻造成的压降),也可能是加性干扰,或者阻抗不匹配引起信号畸变。! {$ j3 e" ]6 ^& ~5 z
2、时序错误,不满足建立/保持时间,或者采样点相位错误,不在有效信号位置上。触发器需要维持一段时间的能量供给才能正常工作,这个时间就是建立/保持时间。/ \1 d% J2 s/ V; r9 X3 S& A* v
那么只要解决好这两个问题,保证内存正确访问,你的内存电路就设计成功了。
" f0 p) k. X- K2 i, T
* N2 u# d( l: w, I$ m, \' } 有了这个指导思想,内存布线就可以按部就班地完成。不过,不同的RAM类型,虽然目标都是避免判决和时序错误,但实现方法因工作模式不同而有较大差异。, Y' q+ ]; W; R }0 d% d; W
( p# v: Y! g' n) W8 a
高速系统一般采用低压信号,电压低,摆幅小,容易提高速度,降低功耗,但这给布线带来了困难,因为低压信号功率受信号线内阻影响大,是电压平方关系,所以要尽量减少内阻,比如使用电平面,多打孔,缩短走线距离,高压传输在终点用电阻分压出较低电压的信号等。SDRAM、DDR-I、DDR-II、 DDR-III信号电压一个比一个低,越来越不容易做稳定。) l- w) q: }9 q0 `/ S7 l, a/ S
7 r# }+ u* T4 U8 H B1 n' i" m; |$ J
电源供给也要注意,如果能量供给不足,内存不会稳定工作。
$ D5 g- H2 z5 c
( u3 k- ~" I5 x8 y6 @- V 经常看到“等长布线”,其实,等长不是目的,真正的目的是满足建立保持时间,同频同相,采样正确。等长只不过可以最简单地实现这个目的罢了。要定量分析线长,必须按照时钟模型公式计算。时钟同步电路的类型在后面有简单介绍,这里只要知道SDRAM是公共时钟同步,DDR是源同步就可以了。# {& s7 w: h+ [' k
4 u8 ]0 t2 i( s6 m G, ]. B7 d2 f SDRAM是公共时钟同步模式,只关心建立时间,不关心保持时间。这些时间和各段飞行时间,经过各个门电路延时,clock skew,jitter,cycle等有关,需要按照公式精确计算。算出各种参数后下规则,让EDA软件辅助设计。选出最长的一根线,不需要计算什么,只要与之等长即可。有些软件能自己算,有些只能自己一段段计算,可以编程让EXCEL表格对某种格式的报告文件自动求和,也算半自动化了。
- r. K- W* K6 t% q' h+ M; G" N# @# G- ~0 _% \& g; {6 Y8 x
DDR的所有信号都要加匹配,不论多复杂,为了稳定性。
7 `8 C3 h4 n' \. f- x- o) x/ q 始端匹配串接一个22/33欧电阻即可,终端匹配分为AC匹配和DC匹配,阻容可以对噪点抑制,戴维宁电路可以提供高压输电,使参考电平更准确,虽然直流功耗大,但比单个50欧功耗小。
* d& ~% ^4 H8 q# }! b- F CPU和DDR都是高速器件,DDR热量高,应远离。而且DDR是源同步时钟模式,对保持时间有要求,不是线越短越好,有最小距离要求。保证时钟稳定,同频同相,冗余大即可。9 S. V0 w0 t. w, C- d
5 \$ P7 s' @. v3 P) ?! S% C 有时,信号线有交叉的情况,此时,可以在PCB里调线,再反标回去,因为RAM的各个数据线不需要一一对应,只要有地方存储bit就可以了。注意:刷新线A10不能调,需要读取RAM ID时也不能调整。
* y8 u( Y( I# y& v+ A9 j& ?# a- ^ - g" |2 t3 b& l5 h( w
评价设计的好坏要看Margin(冗余),setup time margin和hold time margin,SDRAM/DDR工作没问题并不意味着margin小,也许在实验室可以正常工作,可一到现场就死机。频率漂移,时钟抖动,相差,介电常数变化等都会导致采样错误/不满足建立保持时间,而margin大就可以尽量抵抗这些干扰,在一个恶劣的环境里仍然保持稳定。" L/ z8 g7 V8 r) P6 T3 \2 Z
( y% C/ p4 _- f' w
内存的表现形式有两种:内存颗粒和内存条。内存条自身有走线长度,需要计算在内。问个问题:内存条有3种安装方式:竖插、斜插、平插,你认为那种方式好呢?& E) _1 Z" y& ~) T: J
: Q$ i1 B: d9 R5 k附:时钟同步电路的类型
9 `. l: L0 Q" T/ L9 D4 n9 c
6 v/ V1 J* t1 }: Y6 q: C) N: I( V# I u
源同步就是指时钟选通信号clk伴随发送数据一起由驱动芯片发送。公共时钟同步是指在数据的传输过程中,总线上的驱动端和接收端共享同一个时钟源,在同一个时钟缓冲器(clock buffer)发出同相时钟的作用下,完成数据的发送和接收。
5 V, B2 M) ^5 A8 O4 M S5 }8 h' e0 M2 }' ?8 I' T! Y# {
公共时钟同步,将同一个时钟信号用时钟分配器分成2路,一路接发送器,一路接接收器。在时钟上升沿发送数据,在下一个周期的上升沿采样接收。速率在200-300MHZ以下。& m7 Z% R2 y& L. n9 ?8 ~
源同步是时钟和数据一起发送,时钟稍稍滞后发送,传输速率主要由数据和时钟信号间的时差决定。因此速率快。9 B0 Q3 S# q+ `* b5 {. w4 h5 C5 R
公共时钟同步电路走线长度有最大值len <=,源同步电路走线长度有最小值<= len <=* ^( [" l0 F( S
源同步关心保持时间,TBI+10bit数据和DDR的DQS+DATA属于源同步电路。
7 c2 |; h4 c+ R+ L! e. U1 D7 C; J2 j: s& w* i" M# u
------ 等长线
2 R: s' e! q* a4 L( o! ] |时钟|----------------->发送端时钟* W8 l" u- c/ R U
clk--->|驱动|----------------->接收端时钟
) P0 r, b& ?! }# Z: V# L | |---( C, V3 i0 f8 F* Y( R
------ |2 ~- V8 W( B* A n; ^( b
| |
9 @! ~& l' O( ~( ~4 O ---<---PLL补偿$ @! d7 {7 I$ J0 S& p+ m& `
公共时钟同步
* e( C* F7 s& [$ F( _
2 Y6 _- I$ U2 T2 h1 Q -----
+ u0 c) K0 Z9 P |驱 |------------------>clk- y& z* c# c3 [& O
|动 |5 {0 x W( N {) {2 q& k" ^1 X
| |================>data5 A/ Y* K! |4 y- j" P% Y
-----
9 Z5 `/ p) d+ {2 I0 W; ^& n 源同步
1 v' o4 I0 g; [; Y8 h, B5 ?/ ]" v S
7 D$ f0 a) [; Z/ D# _1 v6 G) u4 R
9 g+ d5 h% {' _9 Z --------- ---------
- l- W. ^! I5 v4 I -----< >< >--------
& f2 T' \* h5 ^# {/ X --------- ---------
9 X% y* G) `+ X9 b. Y -----------
5 K V2 b/ ^9 S# Z | |' a& E* \/ a1 ]: ]. C3 \8 C
--------- -----------
/ ?* u# [! D( F5 g |<--->|<-->|& O$ X3 n6 H" Q* ]
建立 保持 |
评分
-
查看全部评分
|