|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ecos应用是与硬件平台无关的,虽然开发板没有涉及到SDRAM和DDR,不过,在某些高端平台上使用ecos可能会遇到内存布线问题,为了完整叙述,这里一并给出说明。
+ g5 N! ]+ Z( w4 @, e. G- r # n, s0 Q+ |0 B" j
很多人对内存布线感到迷茫,找不到切入点,不知如何下手,其实高速硬件设计的主要任务就是与干扰做斗争,内存布线也不例外。可以这样考虑:内存是做什么用的呢?是用来存储数据的,写入1读出1,写入0读出0,即保证数据访问正确。那么,在什么情况会导致数据访问错误呢?( b7 s/ }; S2 P1 Q" {) z" Y$ F1 ~
1、判决错误,0判成1,1判成0。可能参考电平不准(为什么不准?信号线内阻造成的压降),也可能是加性干扰,或者阻抗不匹配引起信号畸变。
. G+ I K( ?) M/ R$ T 2、时序错误,不满足建立/保持时间,或者采样点相位错误,不在有效信号位置上。触发器需要维持一段时间的能量供给才能正常工作,这个时间就是建立/保持时间。
8 {8 H4 ?) M7 Y$ u- l. y2 @ 那么只要解决好这两个问题,保证内存正确访问,你的内存电路就设计成功了。+ d/ @4 q7 y2 G5 O# c+ j
' w/ c5 w- ^$ p) }" w& M
有了这个指导思想,内存布线就可以按部就班地完成。不过,不同的RAM类型,虽然目标都是避免判决和时序错误,但实现方法因工作模式不同而有较大差异。
& e! D2 }- x; A9 Y, P' \/ Z! u. b
$ e/ q! L, k. P. Y7 R; z 高速系统一般采用低压信号,电压低,摆幅小,容易提高速度,降低功耗,但这给布线带来了困难,因为低压信号功率受信号线内阻影响大,是电压平方关系,所以要尽量减少内阻,比如使用电平面,多打孔,缩短走线距离,高压传输在终点用电阻分压出较低电压的信号等。SDRAM、DDR-I、DDR-II、 DDR-III信号电压一个比一个低,越来越不容易做稳定。
- e% B2 Q: q( D! ~6 o6 j
! Y$ K% A+ d! s( A& }3 v$ K 电源供给也要注意,如果能量供给不足,内存不会稳定工作。% o$ V6 T* Z6 m7 Z/ N+ f" q! I$ p
- R. H% V5 z: D& Y+ n 经常看到“等长布线”,其实,等长不是目的,真正的目的是满足建立保持时间,同频同相,采样正确。等长只不过可以最简单地实现这个目的罢了。要定量分析线长,必须按照时钟模型公式计算。时钟同步电路的类型在后面有简单介绍,这里只要知道SDRAM是公共时钟同步,DDR是源同步就可以了。" D1 b- _" Q6 d4 L1 }# u K" B
0 w [: G8 \# P z8 o% L: d* R+ d SDRAM是公共时钟同步模式,只关心建立时间,不关心保持时间。这些时间和各段飞行时间,经过各个门电路延时,clock skew,jitter,cycle等有关,需要按照公式精确计算。算出各种参数后下规则,让EDA软件辅助设计。选出最长的一根线,不需要计算什么,只要与之等长即可。有些软件能自己算,有些只能自己一段段计算,可以编程让EXCEL表格对某种格式的报告文件自动求和,也算半自动化了。
6 ~' I' ]# B+ ^& u# _0 v/ w& R5 M6 J7 p4 D# S( a. ]7 ~4 k
DDR的所有信号都要加匹配,不论多复杂,为了稳定性。
$ y0 v: g& C, T9 _( S 始端匹配串接一个22/33欧电阻即可,终端匹配分为AC匹配和DC匹配,阻容可以对噪点抑制,戴维宁电路可以提供高压输电,使参考电平更准确,虽然直流功耗大,但比单个50欧功耗小。
# r& D1 e$ S/ P8 ?! P CPU和DDR都是高速器件,DDR热量高,应远离。而且DDR是源同步时钟模式,对保持时间有要求,不是线越短越好,有最小距离要求。保证时钟稳定,同频同相,冗余大即可。
* g) U5 s3 x. G* ^. f; o . W% a5 _ r' O. ]$ S$ `+ P8 A
有时,信号线有交叉的情况,此时,可以在PCB里调线,再反标回去,因为RAM的各个数据线不需要一一对应,只要有地方存储bit就可以了。注意:刷新线A10不能调,需要读取RAM ID时也不能调整。
( Z# |, O& C. f' u 0 h- e, ?2 J8 m
评价设计的好坏要看Margin(冗余),setup time margin和hold time margin,SDRAM/DDR工作没问题并不意味着margin小,也许在实验室可以正常工作,可一到现场就死机。频率漂移,时钟抖动,相差,介电常数变化等都会导致采样错误/不满足建立保持时间,而margin大就可以尽量抵抗这些干扰,在一个恶劣的环境里仍然保持稳定。; U3 a9 _- `" W0 y, U) f% h
6 @% j% b+ X( E' k& f8 ` 内存的表现形式有两种:内存颗粒和内存条。内存条自身有走线长度,需要计算在内。问个问题:内存条有3种安装方式:竖插、斜插、平插,你认为那种方式好呢?
/ ]! g8 e& }2 m: N
$ m p8 L( p$ m7 x附:时钟同步电路的类型
1 M8 _0 R; C) ]9 D& G: w
! `! W/ X3 L. L/ r* P5 S* i: Y- K* U$ z0 U3 t: W9 r
源同步就是指时钟选通信号clk伴随发送数据一起由驱动芯片发送。公共时钟同步是指在数据的传输过程中,总线上的驱动端和接收端共享同一个时钟源,在同一个时钟缓冲器(clock buffer)发出同相时钟的作用下,完成数据的发送和接收。
0 X$ ^- i4 F( `2 e7 t7 l9 Y* D" m3 R8 o9 b
公共时钟同步,将同一个时钟信号用时钟分配器分成2路,一路接发送器,一路接接收器。在时钟上升沿发送数据,在下一个周期的上升沿采样接收。速率在200-300MHZ以下。2 ?. ~5 ~% f p# U0 _, C; s8 K
源同步是时钟和数据一起发送,时钟稍稍滞后发送,传输速率主要由数据和时钟信号间的时差决定。因此速率快。2 \3 ]& W# o& @; Y2 J
公共时钟同步电路走线长度有最大值len <=,源同步电路走线长度有最小值<= len <=- y3 g% v8 U' U7 c
源同步关心保持时间,TBI+10bit数据和DDR的DQS+DATA属于源同步电路。/ Q. h9 ^( l# i/ s6 ~3 B: h
" g0 c& z- I0 z" d$ v
------ 等长线) R j4 @. b# Y# d
|时钟|----------------->发送端时钟
! s+ k6 U8 `6 g7 I4 ]$ l5 q clk--->|驱动|----------------->接收端时钟
% d8 E& _, `2 m; b% {; t8 }" g | |---
( `+ s0 U* t( W( Q$ V) \ ------ |# I6 V' U. _4 P Y1 ^- c
| |5 v7 m1 w( ^% c( V. D& w
---<---PLL补偿
& [0 _0 K2 S. `+ ~$ A( V 公共时钟同步- T6 x+ x4 n/ x6 B
x! H' ?) u6 z# J0 l% T -----0 {% G7 `. M# y" d2 h- z
|驱 |------------------>clk
. y e1 D) [/ A( { |动 |
2 ]; M1 {) B' z8 ]# F5 k; | | |================>data2 u- g+ T# X; l8 c' q. o. C
-----! f& t W5 q% e% w
源同步0 D$ y7 v" K* V. {3 K" u2 A
& z. w* T& W# R* E: U. V7 `* L
4 G( Z0 y) w; D% P2 g --------- ---------) a+ t' _$ P. Z1 O' h
-----< >< >--------. H4 r6 I: ^- ?0 A! m3 F
--------- ---------: U+ {1 @) S4 o& @
-----------+ }$ ~) d) C- Q/ o3 w9 w: x& [1 d+ l
| |' r# B2 y0 F3 b' e& v* C7 J1 Z
--------- -----------
" A+ |( {0 p& ~9 G4 c/ H |<--->|<-->|6 F5 f6 Q" r- O
建立 保持 |
评分
-
查看全部评分
|