DDR3基础

一、DDR引脚功能介绍

在这里插入图片描述

信号类型信号名称描述
数据总线DQ[7:0]8位数据总线,用于传输数据
地址总线A[12:0]13位地址总线,用于选择内存中的特定位置
Bank地址BA[1:0]2位Bank地址,用于在多Bank在内存架构中选择特定的内存Bank
数据时钟同步DQS,/DQS用于同步数据传输

Command Bus 命令总线
/CS片选信号
/RAS行地址选通信号
/CAS列地址选通信号
/WE写使能信号
时钟使能CKE时钟使能信号,用于控制时钟的启用
数据屏蔽MASK数据屏蔽信号,用于屏蔽某些数据引脚
时钟信号CK,/CK差分时钟信号,所有控制和地址输入信号均在时钟信号CK的上升沿以及/CK的下降沿交汇时刻进行采样,另外,DQS、/DQS的参考点与CK和/CK的交叉点相对应
动态电阻调节ODT用于调节内存芯片内部的动态电阻,优化信号完整性和减少反射噪声,通产可配置为40Ω、60Ω、100Ω
数据屏蔽DM数据屏蔽信号,用于屏蔽某些数据引脚以减少功耗或用于特定的内存操作

二、内部框图功能模块介绍

在分析DDR3的内部结构时,加入逻辑控制思维可以帮助我们更好地理解这些模块之间如何协同工作,尤其是在时间和状态上的调度控制。

2.1. 时序逻辑控制

时序逻辑控制的核心在于时钟信号,DDR3内存的操作依赖时钟同步,所以时钟信号对于控制各模块之间的协调工作至关重要。关键点包括:

  • 双倍数据速率 (DDR):DDR3之所以称为“双倍数据速率”,是因为它在时钟信号的上升沿和下降沿都执行数据传输操作。这意味着时钟信号不仅仅控制操作的节奏,还决定了数据传输的瞬间时机。
  • 多级流水线操作:在数据流入和流出存储阵列的过程中,DDR3内部的多个模块会以流水线的形式进行处理。例如:
  • 地址信号被锁存后需要经历行地址解码、列地址解码、数据缓冲、再到最终的数据读取/写入。每一个步骤都在时钟周期内严格进行,以确保不会出现数据竞争或定时错误。
  • FIFO、数据多路复用器、数据驱动器等模块通过控制时序,将数据流稳定且高效地传递至下一级。
  • 延迟锁定环 (DLL) 和时钟校准:DLL负责调整时钟信号的相位,使得数据的采集和写入能够在精确的时间点进行。DLL的控制通过调整延迟来确保所有时序操作的同步性。对于逻辑控制而言,这是一个重要的校准机制,避免了高速传输中出现的时序偏差问题。
2.2 状态机控制

状态机控制涉及DDR3中的不同操作模式(如读、写、刷新等)的调度和管理。通过状态机来组织控制逻辑,DDR3能够有序地在不同状态之间切换,并正确执行命令。

  • 命令解码:DDR3的命令接口接收来自控制器的命令(如读、写、刷新等)。每个命令会触发内部状态机的状态转移。例如,在读操作时,命令解码器识别到READ命令后,状态机会进入“读模式”。此时,行地址和列地址解码器会被激活,数据流从存储阵列中提取出来,传递给FIFO和读驱动器。在写操作时,命令解码器识别到WRITE命令后,状态机会进入“写模式”,将外部数据写入到指定的存储单元中。
  • 刷新操作控制:DRAM(如DDR3)需要周期性刷新,防止存储单元中的电荷泄露导致数据丢失。刷新控制器通过时钟计数来定期触发刷新操作。刷新操作通常会与读写操作的调度进行协调,以避免发生冲突。当刷新请求到来时,状态机会进入刷新状态,暂停其他操作,执行对指定行的刷新操作。
  • 突发模式控制 (Burst Mode):DDR3支持突发操作模式,即在单个时钟周期内传输多个连续的数据块。这是通过状态机控制的:状态机一旦进入突发模式,会持续对FIFO执行多次读写操作,直到传输完成。
  • 在具体操作过程中,控制逻辑的主要任务是确保各个模块在适当的时间点执行正确的操作。以下是几个关键点:
  • 命令与数据的同步:控制逻辑需要根据接收到的命令,触发相应的数据传输操作。不同的操作(如读、写、刷新)会有不同的逻辑路径,控制逻辑的任务是确保在命令解析后,各模块能够同步进行操作。
  • Bank之间的并行操作:DDR3支持多Bank操作,控制逻辑可以调度不同Bank并行工作,提高效率。例如,在对Bank 0执行读操作的同时,控制逻辑可以安排对Bank 1执行写操作,最大化数据带宽。
  • 数据的校验和纠错:部分高级DDR3内存支持ECC(错误纠正码)。控制逻辑会负责在数据传输过程中执行数据校验和纠错操作。这是一个附加的逻辑层,它会在数据传输链路中实时插入纠错码计算,并在数据错误时自动纠正。
  • ODT(片上终端)控制:通过动态调整终端电阻,控制逻辑可以防止数据传输过程中的信号反射和干扰。这是通过开关和电阻网络动态调节的,需要精确的时序和状态控制。
