新闻中心

EEPW首页>嵌入式系统>设计应用> ARM与SDRAM芯片的联接

ARM与SDRAM芯片的联接

作者: 时间:2016-11-11 来源:网络 收藏
通常ARM芯片内置的内存很少,要运行Linux,需要扩展内存。ARM9扩展内存使用SDRAM内存,ARM11使用 DDR SDRAM。以ARM9核心的S3C2440为例,介绍一下内存的扩展。

S3C2440通常外接32位64MBytes的SDRAM,采用两片16位256Mbits的SDRAM芯片(如HY57V561620),SDRAM芯片通过地址总线、数据总线、若干控制线与S3C2440芯片相连。

本文引用地址://m.amcfsurvey.com/article/201611/316642.htm

S3C2440的地址总线:27根地址线----ADDR[26:0]。

S3C2440的数据总线:32根数据线----DATA[31:0]。

S3C2440的SDRAM控制线:

1、SDRAM片选----nGCS6(对应ARM的地址0x3000 0000);nGCS7(对应ARM的地址0x3800 0000),每一根片选可联接128MBytes内存。现在扩展64MBytes内存,只需一根片选线,通常为nGCS6。

2、nWE----写使能。

3、nSRAS----SDRAM行地址开关。

4、nSCAS----SDRAM列地址开关。

5、写字节使能四根线----nWBE[3:0]。4个字节共32位,为一个数据单元。

6、SDRAM时钟两根线----SCLK[1:0]。两根线分别联接两个SDRAM芯片。

7、SDRAM时钟使能----SCKE。

S3C2440与两片HY57V561620联接时,用到的地址线是15根:13根行列复用地址线,两根Bank线。

S3C2440 HY57V561620

ADDR2----------------------------A0

ADDR3----------------------------A1

-----------------------------------------

ADDR14---------------------------A12

ADDR24-------------------------- BA0 Bank0

ADDR25---------------------------BA1 Bank1

Bank相当于块,一个HY57V561620内有四个内存块,每块16*4Mbits内存单元。

每地址对应16bits,共有4M (2的22次方)地址范围,因此应该有22位地址线,寻址时22位的地址分两次(行地址和列地址)输入SDRAM芯片,nSRAS有效时,ADDR[2:14] 输入的是行地址,nSCAS有效时,ADDR[2:14]输入的是列地址。所以寻址一个内存单元至少需要两个时钟时间,第一个时钟行地址,第二个时钟列地址,然后才能找到对应内存单元。

地址线从ADDR2开始使用,而不是ADDR0开始使用,因为一个地址单元对应32位数据,也就是四个字节,ADDR[1:0]是最低2位地址,对应四个字节,在32位数据(四个字节)包含中,所以不需专门联接ADDR[1:0]。同时用nWBE[3:0]四根线区分一个32位内存单元的四个字节。

S3C2440的数据线32根,其中DATA[15:0]这16根联接第一块HY57V561620芯片,DATA[31:16]这16根联接第二块HY56V561620芯片。

其他控制线很好理解,就不用多说了。

学习Linux的朋友们可以找到ARM开发板的电路原理图,看看ARM芯片怎么与SDRAM芯片联接,知道原理后就很好理解。这也是为深入学习Linux打下基础。



关键词:ARMSDRAM芯片联

评论


技术专区

关闭