SDRAM工作原理

来源:互联网 发布:淘宝女装分类名称 编辑:程序博客网 时间:2024/04/28 05:24

原文地址:SDRAM工作原理作者:胡昶基

    SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)也就是通常所说的内存。在我们现在所用的PC机中,所指的内存,其实就是SDRAM,只不过是他的升级版,如DDR内存,DDR2内存,DDR3内存等等,大部分显卡上的显存也是SDRAM的。

    内存是代码的执行空间,以PC机为例,程序是以文件的形式保存在硬盘里面的,程序在运行之前先由操作系统装载入内存中,由于内存是RAM(随机访问存储器),可以通过地址去定位一个字节的数据,CPU在执行程序时将PC的值设置为程序在内存中的开始地址, CPU会依次的从内存里取址,译码,执行,在内存没有被初始化之前,内存好比是未建好的房子,是不能读取和存储数据的,因此我们要想让程序运行在内存里必须进行内存的初始化。

    在介绍内存工作原理之前有必要了解下存储设备的存储方式:ROM,RAM

    ROM(Read-Only Memory):只读存储器,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,资料并且不会因为电源关闭而消失。如:PC里面的BIOS。

    RAM(Random Access Memory) :随机访问存储器,存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。可以理解为,当你给定一个随机有效的访问地址,RAM会返回其存储内容(随机寻址),它访问速度与地址的无关。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间内随机访问使用的程序。计算机系统里内存地址是一个四字节对齐的地址(32位机),CPU的取指,执行,存储都是通过地址进行的,因此它可以用来做内存。

    RAM按照硬件设计的不同,随机存储器又分为DRAM(Dynamic RAM)动态随机存储器和SRAM(Static RAM) 静态随机存储器。

    DRAM:它的基本原件是小电容,电容可以在两个极板上短时间内保留电荷,可以通过两极之间有无电压差代表计算机里的0和1,由于电容的物理特性,要定期的为其充电,否则数据会丢失。对电容的充电过程叫做刷新,但是制作工艺较简单,体积小,便于集成化,经常做为计算机里内存制作原件。比如:PC的内存,SDRAM, DDR, DDR2, DDR3等,缺点:由于要定期刷新存储介质,存取速度较慢。

    SRAM:它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。因此其存取速度快,但是体积较大,功耗大,成本高,常用作存储容量不高,但存取速度快的场合,比如CPU的L1 cache,L2cache(一级,二级缓存) ,寄存器。

 

    为了满足开发的需要jz2440在出厂时搭载了三种存储介质:

(1)NOR FLASH(2M):ROM存储器,通常用来保存BootLoader,引导系统启动

(2)NAND FLASH(256M,型号不一样,Nandflash大小不一样):保存操作系统映像文件和文件系统

(3)SDRAM(64M):内存,执行程序

