本文主要介绍DDR的发展历史及相关标准,每一代的特性,工作原理,引脚定义。
DDR全称为Double Data Rate Synchronous Dynamic Random Access Memory,从1996年三星公司提出到现在已经发展到了第六代。
1、DDR发展历程及相关标准
DDR发展至今,主要出现了如下一些版本,及其对应的标准及工作电压如下表所示:
类别 | 标准 | 工作电压 |
DDR | JESD79F | 2.5V±0.2V or 2.6V±0.1V(400M) |
LPDDR(mDDR) | JESD209B | 1.8 |
DDR2 | JESD79-2F | 1.8V±0.1V |
LPDDR2 | JESD209-2F | 1.2 |
GDDR2 | SDRAM3.11.5.6 | 1.8 |
DDR3 | JESD79-3E | 1.5V±0.075V |
LPDDR3 | JESD209-3C | 1.2 |
DDR3L | JESD79-3-1 | 1.35V(1.283~1.45V) |
DDR3U | JESD79-3-2 | 1.25 |
GDDR3 | SDRAM3.11.5.7 | 1.8 |
DDR4 | JESD79-4B | 1.2V±0.06V |
GDDR4 | SDRAM3.11.5.8 | 1.8 |
LPDDR4 | JESD209-4B | 1.1V |
LPDDR4X | JESD209-4-1 | IO电压为0.6,其他和LPDDR4一样 |
DDR5 | JESD79-5 | 1.1 |
LPDDR5 | JESD209-5 | 1.1/1.05 |
GDDR5 | JESD212C | 1.5 |
GDDR5X | JESD232A | 1.35 |
GDDR6 | JESD250B | 1.35 |
LPDDR SDRAM, is a type of double data ratesynchronous dynamic random-access memory that consumes less power and istargeted for mobile computers. It is also known as Mobile DDR, and abbreviatedas mDDR.
LPDDR2 defines a more dramatically revisedlow-power DDR interface. It is not compatible with either DDR1 or DDR2 SDRAM,but can accommodate either:
LPDDR2-S2: 2n prefetch memory (like DDR1),
LPDDR2-S4: 4n prefetch memory (like DDR2),or
LPDDR2-N: Non-volatile (NAND flash) memory.
Low-power states are similar to basicLPDDR, with some additional partial array refresh options.
GDDR2 memory used on graphics cards is notDDR2 per se, but rather an early midpoint between DDR and DDR2 technologies.
The DDR3L (DDR3 Low Voltage) standard is anaddendum to the JESD79-3 DDR3 Memory Device Standard specifying low voltagedevices. The DDR3L standard is 1.35 V and has the label PC3L for its modules.DDR3L is pin-compatible with DDR3. DDR3L is a dual voltage capable memorySoDIMM, which supports operation at both 1.5V and 1.35V.
The DDR3U (DDR3 Ultra Low Voltage) standardis 1.25 V and has the label PC3U for its modules.
LPDDR3:(Low Power DDR3) is a mobile DDR SDRAM standard, designed for mobilecomputing, and shares little in common with DDR3 memory – except maybe themaximum data rate.
GDDR3 (Graphics DDR3) memory, sometimesincorrectly referred to as "DDR3" because of its similar name, is anentirely different SDRAM standard designed for use in graphics cards.
LPDDR4X is identical to LPDDR4 exceptadditional power is saved by reducing the I/O voltage (Vddq) to 0.6 V from 1.1V. Aside from the lower voltage, additional improvements include asingle-channel die option for smaller applications, new MCP, PoP and IoTpackages, and additional definition and timing improvements for the highest4266 Mbit/s speed grade.
2、DDR特性
2.1、差分时钟
差分时钟是是对触发时钟进行校准,主要因为DDR数据是双沿采样的。由于数据是在时钟的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就对CK的上下沿间距有了更高的要求。
一般说来,因为温度、电阻性能的改变等原因,CK上下沿间距可能发生变化,此时与其反相的CK#就起到纠正的作用,因为,CK上升沿快下降沿慢,CK#则是上升沿慢下降沿快。也就是,与CK反相的CK#保证了触发时机的准确性。
2.2、数据选取脉冲(DQS)
DQS是DDR的一项关键技术,它的功能是用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由芯片发来的DQS信号,读取时,则由内存生成DQS向芯片发送。因此可以认为DQS就是数据的同步信号。
SDR是使用clock来同步的,因此理论上,DQ的读写时序完全可以由clock来同步。但是,由于速度提高之后,可用的时序余量越来越小,而引入DQS是为了降低系统设计的难度和可靠性,也就是可以不用考虑DQ和clock之间的直接关系,只用分组考虑DQ和DQS之间的关系,很容易同组同层处理。
DQ和DQS只是组成了源同步时序的传输关系,可以保证数据在接收端被正确的锁存,但是IC工作时,内部真正的同步时钟是clock而不是DQS,数据要在IC内部传输存储同样需要和clock(内部时钟比外部时钟慢)去同步,所以就要求所有的DQ信号还是同步的,而且和clock保持一定的关系,所以就要控制DQS和clock之间的延时了。
在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿。
2.3、片外驱动调校OCD(Off-Chip Driver)
OCD 是在DDR2开始加入的新功能,而且这个功能是可选的,有的资料上面又叫离线驱动调整。OCD的主要作用在于调整I/O接口端的电压,来补偿上拉与下 拉电阻值,从而调整DQS与DQ之间的同步确保信号的完整与可靠性。调校期间,分别测试DQS高电平和DQ高电平,以及DQS低电平和DQ高电平的同步情 况。如果不满足要求,则通过设定突发长度的地址线来传送上拉/下拉电阻等级(加一档或减一档),直到测试合格才退出OCD操作,通过OCD操作来减少 DQ、DQS的倾斜从而提高信号的完整性及控制电压来提高信号品质。
不过,由于在一般情况下对应用环境稳定程度要求并不太高,只要存在差分DQS时就基本可以保证同步的准确性,而且OCD 的调整对其他操作也有一定影响,因此OCD功能在普通台式机上并没有什么作用,其优点主要体现在对数据完整性非常敏感的服务器等高端产品领域。
2.4、ODT
从DDR2内存开始内部集成了终结电阻器,主板上的终结电路被移植到了内存芯片中。在内存芯片工作时系统会把终结电阻屏蔽,而对于暂时不工作的内存芯片则打开终结电阻器以减少信号的反射。由此DDR2内存控制器可以通过ODT同时管理所有内存引脚的信号终结。并且阻抗值也可以有多种选择。如0Ω、50Ω、75Ω、150Ω等等。并且内存控制器可以根据系统内干扰信号的强度自动调整阻值的大小。
其实ODT技术的具体内部构造并不十分复杂。在内存各种引脚与内存模组的内部缓冲器中间设有一个EMRS扩展模式寄存器,通过其内部的一个控制引脚可以控制ODT的阻抗值。系统可以使用2bit地址来定义ODT的四种工作状态(0Ω、50Ω、75Ω、150Ω,DDR3的端接电阻值为RZQ/n(n可以为2/3/4/6/8/12,RZQ为240Ω))。一旦ODT接到一个设置指令,它就会一直保持这个阻值状态。直到接到另一个设置指令才会转换到另一种阻值状态。
当向内存写入数据时,如果只有一条内存,那么这条内存就自己进行信号的终结,终结电阻等效为150Ω。如果为两条内存,那么他们会交错的进行信号的终结。第一个模组工作时,第二个模组进行终结操作,等第二个模组工作时,第一个模组进行终结操作,但等效电阻为75Ω。当有三条内存的时候,三条会交替进行信号终结,但等效电阻为50Ω。
整个ODT的设置和控制都要通过EMRS中那个控制引脚来完成。因此这个引脚的响应速度成为了ODT技术中的关键因素。ODT工作时有两种基本模式:断电模式和其他模式。其中其他模式还包括激活模式和备用模式。ODT从工作到关闭所用的时差叫做tAONPD延迟,最少仅2个时钟周期就可以完成,最多5个时钟周期。ODT从关闭到工作所用的时差叫做tAOFPD延迟,最少仅2个时钟周期完成,最大需要5个时钟周期。由于开启和休眠的切换如此迅速,内存可以在不影响性能的前提下充分的进行“休息”。
ODT技术的优势非常明显。第一,去掉了主板上的终结电阻器等电器元件,这样会大大降低主板的制造成本,并且也使主板的设计更加简洁。第二,由于它可以迅速的开启和关闭空闲的内存芯片,在很大程度上减少了内存闲置时的功率消耗。第三,芯片内部终结也要比主板终结更及时有效,从而减少了内存的延迟等待时间。这也使得进一步提高DDR内存的工作频率成为可能。
在读写切换时,DDR3内存会在原始ODT和动态ODT做对应的切换。也就是说,当读取或空闲时,ODT的值会是20、30、40、60、120ohm之一(由EMR配置);而写入时会切换至60或120ohm(由EMR配置)。
Input only pins(address,command, CKE, ODT and /RESET) do not supply termination.只有数据线有ODT端接。
使用ODT功耗会上升,相应的温度也会上升。
2.5、ZQ校准
ZQ引脚上接有一个240欧姆的低公差参考电阻。这个引脚通过一个命令集,通过片上校准引擎(ODCE,On-Die Calibration Engine)来自动校验数据输出驱动器导通电阻与ODT的终结电阻值(ZQ calibration for DQ drive and ODT)。当系统发出这一指令之后,将用相应的时钟周期(在加电与初始化之后用512个时钟周期,在退出自刷新操作后用256时钟周期、在其他情况下用64个时钟周期)对导通电阻和ODT电阻进行重新校准。
2.6、Write Leveling
为了提高信号质量,支持更高的速率,DDR3采用Fly-By拓扑结构,这使得各个DDR到控制器的时序不一致,因此增加了读写均衡来进行调节。
读写均衡通过控制器调节DQS来适应CK。Wrtie leveling是一个完全自动的过程,只要控制器支持write leveling就可以进行。
CPU不停的发送不同时延的DQS信号,DDR会通过输入的DQS来采样输入的CK信号,如果采样到的CK信号一直为低,则会将DQ保持为低电平来告知控制器tDQSS相位关系还未满足,如果发现在某个DQS到来时,采样到此时的CK电平发现了迁越(由之前的低跳变为高),则认为此时DQS和CK已经满足tDQSS同时通过DQ向控制器发送一个高。此时就完成了一个write leveling过程。
写入均衡弥补了数据写入操作中内存模块边界处数据选通信号和时钟信号间的偏斜。在启动写入均衡机制前,需要向DDR3内存写入适当的模式寄存器值使其进入写入均衡模式。进入写入均衡模式后,内存模块便有了时钟信号和数据选通信号。内存模块在其边界采样时钟信号,与观测到的数据选通信号进行对比,然后通过数据线将采样值(0/1)反馈给控制器,以便为下一个循环中的数据选通信号做延迟调整。这一流程反复进行,直到观测的反馈值从0跳变为1,这表明内存模块边界的时钟信号与数据选通信号对齐。
读取均衡主要解决数据读取操作中数据与选通信号之间的偏斜。为了支持此特性,DDR3内存中增加了一个多用途寄存器(MPR)。该寄存器中包含一个预先定义的数据模式,选中后就会在数据线上输出该模式的数据而非内存阵列中的普通数据。在启动读取均衡序列前,需要向DDR3内存中编入适当的模式寄存器值,使MPR数据成为输出数据。之后,读取均衡机制启动,开始向内存模块发送READ命令,并试图通过优化调整数据选通信号的内部延迟来捕获预定义数据。反复重复此流程直到通过调整数据选通信号内部延迟而创建的窗口能够以最佳方式捕获到预先定义模式的数据。读写均衡特性仅涉及DDR3内存,DDR2内存不支持此类特性。
2.7、POD电平
POD和SSTL的最大区别在于接收端的终端电压(POD为VDDQ,SSTL为VDDQ/2)。POD可以降低寄生引脚电容和I/O终端功耗,并且即使在VDD电压降低的情况下也能稳定工作。
当驱动端的上拉电路导通,电路处于高电平时,回路上没有电流流过,这样的设计较少了功耗。
2.8、DBI(Data BusInversion)
基于POD电平的特性,当一个字节里的0比特位多于1时,可以使能DBI,将整个字节的0和1反转,这样1比0多,相比反转前传输信号更省功耗(因为输出高电平时,回路没有电流)。
3、DDR工作原理
3.1、存储结构
1.控制器单元:包括输入命令解析,模式配置&控制部分;
2.行地址选通单元:行激活通过此处操作;
3.Bank控制逻辑:行/列地址解码用到bank选通;
4.列地址选择单元:读写操作同时在打开列地址的时候送到1处;
5.内部存储阵列:此处分8个bank,以4G 8bit的颗粒为例;每个bank分65536行,128列,每个cell存储8*bank的数据宽度;
6.读写数据缓存及接口驱动:DQ数据在此变换位宽后内外交互(数据输入、输出);
7.锁存与控制逻辑:刷新与预充电用到该模块。
3.2、初始化及配置
DDR的初始化过程包含设置DDR的普通模式寄存器MRS(Mode Register Set)和扩展模式寄存器EMRS(Extended Mode Registers Set),用来制定DDR的工作方式。
MRS(Mode Register Set)模式寄存器设定burst length突发长度,burst type突发类型(Sequential or Interleave),CAS latency(CAS潜伏期),mode(test Mode or normal mode),DLL Reset(内部延迟锁定回路)(Yes or No),WR(write recovery for autoprecharge),MRS Mode(MR or EMRn)and various vendor specific options to make DDR2 SDRAM useful forvarious applications.
EMRS(1)(ExtendedModeRegisterSet))扩展模式寄存器设定DLL,Additive Latency,RTT,Output Driver Impedance Control,ODT(On Die Termination) and OCD(Off Chip Driver ImpedanceAdjustment)输出驱动能力设置,DQSand Output buffers disable。
EMRS(2)controls self-refresh related features。
EMRS(3)are reserved for future use。
首先,芯片上电,在上电最小为200us的平稳电平后,等待500usCKE使能,在这段时间芯片内部开始状态初始化,该过程与外部时钟无关。
在时钟使能信号前(CKE),必须保持最小10ns或者5个时钟周期,除此之外,还需要一个NOP命令或者Deselect命令出现在CKE的前面。然后DDR开始ODT的过程,在复位和CKE有效之前,ODT始终为高阻。
在CKE为高后,等待tXPR(最小复位CKE时间),然后开始从MRS中读取模式寄存器。
然后加载MR2、MR3的寄存器,来配置应用设置;然后使能DLL,并且对DLL复位。
接着便是启动ZQCL命令,来开始ZQ校准过程。
等待校准结束后,DDR就进入了可以正常操作的状态。对于基本的配置过程,现在就可以结束了。
3.3、读写操作
DDR数据信号在一对差分时钟(CLK与CLKn)的两个边沿控制下工作。命令(地址和控制信号)在时钟(CLK)的上升沿被触发。
随着数据DQ一起传送的还包括一个双向的数据选通信号DQS,接收方通过该信号来接收数据。DQS作为选通信号在读周期中由DDR产生,在写周期中由存储器的控制器产生(output with read data, input with write data)。该选通信号与数据相关,其作用类似于一个独立的时钟,并满足相应的时序要求。
由于DDR的数据接口在时钟的两个沿的触发下工作,其数据宽度(n)是存储器数据宽度(2n)的一半。为实现数据的大容量存储,设计时采用的是一个控制核同时对两片DDR进行操作,外接数据线的宽度由单片DDR的16位扩展到32位。
在执行读(写)命令之前,先要激活将要读(写)的行,某一行被激活之后将一直处于激活状态,用户便可进行连续的突发读(写)操作,直到用户发送突发终止命令,此时控制器将自动产生一个预充电命令来关闭当前行,提高了系统的速率。
数据的存取以一个激活命令(ACTIVEcommand)开始,接着便是读或写命令。
3.4、地址选择
与激活命令一起被触发的地址位用来选择将要存取的区(bank)和页(或行);与读或写命令一起触发的地址位用来选择突发存取的起始列单元。
当接收到中断命令时,若此时DDR正在进行读(写)操作,控制器将会等到当前的读(写)操作完成之后再发送刷新命令。在刷新过程中,用户如果有读(写)请求,控制器将在当前刷新周期完成之后再响应用户的请求。
要激活所要操作的Row地址;
通过Column地址对这个Row地址里的数据进行操作;
同一个存储单元bank中只能有一个Row处于激活状态,所以在对另一个Row进行操作时应首先关闭原先有效的Row。(这个动作是由充电(Pre-charge)命令完成的)
读操作:DQS信号的边沿在时序上与DQ的信号边沿处对齐
写操作:DQS信号的边沿在时序上与DQ信号的中心处对齐
4、DDR引脚定义
引脚 | 定义 | |
电源 | VDD/VDDQ/VDDL | 工作电压/DQ电压/DLL电压 |
VSS/VSSQ/VSSDL | 地 | |
VREFCA/VREFDQ | 参考电压 | |
VPP | DRAM activating电压 | |
ZQ | ZQ校准参考引脚 | |
数据信号 | DQn | 数据线 |
DQSn/DQS#n UDQSn/UDQS#n LDQSn/LDQS#n | Data Strobe. DDR4 SDRAM supports a differential data strobe only and does not support a single-ended data strobe. | |
TDQS/TDQS# | Termination Data Strobe, is applicable for x8 DRAMs only. | |
DMn/UDMn/LDMn | 数据掩码(UDMn and LDMn pins are used in the x16 configuration) | |
DBI#/UDBI#/LDBI# | The DBI feature is not supported on x4 configurations(UDBI and LDBI are used in the x16 configuration) | |
地址信号 | An | 行/列地址线(共用地址线,通过CAS#和RAS#切换选通) |
A10/AP | 自动预充电 | |
A12/BC# | Burst Chop(on-the-fly) | |
BAn | Bank地址线 | |
BGn | Bank group地址线 | |
C0/CKE1 | Stack地址(These inputs are used only when devices are stacked) DDR4 will support a traditional DDP package, which uses these three signals for control of the second die (CS1_n, CKE1, ODT1). DDR4 is not expected to support a traditional QDP package. | |
C1/CS1# | ||
C2/ODT1 | ||
时钟信号 | CK/CK# | 差分时钟信号,CK#的主要作用是触发时钟校准 |
命令信号 | ACT# | ACTIVATE Command input(有效时A14、A15、A16作为行地址,无效时上述三个信号作为命令信号) |
RAS#/A16 | 行地址选通脉冲 | |
CAS#/A15 | 列地址选通脉冲 | |
WE#/A14 | 写使能 | |
控制信号 | CS# | 片选 |
CKE | 时钟使能 | |
RESET# | 复位信号 | |
ODT | ODT使能。如果MRS中禁用RTT,则ODT引脚被忽略 | |
PAR | Parity for command and address | |
TEN | Connectivity test mode | |
ALERT# | Alerts will include the command/address parity error and the CRC data error. |