SDRAM存储接口

简介
DRAM即动态随机存储器(Dynamic Random Access Memory),动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。DRAM是一种易失性存储器,分SDRAM和RDRAM两种,因为RDRAM的应用远小于SDRAM,因此下面只介绍SDRAM。
SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器。同步是指其时钟频率与CPU前端总线的系统时钟频率相同,并且内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据的读写。SDRAM发展至今共经历了4代,分别是:
SDR: Single Data Rate,3.3V电压,LVTTL电平。
DDR:Double Data Rate,2.5V电压,SSTL_2电平。
DDR2:Double Data Rate2,1.8V电平,SSTL_18电平。
DDR3:Double Data Rate3,1.5V电平,SSTL_15电平。
因为DDR、DDR2、DDR3都是从SDR发展起来的,下面重点介绍SDR相关特性。
SDR SDRAM
1、物理BANK、逻辑BANK与芯片位宽
A、物理BANK
传统内存系统为了保证CPU的正常工作,必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。控制内存与CPU之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于CPU数据总线的位宽,而这个位宽就称之为物理Bank(Physical Bank,下文简称P-Bank)的位宽。
B、芯片位宽
每个内存芯片也有自己的位宽,即每个传输周期能提供的数据量。理论上,完全可以做出一个位宽为64bit的芯片来满足P-Bank的需要,但这对技术的要求很高,在成本和实用性方面也都处于劣势。所以芯片的位宽一般都较小。现在常用的SDRAM芯片位宽为16bit。这样,为了组成P-Bank所需的位宽,就需要多颗芯片并联工作。对于16bit芯片,需要4颗(4×16bit=64bit)。
以上就是芯片位宽、芯片数量与P-Bank的关系。P-Bank其实就是一组内存芯片的集合,这个集合的容量不限,但这个集合的总位宽必须与CPU数据位宽相符。
C、逻辑BANK
SDRAM的内部是一个存储阵列如图 2-16所示。阵列就如同表格,和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑Bank(Logical Bank,下文简称L-Bank)。
由于技术、成本等原因,不可能只做一个全容量的L-Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的L-Bank将会造成非常严重的寻址冲突,大幅降低内存效率。所以人们在SDRAM内部分割成多个L-Bank,较早以前是两个,目前基本都是4个,这也是SDRAM规范中的最高L-Bank数量。在最新DDR-Ⅱ的标准中,L-Bank的数量提高到了8个。
SDRAM存储接口_第1张图片
图1:L-BANK逻辑阵列
2、内存芯片的容量
内存芯片的容量就是所有L-Bank中的存储单元的容量总合。计算有多少个存储单元和计算表格中的单元数量的方法一样:
存储单元数量=行数×列数(得到一个L-Bank的存储单元数量)×L-Bank的数量
在很多内存产品介绍文档中,都会用M×W的方式来表示芯片的容量(或者说是芯片的规格/组织结构)。M是该芯片中存储单元的总数,单位是兆(英文简写M,精确值是1048576,而不是1000000),W代表每个存储单元的容量,也就是SDRAM芯片的位宽(Width),单位是bit。计算出来的芯片容量也是以bit为单位,但用户可以采用除以8的方法换算为字节(Byte)。比如8M×8,这是一个8bit位宽芯片,有8M个存储单元,总容量是64Mbit(8MB)。
3、引脚定义
A0~A11:地址引脚;行列复用,行地址:A0~A11,列地址:A0~A8。
BS0、BS1:bank选择,SDRAM里面的存储单元被逻辑的分为几块,每一块叫一个bank。每个bank之间共用地址线。一般会分为4个bank,通过BS0:BS1的组合选择某一个bank。
DQ0~DQ15:数据引脚,数据的输入以及数据的输出复用引脚。数据的输入通过时钟信号的上升沿采样。
CS#:片选信号。如果取消片选,已在执行的命令继续执行,新命令忽略。
RAS#、CAS#、WE#:命令信号输入,这三个信号一起决定SDRAM执行什么操作。
UDQM/LDQM:DQ信号屏蔽;写操作时可屏蔽输出,读操作时可充当输出使能。
CLK:时钟信号,用CLK的上升沿采样输入信号。
CKE:时钟使能。
4、SDR内部基本操作
SDR基本操作包括以下模块:初始化、行有效、列读写、数据输入、数据输出、突发、预充电、刷新、数据掩码,以下对它们进行简单介绍。
初始化:SDR内部有一个逻辑控制单元,并且有一个模式寄存器(MR)为其提供控制参数,系统上电后,由CPU控制MR配置,配置信息由地址线提供。
行有效:初始化完成后,需要对存储单元进行寻址,首先是行地址选通,同时进行的还有片选和L-BANK的定址。
列读写:指列地址选通及读写操作的确定,行地址和列地址采用相同的地址线传输,因此列读写操作与行有效操作之间要有一定的时间间隔,这个间隔定义为tRCD,即RAS to CAS Delay。一次寻址,是要对SDR进行读操作还是写操作由写使能信号确定,写使能信号为高电平时是写操作,低电平时是读操作。
数据输出:也就是读操作。在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过数据I/O通道(DQ)输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS潜伏期)。由于CL只在读取时出现,所以CL又被称为读取潜伏期(RL,Read Latency)。CL的单位与tRCD一样,为时钟周期数,具体耗时由时钟频率决定。
数据输入:即写操作。数据写入的操作也是在tRCD之后进行,但此时没有了CL。数据写入可以与CAS命令一起发出,但由于晶体管打开需要时间,为了保证写入的可靠性,需要留出足够的写入和校验时间,这个时间就是tWR(Write Recovery Time),这个操作也叫写回。
突发:通常对SDR的操作会有连续几个存储单元的数据,如果每次都寻址再读写,将浪费太多时间。为此,设计了突发操作,其本质就是连续传输相邻存储单元的数据,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称BL)。
预充电:由于SDRAM的寻址具体独占性,所以在进行完读写操作后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行复位,同时释放S-AMP以准备新行的工作。
刷新:前面说过,SDRAM是一种易失性存储器,需要进行周期性的刷新操作才能保证存储在其中的数据的有效性。刷新的本质与预充电中重写的操作一样,都是用S-AMP先读再写。存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。这样刷新速度就是:行数量/64ms。
数据掩码:前面讲到,突发操作连续传输BL个存储单元的数据,但实际中并不是所有的数据都有效,为了将无效数据屏蔽,引入数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。
DDR 、 DDR2 与 DDR3
SDRAM存储接口_第2张图片
图2:prefetch结构示意
DDR即Double Data Rate,是SDR SDRAM的升级版。它与SDR最大的区别在于:1、数据采样不再直接以时钟为参考,而是以DQS为参考;2、DDR在DQS的上下边沿都进行采样,因此理论速率是SDR的两倍(采用所谓的两位预取-2n-prefetch结构);3、时钟信号也由单端变为差分;4、DDR采用了SSTL_2逻辑电平。
DDR2对于DDR1主要差异在于DDR2引入了差分DQS、ODT、OCD以及使用了4n-Prefetch。当然,为了满足更高速率要求,逻辑电平变更为SSTL_18。
DDR3对于DDR2主要差异在于DDR3完全使用差分DQS,ODT改进为Dynamic ODT以及使用了8n-Prefetch;另外还新引入了Reset、ZQ校准、Leveling等新功能。DDR3的逻辑电平为SSTL_15。
什么是预取结构呢?假设芯片的位宽为n,如图 2所示,对于2位预取,DDR每次从存储单元中读取2n bit的数据,放在I/O buffer中,由I/O buffer转换为两个n bit的数据流,分别在DQS的上下边沿分两次传输。因此,在DDR中,存储单元的容量不再等于内存芯片的位宽,他们的关系为:存储单元位宽=m倍芯片位宽,其中m为预取数。
SDR、DDR、DDR2、DDR3特性对比如表 1所示。
SDRAM存储接口_第3张图片
表 1:各代SDRAM特性
SDRAM 时序设计
1、单向信号的时序设计
在SDRAM中,单向信号包括地址、控制、使能等,单向信号都是以时钟作为参考信号,时序设计中重点关注信号的建立时间tIS(Input Setup Time)和保持时间tIH(Input Hold Time)。前面讲过,数字电路的时序设计,需要考虑TX端的发射时序特性和RX端对接收的时序要求,对于SDRAM的单向信号,TX端为CPU,RX端为SDRAM。
2、写信号时序设计
写信号重点考虑数据的建立和保持时间。写信号TX端为CPU,RX端为SDRAM,类似于单向信号的时序设计。
要注意的是,对于DDR、其数据参考信号不再是时钟而是DQS,因此设计时要以DQS为基准。DQS有两根线,分别为LDQS,UDQS,分别对应DQ0-DQ7,DQ8-DQ15,测试及时序计算时要加以区分。
3、读信号时序设计
读信号的参数主要衡量DQ,DQS,及CLK信号之间的Skew(偏离程度)关系。理论上在读取数据时DQ,DQS及CLK信号的上升边沿都应该是对齐的(对SDR而言,是DQ与CLK之间的关系,没有DQS),但由于设计及芯片内部的一些原因,出现了一些偏离。
读信号的TX端是SDRAM,RX端是CPU,因此设计是要看SDRAM端的发射特性及CPU端的接收要求。
因为数据的读写共用数据线,因此在设计数据线的layout约束时,要同时满足读、写信号的时序要求,并留有定的余量。
SDRAM 设计注意事项
作为高速数据总线接口,SDRAM,尤其是后来的DDR系列,对时序的要求都比较严格,因此正确的时序设计至关重要。同时,SDRAM时钟频率很高,在DDR3中已高达800MHz,这会带来很多的信号完整性问题,这些也需要在设计中重点关注。关于DDR的设计,后续培训中会有详细介绍,这里不多作说明。

你可能感兴趣的:(硬件通讯总线)