Chinaunix首页 | 论坛 | 博客
  • 博客访问: 149870
  • 博文数量: 54
  • 博客积分: 2517
  • 博客等级: 少校
  • 技术积分: 540
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-13 18:52
文章分类
文章存档

2011年(2)

2010年(11)

2009年(41)

我的朋友

分类:

2009-09-17 22:03:06

    NAND Flash 的数据是以bit 的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。这些cell 8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。这些Line 会再组成Page(Nand Flash 有多种结构,我使用的Nand Flash K9F1208,下面内容针对三星的K9F1208U0M),每页528Byte,每32 page 形成一个Block Sizeof(block)=16kByte 1 block=16kbyte512Mbit=64MbyteNumberof(block)=1024 1block=32page, 1page=528byte=512byte(Main Area)+16byte(Spare Area)

 

Nand flash 以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址: --Block Address -- Page Address?? --Column Address(即为页内偏移地址)

 

对于NAND Flash 来讲,地址和命令只能在I/O[7:0]上传递,数据宽度是8 位。

 

512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half2nd half,各自的访问由地址指针命令来选择,A[7:0]就是所谓的column address32 page 需要5bit 来表示,占用A[13:9],即该page 在块内的相对地址。Block的地址是由A14 以上的bit 来表示,例如512Mb NAND,共4096block,因此,需要12 bit 来表示,即A[25:14],如果是1Gbit 528byte/pageNAND Flash,则block addressA[26:14]表示。而page address就是blcok address|page address in block, NAND Flash 的地址表示为: Block Address|Page Address in block|halfpage pointer|Column Address 地址传送顺序是Column Address,Page Address,Block Address。 由于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。例如,对于512Mbit x8 NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。以NAND_ADDR 为例: 第1 步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上,而halfpage pointer bit8 是由操作指令决定的,即指令决定在哪个halfpage 上进行读写。而真正的bit8 的值是don\'t care 的。 第2 步就是将NAND_ADDR 右移9 位,将NAND_ADDR[16:9]传到I/O[7:0]上 第3 步将NAND_ADDR[24:17]放到I/O 上 第4 步需要将NAND_ADDR[25]放到I/O 上 因此,整个地址传递过程需要4 步才能完成,即4-step addressing。 如果NAND Flash 的容量是256Mbit 以下,那么,block adress 最高位只到bit24,因此寻址 只需要3 步。

下面,就x16 NAND flash 器件稍微进行一下说明。由于一个page main area 的容量为256word,仍相当于512byte。但是,这个时候没有所谓 的1st halfpage 2nd halfpage 之分了,所以,bit8就变得没有意义了,也就是这个时候 bit8 完全不用管,地址传递仍然和x8 器件相同。除了,这一点之外,x16 NAND使用方法和 x8 的使用方法完全相同。

 

norflashnandflash的区别

norflash中可以运行程序,nandflash不可以

Nor flashsector可擦除,按bit可读写。Nand FlashBlock可擦除,按Page可读写。

最主要是寻址方式不同

*********************************************************************************************************************************

Nand Flash 寻址方式

NAND Flash的寻址方式和NAND Flashmemory组织方式紧密相关。NAND Flash的数据是以bit的方式保存在memory cell,一般来说,一个cell中只能存储一个bit。这些cell8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。

这些Line会再组成Page,通常是528Byte/page或者264Word/page。然后,每32page形成一个BlockSizeof(block)=16kByte.

BlockNAND Flash中最大的操作单元,擦除就是按照block为单位完成的,而

编程/读取是按照page为单位完成的。

所以,按照这样的组织方式可以形成所谓的三类地址:

-Block?? Address

-Page??? Address

-Column Address

   首先,必须清楚一点,对于NAND Flash来讲,地址和命令只能在I/O[7:0]上传递,数据宽度可以是8位或者16位,但是,对于x16NAND DeviceI/O[15:8]只用于传递数据。

清楚了这一点,我们就可以开始分析NAND Flash的寻址方式了。

528Byte/page 总容量512Mbit+512kbyteNAND器件为例:

因为,

1 block=16kbyte

512Mbit=64Mbyte

Numberof(block)=1024

1block=32page,

1page=528byte=512byte(Main Area)+16byte(Spare Area)

用户数据保存在main area中。

512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half2nd half,各自的访问由所谓的pointer operation命令来选择,也就是选择了bit8的高低。因此A8就是halfpage pointerA[7:0]就是所谓的column address

32page需要5bit来表示,占用A[13:9],即该page在块内的相对地址。Block的地址是由A14以上的bit来表示,例如512Mb NAND,共4096block,因此,需要12bit来表示,即A[25:14],如果是1Gbit528byte/pageNAND Flash,共8192block,则block addressA[26:14]表示。而page address就是blcok address|page address in block

NAND Flash的地址表示为:

Block Address|Page Address in block|halfpage pointer|Column Address

地址传送顺序是Column Address,Page Address,Block Address

由于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。

例如,对于512Mbit x8NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。

NAND_ADDR为例:

1步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上而halfpage pointerbit8是由操作指令决定的,即指令决定在哪个halfpage上进行读写,而真正的bit8的值是don't care的。

2步就是将NAND_ADDR右移9位,将NAND_ADDR[16:9]传到I/O[7:0];

3步将NAND_ADDR[24:17]放到I/O;

4步需要将NAND_ADDR[25]放到I/O;

 因此,整个地址传递过程需要4步才能完成,即4-step addressing

如果NAND Flash的容量是256Mbit以下,那么,block adress最高位只到bit24,因此寻址只需要3步。

 

阅读(1182) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~