首先小编就几个关键技术再给大家介绍一下。
差分时钟技术
差分时钟是DDR的一个重要且必要的设计,但大家对CK#(CKN)的作用认识很少,很多人理解为第二个触发时钟,其实它的真实作用是起到触发时钟校准的作用。
由于数据是在CK的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就要求CK的上下沿间距要有精确的控制。但因为温度、电阻性能的改变等原因,CK上下沿间距可能发生变化,此时与其反相的CK#(CKN)就起到纠正的作用(CK上升快下降慢,CK#则是上升慢下降快),如下图一所示。
图一 差分时钟示意图
数据选取脉冲(DQS)
就像时钟信号一样,DQS也是DDR中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗8bit DRAM芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由主控芯片发来的DQS信号,读取时,则由DRAM芯片生成DQS向主控发送。完全可以说,它就是数据的同步信号。
在读取时,DQS与数据信号同时生成(也是在CK与CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,数据真正出现在数据I/O总线上相对于DQS触发的时间间隔被称为tAC。实际上,DQS生成时,芯片内部的预取已经完毕了,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。由于是并行传输,DDR内存对tAC也有一定的要求,对于DDR266,tAC的允许范围是±0.75ns,对于DDR333,则是±0.7ns,其中CL里包含了一段DQS的导入期。
DQS 在读取时与数据同步传输,那么接收时也是以DQS的上下沿为准吗?不,如果以DQS的上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的同步很难控制,只能限制在一定的时间范围内,数据在各I/O端口的出现时间可能有快有慢,会与DQS有一定的间隔,这也就是为什么要有一个tAC规定的原因。而在接收方,一切必须保证同步接收,不能有tAC之类的偏差。这样在写入时,DRAM芯片不再自己生成DQS,而以发送方传来的DQS为基准,并相应延后一定的时间,在DQS的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在DQS上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的,如下图二所示。
图二 数据时序
数据掩码技术(DQM)
不是DDR所特有的,但对于DDR来说也是比较重要的技术,所以一并介绍下。
为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。
DQM由主控芯片控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个64bit位宽的数据中有8个DQM信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM 信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于16bit位宽芯片,则需要两个DQM引脚。SDRAM 官方规定,在读取时DQM发出两个时钟周期后生效,而在写入时,DQM与写入命令一样是立即生效,如下图三和四分别显示读取和写入时突发周期的第二笔数据被取消。
图三 读取时数据掩码操作
图四 写入时数据掩码操作
所以DQM信号的作用就是对于突发写入,如果其中有不想存入的数据,就可以运用DQM信号进行屏蔽。DQM信号和数据信号同时发出,接收方在DQS的上升与下降沿来判断DQM的状态,如果DQM为高电平,那么之前从DQS中部选取的数据就被屏蔽了。
有人可能会觉得,DQM是输入信号,意味着DRAM芯片不能发出DQM信号给主控芯片作为屏蔽读取数据的参考。其实,该读哪个数据也是由主控芯片决定的,所以DRAM芯片也无需参与主控芯片的工作,哪个数据是有用的就留给主控芯片自己去选择。
好了,前面介绍了DQS的功能,那么我们在测试时根据DQS和DQ的波形是如何区分数据的读写操作的?
在DDRx里面经常会被一些缩写误扰,如OCD、OCT和ODT,我想有同样困扰的大有人在,现在笔者来介绍一下大家的这些困扰吧。
片外驱动调校OCD(Off-Chip Driver)
OCD是在DDR-II开始加入的新功能,而且这个功能是可选的,有的资料上面又叫离线驱动调整。OCD的主要作用在于调整I/O接口端的电压,来补偿上拉与下拉电阻值,从而调整DQS与DQ之间的同步确保信号的完整与可靠性。调校期间,分别测试DQS高电平和DQ高电平,以及DQS低电平和DQ高电平的同步情况。如果不满足要求,则通过设定突发长度的地址线来传送上拉/下拉电阻等级(加一档或减一档),直到测试合格才退出OCD操作,通过OCD操作来减少DQ、DQS的倾斜从而提高信号的完整性及控制电压来提高信号品质。具体调校如下图五所示。
图五 OCD
不过,由于在一般情况下对应用环境稳定程度要求并不太高,只要存在差分DQS时就基本可以保证同步的准确性,而且OCD 的调整对其他操作也有一定影响,因此OCD功能在普通台式机上并没有什么作用,其优点主要体现在对数据完整性非常敏感的服务器等高端产品领域。
ODT(On-Die Termination,片内终结)
ODT也是DDR2相对于DDR1的关键技术突破,所谓的终结(端接),就是让信号被电路的终端吸收掉,而不会在电路上形成反射,造成对后面信号的影响。顾名思义,ODT就是将端接电阻移植到了芯片内部,主板上不再有端接电路。在进入DDR时代,DDR内存对工作环境提出更高的要求,如果先前发出的信号不能被电路终端完全吸收掉而在电路上形成反射现象,就会对后面信号的影响造成运算出错。因此目前支持DDR主板都是通过采用终结电阻来解决这个问题。由于每根数据线至少需要一个终结电阻,这意味着每块DDR主板需要大量的终结电阻,这也无形中增加了主板的生产成本,而且由于不同的内存模组对终结电阻的要求不可能完全一样,也造成了所谓的“内存兼容性问题”。 而在DDR-II中加入了ODT功能,当在DRAM模组工作时把终结电阻器关掉,而对于不工作的DRAM模组则进行终结操作,起到减少信号反射的作用,如下图六所示。
图六 ODT端接示意图
ODT的功能与禁止由主控芯片控制,在开机进行EMRS时进行设置,ODT所终结的信号包括DQS、DQS#、DQ、DM等。这样可以产生更干净的信号品质,从而产生更高的内存时钟频率速度。而将终结电阻设计在内存芯片之上还可以简化主板的设计,降低了主板的成本,而且终结电阻器可以和内存颗粒的“特性”相符,从而减少内存与主板的兼容问题的出现。
重置(Reset)
重置是DDR3新增的一项重要功能,并为此专门准备了一个引脚。这一引脚将使DDR3的初始化处理变得简单。当Reset命令有效时,DDR3 内存将停止所有的操作,并切换至最少量活动的状态,以节约电力。在Reset期间,DDR3内存将关闭内在的大部分功能,所有数据接收与发送器都将关闭,且所有内部的程序装置将复位,DLL(延迟锁相环路)与时钟电路将停止工作,甚至不理睬数据总线上的任何动静。这样一来,该功能将使DDR3达到最节省电力的目的,新增的引脚如下图七所示。
图七 Reset及ZQ引脚
ZQ校准
如上图七所示,ZQ也是一个新增的引脚,在这个引脚上接有一个240欧姆的低公差参考电阻。这个引脚通过一个命令集,通过片上校准引擎(ODCE,On-Die Calibration Engine)来自动校验数据输出驱动器导通电阻与ODT的终结电阻值。当系统发出这一指令之后,将用相应的时钟周期(在加电与初始化之后用512个时钟周期,在退出自刷新操作后用256时钟周期、在其他情况下用64个时钟周期)对导通电阻和ODT电阻进行重新校准。
VREFCA & VREFDQ
对于内存系统工作非常重要的参考电压信号VREF,在DDR3系统中将VREF分为两个信号。一个是为命令与地址信号服务的VREFCA,另一个是为数据总线服务的VREFDQ,它将有效的提高系统数据总线的信噪等级,如下图八所示。
图八 VREFCA & VREFDQ
现在来说说DDR3和DDR4最关键的一些技术,write leveling以及DBI功能。
Write leveling功能与Fly_by拓扑
Write leveling功能和Fly_by拓扑密不可分。Fly_by拓扑主要应用于时钟、地址、命令和控制信号,该拓扑可以有效的减少stub的数量和他们的长度,但是却会导致时钟和Strobe信号在每个芯片上的飞行时间偏移,这使得控制器(FPGA或者CPU)很难保持tDQSS、tDSS 和tDSH这些参数满足时序规格。因此write leveling应运而生,这也是为什么在DDR3里面使用fly_by结构后数据组可以不用和时钟信号去绕等长的原因,数据信号组与组之间也不用去绕等长,而在DDR2里面数据组还是需要和时钟有较宽松的等长要求的。DDR3控制器调用Write leveling功能时,需要DDR3 SDRAM颗粒的反馈来调整DQS与CK之间的相位关系,具体方式如下图九所示。
图九、 Write leveling
Write leveling 是一个完全自动的过程。控制器(CPU或FPGA)不停的发送不同时延的DQS 信号,DDR3 SDRAM 颗粒在DQS-DQS#的上升沿采样CK 的状态,并通过DQ 线反馈给DDR3 控制器。控制器端反复的调整DQS-DQS#的延时,直到控制器端检测到DQ 线上0 到1 的跳变(说明tDQSS参数得到了满足),控制器就锁住此时的延时值,此时便完成了一个Write leveling过程;同时在Leveling 过程中,DQS-DQS#从控制器端输出,所以在DDR3 SDRAM 侧必须进行端接;同理,DQ 线由DDR3 SDRAM颗粒侧输出,在控制器端必须进行端接;
需要注意的是,并不是所有的DDR3控制器都支持write leveling功能,所以也意味着不能使用Fly_by拓扑结构,通常这样的主控芯片会有类似以下的描述:
DBI功能与POD电平
DBI的全称是Data Bus Inversion数据总线反转/倒置,它与POD电平密不可分,它们也是DDR4区别于DDR3的主要技术突破。
POD电平的全称是Pseudo Open-Drain 伪漏极开路,其与DDR3对比简单的示例电路如下图十所示。
图十 POD示意电路
从中可以看到,当驱动端的上拉电路导通,电路处于高电平时(也即传输的是“1”),此时两端电势差均等,相当于回路上没有电流流过,但数据“1”还是照样被传输,这样的设计减少了功率消耗。
正是由于POD电平的这一特性,DDR4设计了DBI功能。当一个字节里的“0”比特位多于“1”时,可以使能DBI,将整个字节的“0”和“1”反转,这样“1”比“0”多,相比原(反转前)传输信号更省功耗,如下表一所示。
表一 DBI示例
以上就是DDRx的一些主要的关键技术介绍,可以用如下表二所示来总结下DDRx的特性对比。
表二 DDRx SDRAM特性对比