首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

SDRAM原理(强烈推荐)

2022-05-23 来源:华拓网
 提到内存,相信大家都不陌生,几乎所有的计算机系统中都有它的身影,按照内存的工作原理

划分,可将内存分为RAM和ROM两大类。

RAM(Random Access Memory)存储器又称随机存取存储器,存储的内容可通过指令随机读写访问,RAM中的数据在掉电时会丢失;

ROM(Read Only Memory)存储器又称只读存储器,只能从中读取信息而不能任意写信息。ROM具有掉电后数据可保持不变的优点。

RAM和ROM两大类下面又可分很多小类,如下图所示:

♦SRAM简介 SRAM即Static RAM,也就是静态随机存取存储器,按照制造工艺可分为NMOS SRAM、CMOS SRAM和双极型SRAM(用的是TFT)。

SRAM的基本存储单元是数字锁存器,只要系统不掉电,它就会无限期地保持记忆状态。掉电时,存储数据会丢失。并且SRAM的行列地址线是分开的(DRAM的行列地址线是复用的)。 SRAM地特点是读写速度极快,在快速读取和刷新时能够保持数据地完整性,并且非常省电。所以在一些高速和高可靠性要求电路中,基本上是SRAM地天下,如CPU的Cache。但是

SRAM的存储单元电路结构非常复杂,它内部采用的是双稳态电路的形式来存储数据,制作一个bit存储位通常需要6个MOS管(4个MOS管组成两个交叉耦合反相器,用来锁存数据,另外2个用于对读写操作过程的控制)。由于SRAM的复杂电路结构,使得成本要比DRAM高很多,而且其集成度低,很难做成大容量,一般只有几十KByte到几百KByte的容量,最大也就几MByte。

上图为6个NMOS构成的基本SRAM存储单元,Xi和Yj为字线;I/O为数据输入/输出端;R/W为读/写控制端。当R/W=0时,进行写操作;当R/W=1时,进行读操作。图中红色虚线框中的T1、T2、T3、T4、T5、T6六个NMOS管构成一个基本的存储单元。T1、T3和T2、T4两个反相器交叉耦合构成触发器。电路采用二元寻址,当字线Xi和Yj均为高电平时,T5-T8均导通,则该单元被选中,若此时R/W为1的读操作,三态门G1、G2关闭,G3打开,存储的数据从数据线D,经过G3,然后从I/O输出。若R/W为0的写操作,则G1、G2打开,G3关闭,I/O上的数据经G1、G2写入存储单元。

下图为32KByte容量的SRAM结构示意图,该SRAM有8位行地址,译码后生成256根行地址线;列地址线为7位,译码后生成128根列地址线。对SRAM进行读操作时,OE#和CS#为低电平,WE#为高电平,G1输出低电平将输入控缓冲器关闭,G2输出高电平将输出缓冲器打开,通过行列地址线选中的存储单元数据经I/O和输出缓冲器,最后从I/O[0:7]输出;写操作时,WE#和CS#为低电平,OE#为高电平,G1输出高电平将输入缓冲器打开,G2输出低电平将输出缓冲器关闭,I/O[0:7]上的输出经输出缓冲器和内部I/O总线,最后写入行列地址选中的存储空间中。

♦DRAM介绍 DRAM即Dynamic RAM,动态随机存取存储器的意思,DRAM的种类有很多,常用的有: 1).SDRAM:Synchronous Dynamic Random Access Memory,即同步动态随机存取存储器。“同步”是指其时钟频率与CPU前端总线的系统时钟频率相同,并且内部命令的发送与数据的传输都以此频率为基准;“动态”是指存储阵列需要不断的刷新来保证所存储数据不丢失;“随机”是指数据不是线性一次存储,而是自由指定地址进行数据的读写。

2).DDR SDRAM:Double Data Rate SDRAM,即双倍速率SDRAM,普通SDRAM只在时钟信号的上升沿采样数据,而DDR SDRAM在时钟信号的上升沿和下降沿都采样数据,这样,在时钟频率不变的情况下,DDR SDRAM的数据存取速度提高了一倍,所以叫双倍速率SDRAM。

