Nand flash工作原理

机器人焊接系统
Nand flash芯片工作原理
------------------------------------
    Nand flash芯片型号为Samsung K9F1208U0B,数据存储容量为64MB,采用块页式存储管理。8个I/O
引脚充当数据、地址、命令的复用端口。

    芯片内部存储布局及存储操作特点:
    一片Nand flash为一个设备(device), 其数据存储分层为:
    1 (Device) = 4096 (Blocks)
    1 (Block) -= 32  (Pages/Rows) 页与行是相同的意思,叫法不一样
    1 (Page)  = 528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes)
    在每一页中,最后16个字节(又称OOB)用于Nand Flash命令执行完后设置状态用,剩余512个字节又
分为前半部分和后半部分。可以通过Nand Flash命令00h/01h/50h分别对前半部、后半部、OOB进行定位通过
Nand Flash内置的指针指向各自的首地址。

    存储操作特点:
    1. 擦除操作的最小单位是块。
    2. Nand Flash芯片每一位(bit)只能从1变为0,而不能从0变为1,所以在对其进行写入操作之前要一定将相应块擦除(擦除即是将相应块得位全部变为1).
    3. OOB部分的第六字节(即517字节)标志是否是坏块,如果不是坏块该值为FF,否则为坏块。(转载注:应该是每块的第一页的第六个字节。)
    4. 除OOB第六字节外,通常至少把OOB的前3个字节存放Nand Flash硬件ECC码

NAND FLASH的工作原理 - to beginner
2007-04-23 23:43
黑碟
NAND FLASH 是一种大容量、高速的存储技术。
其接口较为简单,如果没有专门的nand flash控制器,甚至可以用io口与之对接。
其编程也相对简单,只要了解如下关键概念就可以:
1.nand flash内部有管理单元,管理单元负责对nand flash的实际单元的操作。
2.我们使用nand flash其实只需要和管理单元通信即可,主要是发送相关的命令给管理单元。
3.类似磁盘的管理制度,nand flash也是由若干bit构成一个page,若干page构成一个block,
若干block构成一个plane,我们在操作的时候往往以page为基本的操作对象。
4.nand flash的page单元有可能是有错误的,因此需要对存入的数据加上错误识别,以辨别
某个page单元是坏的。请注意,一个page单元往往最多仅有两个bit错误,所以对于错误识别
算法要求不是很高,只要能识别1,2个bit的算法即可。使用阵列奇偶校验很容易实现此算法。
nand flash控制器其实只是集成了相关的控制时序,在使用时通过操作nand flash控制器
的相关寄存器就可以实现相应的时序,但很多芯片本身不带nand flash控制器,此时可以
用io口与之对接,用软件来模拟硬件时序也可以操作nand flash。 此处的关键是从
发票导出
nand flash的数据手册上得到时序图。进而确定软件的设计。
在此, 以Samsung公司的K9F1208 为例来探讨。
K9F1208 是以page(页)为基本的操作单位的,
一个page包含512 byte.      加16byte的校验码。
32个page构成一个block。
1k个block构成一个plane.
整个K9F1208 包含4个plane,每个plane可以支持1个读写操作,因此最多可以有4个并发的读写操作.
K9F1208是64M byte的,64M = 4 plane * 1k block * 32 page * 512 byte
K9F1208 的编程流程如下:
基于ARM9内核Processor外部NAND FLASH的控制实现
类别:电子综合 阅读:972
1 NAND FLASH
  NAND写回速度快、芯片面积小,特别是大容量使其优势明显。页是NAND中的基本存贮单元,一页一般为512 B(也有2 kB每页的large page NAND FLASH),多个页面组成块。不同存储器内的块内页面数不尽相同,通常以16页或32页比较常见。块容量计算公式比较简单,就是页面容量与块内页面数的乘积。根据FLASH Memory容量大小,不同存储器中的块、页大小可能不同,块内页面数也不同。例如:8 MB存储器,页大小常为512 B、块大小为8 kB,块内页面数为16。而2 MB的存储器的页大小为256 B、块大小为4 kB,块内页面数也是16。NAND存储器由多个块串行排列组成。实际上,NAND型的FLASHMemory可认为是顺序读取的设备,他仅用8 b的I/O端口就可以存取按页为单位的数据。NAND在读和擦写文件、特别是连续的大文件时,速度相当快。
  2 NAND FLASH与NOR FLASH比较
  NOR的特点是可在芯片内执行,这样程序应该可以直接在FLASH内存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,但 写入和读出速度较低。而NAND结构能提供极高的单元密度,并且写入和擦除的速度也很快,是高数据存储密度的最佳选择。
  这两种结构性能上的异同主要为:NOR的读速度比NAND快;NAND的写入速度比NOR快很多;NAND的擦除速度远比NOR快;NAND的擦除单元更小,相应的擦除电路也更加简单;NAND的实际应用方式要比NOR复杂得多;NOR可以直接使用,并在上面直接运行代码,而NAND需要I/O接口,因此使用时需要驱动程序。
  3 NAND FLASH在系统中的控制
  在没有NAND FLASH硬件接口的环境中,通过软体控制CPU时序和硬件特殊接线方式实现仿真NANDFLASH接口,进而实现在嵌入式系统中脱离NANDFLASH专用硬件接口进行对NAND FLASH读、写、擦除等操作的实现方法。
  本方法主要工作在以下两个方面:
  软件方面:针对特殊硬件线路的软体设计和严格的CPU时序控制;
  硬件方面:硬件的线路设计,利用NOR FLASH专用硬件接口控制NAND FLASH。
  首先建立的开发平台如图1所示。
  本平台使用Intel的PXA270 Processor,无内建NAND FLASH Controller,使用NOR FLASH Controller控制NAND FLASH,具体的线路连接方式如图2所示。
  NAND FLASH的I/O0~I/07引脚用于对FLASH发送操作命令和收发数据,ALE用于指示FLASH当前数据为地址信息,CLE用于指示当前数据为操作命令信息,当两者都无效时,为数据信息。CE引脚用于FLASH片选。RE和WE分别为FLASH读、写控制,R/B指示FLASH命令是否已经完成。逭里选用的是CE don't care的NAND FLASH。
