EDA365电子论坛网

标题: [转个好资料]SDRAM和DDR布线指南 [打印本页]

作者: lzhcqu    时间: 2009-3-13 17:24
标题: [转个好资料]SDRAM和DDR布线指南
ecos应用是与硬件平台无关的,虽然开发板没有涉及到SDRAM和DDR,不过,在某些高端平台上使用ecos可能会遇到内存布线问题,为了完整叙述,这里一并给出说明。
. f, w5 }& x% B- S- i- @. ?    # w1 Y6 ?$ X# D
    很多人对内存布线感到迷茫,找不到切入点,不知如何下手,其实高速硬件设计的主要任务就是与干扰做斗争,内存布线也不例外。可以这样考虑:内存是做什么用的呢?是用来存储数据的,写入1读出1,写入0读出0,即保证数据访问正确。那么,在什么情况会导致数据访问错误呢?
! |" y0 X+ y" r' L    1、判决错误,0判成1,1判成0。可能参考电平不准(为什么不准?信号线内阻造成的压降),也可能是加性干扰,或者阻抗不匹配引起信号畸变。1 m8 S$ f3 T) E
    2、时序错误,不满足建立/保持时间,或者采样点相位错误,不在有效信号位置上。触发器需要维持一段时间的能量供给才能正常工作,这个时间就是建立/保持时间。; w5 K- n3 v/ Q* _  W" B
    那么只要解决好这两个问题,保证内存正确访问,你的内存电路就设计成功了。& U, d# L0 J0 M; i
   
+ O$ s8 y- C. V" L" r5 P$ ~    有了这个指导思想,内存布线就可以按部就班地完成。不过,不同的RAM类型,虽然目标都是避免判决和时序错误,但实现方法因工作模式不同而有较大差异。
' W5 d4 K0 a" s" Y2 H5 D    9 q: P* t8 s0 g. [
    高速系统一般采用低压信号,电压低,摆幅小,容易提高速度,降低功耗,但这给布线带来了困难,因为低压信号功率受信号线内阻影响大,是电压平方关系,所以要尽量减少内阻,比如使用电平面,多打孔,缩短走线距离,高压传输在终点用电阻分压出较低电压的信号等。SDRAM、DDR-I、DDR-II、 DDR-III信号电压一个比一个低,越来越不容易做稳定。
. S. s2 B) H9 W, P+ ^    ; D% D% u- d, ~! |3 a3 }# \2 T5 j
    电源供给也要注意,如果能量供给不足,内存不会稳定工作。7 n7 b8 ^" A8 T: n2 A, ~% k
   
- M- `, I5 d% r+ p; H    经常看到“等长布线”,其实,等长不是目的,真正的目的是满足建立保持时间,同频同相,采样正确。等长只不过可以最简单地实现这个目的罢了。要定量分析线长,必须按照时钟模型公式计算。时钟同步电路的类型在后面有简单介绍,这里只要知道SDRAM是公共时钟同步,DDR是源同步就可以了。
3 Y. D6 H0 c. z# z9 J   
5 i4 L: {& U- F0 M- M/ H$ Z3 D9 t    SDRAM是公共时钟同步模式,只关心建立时间,不关心保持时间。这些时间和各段飞行时间,经过各个门电路延时,clock skew,jitter,cycle等有关,需要按照公式精确计算。算出各种参数后下规则,让EDA软件辅助设计。选出最长的一根线,不需要计算什么,只要与之等长即可。有些软件能自己算,有些只能自己一段段计算,可以编程让EXCEL表格对某种格式的报告文件自动求和,也算半自动化了。
- E9 a) M. M  n7 v  U# C# F* S; E8 @4 a3 f3 V4 u; f3 t
    DDR的所有信号都要加匹配,不论多复杂,为了稳定性。
$ `7 ~/ p' l6 v0 T    始端匹配串接一个22/33欧电阻即可,终端匹配分为AC匹配和DC匹配,阻容可以对噪点抑制,戴维宁电路可以提供高压输电,使参考电平更准确,虽然直流功耗大,但比单个50欧功耗小。4 I3 I# Z* C% G1 ^; y  o6 x
    CPU和DDR都是高速器件,DDR热量高,应远离。而且DDR是源同步时钟模式,对保持时间有要求,不是线越短越好,有最小距离要求。保证时钟稳定,同频同相,冗余大即可。