DDR SDRAM最早由三星公司于1996年提出,之后与日本电气、三菱、富士通、东芝、日立、TI、现代等8家公司协议制定规格,并得到AMD、VIA、SIS等公司的支持,并最终于2005年形成JEDEC标准ESD79E。(JEDEC即Joint Electron Device Engineering Council,电子器件工程联合理事会)

DDR SDRAM在其短暂的发展史中,先后经历了DDR SDRAM(也叫DDR1 SDRAM)、DDR2 SDRAM、DDR3 SDRAM三个阶段,技术越来越先进。上面是DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM三种内存芯片的参数对比表:

3).RDRAM:Rambus DRAM,是美国的RAMBUS公司开发的一种内存。与DDR和SDRAM不同,它采用了串行的数据传输模式。RDRAM的数据存储位宽是16位,远低于DDR和SDRAM的64位。但在频率方面则远远高于前者,可以达到400MHz乃至更高。同样也是在一个时钟周期内传输两次次数据,能够在时钟的上升期和下降期各传输一次数据,内存带宽能达到1.6Gbyte/s。普通的DRAM行缓冲器的信息在写回存储器后便不再保留,而RDRAM则具有继续保持这一信息的特性,于是在进行存储器访问时,如行缓冲器中已经有目标数据,则可利用,因而实现了高速访问。另外其可把数据集中起来以分组的形式传送,所以只要最初用24个时钟,以后便可每1时钟读出1个字节。一次访问所能读出的数据长度可以达到256字节。下图为SDRAM与RDRAM系统结构对比。 DRAM的存储单元结构与SRAM的锁存器存储结构不同,DRAM是利用电容来存储数据信息的,电容中有电荷代表逻辑“1”,没有电荷代表逻辑“0”,如下图所示。DRAM进行读/写操作时,行选信号与列选信号将使存储电容与外界的传输电路导通,从而可进行放电(读取)或充电(写入)。目前的主流设计中,刷新放大器功能已经被并入读出放大器(Sense Amplifier,简称S-AMP)中。

在《内存器件介绍之RAM篇(一)》中我们介绍了SRAM的相关知识以及DRAM的部分知识,下面继续我们的DRAM探索之旅。

♦DRAM的物理BANK与逻辑BANK 我们在进行内存设计选型时会有两种选择:内存颗粒和内存条。 1).内存颗粒其实也就是内存芯片,数据位宽通常是8bit,最高的也就是16bit。

2).内存条就是将多颗内存芯片放在一起组成通用标准模块,并在模块中加入管理信号(一般为I2C总线,用来读取厂家信息),然后从标准标准接口引出(就是我们常说的金手指)。 常见的内存条有SIMM和DIMM两种。

SIMM是Single In-line Memory Module缩写,即单列内存模组,它与主板插槽的接口只有一

列引脚(虽然两侧都有金手指),72个PIN,数据位宽为32bit。

DIMM是Double In-line Memory Module的缩写,即双列内存模组。所谓双列是指模组电路板

与主板插槽的接口有两列引脚,两侧的金手指各对应一列引脚。DIMM内存条一共有168个PIN,数据位宽为64bit。

传统内存系统为了保证CPU的正常工作,必须一次传输完CPU在一个传输周期内所需的数据,而CPU在一个传输周期能接受的数据容量就是CPU总线的位宽。这个位宽就是物理BANK(Physical Bank,简称P-Bank)位宽。

如32位的CPU与内存进行数据交换时,一个时钟周期内必须是32bit,要是用普通8bit位宽的内存颗粒的话,就需要4片并联起来才能满足要求。记得Pentium系列CPU刚上市时,需要在主板上插两条SIMM才能使CPU正常工作,这是因为Pentium系列CPU是64位的,而SIMM只能提供32bit位宽,所以必须要用两条并联起来才能满足其64bit的位宽要求。直到后来64bit位宽的DIMM上市后,才可以使用一条内存配合CPU正常工作。

