|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ecos应用是与硬件平台无关的,虽然开发板没有涉及到SDRAM和DDR,不过,在某些高端平台上使用ecos可能会遇到内存布线问题,为了完整叙述,这里一并给出说明。8 }0 ]( M" r. ]; m' @6 J& F {
8 J' e+ |, m/ s+ J% @+ |0 Z- F5 K" U 很多人对内存布线感到迷茫,找不到切入点,不知如何下手,其实高速硬件设计的主要任务就是与干扰做斗争,内存布线也不例外。可以这样考虑:内存是做什么用的呢?是用来存储数据的,写入1读出1,写入0读出0,即保证数据访问正确。那么,在什么情况会导致数据访问错误呢?
/ Z8 O* G) y) u) E2 j' N0 K3 j1 P4 N 1、判决错误,0判成1,1判成0。可能参考电平不准(为什么不准?信号线内阻造成的压降),也可能是加性干扰,或者阻抗不匹配引起信号畸变。: |0 ^% A* @( v- i: p: N
2、时序错误,不满足建立/保持时间,或者采样点相位错误,不在有效信号位置上。触发器需要维持一段时间的能量供给才能正常工作,这个时间就是建立/保持时间。5 D7 k* q! w8 e+ y2 l' c( n4 c
那么只要解决好这两个问题,保证内存正确访问,你的内存电路就设计成功了。
0 e% h# ] p Q 3 p% w& z5 e& F6 k6 p! g! t
有了这个指导思想,内存布线就可以按部就班地完成。不过,不同的RAM类型,虽然目标都是避免判决和时序错误,但实现方法因工作模式不同而有较大差异。
# x$ Z( `% s( T; W0 M
/ f4 _, ~& K) L( q: d; n 高速系统一般采用低压信号,电压低,摆幅小,容易提高速度,降低功耗,但这给布线带来了困难,因为低压信号功率受信号线内阻影响大,是电压平方关系,所以要尽量减少内阻,比如使用电平面,多打孔,缩短走线距离,高压传输在终点用电阻分压出较低电压的信号等。SDRAM、DDR-I、DDR-II、 DDR-III信号电压一个比一个低,越来越不容易做稳定。
6 ?! ~/ Q/ y) s1 i v' }
8 f& x9 W- i- [% [+ |5 Z [ 电源供给也要注意,如果能量供给不足,内存不会稳定工作。$ @2 a) j$ J# I! Z( l1 `
2 A. |2 O3 y X1 r' x: w+ o/ Z6 v- x 经常看到“等长布线”,其实,等长不是目的,真正的目的是满足建立保持时间,同频同相,采样正确。等长只不过可以最简单地实现这个目的罢了。要定量分析线长,必须按照时钟模型公式计算。时钟同步电路的类型在后面有简单介绍,这里只要知道SDRAM是公共时钟同步,DDR是源同步就可以了。 s# m6 M6 [9 _5 j: P: Q7 x6 C
3 `& C! `, f, I8 Z: I
SDRAM是公共时钟同步模式,只关心建立时间,不关心保持时间。这些时间和各段飞行时间,经过各个门电路延时,clock skew,jitter,cycle等有关,需要按照公式精确计算。算出各种参数后下规则,让EDA软件辅助设计。选出最长的一根线,不需要计算什么,只要与之等长即可。有些软件能自己算,有些只能自己一段段计算,可以编程让EXCEL表格对某种格式的报告文件自动求和,也算半自动化了。
0 ~0 S- ~. j$ z* r7 u+ Z# g* N _3 i, J q
DDR的所有信号都要加匹配,不论多复杂,为了稳定性。
1 f7 t' }# v2 ?; b& O 始端匹配串接一个22/33欧电阻即可,终端匹配分为AC匹配和DC匹配,阻容可以对噪点抑制,戴维宁电路可以提供高压输电,使参考电平更准确,虽然直流功耗大,但比单个50欧功耗小。- f( Q& z$ Y$ _" E' q
CPU和DDR都是高速器件,DDR热量高,应远离。而且DDR是源同步时钟模式,对保持时间有要求,不是线越短越好,有最小距离要求。保证时钟稳定,同频同相,冗余大即可。
5 s! I5 T4 y' Q; L3 H6 v; S : P: m) T: t" Z. x& }9 N
有时,信号线有交叉的情况,此时,可以在PCB里调线,再反标回去,因为RAM的各个数据线不需要一一对应,只要有地方存储bit就可以了。注意:刷新线A10不能调,需要读取RAM ID时也不能调整。8 d6 L3 C' a& U6 u2 a' S
' y; W8 K: }1 K* u# A# v7 i+ O 评价设计的好坏要看Margin(冗余),setup time margin和hold time margin,SDRAM/DDR工作没问题并不意味着margin小,也许在实验室可以正常工作,可一到现场就死机。频率漂移,时钟抖动,相差,介电常数变化等都会导致采样错误/不满足建立保持时间,而margin大就可以尽量抵抗这些干扰,在一个恶劣的环境里仍然保持稳定。
! } _& i( O* x4 a, k1 B9 v# Y, S
+ z, S9 X/ G" n$ C1 S 内存的表现形式有两种:内存颗粒和内存条。内存条自身有走线长度,需要计算在内。问个问题:内存条有3种安装方式:竖插、斜插、平插,你认为那种方式好呢?! k/ Q- D- m& _4 g/ H
( c7 p. P% e, ^
附:时钟同步电路的类型2 E! p9 a/ U6 m1 y
4 h3 k n( j5 U" ?% t" Q2 [
+ E" O0 `" ]1 D, p
源同步就是指时钟选通信号clk伴随发送数据一起由驱动芯片发送。公共时钟同步是指在数据的传输过程中,总线上的驱动端和接收端共享同一个时钟源,在同一个时钟缓冲器(clock buffer)发出同相时钟的作用下,完成数据的发送和接收。
% [; Z2 U* h, M
- q3 O+ [3 f2 F8 n9 g* G& V: m 公共时钟同步,将同一个时钟信号用时钟分配器分成2路,一路接发送器,一路接接收器。在时钟上升沿发送数据,在下一个周期的上升沿采样接收。速率在200-300MHZ以下。* G5 M9 f9 O# @) ^3 j+ q. j
源同步是时钟和数据一起发送,时钟稍稍滞后发送,传输速率主要由数据和时钟信号间的时差决定。因此速率快。
4 X4 u5 {5 `' l$ n) O7 p N, n 公共时钟同步电路走线长度有最大值len <=,源同步电路走线长度有最小值<= len <=
7 y: [' Q& A" D9 ~. T. h( v3 E6 |3 u 源同步关心保持时间,TBI+10bit数据和DDR的DQS+DATA属于源同步电路。. l9 C3 L5 X, ^" c* Q$ v9 M
. S* U9 Q1 K! N- A/ i& }1 x ------ 等长线
0 ~4 L; r9 Z/ F3 t/ J% _ |时钟|----------------->发送端时钟
c7 b3 F/ z( b) a0 Z. H# b( C clk--->|驱动|----------------->接收端时钟
' T6 }& \1 R. ] | |---! l! j( l( ~& H/ Y9 [2 }8 u' Q4 D
------ |! P4 [1 V) ^6 E
| | q, w! M9 t- ^2 h9 ^- A/ b& W
---<---PLL补偿
2 X5 H4 k6 D' B" z0 e; I, V* \0 b 公共时钟同步: Q" b8 L/ U4 v ^5 K& |! _# i, j
9 H! ~6 L* R6 T8 X9 A$ g
-----: \3 n, u6 `- L- C1 u. w) P
|驱 |------------------>clk
4 v7 A, h5 e* w+ d) _0 {, z- ?% _ |动 |4 h5 F G7 M' k# Q/ Z/ w' C( g
| |================>data; e. E( G4 ?) |( }2 G
-----
7 e6 R8 \: r! l3 g 源同步
4 x" V0 M& \3 w5 C
3 e1 m" |9 u, n0 Z; v: ]/ N) H( ]3 a9 l# j# @% M2 m
--------- ---------" H' w" O! e$ H: r2 Z1 U
-----< >< >--------6 N0 X p5 E2 @- h+ M$ N
--------- ---------9 d/ Q3 L& R. u6 s! q6 {
------------ G% j; X' L* }/ ~. X
| |
# |7 s6 a" U0 @# H( p! d --------- -----------3 Q ]$ E2 F- L2 v9 j3 m) r* ]
|<--->|<-->|
% N6 f% F9 ~+ s5 S& ]# ]( |- c 建立 保持 |
评分
-
查看全部评分
|