Chinaunix首页 | 论坛 | 博客
  • 博客访问: 297075
  • 博文数量: 103
  • 博客积分: 2345
  • 博客等级: 大尉
  • 技术积分: 902
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-01 09:10
文章分类

全部博文(103)

文章存档

2022年(1)

2018年(3)

2017年(2)

2016年(3)

2015年(8)

2014年(8)

2013年(2)

2012年(9)

2011年(29)

2010年(20)

2009年(18)

我的朋友

分类: 嵌入式

2011-09-29 15:31:58

    主要谈论我们大家都能接触到的SDRAM内存了,首先得承认SDRAM同我们之前介绍的异步DRAM是差别非常大的。它的基本原理同前面提到的DRAM还是基本一样的(比如基本存储单元都是按照阵列排列,都有RAS和CAS的概念),不过这些存储单元的组织和控制同DRAM就具有相当大的差别了。在前面我们讨论其它类型的内存都是采用了以具体的产品为例来讲述的,所以这里我们依然采用这种形式,这次我们以
MICRON MT48LC4M4A1 16MB SDRAM为例。

  如果你还记得我们在前面介绍的DRAM相关内容,那么应该还记得DRAM是以bank来组织存储单元的。因为每个内存bank的位宽是同数据总线阿位宽一样的。所以对于SIMM,你必须把多个SIMM放在一个bank之中来满足32bit或者64bit数据总线的要求。DIMM具有更多阿引脚,所以单个DIMM可以提供足够的同数据总线相适应的位宽--这样每个bank只要一个DIMM就可以了。而且SDRAM更进一步的是可以在单个的DIMM中存在多个bank,这样不但能够满足数据总线的需要还能进一步的提高总线的性能。下面就让我来解释一下:
在我们前面讨论的DRAM读取方式中,当一个读取周期结束后,/RAS和/CAS都必须停止激活然后有一个短暂的预充电期才能进入到下一次的读取周期中。但是一个具有两个bank的SDRAM的模组中,其中一个bank在进行预充电的期间另一个bank却可以被调用--这样当你需要读取已经预充电的bank的数据时,就无需等待而是可以直接调用了。为了实现这个功能,SDRAM就需要增加对于多个bank的管理,这样就可以实现控制其中的bank进行预充电,并且在需要使用的时候随时调用了。这样一个具有两个bank的SDRAM一般会多一根叫做BA0的引脚,实现在两个bank之间的选择--一般的BA0是低电平表示Bank0被选择,而BA0是高电平Bank1就会被选中。

  可见,虽然SDRAM在基本的原理上比如基本存储的结构都是基本一样的,但是在整个内存架构的组织上是不同的,而且在存储单元的控制上也是有着相当大的区别的。因为异步DRAM同处理器和芯片的时钟并没有什么关系,所以芯片组只能按照DRAM内存的时序要求“被动”的操作DRAM控制引脚。SDRAM因为要同CPU和芯片组共享时钟,所以芯片组可以主动的在每个时钟的上升沿发给引脚控制命令。


专家详解:内存工作原理及发展历程

  上图显示的就是MT48LC4M4A1 16MB SDRAM内存颗粒的引脚示意图,它采用了50引脚的TSOP封装,符合PC100规范。这种内存颗粒将同系统时钟同步运行。这种内存颗粒的架构1Mx16-512Kx16x2,每bank行地址数目是11,列地址数目是8。我们首先来介绍一下这种内存颗粒的引脚定义:A0-A10:地址输入引脚,当ACTIVE命令和READ/WRITE命令时,来决定使用某个bank内的某个基本存储单元。CLK:时钟信号输入引脚
CKE:Clock Enable,高电平时有效。当这个引脚处于低电平期间,提供给所有bank预充电和刷新的操作
/CS:芯片选择(Chip Select),SDRAM DIMM一般都是多存储芯片架构,这个引脚就是用于选择进行存取操作的芯片。/RAS:行地址选择(Row Address Select)。/CAS:列地址选择(Column Address Select)
/WE:写入信号(Write Enable)。DQ0-DQ15:数据输入输出接口。BA:Bank地址输入信号引脚,BA信号决定了由激活哪一个bank、进行读写或者预充电操作;BA也用于定义Mode寄存器中的相关数据。NC:空引脚。DQM: 这个引脚的主要用于屏蔽输入/输出,功能相当于/OE引脚( Output Enable)。VDDQ:DQ供电引脚,可以提高抗干扰强度。VSSQ:DQ供电接地引脚。VSS:内存芯片供电接地引脚。VDD:内存芯片供电引脚,提供+3.3V ±0.3V(上面的列表项目和示意图中,前面标有“/”或者“#”标记的表示在低电平下有效)。

  下面的表格在不同的状态下(或者说不同命令下)的各个引脚的信号。“H”代表高电平,“L”代表低电平,“X”代表可以是任何状态,也就是该引脚同该命令并没有直接的关系。功能/CS /RAS /CAS /WE DQM ADDR。COMMAND INHIBIT (NOP) H X X X X X 。NO OPERATION (NOP) L H H H X X。ACTIVE (选择bank并且激活相应的行) L L H H X Bank/Row 。READ (选择bank和列地址,并且开始突发读取) L H L H X Bank/Col 。WRITE (选择 bank和列地址,并且开始突发写入) L H L L X Bank/Col。BURST TERMINATE(停止当前的突发状态) L H H L X X 。PRECHARGE (让相应的bank中的行失活或者让该bank失活) L L H L X Code 。AUTO REFRESH(进入自动刷新模式) L L L H X X 。LOAD MODE REGISTER L L L L X Op-code。写入启用/输出启用 L。写入禁止/输出禁止 H。

专家详解:内存工作原理及发展历程

  如果你对于我们前面介绍的内容有了真的有所了解了,看到上面的芯片引脚示意图和各个针脚的功能示意图就基本对于SDRAM的工作工程有了一个基本的了解了,在下面的章节里我们就对于这个过程进行详细的介绍,首先我们对于一些基本的概念做一些了解。

  这条SDRAM颗粒采用了双bank(每bank 512K x 16 DRAM)的工作电压是3.3V,并且采用同步接口方式(所有的信号都是时钟信号的上升沿触发)。每一个512K x 16-bitbank由2,048行乘以256列个基本存储单元构成,输出数据位宽是16 bit。Read和write操作都是通过突发导向模式访问SDRAM的;这种访问模式以访问指定的区域开始的,然后按照预先设定的方式定位其它的数据的所在。每次访问都是以ACTIVE命令启动的,然后仅仅跟着一个READ或者WRITE命令。不过在进行所有这些操作之前,SDRAM必须首先进行初始化。初始化SDRAM在上电之后,必须首先按照预定的方式进行初始化才能正常的运行。一旦VDD和VDDQ被同时供电并且时钟稳定下来,SDRAM就需要一个100微秒的延迟,在这个时间段中COMMAND INHIBIT和NOP指令有效,这个过程实际上就是内存的自检过程,一旦这个过程通过之后一个PRECHARGE命令就会紧紧随着最后一个COMMAND INHIBIT或者NOP指令而生效,这个期间所有的内存都处于空闲(idle)状态,随后会执行两个AUTOREFRESH周期、当AUTOREFRESH周期完毕之后,SDRAM为进行Mode Register编程做好了准备。因为Mode Register上电会引起一个为止的状态,它会在进行所有正常指令之前被载入。至此,初始化过程完成。

阅读(1210) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~