×
单片机 > 单片机程序设计 > 详情

2440裸机-12-1内存控制器与SDRAM_内存接口

发布时间:2024-05-08 发布时间:
|

1.内存接口介绍

1.1.内存控制器的引入

1.1.1 引入


2440是一个SOC,其中外设分为多种类型:


门电路类:GPIO

协议类接口: UART I2C SPI

内存类设备:nor flash ,SDRAM,NET DM9000

但是对于CPU来说,并不直接控制外设,只需要将值写给相关外设模块的寄存器,CPU通过地址来区分不同的寄存器,因此就需要引入另一个控制单元——内存控制器。

除NAND外,以上外设都是CPU统一编址。

NAND FLASH和外接的存储器不是同一类型的,片内有一个专门的NAND控制来对外接的NAND FLASH硬件进行控制,所以NAND FLASH又属于另外一部分。

nand启动时,cpu认为的0地址是片内内存;nor启动时,cpu认为的0地址是nor flash.


1.1.2 作用

根据CPU发出的地址来选择不同的模块,把数据发送给模块,或者取出数据并且返回给CPU。


1.2.内存接口

通常ARM芯片内置的内存很少,要运行Linux,需要扩展内存。ARM9扩展内存使用SDRAM内存,ARM11使用 DDR SDRAM。S3C2440通常外接32位64MBytes的SDRAM,采用两片16位32M的SDRAM芯片,SDRAM芯片通过地址总线、数据总线、若干控制线与S3C2440芯片相连。


特性:

支持大/小端(通过软件选择)

每个BANK的地址空间为128M,总共1GB(8 BANKs)

可编程控制的总线位宽(8/16/32bit),不过BANK0只能选择两种位宽(16/32bit)

总共8个BANK,BANK0-BANK5可以外接ROM,SRAM等,BANK6-BANK7除可以支持ROM, SRAM外还支持SDRAM等

BANK0-BANK6共7个BANK的起始地址是固定的

BANK6,BANK7的地址空间大小是可编程控制的

每个BANK的访问周期均可编程控制

在外接SDRAM时,支持自刷新和省电模式


1.CPU发出的信号并不会直接输出到外部电路去,但是凡事都有例外,例如内存接口

2.对于内存接口,CPU发出的地址可以直接传给内存类设备(NOR,网卡,内存)

3.在内存芯片上有地址总线,数据总线,可以直接接收CPU发出的地址,数据

4.对于内存类设备会共用地址总线,因此引入片选引脚cs(chip select)以此可以得以区分当前地址线和数据线的外接模块。

5.只有当某个片选引脚输出低电平是对应的设备才被选中,可以向CPU提供数据


1.2.1 片选引脚

1.2.2 谁来控制片选引脚?

(CPU只发出地址信号)

内存控制器根据CPU发出的地址来决定发出不同的片选信号,不需要再人为的去控制引脚。

地址与片选信号关系如下图:

1.2.3 如何确定数据传输方向

对于SDRAM、DM9000、NOR芯片上都有读写信号来表示数据传输方向.

外接存储器处于写入或读取状态,要根据外接存储器的特性进行对引脚的操作,有的需要一个根W引脚,一个R引脚,有的只需要一根引脚控制W/R。


1.2.4 关于32位CPU的疑惑

其中每块地址范围为128M=2^27,因此至少需要A0,A1-A26,共27条地址线,但是cpu是32位的,却只用了27条地址线?


CPU发出32位的addr给内存控制器,内存控制器再来发出片选信号和addr0-addr26的地址信号.


CPU确实发出了32位的地址,但是内存控制器只用到了0-26.


1.2.5 特殊的NAND

对于GPIO、UART、I2C、SDRAM、DM9000、NOR都是CPU统一编制的,但是对于NAND原理图如下:

并没有地址总线,不属于CPU的统一编址,


但是Nand的数据信号仍然接到总线上,因此肯定会有片选信号,NAND的片选信号来自于NAND FLASH控制器发出


2 其他

SRAM 静态随机存储器

SROM 静态只读存储器

RAM 随机存储器

ROM 只读存储器

DRAM 动态随机存储器

SDRAM 同步动态随机存储器

NOR FLASH, NAND FLASH 非易失闪存技术


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单