早期的内存条,无论是SIMM,还是DIMM,都只有一个P-Bank。随着计算机应用的发展,一个系统只有一个P-Bank已经不能满足容量的需求。所以就出现了支持多个P-Bank的内存条,一次选择一个P-Bank工作,这就有了内存条支持多少个物理BANK的说法(Intel将P-Bank称为Row,比

如845G内存条宣称支持4个Row,其实就是支持4个P-Bank,另外,在一些文档中,也把P-Bank称为Rank)。

DRAM的逻辑BANK概念是针对内存颗粒内部的。大家都知道DRAM内部的存储单元是以阵列形式排列的。如下图所示。行列地址总线分别经过行列地址译码器译码后分别指向一行和一列,行列重叠的单元就是我们所寻找的存储单元,这就是内存芯片寻址的基本原理。对于内存颗粒来说,这个阵列就是逻辑Bank(Logical Bank,简称L-Bank)。

但是,在实际应用中,由于技术、成本等原因,不可能只做一个全容量的L-BANK,而且最重要的是,由于DRAM的工作原理限制,单一的L-Bank将会造成严重的寻址冲突,大幅降低内存效率。所以人们在DRAM内部分割成多个L-Bank,每个L-Bank形状相同,彼此独立,可以独立工作。早期的DRAM芯片内部分为2个L-Bank,后来是4个,DDR3内存芯片为8个。

在进行寻址时需要先确定是哪个L-Bank,然后再在这个选定的L-Bank中选择相应的行与列进行寻址。对内存的访问,一次只能是一个L-Bank,而每次与CPU交换的数据就是 L-Bank 存储阵列中一个“存储单元”的容量。SDRAM内存芯片一次传输的数据量就是芯片的位宽,那么这个存储单元的容量就是芯片的位宽(也是 L-Bank 的位宽)。上图为4BANK内存颗粒内部结构示意图。

内存芯片容量的计算方法为:存储单元数量=行数×列数(得到一个 L-Bank 的存储单元数量)

×L-Bank 的数量。在很多内存产品介绍文档中,都会用 M×W 的方式来表示芯片的容量。M 是该芯片中存储单元的总数,单位是兆,W 代表每个存储单元的容量,也就是 SDRAM 芯片的位宽(Width),单位是 bit。计算出来的芯片容量也是以 bit 为单位,但用户可以采用除以 8 的方法换算为字节(Byt)。

《内存器件介绍之RAM篇(二)》中我们介绍了DRAM逻辑BANK和物理BANK以及容量的计算方法,下面我们来学习下SDRAM芯片的初始化及读写时序。

针对内存的操作指令有如下几种:

1).Command INHIBIT(初始化);2).No Operation(无动作);3).Active(使指定L-Bank中的指

定行有效);4).Read(从指定L-Bank中的指定列开始读取数据);5).Write(从指定L-Bank中的指定列开始写入数据);6).Burst Terminate(突发传输终止);7).Precharge(预充电命令,关闭指定或全部L-Bank中的工作行);8).Auto Refresh(自动刷新);9).Load Mode Register(模式寄存器加载);10).写允许/输出允许; 11).写禁止/输出屏蔽;

♦内存的初始化 一旦VDD、VDDQ被同时家电,并且时钟已经稳定,SDRAM需要一个200us的延迟,在这个时间段中,Command INHIBIT和No Operation指令有效,这个过程实际上就是内存的自检过程,一旦这个过程通过后,一个Precharge命令就会生效,在这个命令周期中,内存会处于Idle状态。随后执行几个Auto Refresh周期,之后SDRAM为模式寄存器编程做准备。整个初始化过程如下图所示。

模式寄存器设置(MRS)是在CPU的BIOS控制下进行的。SDRAM芯片内部有一个逻辑控制单元,

这个控制单元的相关控制参数是由MR提供的,SDRAM芯片每次进行初始化时都要将重新写MR寄存器。MR中设置了SDRAM的运行模式:包括突发长度(BL)、突发类型(Burst Type)、CAS延迟(CAS Latency)、运行方式(Operating Mode)和写入突发模式。