接收命令
解码命令
行命令
列命令
刷新命令
预充电命令
激活行地址
激活列地址
行地址稳定
列地址稳定
选择Bank
激活Bank
准备数据传输
数据读写
数据读取完成
数据写入完成
刷新完成
预充电完成
命令执行完成
空闲
命令接收
命令解码
行激活
列激活
刷新
预充电
列地址设置
行地址设置
地址锁定
Bank选择
Bank激活
数据传输准备
数据传输
读数据
写数据
[行激活,
列激活,
刷新,
预充电]
空闲控制

三、DDR PCB设计

3.0 FPGA封装

8位芯片采用78球FBGA封装,而16位芯片则配备96球FBGA封装。

3.1 整体布局考量

在DDR布局时,CPU与DDR的距离应优先参考官方DEMO中的建议。如果板级结构允许,可以适当增加距离,但不能过远。如果无法满足前两者条件,则可以按常规经验,将距离设定为两个0402电阻的长度。同时,扇出规则应根据PINCH(引脚间距)大小来确定扇出孔的尺寸,布线则需按照PINCH大小调整走线宽度,并确保等长走线的间距符合3W原则,以减少信号串扰。

3.2 DDR T形拓扑

在传统的DDR2设计中,通常建议(如果不是必需的)对于地址线和控制线(具体取决于所使用的SDRAM数量)采用平衡T型拓扑。这样做是为了均衡每个SDRAM设备的信号延迟。然而,在DDR3的实现中,不再普遍采用平衡T线路拓扑,而是倾向于使用Fly-by拓扑,后者更适应于高性能SDRAM的需求。

3.3 DDR T形拓扑的局限性

在DDR2设计中,使用平衡T型线路拓扑的不足之处在于,它可能会导致不同程度的额外延迟,这是因为每个单独的网络包含了stub(短截线)。在地址和控制网络上增加多个负载会限制信号的带宽。此外,地址/控制网络与数据网络之间的偏斜也往往是带宽受限的一个因素。这种设计在处理高频信号时可能会遇到性能瓶颈。

3.4 Fly-by拓扑

DDR3的Fly-by拓扑为控制和地址信号的布局与路由带来了优势。在这种拓扑结构中,来自DSP DDR3控制器的每个信号依次从一个SDRAM路由至下一个SDRAM,从而消除了在DDR2设计中常见的stub(短截线)或多余迹线所引起的反射。

3.5 Fly-by拓扑的局限性

在DDR3设计中采用Fly-by拓扑的缺点是,从控制器到DDR3 SDRAM的信号会有诱导延迟。实际上,每个DDR3 SDRAM的延迟都是不同的。这种延迟差异通过读取和写入均衡来进行校正或补偿,以适应不同控制器到DRAM的长度差异。以下是设计时需要考虑的几个要点:

  • 数据网络通常是点对点的,除非设计为双秩实现。
  • 时钟网络是点到多点和端到端的(这与控制、命令或地址网络不同)。
  • 控制网络是点到多点的,并且端接至VTT。
  • 地址/命令网络也是点到多点的,并且端接至VTT
3.6 JEDEC拓扑

3.7 差分布局
  • 为所有布线的时钟信号保持一个连续的接地基准,避免跨平面,以便为回流电流提供一条低阻抗的路径;
  • 端接电阻靠近RTT应该靠近DDR3;
  • 注意时钟信号的间距要求;

五、DDR长度匹配概述

5.1 时钟信号组
  • CK/CK对必须以差分方式布线。
  • 所有时钟对需要100欧姆(±5%)的差分阻抗。
  • 每个CK/CK对作为单独的路由组进行管理。
  • 每个CK/CK对必须顺序路由到同一排名下的所有SDRAM。
  • 所有时钟飞线组的网络必须沿着从控制器到每个SDRAM的相同路径顺序路由,然后到交流VTT终端。
  • 所有时钟对必须从控制器到每个SDRAM单独进行±1mil的长度匹配。
  • 每个长度匹配段中的时钟飞线组的所有网络必须具有相同数量的通孔。
  • 时钟对分支必须小于40mil,并且在±1mil内进行长度匹配。
  • 所有时钟对网络必须紧邻坚实的地平面布线。
