ARM与SDRAM芯片的联接

ARM 234浏览

      通常ARM芯片内置的内存很少,要运行Linux,需要扩展内存。ARM9扩展内存使用SDRAM内存,ARM11使用 DDR SDRAM。以ARM9核心的S3C2440为例,介绍一下内存的扩展。

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

     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打下基础。

本文转至:http://hi.baidu.com/hexi1985/item/2bff6c32a90ebac11a969655