SDRAM 和 NAND FLASH

SDRAM

1 SDRAM逻辑原理图

  其存储结构的逻辑图,如下图所示。

               SDRAM 和 NAND FLASH

  与表格的检索原理一样,先指定一个行(Row)然后再指定一个列(Column),就可以准确地找到所需要的单元格,这就是SDRAM寻址的基本原理 。这个单元格被称为存储单元,而这个表格就是逻辑Bank(Logical Bank),SDRAM一般含有4个L-Bank。

  任何一款SDRAM都需要注意它的一些信息,如位宽、列/行地址、刷新周期、以及Bank地址。其中,位宽是从原理图中可以得到,而 列/行地址、刷新周期 以及bank地址则是从芯片的数据手册中得到。

  SDRAM:在计算其地址空间时,即地址大小时,并不能看数据线的位数。例如一个SDRAM芯片它只有13根地址线,2的13次方8K,每个地址对应4字节的话,也就只有32K。而芯片手册上通常都会比这个大,这是因为还有两根线,行地址(nSRAS),列地址(nSCAS)。另外,还有LnWBE0,LnWBE1,表示对应字节的写使能,意思就是如果SDRAM芯片是16位,但现在只想写低8位,那么此时我们就可以只拉低LnWBE1,这样高字节部分写使能消失。如果没有这两个引脚的话,那只能先读16位,然后修改,再回写进SDRAM。

2 S3C2440 与 SDRAM

  连接

  通常可以看到,在原理图中,如果SDRAM是32位(可能是由两个SDRAM合起来)的,那么S3C2440的A0/A1并不与SDRAM连接,而是从A2开始连接的,这是因为SDRAM是32位的,4个bytes。那么S3C2440发出地址即可以得到4个字节,而S3C2440是按字节寻址的,所以需要低2位来划分这4个字节并取出需要的字节。

  另外通常S3C2440的BANK6~BANK7比较特别,因为只有它们可以连接SDRAM,具体可以参看相关数据手册。

  访问

  通常处理器外围会连接一系列存储的设备,如SDRAMDM9000,那么如何访问这些芯片呢。就是CPU通过存储管理器实现。例如CPU需要读0x30000000读4字节数据。那么CPU只需要执行下列汇编指令即可:mov r1, #0x30000000; ldr r0, [r1]。由存储管理器,根据配置信息得知0x30000000是对应内存SDRAM的地址,所以需要有SDRAM的时序,如1发出片选信号,2bank选择信号,3列地址,4行地址。这4步都是由存储管理器实现。

3 其它

  内存分为SRAMSDRAMDDR。

  (1)SRAM速度快,但成本高,使用方法简单,直接发地址,然后读写。

  (2)SDRAM则是成本低,但访问方法复杂,地址还分为列地址、行地址而且需要不断地刷新它。另外DDR,是指传统的SDR SDRAM只能在信号的上升沿进行数据传输。

  (3)DDR SDRAM却可以在信号的上升沿和下降沿都进行数据传输,所以DDR内存在每个时钟周期都可以完成两倍于SDRAM的数据传输量,这也是DDR的意义——Double Data Rate,双倍数据速率。

  网卡、NORFLASH的接口与SRAM一样,术语上称为ram-like。所以,如果需要接NORFLASH或者网卡,则可以直接接在bank0~bank5,而如果是SDRAM,则应该挂接在BANK6-7。

Nand Flash

1 分类

  通常可以分为大页nand flash 和小页nand flash,其中大页是指一页有2K字节,而小页只有512字节。64页组成一块。

2 地址空间

  NandFlash编址:1页大小实际上是2048+64(OOB)。64在多数情况下是不参与编址的。而是做为冗余检测所用。

  由于nand flash是独立编址,所以大多数的时候,读写nand flash它是要先领先连接线,发命令、发地址、发数据,并不能直接寻址到相应的位置(不像SDRAM一样)。

总结寻址方式至少分为两种

1 SDRAM、DM9000它们的芯片上都有地址信号线

2 NandFlash的芯片上是没有地址信号线的

  诸如1类的存储器芯片(可以包括SDRAMDM9000SRAM寄存器),它们用的地址都是CPU可以看见的,是CPU发出来的。即CPU统一编址。

  但诸如2类的CPU连接的NandFlash,那么显然它也是自己的独立的地址空间。所以它们是通过发送地址、命令、数据等信号。