5.2 数据组
  • 数据选通(DQS)对需要100欧姆(±5%)的差分阻抗。
  • DQS与/DQS对必须以差分方式布线。
  • 点对点布线需要50欧姆(±5%)的单端阻抗。
  • 每个数据组内的所有网络必须具有相同数量的通孔,最多两个。每个字节组内每个信号的数量必须匹配。
  • 同一字节道组内的所有网络应该在同一层布线,以消除通孔带来的长度偏斜。
  • 所有数据组网络必须紧邻坚实的地平面布线。
  • 数据选通对必须在彼此之间进行±1mils的长度匹配。
  • 同一数据组内的所有网络必须进行±10mils的长度匹配。
  • 字节道内的数据位可以交换以简化布线。
  • 数据组网络是点对点布线,没有VTT终端。
5.3 地址和命令信号组
  • 需要50欧姆(±5%)的单端阻抗。
  • 所有地址和命令线路必须按照相同的路径顺序从控制器路由到每个SDRAM,然后延伸至VTT终端。
  • 所有地址和命令线路必须从控制器到每个SDRAM单独进行长度匹配,且在时钟信号的±20mil范围内。
  • 每个长度匹配段中的地址和命令线路必须具有相同数量的通孔。
  • 地址线路不得交换以简化布线。
  • 地址和命令线路的分支长度必须小于80mil,并且在±10mil范围内进行长度匹配。
  • 所有地址和命令线路必须紧邻坚实的地平面或坚实的DVDD15电源平面进行布线,并配备适当的分布式去耦,以提供高频信号返回路径。
  • 所有地址和命令线路应尽可能在接近板中心或上层的布线层上布线,以最小化通孔偏斜。
5.4 控制信号组
  • 需要50欧姆(±5%)的单端阻抗。
  • 所有控制线路必须按照相同的路径顺序从控制器路由到每个SDRAM,然后延伸至VTT终端。
  • 所有控制线路必须从控制器到每个SDRAM单独进行长度匹配,且在时钟信号的±20毫英寸范围内。
  • 每个长度匹配段中的控制线路必须具有相同数量的通孔。
  • 控制线路的分支长度必须小于80毫英寸,并且在±10毫英寸范围内进行长度匹配。
  • 所有控制线路必须紧邻坚实的地平面或坚实的DVDD15电源平面进行布线,并配备适当的分布式去耦,以提供高频信号返回路径。
  • 所有控制线路应尽可能在接近板中心或上层的布线层上布线,以最小化通孔偏斜。
5.5 DDR VREF电压轨
类别要求/建议
VREF电源要求Vref应为VDDQ一半的低功耗基准电压,与VTT的电压差需保持在±40 mV范围内。
VREF电源连接若系统不超过4个DDR3元件,采用两个1% 1 kΩ电阻来生成Vref。
每个DDR3设备应单独生成Vref,避免集中生成后分配。
去耦电容放置位置每个Vref引脚旁放置0.01μF和0.1μF电容(推荐0402尺寸或更小)。
在电源源头放置0.1μF电容。
布线
宽度与长度:Vref走线宽度至少30 mil,长度尽可能短。
间距:Vref与其他网络间距至少15 mil。
布线层Vref网络应在顶层布线,并进行地线隔离或地屏蔽处理。
5.6 DDR VTT电压轨
类别要求/建议
VTT电源要求VTT电压设置为VDDQ的一半,误差±3%以内;配备至少10 μF滤波电容器;通过至少1%精度的电阻分压从VDDQ获取;必要情况需要使用专用的Sink电源芯片
电源稳定性与布局配置充足的电容器确保VTT电源稳定性。 VTT与SDRAM引脚连接尽可能短,并进行去耦。
噪声限制VTT引脚上的交流噪声和直流噪声峰-峰值不超过±2%或1.5 mV。
5.7 内容汇总表

对5.1~5.6内容汇总

走线要求时钟线数据类信号** 地址/命令/控制信号**

单端走线长度要求
1. 每组DQ信号线与其对应的DQS信号线的走线长度差≤10Mil; 2. 不同组的数据线,误差≤100Mil;以时钟为参考,走线长度与时钟信号的长度差≤100Mil;

差分走线长度要求