散堆填料
  NAND FLASH的读写操作以page方式进行,一次读写均为一个page,erase方式以block方式进行。这种方式,使其读写速度大大提高。
  在时序方面,以读操作为例,其时序如图3所示。
  操作过程主要分为以下几个步骤:
  (1)发送读操作命令
过店客流统计分析  CE有效,CLE有效,WE有效,I/O0~I/O8上面数据为command代码数据。
  (2)发送地址数据(需要读取的FLASH地址)
  CE有效,ALE有效,WE有效,I/O0~I/O8上面为所需地址数据。由于地址数据较多,所以需要分几次依次发送。每次发送都需要产生WE信号以将其写入NANDFLASH芯片。
  (3)等待R/B信号,最后读出数据
  在最后一个地址数据写入FLASH之后,R/B信号即变低。等待芯片完成整个page数据读取之后,R/B信号变高。此时,CE有效,ALE,CLE均拉低,依次产生RE信号,从I/O0~I/O8读取出所需数据。
  对于写操作和擦除操作,其基本原理相同,只是信号顺序略有改变,就不再赘述。
  由于使用了CPU地址线A1,A2连接CLE,ALE引脚,对CPU低2、3位地址的读写操作就意味着对NANDFLASH进行读写命令/数据操作。如果此程序工作在OS上的application层的话,MMU已经屏蔽程序对底层硬件的直接访问,所以需要对MMU进行设定,为NANDFLASH开辟一块。Memory映像区域,这样就可以通过OS对底层的NAND FLASH进行操作。以该系统为例,使用CPU的CS1引脚控制NAND FLASH的CE信号,先将其映像为0x24000000地址,此时,对0x24000000地址读写即对NAND FLASH芯片进行数据读写,而对Ox24000002地址写数据,使CPU的A1地址引脚为高,即对NAND FLASH发送command命令,同样,对0x24000004地址写数据,即对NAND FLASH发送address数据。
在对NAND FLASH发送命令/数据之后,由于程序运行速度比FLASH芯片快很多,需要在每一次操作之后插入若干等待周期,并利用CPU的GPIO检测芯片R/B信号。直至芯片完成本次操作再进行下一步操作。
型采  需要注意的是,在对FLASH发送命令数据过程中的等待,没有反馈信号可以检测,只能通过反复调试确定其所需等待时间。
  在设计中采用CPU的CS1信号对NAND FLASH进行CE(片选)控制。此处不能采用CPU的GPIO进行控制,因为在嵌入式设备的ARM CPU中,CPU本身采用了指令、数据自动预读的高速缓存技术和流水线技术。因此,当程序在NOR FLASH里面直接运行的时候(目前绝大多数嵌入式系统采用的方式),在运行任何两段相连的代码中间,CPU都有可能对NOR FLASH进行指令或数据的预读操作,从而产生大量的RE,OE信号和地址信号。 如果使用GPIO控制NAND FLASH的CE信号则无法避免这种影响。CPU的CS1信号是由CPU内部自动产生,因此在CPU预读期间,CS1信号可以有效屏蔽NANDFLASH芯片。并且,由于NAND FLASH芯片支持CEdon't care模式,在CE无效的情况下,芯片本身的工作状态并不会被干扰,由此保证了NOR FLASH和NANDFLASH在同一CPU界面中互不干扰的稳定运行。对于CS1信号的宽度等参数,也需要在实验中进行调节,才能保证整个系统快速稳定的运行。
  4 NAND FLASH在系统中的读写速度
  经过测试在该系统平台中,OS为Palm OS 5.4;CPU使用PXA270 312 MHz;SDRAM使用Samsung的16data width HYB25L256160AF-7.5@104 MHz;NANDFLASH选用Samsung 128 MB 8 b I/O NAND LASHK9F1G08U0A达到在文件系统下面的读/写的速度为3 MB/s,擦除的速度为65 MB/s,在手持式设备中运用性能已经够了。

本文发布于:2024-09-23 12:23:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/270480.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   操作   信号
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议