MR通过Load Mode Register命令进行编程。MR中操作位M0-M11分别与内存芯片的地址线A0-A11

对应。M0-M2用来设置BL,M3设置突发类型,M4-M6设置CAS延迟,A7-A11设置操作模式。如上图所示。

♦行有效 初始化完成后,要想对一个L-Bank中的阵列进行寻址,首先要确定行(Row),使之处于活动状态(Active),然后再确定列。虽然之前要进行片选和L-Bank的地址,但它们与行有效可以同时进行。通一个L-Bank中,两个相邻的Active命令之间的时间间隔被定义为 tRC,在不同L-Bank中,执行两个Active命令之间的时间间隔被定义为tRRD(RAS to RAS Delay)。行有效时序图如下所示。

♦列读写 行地址确定之后,就要对列地址进行寻址了。在SDRAM中,行地址与列地址线是共用的,仍然是A0-A11。读/写命令是通过WE#信号的状态去区分的,当WE#为低电平有效时是写命令,为高电平无效时是读命令。列寻址信号与读写命令是同时发出的。虽然列地址线与行寻址共用,但是CAS(Column Address Strobe,列地址选通脉冲)信号则可以区分开行与列寻址的不同。列读写时序如图所示。

在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定位为tRCD,即RAS to CAS Delay(RAS 至CAS延迟),大家也可以理解为行选通周期。tRCD时SDRAM的一个冲要时序参数,可以通过主板BIOS经过北桥芯片进行调整,但不能超过厂商的预定范围。广义的tRCD以时钟周期为单位,比如tRCD=2,就代表延迟周期为两个时钟周期。

在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过I/O通道输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第

一笔数据输出的这段时间,被定位为CL(CAS Latency,CAS潜伏期)。由于CL只在读取时出现,所以CL又被称为读取潜伏期(RL,Read latency)。

由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别

性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S-AMP通道。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判断),因此从数据I/O总线上有数据输出之前的一个时钟上升沿开始,数据就已传向S-AMP,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间被定位为tAC(Access Time from CLK,时钟触发后的访问时间)。tAC的单位是ns,并且需要小于一个时钟周期。下面为SDRAM读操作中CS与tAC关系示意图。

SDRAM的数据写入操作也是在tRCD之后进行,但此时没有CL,寻址方式跟读操作一样,只是在写操作时,WE#信号为低电平有效。下图为SDRAM写操作时序。从图中可以看出,由于数据信号由控制端发出,输入时芯片无需做任何调校,只需直接传到数据输入寄存器中,然后再由写入驱动器进行对存储器电容的充电操作,因此数据可以与CAS同时发送,也就是说写入延迟为0。不过,数据并不是即时地写入存储电容,因为选通三极管(就如读取时一样)与电容的充电必须要有一段时间,所以数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间(tWR,Write Recovery Time),这个操作也被称作写回(Write Back)。tWR 至少占用一个时钟周期或再多一点。

在《内存器件介绍之RAM篇(三)》中我们介绍了SDRAM的初始化过程以及读写时序。下面我

们来解读下SDRAM的一些参数。

♦突发长度 突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称 BL)。

在目前,由于内存控制器一次读/写 P-Bank 位宽的数据,也就是 8 个字节,但是在现实中小

于8 个字节的数据很少见,所以一般都要经过多个周期进行数据的传输。

上文讲到的读/写操作,都是一次对一个存储单元进行寻址,如果要连续读/写就还要对当前存

储单元的下一个单元进行寻址,也就是要不断的发送列地址与读/写命令(行地址不变,所以不用再对行寻址)。虽然由于读/写延迟相同可以让数据的传输在 I/O 端是连续的,但它占用了大量的内存控制资源,在数据进行连续传输时无法输入新的命令,效率很低(早期的 FPE/EDO 内存就是以这种方式进行连续的数据传输)。

为此,人们开发了突发传输技术,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数

