|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ecos应用是与硬件平台无关的,虽然开发板没有涉及到SDRAM和DDR,不过,在某些高端平台上使用ecos可能会遇到内存布线问题,为了完整叙述,这里一并给出说明。
& F$ R; a; |' V- R! ~ . Z6 ^3 A! j7 p9 [
很多人对内存布线感到迷茫,找不到切入点,不知如何下手,其实高速硬件设计的主要任务就是与干扰做斗争,内存布线也不例外。可以这样考虑:内存是做什么用的呢?是用来存储数据的,写入1读出1,写入0读出0,即保证数据访问正确。那么,在什么情况会导致数据访问错误呢?/ ~1 [3 h, P* X( ?9 P7 ]& ~/ T
1、判决错误,0判成1,1判成0。可能参考电平不准(为什么不准?信号线内阻造成的压降),也可能是加性干扰,或者阻抗不匹配引起信号畸变。
; d0 |( L. p2 f4 y 2、时序错误,不满足建立/保持时间,或者采样点相位错误,不在有效信号位置上。触发器需要维持一段时间的能量供给才能正常工作,这个时间就是建立/保持时间。5 q2 A" J S( ^1 A0 w) l
那么只要解决好这两个问题,保证内存正确访问,你的内存电路就设计成功了。
8 Y2 d+ }7 U. N+ ]( v 3 l1 o# H3 }* R3 F
有了这个指导思想,内存布线就可以按部就班地完成。不过,不同的RAM类型,虽然目标都是避免判决和时序错误,但实现方法因工作模式不同而有较大差异。
. e8 m2 @' b1 y$ a! @- B
: g- Y$ w, s# w0 \ 高速系统一般采用低压信号,电压低,摆幅小,容易提高速度,降低功耗,但这给布线带来了困难,因为低压信号功率受信号线内阻影响大,是电压平方关系,所以要尽量减少内阻,比如使用电平面,多打孔,缩短走线距离,高压传输在终点用电阻分压出较低电压的信号等。SDRAM、DDR-I、DDR-II、 DDR-III信号电压一个比一个低,越来越不容易做稳定。; {6 r. m5 D' z) O$ W: c9 C
* \( b; d$ k ?9 w
电源供给也要注意,如果能量供给不足,内存不会稳定工作。: o7 C |8 ?8 `4 X2 t
5 U3 ]7 V& \' Z, A6 a( L 经常看到“等长布线”,其实,等长不是目的,真正的目的是满足建立保持时间,同频同相,采样正确。等长只不过可以最简单地实现这个目的罢了。要定量分析线长,必须按照时钟模型公式计算。时钟同步电路的类型在后面有简单介绍,这里只要知道SDRAM是公共时钟同步,DDR是源同步就可以了。
' b+ J, Z8 d* G$ z( E' u
0 y, j3 D4 n6 O2 \; K* d SDRAM是公共时钟同步模式,只关心建立时间,不关心保持时间。这些时间和各段飞行时间,经过各个门电路延时,clock skew,jitter,cycle等有关,需要按照公式精确计算。算出各种参数后下规则,让EDA软件辅助设计。选出最长的一根线,不需要计算什么,只要与之等长即可。有些软件能自己算,有些只能自己一段段计算,可以编程让EXCEL表格对某种格式的报告文件自动求和,也算半自动化了。
$ |) e+ X, X: h4 e; ^3 ~3 D3 D) r& T! C8 {6 A* y4 A$ V
DDR的所有信号都要加匹配,不论多复杂,为了稳定性。
: }1 y2 m+ F# p* M8 R 始端匹配串接一个22/33欧电阻即可,终端匹配分为AC匹配和DC匹配,阻容可以对噪点抑制,戴维宁电路可以提供高压输电,使参考电平更准确,虽然直流功耗大,但比单个50欧功耗小。
+ U/ m7 E/ }& e' @9 o+ p! p CPU和DDR都是高速器件,DDR热量高,应远离。而且DDR是源同步时钟模式,对保持时间有要求,不是线越短越好,有最小距离要求。保证时钟稳定,同频同相,冗余大即可。' M/ O- A. P, k
& {) S h) F$ t+ u2 l7 H
有时,信号线有交叉的情况,此时,可以在PCB里调线,再反标回去,因为RAM的各个数据线不需要一一对应,只要有地方存储bit就可以了。注意:刷新线A10不能调,需要读取RAM ID时也不能调整。5 x- R* `4 }* ]+ C. e
# u& Y; m. f( k! {" B, C. `! s
评价设计的好坏要看Margin(冗余),setup time margin和hold time margin,SDRAM/DDR工作没问题并不意味着margin小,也许在实验室可以正常工作,可一到现场就死机。频率漂移,时钟抖动,相差,介电常数变化等都会导致采样错误/不满足建立保持时间,而margin大就可以尽量抵抗这些干扰,在一个恶劣的环境里仍然保持稳定。8 I! J; D+ j% } L4 g# K
* L6 z/ S/ E' B+ U+ s" @ 内存的表现形式有两种:内存颗粒和内存条。内存条自身有走线长度,需要计算在内。问个问题:内存条有3种安装方式:竖插、斜插、平插,你认为那种方式好呢?
) \6 x7 Y& j P' o' h+ R6 E+ h# ?8 C, @' o; _# R* x B
附:时钟同步电路的类型* V- c& Y% c$ o) T. U1 `/ } L" x
+ U3 `* {7 V( j9 {2 L2 P0 F1 n# Y- l: ~3 `: P4 E! D6 e
源同步就是指时钟选通信号clk伴随发送数据一起由驱动芯片发送。公共时钟同步是指在数据的传输过程中,总线上的驱动端和接收端共享同一个时钟源,在同一个时钟缓冲器(clock buffer)发出同相时钟的作用下,完成数据的发送和接收。
7 I* _" k/ q9 L# x5 V) d2 C. m
0 a1 e$ c* K+ z. ]; e 公共时钟同步,将同一个时钟信号用时钟分配器分成2路,一路接发送器,一路接接收器。在时钟上升沿发送数据,在下一个周期的上升沿采样接收。速率在200-300MHZ以下。
! D! Y' o( g! i5 W) y0 U/ E 源同步是时钟和数据一起发送,时钟稍稍滞后发送,传输速率主要由数据和时钟信号间的时差决定。因此速率快。; z; e; k% `1 N% L3 w7 ]
公共时钟同步电路走线长度有最大值len <=,源同步电路走线长度有最小值<= len <=* M' @6 S1 i+ n) X1 R( Y
源同步关心保持时间,TBI+10bit数据和DDR的DQS+DATA属于源同步电路。# `$ Y* o( [/ r0 d9 ~/ K5 J% D
) p5 z4 D4 L* N; k9 q# E! L ------ 等长线4 P. W$ U! ?* l# v
|时钟|----------------->发送端时钟
1 B& ]2 i% l7 }2 D2 f9 @ clk--->|驱动|----------------->接收端时钟# e9 D- o+ d0 \2 ?+ T9 G
| |---! e* E4 X4 h- E- C
------ |1 }# O- P- y7 R) F' P$ b D
| |
8 S e" ^. v' x ---<---PLL补偿7 u! q$ f+ L2 s
公共时钟同步
5 \% y; m8 p0 E$ e6 `' e. N7 y' A" y3 B: q
------ P: @8 E3 b/ b0 [2 ~6 S
|驱 |------------------>clk
4 i# l% _7 i/ [1 X" } |动 |$ m# n' O" u6 O0 _1 Q
| |================>data
' y$ g5 v% Y9 ^' x3 H' A -----
/ c% p U3 B7 n; ?5 ]; Y8 z 源同步
/ ]- ?2 Y# s5 a) Y# C1 M* M6 W0 J' P: e S& c
V. F9 S7 r7 P* H) E' C7 f
--------- ---------
/ \5 o1 H, B7 ]0 |, f, y -----< >< >--------: A+ x8 u6 D& Q4 q& f3 ~- v: {
--------- ---------. s l. X9 k% ]7 N x* D @- d
-----------7 s# _' Z W- M9 Z9 t' T$ o. p
| |
( V( n9 r- h; F6 E) M. ^ --------- -----------
- f9 Z& F }1 U9 n) [- k( C |<--->|<-->|1 r s: z" h" q: F% _; w8 j
建立 保持 |
评分
-
查看全部评分
|