2440裸机-12-1内存控制器与SDRAM_内存接口
2020-04-18 来源:eefocus
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 非易失闪存技术