据的传输需要若干个周期(主要是之前的延迟,一般的是 tRCD+CL)外,其后每个数据只需一个周期的即可获得。在很多北桥芯片的介绍中都有类似于 X-1-1-1 的字样,就是指这个意思,其中的 X 代表就代表第一笔数据所用的周期数。

非突发连续读取模式:不采用突发传输而是依次单独寻址,此时可等效于 BL=1。虽然可以让数据是连续的传输,但每次都要发送列地址与命令信息,控制资源占用极大。突发连续读取模式:只要指定起始列地址与突发长度,寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与 BL 相同)即可做到连续的突发传输。 至于 BL 的数值,也是不能随便设或在数据进行传输前临时决定。在上文讲到的初始化过程中的MRS 阶段就要对 BL 进行设置。目前可用的选项是 1、2、4、8、全页(Full Page),常见的设定是 4 和8。下图为突发连续读取模式与非突发连续读取模式时序对比图。

♦预充电 由于 SDRAM 的寻址具体独占性,所以在进行完读写操作后,如果要对同一 L-Bank 的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank 关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。

预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行复位,同时释放 S-AMP(重新加入比较电压,一般是电容电压的 1/2,以帮助判断读取数据的逻辑电平,因为 S-AMP 是通过一个参考电压与存储体位线电压的比较来判断逻辑值的),以准备新行的工作。

在发出预充电命令之后,要经过一段时间才能允许发送 RAS 行有效命令打开新的工作行,这个

间隔被称为 tRP(Precharge command Period,预充电有效周期)。和 tRCD、CL 一样,tRP 的单位也是时钟周期数,具体值视时钟频率而定。

♦刷新 所以称为 DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是 DRAM 最重要的操作。刷新操作与预充电中重写的操作一样,都是用 S-AMP 先读再写。

但为什么有预充电操作还要进行刷新呢?因为预充电是对一个或所有L-Bank 中的工作行操作,并且是不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。但与所有 L-Bank 预充电不同的是,这里的行是指所有 L-Bank 中地址相同的行,而预充电中各 L-Bank 中的工作行地址并不是一定是相同的。

那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000 秒),也就是说每一行刷新的循环周期是 64ms。这样刷新速度就是:行数量/64ms。我们在看内存规格时,经常会看到 4096 Refresh Cycles/ 64ms 或 8192

RefreshCycles/64ms 的标识,这里的 4096 与 8192 就代表这个芯片中每个 L-Bank 的行数。刷新命令一次对一行有效,发送间隔也是随总行数而变化,4096 行时为 15.625μs(微秒,1/1000 毫秒),8192 行时就为 7.8125μs。

刷新操作分为两种:自动刷新(Auto Refresh,简称 AR)与自刷新(Self Refresh,简称 SR)。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。

对于 AR, SDRAM 内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。

由于刷新是针对一行中的所有存储体进行,所以无需列寻址,或者说 CAS 在 RAS 之前有效。所以,AR 又称 CBR(CAS Before RAS,列提前于行定位)式刷新。

SR则主要用于休眠模式低功耗状态下的数据保存,这方面最著名的应用就是 STR(Suspend to

RAM,休眠挂起于内存)。在发出 AR 命令时,将 CKE 置于无效状态,就进入了 SR 模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。在SR 期间除了 CKE 之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新使 CKE 有效才能退出自刷新模式并进入正常操作状态。

Refresh:就是刷新小电容的电量,电量来源于内存行列的一个旁路大电容。

Precharge:就是将旁路大电容预先充满电,以提供给小电容充电的电量。

♦数据掩码(DQM) 在讲述读/写操作时,我们谈到了突发长度。如果 BL=4,那么也就是说一次就传送 4×64bit 的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称 DQM)技术。通过 DQM,内存可以控制 I/O 端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。

DQM 由北桥控制,为了精确屏蔽一个 P-Bank 位宽中的每个字节,每个 DIMM 有 8 个 DQM 信

