首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

SDRAM工作原理(2)

SDRAM工作原理(2)

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



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


在图中可以看到,行地址、列地址共用地址线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的说明:


该芯片每一个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,这样就可以满足寻址的映射要求了。
继承事业,薪火相传
返回列表