1.DDR的电源:DDR的电源分为4种
l 主电源VDD&VDDQ&VDDL
主电源的要求是VDDQ=VDD,VDDQ 是给IO buffer供电的电源,VDD 是给core供电但是一般的使用中都是把VDDQ和VDD 合成一个电源使用。有的芯片还有VDDL,是给DLL供电的,也和VDD使用同一电源即可。
电源设计时,需要考虑电压,电流是否满足要求,电源的上电顺序和电源的上电时间,单调性等。
电源电压的要求一般在±5%以内。
电流需要根据使用的不同芯片,及芯片个数等进行计算。由于DDR 的电流一般都比较大,所以PCB 设计时,如果有一个完整的电源平面铺到管脚上,是最理想的状态,并且在电源入口加大电容储能,每个管脚上加一个10nF~100nF的小电容滤波。
l 参考电源Vref
Vref 为参考电压,要求精准恒定,用于判断信号高低电平的依据。
所有的DDR信号其实都是差分信号,其都是相对于Vref的,所以也都是差分信号,更详细的内容参见“高速电路设计实践”中关于DDR的章节。
参考电源Vref要求跟随VDDQ,并且Vref=VDDQ/2,所以可以使用电源芯片提供,也可以采用电阻分压的方式得到。由于Vref一般电流较小,在几个mA~几十mA 的数量级,所以用电阻分压的方式,即节约成本,又能在布局上比较灵活,放置的离Vref管脚比较近,紧密的跟随VDDQ电压,所以建议使用此种方式。需要注意分压用的电阻在100~10K均可,需要使用1%精度的电阻。
Vref参考电压的每个管脚上需要加10nF的电容滤波,并且每个分压电阻上也并联一个电容较好。
l 用于匹配的电压VTT
VTT主要为DDR的地址、控制线等信号的信号完整性而提供的终端电阻电源,同时JEDEC标准JESD8-15(用于SSTL_18)定义了VTT要跟随VDDQ
VTT,用于上下拉电阻的电源,电流大,波动大,噪声也大。
VTT为匹配电阻上拉到的电源,VTT=VDDQ/2。DDR 的设计中,根据拓扑结构的不同,有的设计使用不到VTT,如控制器带的DDR器件比较少的情况下。如果使用VTT,则VTT 的电流要求是比较大的,所以需要走线使用铜皮铺过去。并且VTT要求电源即可以提供电流,又可以灌电流(吸电流)。
一般情况下可以使用专门为DDR 设计的产生VTT 的电源芯片来满足要求(曾经使用过程中用了简单的线性稳压器也没发现出现什么问题,这种方式还是不建议的!)。
而且,每个拉到VTT 的电阻旁一般放一个10nF~100nF的电容,整个VTT 电路上需要有uF级大电容进行储能。
一般情况下, DDR 的数据线都是一驱一的拓扑结构,且DDR2和DDR3内部都有ODT做匹配,所以不需要拉到VTT做匹配即可得到较好的信号质 量。而地址和控制信号线如果是多负载的情况下,会有一驱多,并且内部没有ODT,其拓扑结构为走T 点的结构,所以常常需要使用VTT 进行 信号质量 的匹配控制。
一般要确保VTT至少有150mil的走线宽度。
//参考文档:https://blog.csdn.net/metersun/article/details/79786963?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control//
//VDD是给core供电,VDDQ是给IO buffer供电,都是把VDDQ和VDD合成一个电源使用,VDDQ=VDD。有的芯片还有VDDL(DDL:延迟锁相环),给DDL供电,也和VDD使用同一个电源。
参考电源Vref要求跟随VDDQ,并且Vref=VDDQ/2,由于vref电流一般比较小,所以使用电阻(100-10k)分压的方式。//
2.DDR的核心频率,时钟频率,数据传输频率
DDR1在传输数据的时候在时钟脉冲的上升沿和下降沿都传输一次,所以数据传输频率就是核心频率的2倍。DDR2内存将核心频率倍频2倍所以时钟频率就是核心频率的2倍了,同样还是上升边和下降边各传输一次数据,所以数据传输频率就是核心频率的4倍。
DDR3内存的时钟频率是核心频率的4倍,所以数据传输频率就是核心频率的8倍了
所以1066,800是指数据传输频率.时钟频率为533,400.
//参考文档:https://blog.csdn.net/a133760/article/details/104492025/?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-2&spm=1001.2101.3001.4242//
3.DDR的拓扑结构
首先DDR1/2采用星形拓扑,DDR3采用菊花链结构。拓扑结构只影响地址线的走线方式,不影响数据线。
当信号频率低于800MHZ的情况下,星形和菊花链都能满足系统需要,但是当速率达到1000MHZ的时候星形就不能满足。原因在于星形拓扑结构过长的支路走线长度,在不添加终端电阻的情况下很难和主干道实现阻抗匹配。
//参考文档:https://blog.csdn.net/qq405180763/article/details/41777529//
星形拓扑:保证每个分支接收端负载同时收到信号,每条分支上一般都需要终端电阻,终端电阻的阻值应该与特性阻抗匹配。星形拓扑可以有效避免时钟,地址和控制信号不同步的问题。
菊花链拓扑:菊花链确保各个支链到到信号主干道的长度尽量短。菊花链拓扑牺牲了时钟,地址,控制信号的同步,最大特点降低了分支线的长度,避免分支对主干信号的反射干扰。
在频率低于800MHZ的时候,两种拓扑都能满足性能。但当频率高些的时候T形拓扑不能满足。原因在于支链走线长度过长,在不添加终端电阻的情况下很难实现阻抗匹配。菊花链主要优势是支路走线短,一般认为支链长度小于信号上升传播长度的1/10.
4.DDR引脚说明
|
信号名 |
方向 |
功能描述 |
|
时钟线 |
||
|
CK,~CK |
输入 |
差分时钟输入;所有的地址,控制信号都是通过CK的上升沿和~CK的下降沿进行采样的 |
|
CKE |
输入 |
时钟使能:CKE为高电平时,启动内部时钟信号,设备输入缓冲以及输出驱动单元。CKE为低电平时则关闭上述。当CKE为低电平时,可使设备进入PRECHARGE POWER DOWN、SELF-REFRESH以及ACTIVE POWER DOWN模式。CKE与SELF REFRESH退出命令是同步的。在上电以及初始化序列过程中,VREFCA与VREF将变得稳定,并且在后续所有的操作过程中都要保持稳定,包括SELF REFRESH过程中。CKE必须在读写操作中保持稳定的高电平。在POWER DOWN过程中,除CK_t,CK_c,ODT以及CKE以外的所有输入缓冲都是关闭的。在SELF REFRESH过程中,除CKE以外的所有输入缓冲都是关闭的。在正时钟上升边沿采样。 |
|
RESET# |
输入 |
复位,低有效。 |
|
地址 |
||
|
CS_n |
输入 |
芯片片选信号:当CS_n锁存为高电平时,所有的命令都被忽略。在正时钟上升沿采样。 |
|
A0-A9,A10,A11,A12,A13 |
输入 |
地址输入。为Active命令提供行地址,和为READ/WRITE命令的列地址和自动预充电位(A10) |
|
BA0,BA1,BA2 |
输入 |
BANK地址输入,定义ACTIVE,READ,WRITE或PRECHARGE命令是对那个BANK操作。 |
|
数据 |
||
|
DQ0-DQ15 |
I/O |
数据输入输出。双向数据,DQ[15:0]参考VrefDQ |
|
控制线 |
||
|
RAS,CAS,WE |
输入 |
命令/地址输入信号。RAS(Row Address Strobe地址选通脉冲),CAS同上。命令代码的一部分。 |
|
ODT |
输入 |
On-Die Termination,片上终端电阻:ODT信号可使能DDR SDRAM内部的RTT_NOM终端电阻。(片上终端使能。ODT使能(高)和禁止(低)片内终端电阻)该设计通过允许DRAM控制器独立地打开/关闭任一或所有DRAM设备的终端电阻来改善存储器通道的信号完整性。 DRAM通过ODT控制引脚为每个DQ,DQS_t及DQS_c和DM开启/关闭终端电阻。与其他输入命令不同,ODT引脚直接控制ODT动作,不对其进行时钟采样。 在自刷新模式下不支持ODT。可以选择在CKE掉电期间通过模式寄存器启用ODT操作。 请注意,如果在掉电模式下启用ODT,则在掉电期间可能无法关闭VDDQ(I/O供电),同时DRAM也会在读操作期间无法关闭。 |
|
DM_n |
输入 |
输入数据掩码:DM_n信号是作为写数据的掩码信号,当DM_n信号为低电平时,写命令的输入数据对应的位将被丢弃。DM_n在DQS的两个条边沿都采样 |
|
DQS,DQS# |
输入/输出 |
数据选通。读时是输出,边缘与读出数据对齐。写时是输入,中心与写数据对齐。 |
|
DQS_T/DQS_C |
输入/输出 |
差分终端数据选通信号:差分信号对,作输入时与写数据同时有效,作输出时与读数据同时有效。读数据时与边沿对齐,但是跳变沿位于写数据的中心。DDR4 SDRAM仅支持选通信号为差分信号,不支持单根信号的数据选通信号。(终端数据选通。当TDQS使能时,DM禁止,TDSQ和TDDS提供终端电阻) |
|
电源 |
||
|
VDD/VDDQ |
供电 |
电源供电 |
|
VSS/VSSQ |
Gnd |
Gnd |
|
VDDL |
供电 |
延迟锁相环供电 |
|
VSSDL |
Gnd |
DLL Gnd |
|
Vref |
供电 |
参考电 |
DM与DQST引脚复用在DDR3
\\https://zhuanlan.zhihu.com/p/97491454\\
\\https://blog.csdn.net/shanghaiqianlun/article/details/6976804?utm_source=blogxgwz7\\
DDR的ODT,DM等说明://https://www.cnblogs.com/zhongguo135/p/8486979.html\\
5.DDR大小计算
计算单片DDR的大小为:
8M*16bit*8banks=1024Mb=128MB.
6.布局注意事项
PCB布线时,单端走线50ohm,差分走线100ohm.
DQS信号相当于数据信号的参考时钟,他在走线时需要保持和clk信号保持等长。
DDR3布线的等长要求,归结起来分为两类:数据(DQ,DQS.DQM):组内等长,误差控制在20mil,组间不需要考虑等长;地址,控制,时钟信号:地址,控制信号以时钟做参考,误差控制在100mil,确保DDR颗粒能够获得足够的建立和保持时间。
关于等长的目的就是为了等时,绕等长需要注意一下几点:
l 确认芯片是否有pin-delay,绕线时确保pin-delay开关已经打开。
l 同组信号走在同层,保证不会因换层影响实际的等时。在不同层的传播速度不一样,所以走线时表层走线尽量短,差别尽量小。
l 蛇形绕线单线按3W,差分按照5W(线间距)。组间距5H。
l 对于同一组数据线以及对应的DQ STROBE线,如DQ[7:0],DQM0,DQS0,DQS0#,应布在同一层,以减小信号偏离。
l DDR信号线(尤其时钟线)最好选择地平面做参考面,DDR信号换层的时候最好要带上回流地孔。//http://murata.eetrend.com/article/2019-04/1002665.html//
//https://www.eda365.com/forum.php?mod=viewthread&tid=64113&page=1&_dsign=044803ec//