号线,每个信号针对一个字节。这样,对于 4bit 位宽芯片,两个芯片共用一个 DQM 信号线,对于 8bit 位宽芯片,一个芯片占用一个 DQM 信号,而对于 16bit 位宽芯片,则需要两个 DQM 引

脚。SDRAM 官方规定,在读取时 DQM 发出两个时钟周期后生效,而在写入时,DQM 与写入命令一样是立即成效。

♦预存取 预存取概念是针对DDR SDRAM的。

SDRAM内存频率可细分为:数据频率、时钟频率和内核频率三种。对于普通SDRAM而言,这三

者相同,也就不存在预存取的概念。但是对于DDR而言,由于其在时钟信号的上升沿和下降沿都采样数据,所以其数据频率等于时钟频率的两倍,内核频率与时钟频率相同。DDR读操作时,需要在一个时钟周期内给I/O总线提供双倍数据量,实现这一功能的就是所谓的2倍预存取,其原理就是DDR SDRAM存储阵列的位宽增加一倍。这些数据被转化为宽度为1/2的两通道数据分流,分别从时钟信号的上升沿和下降沿发送出去。

DDR2的预存取能力为4位,也就是说其L-Bank的宽度是芯片位宽的四倍。此时,时钟频率是

内核频率的两倍,数据频率又是时钟频率的两倍。由此可见,DDR2在数据频率与DDR1相同的情况下,内核频率只有DDR1的一半。我们不要小看这个内核频率,其实它对内存的稳定性和可靠性非常重要,内核频率越低,意为着功耗越小,发热量越低,内存越稳定。实验证明,在目前的技术条件下,200MHz差不多是内存内核的极限频率。

DDR3有8位预存取能力,它的最大可支持1600MHz的数据存取速率,但是它的内核频率其实

也只有1600MHz/8=200MHz。时钟频率为:1600MHz/2=800MHz。

在《内存器件介绍之RAM篇(四)》中我们介绍了SDRAM的“突发长度”、“预充电” 、“刷新”、“数据掩码”以及DDR“预存取”等一些基本参数和概念。下面重点介绍下DDR、DDR2、DDR3的管脚功能和它们之间的差异。

♦SDRAM芯片引脚及功能如下图所示:

上图为DDR SDRAM的管脚列表及功能描述,从中可以可以发现,与SDRAM相比,DDR SDRAM多

了两个信号线:CLK#与 DQS,CLK#与正常 CLK 时钟相位相反,形成差分时钟信号。而数据的传输在 CLK 与 CLK#的交叉点进行,可见在 CLK 的上升与下降沿(此时正好是 CLK#的上升沿)都有数据被触发,从而实现 DDR。

由于数据是在 CK 的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就要求 CK 的上下沿间距要有精确的控制。但因为温度、电阻性能的改变等原因,CK 上下沿间距可能发生变化,此时与其反相的 CK#就起到纠正的作用。而由于上下沿触发的原因,也使 CL=1.5 和 2.5 成为可能,并容易实现。如下图所示,CK与CK#在相位上相差180度(CK与CK#实际上是伪差分时钟)。

♦DDR中的DQS信号 DQS 是 DDR SDRAM 中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个 DQS 信号线,它是双向的,在写入时它用来传送由北桥发来的 DQS 信号,读取时,则由芯片生成 DQS 向北桥发送。完全可以说,它就是数据的同步信号。

DQS在读取时与数据同步传输,那么接收时也是以 DQS 的上下沿为准吗?不,如果以 DQS 的

上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的同步很难控制,只能限制在一定的时间范围内,数据在各 I/O 端口的出现时间可能有快有慢,会与 DQS 有一定的间隔,这也就是为什么要有一个 tAC 规定的原因。

而在接收方,一切必须保证同步接收,不能有 tAC 之类的偏差。这样在写入时,芯片不再自己生成 DQS,而以发送方传来的 DQS 为基准,并相应延后一定的时间,在 DQS 的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在 DQS 上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。

在写入时,以 DQS 的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收 触发仍为 DQS 的上/下沿(写入时在DQS的上升/下降沿采样数据,读时在DQS的高/低电平中点采样数据)。