! [) _3 d' `& g+ m: P# G2 e* e& d2 c   
# ~' |9 O) i: {    有时,信号线有交叉的情况,此时,可以在PCB里调线,再反标回去,因为RAM的各个数据线不需要一一对应,只要有地方存储bit就可以了。注意:刷新线A10不能调,需要读取RAM ID时也不能调整。
5 v" k9 \( X( y2 ]! z8 U6 a. H    $ x& n& o+ ]( l" J' P
    评价设计的好坏要看Margin(冗余),setup time margin和hold time margin,SDRAM/DDR工作没问题并不意味着margin小,也许在实验室可以正常工作,可一到现场就死机。频率漂移,时钟抖动,相差,介电常数变化等都会导致采样错误/不满足建立保持时间,而margin大就可以尽量抵抗这些干扰,在一个恶劣的环境里仍然保持稳定。5 n$ U& Y& ?+ S$ @6 y4 H% T3 A5 E9 P
    ( I% F; |7 c0 A- w' Q7 o
    内存的表现形式有两种:内存颗粒和内存条。内存条自身有走线长度,需要计算在内。问个问题:内存条有3种安装方式:竖插、斜插、平插,你认为那种方式好呢?
/ c0 E9 C# [* p8 }5 C7 F# t2 a% ]# g7 w/ A  o( F
附:时钟同步电路的类型
" n& Y& x' J3 @* ?
/ y3 r  v, w" ^
+ a* B1 H4 }: y: S6 }    源同步就是指时钟选通信号clk伴随发送数据一起由驱动芯片发送。公共时钟同步是指在数据的传输过程中,总线上的驱动端和接收端共享同一个时钟源,在同一个时钟缓冲器(clock buffer)发出同相时钟的作用下,完成数据的发送和接收。
& t6 t+ o( u1 b) W9 t6 `) R$ z
) W7 O. k$ _3 E/ p4 X; U0 A1 c    公共时钟同步,将同一个时钟信号用时钟分配器分成2路,一路接发送器,一路接接收器。在时钟上升沿发送数据,在下一个周期的上升沿采样接收。速率在200-300MHZ以下。
/ b: Z6 P! W0 j$ k    源同步是时钟和数据一起发送,时钟稍稍滞后发送,传输速率主要由数据和时钟信号间的时差决定。因此速率快。
9 C5 v3 P$ v$ G+ u# R    公共时钟同步电路走线长度有最大值len <=,源同步电路走线长度有最小值<= len <=
. ?1 y2 L0 v1 W& l0 ~! K    源同步关心保持时间,TBI+10bit数据和DDR的DQS+DATA属于源同步电路。- m% \( a+ W* d: W1 _$ x  m
% K3 Q5 A6 b* a
          ------       等长线
+ @1 x) q5 d7 Q3 ~# C1 B          |时钟|----------------->发送端时钟
1 v6 S# j$ F7 A) Q( l! S   clk--->|驱动|----------------->接收端时钟
" P9 [6 B3 G" r6 o, U" Z          |    |---
7 R6 x$ O5 w0 b# V          ------  |
1 k  X( k' u$ o1 |. z1 R6 b  `. E: G            |     |
1 m2 R7 @" n( d4 f! q            ---<---PLL补偿
3 i3 x( _& Z# I, A         公共时钟同步
+ [/ N. K1 [! v. `: }6 b+ W  b8 A* d* W- D1 i
          -----
6 U2 O3 X+ d$ S6 i8 u* m+ m' F1 r          |驱 |------------------>clk6 {( w# g+ e* Z3 x8 H' w8 M
          |动 |
5 _3 n. h- C) H2 ]          |   |================>data
. @. L  ]3 ]) i* Q; a/ o* \. x          -----% R+ F7 D3 L% ^' {1 m4 Z0 f
          源同步0 [7 B% k0 _$ d* J" J3 `
8 r: {6 m- z5 e: S& E/ p3 I
% L! @) m& }) O* H  s" u
          ---------  ---------
/ O& n. T: C4 L& `7 o    -----<         ><         >--------
1 F& `7 Q& X/ A4 m* z# H          ---------  ---------) K# _' z, G5 ~* j8 [
              -----------
; F8 _* q9 F( x/ K8 j6 T+ \8 M4 `: \; ~              |         |# ]0 D5 }" C1 J+ b# e+ k
      ---------         -----------8 Z7 {0 w- ]+ r$ G8 ^2 @9 I
        |<--->|<-->|) a, ?0 u; o" L  K5 B  e+ \. x
         建立   保持
作者: forevercgh    时间: 2009-3-14 17:55
layout工程师最好还是一个好的电路工程师
作者: fyq176017    时间: 2009-3-28 09:07
好帖
作者: pic    时间: 2009-3-28 23:04
谢谢
作者: jesuswilliam    时间: 2009-4-12 08:37
不是很详尽啊,呵呵,楼主之前布SDRAM,有心得了吧。
作者: Terry103    时间: 2009-4-12 09:11
楼主真是好人啊,学习了
作者: xiaoyilong2010    时间: 2012-2-10 09:35
看不懂呀还是学习一下‘
3 J% v7 t4 ]: t
作者: ai小叶    时间: 2012-2-22 10:39
时序解释了很多一直理解不了的东西,谢谢!
作者: icebluexiong    时间: 2012-3-5 13:20
光看这 只能了解大概
作者: dengzs2008    时间: 2012-6-8 22:11
还行,我还未接触到DDR\SDRAM布线,所以看了半天切入点我还是没找到。
) `& Z( U8 D7 d: ]+ M& x我的问题是:DDR或SDRAM布线的全过程是什么样的?
8 u, N* q* p0 {$ @1 c% [/ G; H我目前的理解  1.导入网络表前的原理图设计可以运用仿真工具建立模型或是调用别人现成的模型仿真,计算出什么匹配电阻、什么样的链路结构、信号线多长啊之类的什么东西。
7 `; |2 r- q% y& H8 L: R6 T                    2.导入网络表,对相应的网络进行规制限制,走蛇形线,该等长的网络要等长,走多长的线工具仿真数据来定义。
: a& c4 }0 V1 V6 l8 E; N8 d                    3.走线完后再运用另外一个工具做板级仿真,根据信号的完整性仿真,对线路进行微调,直至信号仿真得出好的信号。
作者: Dylan_Ho    时间: 2012-6-12 11:09
超出了我的理解范围




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2