差分线内两根线间距保持一致。差分时钟线长度差≤10Mil
差分线内两根线间距保持一致,差分时钟线长度差保持在10mils以内,不同差分信号线对之间的长度差≤100mil。
换层及过孔1. 一段走线内过孔不超过两个; 2. 过孔相邻处加旁路电容或地过孔。走线上过孔不超过两个
信号线阻抗匹配差分阻抗 75-100Ω, 参考平面完整。单端信号线阻抗可以控制在40-50Ω之间,参考平面完整; 差分阻抗75-100Ω, 参考平面完整;单端信号线阻抗可以控制在40-50Ω之间, 参考平面完整;
信号间干扰抑制与其它信号线保持4W以上:同组信号线3W以上, 不同组之间4W以上。同组信号线3W以上, 不同组之间4W以上。
其它要求从第一片到最后一片DDR3颗粒之间的走线长度≤6000 Mil:1. 按照数据线从低至高的顺序从第一片至最后一片颗粒进行布线,并且端接电阻放置在最后一片DDR颗粒之后; 2. 从第一片到最后一片颗粒之间的走线长度≤6000 Mil;
参数DDR1DDR2DDR3
VDDQ2.5±0.2V1.8±0.1V1.5±0.075V
VREF(0.49-0.51)*VDDQ(0.49-0.51)*VDDQ(0.49-0.51)*VDDQ
VREF AC Noise±2% VREF(dc)±2% of VREF(dc)±1% of VREF(dc)
VTTVREF±40mVVREF±40 mVVREF±40 mV
VIH(ac)VREF+310 mVVREF+ 250mVVREF+ 175 mV
VIL(ac)VREF-310 mVVREF-250 mVVREF-175mV
VIH(dc)VREF+150 mVVREF+ 125mVVREF+ 100 mV
VIL(dc)VREF-150 mVVREF- 125 mVVREF-100 mV

NOTE:

  • 输入信号与参考电压VREF进行比较。
  • VREF = VDDQ/2,并且预期会跟随VDDQ变化。
  • 终端电压VTT = VREF,并且预期会跟随VREF变化。

七、DDR的初始化

DDR3初始化的流程大致如下:

  1. 电源启动(Power-up):确保在复位信号解除后至少需要500微秒才能启用控制器。
  2. DDR复位(DDR Reset):复位信号至少保持200微秒。
  3. DDR3的预充电(DDR3’s Conduct Precharge):进行预充电操作。
  4. DDR控制器初始化(DDR CTRL INIT):稳定的时钟信号(CLKS)
  5. 芯片选择启用和DDR时钟开始(Chip selects enabled and DDR clocks begin):芯片选择信号启用,DDR时钟开始。
  6. 控制器启动(Controller Started):MEM_EN=1,表示内存使能。
  7. DRAM初始化(DRAMs Initialized):执行DRAM初始化。
  8. ZQ校准(ZQ Calibration):进行ZQ校准。
  9. 写入调整(Write Leveling):进行写入级别的调整。
  10. 读取调整(Read Adjust):进行读取级别的调整。
  11. 初始化完成(Init Complete):发出模式寄存器命令。
  12. ZQCL发出(ZQCL Issued):发出ZQCL命令(512个时钟周期)。
  13. DLL锁定时间(DLL lock time):由控制器自动处理。
  14. 自动CAS到前导码(Automatic CAS-to-Preamble):也称为读取调整,以及数据到存取时钟的调整。
  15. 准备用户访问(Ready for User accesses):初始化完成,准备用户访问。

(https://www.ti.com/lit/an/sprabi1d/sprabi1d.pdf?ts=1725724624833)

本文是作者在华为工作期间写的一篇对DDR3全面的总结,当时有好几年经常接触DDR3的设计与测试,期间总结了大量的知识点,于是业余时间汇总起来写成本文,因为DDR3属于业界通用的器件,其中知识也不涉及到公司秘密,所以分享出来供大家参考。 文章摘要: DDR,在PC、手机、通信设备等产品中广泛应用。而随着技术发展以及用户需求提高,内存不断升级,从SDRAM, DDR, DDR2、再到DDR3,现在DDR4也开始大规模应用。其特点就是速率、容量不断提高,而且性能、功耗方面也不断优化。内存技术是很多软件、硬件、逻辑、测试工程师们关注的重点。但由于其复杂程度较高,同时,英文资料复杂,理解困难,而中文资料能较全面详细描述DDR3的文献匾乏、零散。记得刚接触DDR3时真是一头雾水,一直在其表面徘徊很久。身边小伙伴也是同感。 作者所从事的硬件领域常常接触DDR,在这方面有一些难忘的经历,期间也积累了一些知识。出于经验传承的目的,特写下本文。内存已经历多代,但很多知识是相通的,本文拿当前主流的DDR3作为重点去讲解。出于能力水平及篇幅原因,本文未能周全深入描述DDR3所有特性或者某些地方存在错误,还望读者谅解和指正。同时,本书在一些地方引用了其他文献中的图文,会在相应地方加以说明。在此,衷心希望本文能给能给想了解DDR3技术的同学提供帮助。 本文分为以下八章内容: 第一章 DDR3基础 第二章 DDR硬件设计 第三章 DDR3几个关键技术 第四章DDR3工作流程、参数详解 第五章 DDR3训练 第六章 DDR3信号完整性测试 第七章 DDR3问题案例 第八章 SDRAM、DDR、DDR2、DDR3、DDR4对比
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值