在讲SDRAM的时候,我们知道它的写入延迟为0,但是DDR的写入延迟已经不是 0 了,在发出写入命令后,DQS 与写入数据要等一段时间才会送达。这个周期被称为 DQS 相对于写入命令的延迟时间(tDQSS, WRITE Command to the first corresponding rising edge of DQS)。 为什么要有这样的延迟设计呢?原因也在于同步,毕竟一个时钟周期两次传送,需要很高的控制精度,它必须要等接收方做好充分的准备才行。tDQSS 是 DDR 内存写入操作的一个重要参数,太短的话恐怕接受有误,太长则会造成总线空闲。tDQSS 最短不能小于 0.75 个时钟周期,最长不能超过 1.25 个时钟周期。

♦DDR中的时钟 DDR SDRAM 对时钟的精确性有着很高的要求,而 DDR SDRAM 有两个时钟,一个是外部的总线时钟,一个是内部的工作时钟,在理论上 DDR SDRAM 这两个时钟应该是同步的,但由于种种原因,如温度、电压波动而产生延迟使两者很难同步,更何况时钟频率本身也有不稳定的情况。

DDR SDRAM 的 tAC 就是因为内部时钟与外部时钟有偏差而引起的,它很可造成因数据不同步而产生错误的恶果。实际上,不同步就是一种正/负延迟,如果延迟不可避免,那么若是设定一个延迟值,如一个时钟周期,那么内外时钟的上升与下降沿还是同步的。鉴于外部时钟周期也不会绝对统一,所以需要根据外部时钟动态修正内部时钟的延迟来实现与外部时钟的同步,这就是 DLL 的任务。

DLL 不同于主板上的 PLL,它不涉及频率与电压转换,而是生成一个延迟量给内部时钟。目前 DLL 有两种实现方法,一个是时钟频率测量法(CFM,Clock Frequency Measurement),一个是时钟比较法(CC,Clock Comparator)。

CFM 是测量外部时钟的频率周期,然后以此周期为延迟值控制内部时钟,这样内外时钟正好就相差了一个时钟周期,从而实现同步。DLL 就这样反复测量反复控制延迟值,使内部时钟与外部时钟保持同步。

CC 的方法则是比较内外部时钟的长短,如果内部时钟周期短了,就将所少的延迟加到下一个内部时钟周期里,然后再与外部时钟做比较,若是内部时钟周期长了,就将多出的延迟从下一个内部时钟中刨除,如此往复,最终使内外时钟同步。

上图为DDR2/DDR3的芯片的引脚和功能说明,与DDR相比,DDR2/DDR3最大的差别是多了OCD和ODT功能。

CD是Off-Chip Driver的缩写,即片外驱动调校的意思。OCD 的主要用意在于调整 I/O 接口

端的电压,来补偿上拉与下拉电阻值。目的是让 DQS 与 DQ 数据信号之间的偏差降低到最小。调校期间,分别测试 DQS 高电平/DQ 高电平,与 DQS 低电平/DQ 高电平时的同步情况,如果不满足要求,则通过设定突发长度的地址线来传送上拉/下拉电阻等级(加一档或减一档),直到测试合格才退出 OCD 操作。

ODT是On-Die Termination的缩写,即片内终结的意思。所谓的终结,就是让信号被电路的终

端吸收掉,而不会在电路上形成反射,造成对后面信号的影响。

在 DDR 时代,控制与数据信号的终结在主板上完成,每块 DDR 主板在 DIMM 槽的旁边都会有

一个终结电压岛的设计,它主要由一排终结电阻构成。长期以来,这个电压岛一直是 DDR 主板设计上的一个难点。而 ODT 的出现,则将这个难点消灭了。 顾名思义,ODT 就是将终结电阻移植到了芯片内部,主板上不在有终结电路。ODT 的功能与禁止由北桥芯片控制,ODT 所终结的信号包括 DQS、DQ、DM 等。

在向内存写入时,如果只有一条 DIMM,那么这条 DIMM 就自己进行终结,终结电阻等效为 150

