欢迎来到天天文库
浏览记录
ID:57689356
大小:14.50 KB
页数:2页
时间:2020-09-01
《Nand Flash结构与读写分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、NandFlash结构与读写分析#1今天在利用ARM7上的nandflash控制器驱动,ID已读取成功,擦写,读取等尚未完成,晚上就在网上查查相关的知识,觉得有一个不错,转贴如下:NANDFlash的数据是以bit的方式保存在memorycell,一般来说,一个cell中只能存储一个bit。这些cell以8个或者16个为单位,连成bitline,形成所谓的byte(x8)/word(x16),这就是NANDDevice的位宽。这些Line会再组成Page.(NandFlash有多种结构,我使用的NandFlash是K9F1208,下面内容针对三星
2、的K9F1208U0M),每页528Byte,每32个page形成一个Block,Sizeof(block)=16kByte。1block="16kbyte",512Mbit=64Mbyte,Numberof(block)=40961block=32page,1page=528byte=512byte(MainArea)+16byte(SpareArea)Nandflash以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址:--BlockAddress--PageAddress --ColumnAddress对于N
3、ANDFlash来讲,地址和命令只能在I/O[7:0]上传递,数据宽度是8位。512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1sthalf和2ndhalf,各自的访问由地址指针命令来选择,A[7:0]就是所谓的columnaddress。32个page需要5bit来表示,占用A[13:9],即该page在块内的相对地址。Block的地址是由A14以上的bit来表示,例如512Mb的NAND,共4096block,因此,需要12个bit来表示,即A[25:14],如果是1Gbit的528byte/page
4、的NANDFlash,则blockaddress用A[26:24]表示。而pageaddress就是blcokaddress
5、pageaddressinblockNANDFlash的地址表示为: BlockAddress
6、PageAddressinblock
7、halfpagepointer
8、ColumnAddress地址传送顺序是ColumnAddress,PageAddress,BlockAddress。由于地址只能在I/O[7:0]上传递,因此,必须采用移位的方式进行。例如,对于512Mbitx8的NANDflash,地址范围是0~0x3FF
9、_FFFF,只要是这个范围内的数值表示的地址都是有效的。以NAND_ADDR为例:第1步是传递columnaddress,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上,而halfpagepointer即bit8是由操作指令决定的,即指令决定在哪个halfpage上进行读写。而真正的bit8的值是don'tcare的。第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上因此,整个地
10、址传递过程需要4步才能完成,即4-stepaddressing。如果NANDFlash的容量是256Mbit以下,那么,blockadress最高位只到bit24,因此寻址只需要3步。下面,就x16的NANDflash器件稍微进行一下说明。由于一个page的mainarea的容量为256word,仍相当于512byte。但是,这个时候没有所谓的1sthalfpage和2ndhalfpage之分了,所以,bit8就变得没有意义了,也就是这个时候bit8完全不用管,地址传递仍然和x8器件相同。除了,这一点之外,x16的NAND使用方法和x8的使用方法
11、完全相同。 正如硬盘的盘片被分为磁道,每个磁道又分为若干扇区,一块nandflash也分为若干block,每个block分为如干page。一般而言,block、page之间的关系随着芯片的不同而不同,典型的分配是这样的:1block=32page1page=512bytes(datafield)+16bytes(oob)
此文档下载收益归作者所有