Board logo

标题: ARM与SDRAM芯片的联接 [打印本页]

作者: yuchengze    时间: 2016-12-13 19:24     标题: ARM与SDRAM芯片的联接

本帖最后由 yuchengze 于 2016-12-27 15:07 编辑

通常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://bbs.eccn.com/) Powered by Discuz! 7.0.0