Ω。如果为两条 DIMM,一条工作时,另一条负责终结,但等效电阻为 75Ω。在从内存读出时,终结操作也将在北桥内进行,如果有两条 DIMM,不工作的那一条将会终结信号在另一方向的余波,等效电阻也因 DIMM 的数量而有两种设置。ODT电阻网络示意图如下图所示。

在关于内存的前面相关介绍文字中,基本上都是关于内存原理性方面的内容,下面介绍点DDR总线匹配方式和信号时序测试方面的实用内容。

♦DDR总线的匹配方式

SDRAM芯片总线使用的是3.3V LVTTL(Low Voltage Transistor-Transistor Logic)逻辑电平;

DDR芯片总线使用的是SSTL-2(Stub Series Terminated Logic 2.5V,短线串联终止逻辑)逻辑

电平,I/O端口电压2.5V;

DDR2芯片总线使用的是SSTL-18(Stub Series Terminated Logic 1.8V,短线串联终止逻辑)

逻辑电平,I/O端口电压1.8V;

DDR3芯片总线使用的是SSTL-15(Stub Series Terminated Logic 1.5V,短线串联终止逻辑)

逻辑电平,I/O端口电压1.5V;

DDR/DDR2/DDR3总线有四种匹配方式(其实是SSTL逻辑的匹配方式): 1).串联匹配

此匹配方式不需要VTT电源,但属于非理想匹配,DDR Controller的驱动能力对接收器件波形影响很大,且电路中ISI效应明显,串联电阻视驱动能力大小调整,典型值为25ohm。

2).单端上拉匹配

单端上拉匹配是内存条设计中最常用的匹配方式,设计中需注意要将上拉电阻靠近接收端放置。现在的简化设计中,一般不提供独立的VTT电源,而是利用两个100ohm电阻分别上拉到VDDQ和下来到地,分压得到VDDQ一半的电压,而且等效阻抗也是50ohm,效果一样。

3).双端上拉匹配

此种匹配方式常用于双向信号传输线路,并且要求BUFFER的驱动能力较强。

4).RC匹配方式

RC匹配主要用于多负载的地址、控制信号匹配,使信号平滑。

♦内存信号的时序测试(也就是SSTL逻辑电平的时序测试)

SSTL逻辑电平结构中的接口参数包括:VDDQ、VIH(ac)、VIH(dc)、Vref、VIL(dc)、VIL(ac),VSS,如下图所示。

1).VIH(ac)输入高电平交流参数:当信号向上穿越此阀值后为逻辑高电平的开始; 2).VIH(dc)输入高电平直流参数:当信号向下穿越此阀值后为逻辑高电平的结束; 3).VIL(ac)输入低电平交流

参数:当信号向下穿越此阀值后为逻辑低电平的开始; 4).VIL(dc)输入低电平直流参数:向信号向上穿越此阀值后为逻辑低电平的结束。

DDR地址、控制信号的建立和保持时间均参考时钟信号CK、CK#,而数据信号的建立时间和保持

时间参考的却是DQS。数据信号的建立和保持时间测试方法分为以下四种情况。

1).在理想条件下,DQS和数据的Skew rate(信号上升/下降沿电平幅度与时间的比值,反应的是信号电平跳变的速度快慢)均大于等于1V/ns。此时数据的建立时间tSetup和数据的保持时间tHold测试方法如下图所示。

2).在非理想条件下,DQS的Skew rate小于等于1V/ns,数据信号的Skew rate大于等于1V/ns。此时数据的建立时间tSetup和数据的保持时间tHold测试方法如图所示。

3). 在非理想条件下,数据的Skew rate小于等于1V/ns,DQS信号的Skew rate大于等于1V/ns。此时数据的建立时间tSetup和数据的保持时间tHold测试方法如下图所示。

4).在极不理想情况下,DQS和数据的Skew rate小于等于1V/ns。此时数据的建立时间tSetup和数据的保持时间tHold测试方法如图所示。

因篇幅问题不能全部显示,请点此查看更多更全内容