NOR FLASH:它的特点是支持XIP芯片内执行(eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中,也就是说可以随机寻址。NOR FLASH的成本较高。

NAND FLASH:它能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。其成本较低,不支持XIP。可做嵌入式里的数据存储介质。如:手机存储卡,SD卡等。

 

S3C2440地址空间:

S3C2440对外引出了27根地址线ADDR0~ADDR26,它最多能够寻址128MB,而S3C2440的寻址空间可以达到1GB,这是由于S3C2440将1GB的地址空间分成了8个BANKS(Bank0~Bank7),其中每一个BANK对应一根片选信号线nGCS0~nGCS7,当访问BANKx的时候,nGCSx管脚电平拉低,用来选中外接设备, S3C2440通过8根选信号线和27根地址线,就可以访问1GB。如下图所示:[转载]SDRAM工作原理

SDRAM存储结构:

先来介绍一下CPU提供的一组用于SDRAM的信号:

1.       SDRAM的时钟有效信号SCKE;

2.       SDRAM的时钟信号SCLK0,SCLK1;

3.       数据掩码信号DQM0,DQM1,DQM2,DQM3;

4.       SDRAM片选信号nSCS0(它与nGCS6是同一引脚的两个功能);

5.       SDRAM行地址选通脉冲信号nSRAS;

6.       SDRAM列地址选通脉冲信号nSCAS;

7.       写允许信号nWE(它不是专用于SDRAM的)。

SDRAM的内部是一个存储阵列,阵列就类似于表格一样,有行、列之分,这样我们要访问(读、写)一个单元,就要先指定一个行地址,一个列地址,这样就找到了该单元,这就是SDRAM的寻址的基本原理。这里的单元我们一般称为存储单元,而整个表格称为逻辑BANK(Logical  Bank , L-BANK),一般每个SDRAM都会有4个L-BANK。SDRAM的逻辑结构如下图所示:

[转载]SDRAM工作原理

jz2440是选用2片HY57V561620FTP-H组成64MB、32位的内存,每片32MB容量、16位数据总线。原理图如下:

[转载]SDRAM工作原理

在图中可以看到,行地址、列地址共用地址线ADDR2~ADDR14(BANK6位宽为32,ADDR0、1没有使用),使用nSRAS、nSCAS两个信号来区分它们。在jz2440开发板中,使用两根地址线ADDR24、ADDR25作为L-Bank的选择信号;SDRAM芯片K4S561632的行地址数为13,列地址数为9,所以当nSRAS信号有效时,ADDR2~ADDR14上发出的是行地址信号,它对应32位地址空间的bit[23:11];当nSCAS信号有效时,ADDR2~ADDR10发出的是列地址信号,它对应32位地址空间的bit[10:2]。

重点关注SDRAM芯片K4S561632地址线 A0~A12的说明:

[转载]SDRAM工作原理

该芯片每一个Bank有13行(RA0~RA12),9列(CA0~CA8),行寻址时使用A0~A12,列寻址分时复 用,只使用了CA0~CA8。nRAS、nCAS引脚,用于标识当前是行寻址还是列寻址,从而实现地址线的分时复用。

jz2440开发板是由两块16位的SDRAM芯片并联组成32位的位宽,与CPU的32根数据线DATA0~DATA1相连。SDRAM是连接在BANK6上的,起始地址为0x30000000,所以SDRAM的访问地址为0x30000000~0x33FFFFFF,大小为64MB。

 

看了上面那些内容,里面有某些东西令我百思不得其解,可能是自己太笨了,不过最后还是想明白了。

1、为什么两块SDRAM芯片并联起来,容量大小是64MB呢?

原因是这样的:SDRAM芯片有4个bank,每个bank的行地址数是13、列地址数是9,由两块16位的SDRAM芯片并联组成32位的位宽,与CPU的32根数据线DATA0~DATA1相连。则其存储空间为(2^13*2^9*4*32bit)/8 = 2^26*8bit/ 8 = 2^26 Byte = 64MB

 

2、为什么SDRAM芯片的A0地址引脚连接的是ARM芯片的A2引脚呢?  

根据上一问可知,该SDRAM存储空间为64MB,S3C2440要寻址64MB需要地址线26根。由原理图可知SDRAM的数据总线位宽为32位,即一次传输4个字节的数据。因此,我们可以这样理解,即一个地址空间其实对应着4个字节的数据,实际上真正的寻址空间只有16MB而已,只需24根地址线(行地址线13根,列地址线9根,还有L-Bank选择信号的A24、A25两根地址线,总共24根)就已经足够了,这样S3C2440端并不需要将26根地址线全部连接到SDRAM芯片上,只需要给出高24位地址(A2~A25),相当于数据总线上每传输4个字节的数据,地址空间的第三位(A2)才增加1,即A0和A1可以不接。此时的A0和A1应该是低电平。然后,SDRAM芯片即根据S3C2440给的行地址、列地址和L-Bank选择信号找到对应的地址空间,将该地址空间的4个字节发送到数据总线上。以此类推,数据位宽为8位,就arm芯片的A0接SDRAM的A0,16位就A1接A0,32位就A2接A0。

 

还有一个细节,即为什么SDRAM芯片的BA0~BA1连接的是S3C2440芯片的LADDR24~LADDR25引脚?

   因为,HY57V561620为32MB的SDRAM芯片,我们知道,32MB的存储空间是需要 25 根地址线寻址的,由于BA0~BA1引脚决定了访问第几个Bank,即决定了存储空间的最高两位,因此,需要使用S3C2440的25根地址线中的最高两位来连接 BA0~BA1,这样就可以满足寻址的映射要求了。

0 0
原创粉丝点击