找回密码
 注册
搜索
查看: 1351|回复: 1

[资料] SDRAM内存详解(转载)

[复制链接]
发表于 2006-6-20 16:38:00 | 显示全部楼层 |阅读模式
虽然目前SDRAM内存条价格已经接底线,内存开始向DDR和Rambus内存过渡。但是由于DD
R内存是在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 21
4 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的时候,北桥芯片会按照EE
PROM的读写规格首先向该芯片发送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内容的含义在此就
不做进一步说明。
注:SPD涉及到的缩写
SA 0-2 Serial Presence Detect Address Inputs
SDA Serial Presence Detect Address Input/Output
SCL Serial Presence Detect Clock Input
WP Write Protect for SPD on DIMM
内存条的设计
 
我们已经知道了内存颗粒、SPD的接口信息,下面就可以开始设计内存了。内存条的逻辑
功能图差别不是非常大,对于不同容量的颗粒,只是在数量上有所改变。
上面的逻辑功能图就是一个带ECC功能72bit 内存条的逻辑功能图。采用的是16bit数据
宽度的内存颗粒。由于内存条每次读写必须满足64bits(非ECC)或者72bit(ECC),所以
在设计的时候颗粒数量是固定的。上面的内存条仅仅只有一个Bank,所以没有使用BA信
号。如果该内存条设计的时候是两个Bank,其功能图中就多出了BA选择信号,并且其容
量也会随之增加1倍。剩下的工作就是布线,在一个6层电路板上布下所有的信号线。
但是随着目前服务器内存的增大,内存插槽数量的增多,服务器内存系统各个引脚间的
引线长度会产生较大差别,导致信号时序会产生错位。并且控制器的信号控制这么多的
内存,有限的驱动能力会不堪重负。针对这种情况,服务器中的内存主要采用的是Regi
stered内存,在内存上添加锁相环电路和几个寄存器,这样每个控制信号仅仅针对数量
很少的寄存器,不用针对内存条上的每个内存颗粒来输出信号,可以很大程度上降低控
制芯片的负载,提高信号的质量。同时锁相环电路大大减少了内存系统的时间延迟,保
证了数据的同步。
下面就是寄存器的功能图
寄存器仅仅寄存了每个内存条上的控制信号,对于数据信号没有进行任何操作。因为控
制信号例如S0、CKE0等等信号都是控制多个内存颗粒的信号,所以当服务器上安装8到1
6条内存的时候,仅仅靠主板上的控制芯片来控制肯定是力不从心。
上面的逻辑图就很好的说明了Registered内存中锁相环电路的作用。该电路时时保证和
主板上的时钟电路所属出的时钟频率保持同步,使用这个时钟信号驱动寄存器和内存芯
片颗粒就不会产生时钟的漂移。所以目前的服务器内存都采用的是Registered内存条。

主板上内存系统的设计
主板上对于内存的访问主要是由北桥芯片来控制。32位CPU能够访问的内存容量是64GB。
这是由CPU寻址空间和数据带宽固定的。但是在实际使用中,我们的北桥芯片能够寻址的
空间却十分有限。一般PC是2GB,高端PC可能达到4GB,高端服务器可以达到32GB的内存
容量。这一部分和各个系统内存控制芯片的设计有关。在此我以Intel 815E芯片组为例
说明一下主板上内存系统的设计。
Intel 815E北桥控制芯片的内存控制电路的逻辑图如下:
每种信号引脚的功能如下表:
 
符号    功能    详细描述
SMD [0-63]    I/O    数据输入/输出
SMAA [0-12]    I/O    地址选择
SMAB [4-7]    I/O    地址选择
SMAC [4-7]    I/O    地址选择
SBS [0-1]    Control    Bank选择
SCSA [0-5]    Control    片选信号
SCSB [0-5]    Control    片选信号
SRAS    Control    行地址选择信号
SCAS    Control    列地址选择信号
SDQM [0-7]    Control    数据掩码控制
SWE    Control    写允许信号
SCKE [0-5]    Clock    时钟允许信号
SRCOMP    Control    用来校准系统内存的I/O缓冲。一般在主板上固定设置为高
该芯片组的内存兼容性和管理特性主要有下面几点:
Intel 815E支持64bits的内存。
从芯片引脚信号图可以看出,该芯片组只有64bits的数据带宽,没有8bits的ECC校验。

北桥芯片没有SPD监测电路。
该信息必须通过南桥芯片上的服务器系统管理总线SM_Bus总线来读出SPD的信息,然后传
送到北桥芯片的寄存器中。
该芯片组不支持Registered内存。
可以支持3个DIMM插槽。每个槽位最大支持512MB。
计算方法:采用SMAA,总共使用数据带宽为64bits。
容量为512MB=213 x 213 x 8
我们根据Intel 815E芯片的特性,就可以设计出主板上的DIMM插槽的电路连接逻辑示意
图了(注:该图中没有标出SPD的地址分配信息):
每个DIMM槽的SDQM、SMD、SMB_CLK(管理总线_时钟信号线)、SMB_DATA(管理总线_数
据信号线)、SCAS、SRAS、SWE、SBS是共享的。那么如何区别每个DIMM槽上的内存呢?
每个DIMM槽上的内存颗粒通过SMAA,SMAB,SMAC三个地址来区分其不同的地址段,而12
条片选信号则在每个DIMM槽上分配4条,分别选择不同的芯片颗粒。这样同种的内存条插
在不同的插槽上就被分配了不同的内存地址段。
至此,我们的内存系统从颗粒到主板的整个地址和数据组织管理模式就清晰的摆在读者
面前了。
   
--
           
          田径之美在于百米起跑的瞬间、在于万米征程中的坚持不懈。。。

          生活是美好的,需要我们努力去创造!

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.230.48]
发表于 2006-6-23 14:10:00 | 显示全部楼层

SDRAM内存详解(转载)

[em08] huhu....
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-29 08:19 , Processed in 0.045144 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表