SDRAM内存详解(经典)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SDRAM内存详解(经典)
我们从内存颗粒、内存槽位接口、主板和内存之间的信号、接口几个方面来详细阐述SDRAM内存条和主板内存系统的设计思路...
虽然目前SDRAM内存条价格已经接底线,内存开始向DDR和Rambus内存过渡。但是由于DDR内存是在SDRAM基础上发展起来的,所以详细了解SDRAM内存的接口和主板设计方法对于设计基于DDR内存的主板不无裨益。下面我们就从内存颗粒、内存槽位接口、主板和内存之间的信号接口几个方面来详细阐述SDRAM内存条和主板内存系统的设计思路。
内存颗粒介绍
对于DRAM(Dynamic Random Access Memory)内存我想凡是对于计算机有所了解的读者都不会陌生。这种类型的内存都是以一个电容是否充有电荷来作为存储状态的标志,电容冲有电荷为状态1,电容没有电荷为状态0。其最大优点是集成度高,容量大,但是其速度相对于SRAM (Static Random Access Memory) 内存来说慢了许多。目前的内存颗粒封装方式有许多种,本文仅仅以大家常见的TSSOP封装的内存颗粒为例子。
其各个管脚的信号定义和我们所使用的DIMM插槽的定义是相同的,对于不同容量的内存,地址信号的位数有所不同。另外一个需要注意的地方就是其供电电路。Vcc和Vss是为内存颗粒中的存储队列供电,而VccQ和VssQ是为内存颗粒中的地址和数据缓冲区供电。两者的作用不同。
我们对内存颗粒关心的问题主要是其颗粒的数据宽度(数据位数)和容量(寻址空间大小)。而对于颗粒自检、颗粒自刷新等等逻辑并不需要特别深入的研究,所以对此我仅仅是一笔带过,如果读者有兴趣的读者可以详细研究内存颗粒的数据手册。虽然内存颗粒有这么多的逻辑命令方式,但是由于目前北桥芯片和内存颗粒的集成度非常高,只要在布线和元器件的选择上严格按照内存规范来设计和制造,需要使用逻辑分析仪来调试电路上的差错的情况比较少,并且在设计过程中尽量避免出现这种情况。
168线DIMM内存插槽的信号定义
我们目前PC和Server使用的内存大都是168 Pins的SDRAM,区别只是其工作频率有的可能是100MHz频率,有的可能是133MHz频率的。但是只要是SDRAM,其DIMM插槽的信号定义是一样的。而这些引脚得定义就是设计内存条和主板所必须遵从的规范。
内存引脚主要分为如下几类:地址引脚、数据引脚(包含校验位引脚)、片选等控制信号、时钟信号。整个内存时序系统就是这些引脚上的信号配合产生。下面的表中就是内存插槽的引脚数量和引脚定义,对于一些没有定义或者是保留以后使用的信号就没有列出来。
符号功能详细描述
DQ [0-63] I/O 数据输入/输出
CB [0-7] I/O ECC内存的ECC校验输入/输出
A [0-13] I/O 地址选择
BA [0-1] Control Bank选择
CS [0-3] Control 片选信号
RAS Control 行地址选择信号
CAS Control 列地址选择信号
DQMB [0-7] Control 数据掩码控制(DQ Mask)高有效*
WE Control 写允许信号
CK [0-3] Clock 时钟信号
CKE [0-1] Clock 时钟允许信号**
REGE Control 寄存器 (Registered) 允许信号
SA [0-2] I/O SPD地址输入
SDA I/O SPD数据输入/输出
SCL Clock SPD时钟输入
WP Control 写保护
Vss Power 电源线
Vdd Power 地线
注:
SPD Serial Presence Detect 内存序列存储芯片
RAS Row Address Strobe 行地址选择
CAS Column Address Strobe 列地址选择
* 在读模式时,控制芯片颗粒的Buffers数据输出
在写模式时,将芯片颗粒的Buffers中的数据写入芯片颗粒中的内存队列中
** 当该信号为高时,时钟信号有
当该信号为低时,时钟信号无效,并且该信号会触发内存颗粒的低功耗模式、自刷新模式或者挂起模式。
我们从DIMM插槽的引脚定义就可以计算出来,每个DIMM槽位最大支持的内存数值。该数值实际上是寻址空间乘上数据宽度,所以每个DIMM槽位支持最大容量为4GB = 214 x 214 x 8 Byte。但是由于内存芯片颗粒的制造局限性,所以目前能够使用的DIMM条的内存都达不到这个容量,其容量最大的内存条为1GB。
在设计和制造内存条的时候,所有的内存条都是按照插槽的规范来布线和生产,所以对于内存地址空间,所有生产出来的内存条都是相同的地址空间,例如一条128MB内存,他就是用了地址线A0-A13,当我们在一台计算机上安装多个内存时,如何分配每个内存内存条的地址空间呢?这个工作就需要北桥芯片和主板来配合了。
SPD信号定义
内存中使用的SPD都是一片8针TSSOP(Plastic Thin Small Outline Package)封装的串行存储EEPROM,其容量是2048bit。每个DIMM的SPD数据读写时钟线SCL和数据线SDA都是共享在一条总线上,所以当我们在一台机器上会安装多条内存时,其SPD的片选信号就需要事先确定。该片选信号是由SA0,SA1,SA2三条数据线来确定,该数据线的状态由主板设计厂商在设计主板的时候固定下来。在每次读写该EEPROM的时候,北桥芯片会按照EEPROM的读写规格首先向该芯片发送3位片选信号和8位地址信息,每个芯片都会读入该3位片选信号和8位地址信号。当3位片选信号和主板上固化的3?
醯刂废撸⊿A0,SA1,SA2)的状态一致的时候该内存条上的SPD芯片就被选中,其信息会记录在北桥控制器的寄存器中(Register)。
SPD读写逻辑中的片选必须满足下图的时序逻辑。在此主要介绍地址选择逻辑,对于数据如何读写的时序,有兴趣的读者可以查阅 Atemel 24C02A 的数据手册(许多内存厂商都选用该芯片作为SPD)。在这个时序中,硬件上仅仅需要满足其Device Address 地址信息。该地址信息是一个 8bit 的数据,它的格式如下
地址位0 1 2 3 4 5 6 7
数据 1 0 1 0 A2 A1 A0 R/W
该数据通过SCL提供的时钟同步,0-3 位是固定的信息,4-6 位是片选地址,7位是判断该,命令是读还是写。在芯片内部会对4-6位的数据和硬件电路上的状态进行比较,相符的话,该芯片被选中,否则不进行下面的操作。从该时序逻辑可以得知,一个SPD通道(仅仅只有一对SCL和SDA信号线)只支持8条内存。至于SPD的读写和SPD内容的含义在此就不做进一步说明。