精华内容
下载资源
问答
  • NAND flash 并行存储器介绍、架构分析、和基于FPGA架构的控制设计方案
  • Nand Flash并行与串行

    千次阅读 2019-04-14 16:16:11
    之前我们有讲到NAND Flash与NOR Flash的封装、读取速率、写速率和电路设计等方面的差异,现在我们将会讲到并行与串行Flash,主要是串行吧,并行需要讲的很少。 因为串行与并行主要区别在于IO口的数量上,因为有些...

    串行Flash与并行Flash

    之前我们有讲到NAND Flash与NOR Flash的封装、读取速率、写速率和电路设计等方面的差异,现在我们将会讲到并行与串行Flash,主要是串行吧,并行需要讲的很少。

    因为串行与并行主要区别在于IO口的数量上,因为有些场景上我不会用到那么大的容量,E而且也不会有那么多的IO引脚,所以串行NOR与NAND Flash应运而生。

    并行与串行NAND Flash

    SERIAL NOR FLASH

    串行NOR Flash支持标准串行外设接口(SPI),双/四路I / O SPI:串行时钟,片选,串行数据I / O0(DI),I / O1(DO),I / O2和I / O3。

    也就是说对于串行NOR Flash而言,支持下面的几种模式。
    
    Standard SPI

    Standard SPI: CLK, /CS, DI, DO

    Dual SPI

    Dual SPI: CLK, /CS, IO0, IO1

    Quad SPI

    Quad SPI: CLK, /CS, IO0, IO1, IO2, IO3

    传输时钟速率

    • 串行NOR Flash 在Standard SPI模式下支持高达133MHz 时钟频率(标准模式);
    • 串行NOR Flash 在Dual SPI模式下支持高达133MHz *2 时钟频率(Dual);
    • 串行NOR Flash 在Quad SPI模式下支持高达133MHz *4 时钟频率(Quad);
    这些传输速率可以胜过标准的异步8和16位并行闪存。
    

    串行NOR Flash常见封装

    如下为SOIC/SOP8封装
    SOP8封装 串行NOR Flash
    引脚介绍
    NOR Flash引脚介绍

    1. IO0 and IO1 are used for Standard and Dual SPI instructions;
    2. IO0 – IO3 are used for Quad SPI instructions, /HOLD (or /RESET) function is only available for Standard/Dual SPI.

    以上引脚如何配置
    1)标准 SPI模式
    连接CS、CLK、DO和DI就可以,WP引脚和HOLD引脚视情况而定,看是要硬件上拉到Vcc还是电阻下拉到地。

    2)Dual SPI模式
    连接CS、CLK、DO(IO1)、DI(IO0),此时注意不是按照DO和DI工作,而是括号内的IO1和IO2。

    3)Quad SPI模式
    CS、CLK、DO(IO1)、DI(IO0)、WP(IO2)、HOLD/Reset/IO3,此时WP与Hold功能全都不能使用。

    标准SPI,双SPI和四线SPI操作
    标准SPI指令使用单向DI(输入)引脚在串行时钟(CLK)输入引脚的上升沿串行写入指令,地址或数据。
    标准SPI还使用单向DO(输出)在CLK下降沿读取器件的数据或状态。
    双SPI和四SPI指令使用双向IO引脚串行写入指令,在CLK的上升沿向器件发送地址或数据,并在CLK的下降沿从器件读取数据或状态。

    电路设计

    片选(/ CS)

    SPI片选(/ CS)引脚用于使能和禁止器件操作。 当/ CS为高电平时,器件被取消选择,串行数据输出(DO或IO0,IO1,IO2,IO3)引脚处于高阻态。取消选择后,器件功耗将处于待机电平,除非内部擦除,编程或写状态寄存器周期正在进行中。当/ CS变为低电平时,将选择器件,功耗将增加到有效电平,并且可以写入指令并从器件读取数据。
    上电后,/ CS必须在接受新指令之前从高电平转换为低电平。/ CS输入必须在上电和断电时跟踪VCC电源电平。如果需要,可以使用/ CS引脚上的上拉电阻来实现此目的。

    写保护(/ WP)

    写保护(/ WP)引脚可用于防止写入状态寄存器。扇区的部分或整个存储器阵列可以受硬件保护,需要与寄存器相互配置。 WP引脚为低电平有效。

    HOLD(/ HOLD)

    / HOLD引脚允许器件在主动选择时暂停。当/ HOLD变为低电平时,/ CS为低电平时,DO引脚将处于高阻态,DI和CLK引脚上的信号将被忽略)。当/ HOLD变为高电平时,器件操作可以恢复。
    当多个设备共享相同的SPI信号时,/ HOLD功能非常有用。 / HOLD引脚为低电平有效。

    Serial Clock (CLK)

    SPI串行时钟输入(CLK)引脚提供串行输入和输出操作的时序。

    复位(/ RESET)

    当它被驱动为低电平至少1μS的时间时,该器件将终止任何外部或内部操作并返回其上电状态。

    电源

    串行Flash的电压也有多种规格,具体的看数据书册就行。

    电路设计

    SPI Nor Flash
    如上图为串行 Nor Flash电路,
    WP引脚连接电阻至Vcc;为了不进行写保护,所以做上拉,但是不悬空是为了在上电时有一个确定的电平状态。
    Hold引脚连接上拉电阻至Vcc;为了不实现数据保持,所以做上拉,但是不悬空是为了在上电时有一个确定的电平状态。
    CS引脚也是上拉至Vcc。上电不选中该器件,只有后续CPU低电平才会选中该器件。

    以下请参考:
    [1].华邦
    [2].复旦微电子

    SERIAL NAND FLASH

    在这里插入图片描述
    注:因为串行NOR Flash与串行NAND Flash所要实现的功能一致,为了减少/简化并行Nand Flash的接口,所以两者的封装等都是一样的,差异只是在于存储器单位存储的结构不同,其余都是一样的,所以大家知道了串行NOR Flash的介绍后,同样就理解串行NAND Flash了。

    20194.14
    于深圳

    展开全文
  • GigaDevice(兆易创新)32 MCU_NOR Flash_NAND Flash_并行NAND Flash
  • 基于FPGA的多片NAND+FLASH并行存储控制器的设计与实现,帮助初学者学习NAND Flash的原理及开发,进一步进行并行存储控制器的设计
  •  NAND Flash是嵌入式世界里常见的存储器,对于嵌入式开发而言,NAND主要分为两大类:Serial NAND、Raw NAND,这两类NAND的差异是很大的(软件驱动开发角度而言),即使你掌握其中一种,也不代表你能了解另一种。...

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是ONFI标准及SLC Raw NAND

      NAND Flash是嵌入式世界里常见的存储器,对于嵌入式开发而言,NAND主要分为两大类:Serial NAND、Raw NAND,这两类NAND的差异是很大的(软件驱动开发角度而言),即使你掌握其中一种,也不代表你能了解另一种。
      Raw NAND是相对于Serial NAND而言的,Serial NAND即串行接口的NAND Flash,而Raw NAND是并行接口的NAND FLASH,早期并行接口通信数据率是明显高于串行通信数据率的,但随着串行通信速度越来越快,并行接口速度优势显得不那么重要了,反而因信号线太多导致设计成本较高(PCB走线复杂)显得有点不合潮流。但其实这么说对Raw NAND是不公平的,现在的Serial NOR/NAND信号线其实也不少,比如高速的串行HyperFlash信号线数量已经直逼x8 bit的Raw NAND FLASH,所以Raw NAND市场还是坚挺的,你会发现各大存储厂商都还在不断推出Raw NAND FLASH产品。

    一、ONFI标准由来

      说到Raw NAND发展史,其实早期的Raw NAND没有统一标准,虽然早在1989年Toshiba便发表了NAND Flash结构,但具体到Raw NAND芯片,各厂商都是自由设计,因此尺寸不统一、存储结构差异大、接口命令不通用等问题导致客户使用起来很难受。为了改变这一现状,2006年几个主流的Raw NAND厂商(Hynix、Intel、Micron、Phison、Sony、ST)联合起来商量制订一个Raw NAND标准,这个标准叫Open NAND Flash Interface,简称ONFI,2006年12月ONFI 1.0标准正式推出,此标准一经推出大受欢迎(好像不欢迎也不行,那些大厂说了算啊),此后几乎所有的Raw NAND厂商都按照ONFI标准设计生产Raw NAND,从此Raw NAND世界清静了,不管哪家生产的Raw NAND对嵌入式设计者来说几乎都是一样的,至少在驱动代码层面是一样的,那么各厂商竞争优势在哪呢?主要在三个方面:数据存取速率、ECC能力、ONFI之外的个性化功能。
      你可以从 ONFI官网 下载ONFI标准手册,从2006年推出1.0标准至今,ONFI标准已经发展到4.1,这也说明了Raw NAND技术在不断更新升级。

    onfi_specs.PNG

    二、SLC Raw NAND原理

    2.1 Raw NAND分类

      从软件驱动开发角度而言,Raw NAND可以从以下几个方面进一步细分:

    单元层数(bit/cell):SLC(1bit/cell) / MLC(2bit/cell) / TLC(3bit/cell) / QLC(4bit/cell)
    数据线宽度:x8 / x16
    信号线模式:Asynchronous / Synchronous
    数据采集模式:SDR / DDR
    接口命令标准:非标 / ONFI

      本文的主要研究对象是兼容ONFI 1.0标准的Asynchronous SDR SLC NAND Flash。

    2.2 Raw NAND内存模型

      ONFI规定了Raw NAND内存单元从大到小最多分为如下5层:Device、LUN(Die)、Plane、Block、Page(如下图所示),其中Page和Block是必有的,因为Page是读写的最小单元,Block是擦除的最小单元。而LUN和Plane则不是必有的(如没有,可认为LUN=1, Plane=1),一般在大容量Raw NAND(至少8Gb以上)上才会出现。

    onfi_mem_model.PNG

      根据以上5层分级的内存模型,Raw NAND地址也很自然地由如下图中多个部分组成:

    Raw NAND Address = LUN Addr + Block Addr + Page Addr + Byte Addr (Column Addr)

      可能有朋友对Plane Address bit的位置有疑问,其实结合上面内存模型图就不难理解了,每个Plane里包含的Block并不是连续的,而是与其他Plane含有的Block是交错的。

    onfi_mem_addressing.PNG

    2.3 Raw NAND信号与封装

      ONFI规定了Raw NAND信号线与封装,如下是典型的x8 Raw NAND内部结构图,除了内存单元外,还有两大组成,分别是IO控制单元和逻辑控制单元,信号线主要挂在IO控制与逻辑单元,x8 Raw NAND主要有15根信号线(其中必须的是13根,WP#和R/B#可以不用),关于各信号线具体作用,请查阅相关文档。

    onfi_block_diagram.PNG

      ONFI规定的封装标准有很多,比如TSOP48、LGA52、BGA63/100/132/152/272/316,其中对于嵌入式开发而言,最常用的是如下图扁平封装的TSOP-48,这种封装常用于容量较小的Raw NAND(1/2/4/8/16/32Gb),1-32Gb容量对于嵌入式设计而言差不多够用,且TSOP-48封装易于PCB设计,因此得以流行。

    onfi_tsop48.PNG

    2.4 Raw NAND接口命令

      ONFI 1.0规定了Raw NAND接口命令,如下表所示,其中一部分是必须要支持的(M),还有一部分是可选支持的(O)。必须支持的命令里最常用的是Read(Read Page)、Page Program、Block Erase这三条,涵盖读写擦最基本的三种操作。

    onfi_cmd_set.PNG

      除了读写擦这三个最基本命令外,还有一个必有命令也非常常用,这个命令是Read Status,用于获取命令执行状态与结果,ONFI规定Raw NAND内部必须包含一个8bit的状态寄存器,这个状态寄存器用来存储NAND命令执行状态与结果,其中有两个bit(RDY-SR[6]和FAIL-SR[0])需要特别关注,RDY用于指示命令执行状态(这个bit与外部R/B#信号线功能是一致的),FAIL用于返回命令执行结果(主要是有无ECC错误)。

    onfi_status_register.PNG

      此外,还有一个必有命令不得不提,这个命令是Read Parameter Page,用于获取芯片内部存储的出厂信息(包括内存结构、特性、时序、其他行为参数等),这个Parameter Page大小为256Bytes,其结构已由ONFI规定如下表,痞子衡已经圈出了一些重要信息,在设计NAND软件驱动时,可以通过获取这个Parameter Page来做到代码通用。

    onfi_parameter_page.PNG
    onfi_parameter_page2.PNG

    2.5 Raw NAND数据速率

      前面讲了,数据存取速率这个技术指标是各厂商竞争力的体现,对于这个指标,其实ONFI标准定义了一部分,我们知道Raw NAND数据存取操作是以Page为单位的,Page操作时间决定了数据存取速率,Page操作时间由3部分组成:

    Page操作时间(tReadPage) = Page命令操作时间(tCmd) + Page命令执行等待时间(tBusy) + Page数据操作时间(tData

      以上三部分时间里,ONFI定义了Page命令/数据操作时间标准,但Page命令执行等待时间无法强制,因此各厂商NAND速度差异主要是这个Page命令执行等待时间不同造成的
      以异步模式Read Page命令(0x00 - 0x30)为例讲解,下图是Read Page完整时序简图,0x00是主机发送的第一个字节,用于通知NAND Device主机想要读取Page,随后的5个字节发送的是地址数据,用于通知NAND Device主机想要从什么地址获取数据,0x30是主机发送的最后一个字节,用于通知NAND Device读取Page命令发送已经完成,至此命令操作周期已经结束,NAND Device此时开始进行内部处理流程:拉低外部引脚R/B#或将内部寄存器SR[6]置0表明我正在忙,然后从内存块里将主机指定地址所在的Page数据全部拷贝到临时缓存区(Page Buffer),对这一整个Page数据进行ECC校验,如Page数据校验通过,拉高外部引脚R/B#或将内部寄存器SR[6]置1表明我已经准备好了,至此命令执行等待周期已经结束,主机开始按Byte依次将Page数据读出来,所有Page数据全部都被读出来后,整个Read Page时序就结束了。

    onfi_read_timing.PNG

      下图是命令/地址操作具体时序,根据时序图我们可以粗略计算出tCmd

    tCmd = (cmdBytes + addrBytes) x (tWP + tWH) = 7 * (tWP + tWH)

    onfi_command_latch_cycle.PNG

    onfi_address_latch_cycle.PNG

      下图是数据读取操作具体时序,分为两种:Non-EDO模式(RE#上沿采样数据)和EDO模式(RE#下沿采样数据),从图中我们知道tRC是RE#信号的一个周期,通俗地说,Non-EDO模式一般用于低速模式(即tRC > 30ns时),而EDO模式一般用于高速模式(即tRC < 30ns时)。根据时序图我们可以粗略计算出tData

    tData = dataBytesInOnePage * tRC

    onfi_data_output_cycle.PNG
    onfi_data_output_cycle_edo.PNG

      让我们把tCmd和tData代入tReadPage计算公式可得如下等式,我们知道其中tBusy是无法得知的,那么其他三个时间tWP、tWH、tRC到底是多少呢?

    tReadPage = 7 x (tWP + tWH) + tBusy + dataBytesInOnePage * tRC

      继续查看ONFI手册可以找到答案,ONFI规定了六种timing mode(0-5),timing mode table里指明了所有时序相关的参数数值范围,当然也包括tWP、tWH、tRC,以最快的timing mode 5来计算:

    tReadPage = 7 x 20ns + tBusy + dataBytesInOnePage * 20ns = (dataBytesInOnePage + 7) x 20ns + tBusy

    onfi_timing_mode_table.PNG

      我们似乎离答案更近一步了,但tBusy是多少这个问题始终困扰着我们,其实痞子衡带你绕了路,想要知道Read Page的时间没有这么复杂,我们可以从任何一款Raw NAND数据手册的扉页Features里直接找到答案,如下是Micron生产的型号为MT29F4GxxABBxA的部分feature:

    • Open NAND Flash Interface (ONFI) 1.0-compliant
    • Single-level cell (SLC) technology
    • Organization
      – Page size x8: 2112 bytes (2048 + 64 bytes)
      – Page size x16: 1056 words (1024 + 32 words)
      – Block size: 64 pages (128K + 4K bytes)
      – Plane size: 2 planes x 2048 blocks per plane
      – Device size: 4Gb: 4096 blocks; 8Gb: 8192 blocks; 16Gb: 16,384 blocks
    • Asynchronous I/O performance
      – tRC/tWC: 20ns (3.3V), 25ns (1.8V)
    • Array performance
      – Read page: 25μs
      – Program page: 200μs (TYP: 1.8V, 3.3V)
      – Erase block: 700μs (TYP)
    • Operating voltage range
      – VCC: 2.7–3.6V
      – VCC: 1.7–1.95V

      从feature里我们可以知道tReadPage最小为25us(此数值应是在x16 bits,timing mode 5下得出的最快速度),那么可以反算出tBusy = 25us - 20ns * (1024 + 7) = 4.38us,知道了tBusy让我们计算一下x8 bits下的tReadPage = 20ns * (2048 + 7) + 4.38us = 45.48us,再计算x8 bits下的读取数据率 2048Bytes / 45.48us = 360.246Mbps,这个数据率对于普通嵌入式应用来说其实是够快的。

    2.6 Raw NAND坏块与ECC

      Raw NAND开发绕不开坏块(Bad Block)问题,这是NAND Flash区别于NOR Flash的一个重要特点。NAND技术上允许坏块的存在,这降低了NAND生产工艺要求,因此NAND单位容量价格比NOR低。
      既然物理上的坏块无法避免,那有什么方法可以改善/解决坏块问题呢?方法当然是有的,这个方法就是ECC(Error Correcting Code),ECC的具体实现原理详见痞子衡的另一篇文章 汉明码校验(Hamming Code SEC-DED),在这里你只需要知道ECC是一种错误检测与纠正算法,它通过对一定量的数据块(一般是256/512bytes)进行计算得到ECC码(一般8bytes),在Page Program时将原始Page数据与ECC码一同存入NAND Flash,在Read Page时同时获取Page数据与ECC码再进行一次计算,如果该Page数据没有ECC错误或者bit错误能够被ECC码纠正,那么Page读写操作就能够正常进行,如果bit错误个数太多不能够被纠正,那么该Page所在的块就应该被认定为一个坏块。
      ECC能力主要根据纠正单数据块中错误bit个数来区分的,最基本的ECC只能够纠正1bit错误,强一点的ECC可以纠正4或者8个甚至更多的错误bit。
      让我们用一款实际芯片来具体分析坏块与ECC,依旧以前面分析过的Micron生产的型号为MT29F4G08ABBxA为例,下图是其内存结构图,从图中我们可以知道这款NAND的Page大小为2KB,但如果你仔细看,你会发现每个Page还额外含有64Bytes数据,这个64Bytes区域即所谓的Spare Area,这个区域到底是干嘛用的呢?

    onfi_mt29f4g08_arch.PNG

      下图是Spare Area的mapping图,由于每个Page是2KB,而ECC计算块是512Bytes,因此Page区域被均分为4块,分别是Main 0、1、2、3,每块大小为512Bytes,而相应的Spare Area也被均分为4块,分别是Spare 0、1、2、3,每块大小为16bytes,与Main区域一一对应。每个Spare x由2bytes坏块信息、8bytes ECC码、6bytes用户数据组成。要特别说一下的是ECC区域,当芯片硬件ECC功能开启时,8bytes ECC码区域会被自动用来存储ECC信息,而如果芯片没有硬件ECC功能,这个区域可以用来手动地存放软件ECC值。

    onfi_mt29f4g08_spare_area.PNG

      下图是芯片Error管理相关信息,也包含了ECC,从图中我们可以知道这款芯片ECC是4bits,坏块是用0x00来标识的,并且承诺该芯片出厂时每个Die里所含有的4096个block最多只会有80个坏块。这些信息除了在芯片手册里可以找到之外,前面介绍过的ONFI Parameter Page也同样记录了。

    onfi_mt29f4g08_ecc_detail.PNG
    onfi_mt29f4g08_ecc_detail2.PNG

    2.7 Raw NAND个性化功能

      Raw NAND还有一些个性化的功能,这个是因厂商而异的,ONFI规定了两个可选的命令Get/Set Feature,个性化功能可以通过Get/Set Feature命令来扩展。下表是ONFI 1.0规定的Feature address范围,其中0x01是Timing Mode,0x80-0xFF用于各厂商实现自己的特色功能。

    onfi_feature_address.PNG

      关于Timing Mode地址的具体定义如下,ONFI规定芯片上电初始为Timing mode 0,即最低速的模式,如果我们想要更快的NAND访问速度,必须使用Set feature命令将Timing mode设置到想要的数值

    onfi_feature_address_01h_timing_mode.PNG

      继续以前面分析过的Micron生产的型号为MT29F4G08ABBxA为例,下图是该芯片的Feature定义,除了ONFI规定之外,还定义了自己的特色部分(0x80, 0x81, 0x90)。

    onfi_mt29f4g08_feature_address.PNG

      比如0x90定义的Array operation mode,我们可以通过其实现OTP控制以及硬件ECC的开关。

    onfi_mt29f4g08_feature_address_90h_array_mode.PNG

    三、SLC Raw NAND产品

      Raw NAND厂商产品有两种,一种是裸Raw NAND芯片,另一种是含Raw NAND的存储方案(比如SSD硬盘),对于嵌入式开发而言,我们更关心的是裸Raw NAND芯片产品,下面痞子衡收集了可以售卖SLC Raw NAND芯片的厂商及产品系列:

    厂商芯片系列官方网址
    MicronMT29Fhttps://www.micron.com
    slc-nand-part-catalog
    NumonyxNAND256, NAND512https://www.micron.com
    slc-nand-part-catalog
    MacronixMX30LF, MX60LFhttp://www.macronix.com
    slc-nand-part-catalog
    WinbondW29Nhttp://www.winbond.com.tw
    slc-nand-part-catalog
    SpansionS34ML, S34MS, S34SLhttp://www.cypress.com/
    slc-nand-part-catalog
    ISSIIS34ML, IS34MWwww.issi.com
    slc-nand-part-catalog
    ToshibaTC58B, TC58Nhttp://toshiba.semicon-storage.com
    SK HynixH27Uhttp://www.hynix.com
    slc-nand-part-catalog
    SamsungK9F, K9Khttp://www.samsung.com/semiconductor/

      至此,ONFI标准及SLC Raw NAND痞子衡便介绍完毕了,掌声在哪里~~~

    欢迎订阅

    文章会同时发布到我的 博客园主页CSDN主页微信公众号 平台上。

    微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

    pzhMcu_qrcode_258x258.jpg

    展开全文
  • 并行flash FPGA读写测试,Verilog语言,可以实现并行flash读写单独测试。
  • 快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数据,如储存卡与U盘。...

    快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数据,如储存卡与U盘。闪存是非易失性的存储器,所以单就保存数据而言, 它是不需要消耗电力的。

    与硬盘相比,闪存也有更佳的动态抗震性。这些特性正是闪存被移动设备广泛采用的原因。闪存还有一项特性:当它被制成储存卡时非常可靠,即使浸在水中也足以抵抗高压与极端的温度。闪存的写入速度往往明显慢于读取速度。

    SPI FLASH

    首先它是个Flash,Flash是什么东西就不多说了(非易失性存储介质),分为NOR和NAND两种(NOR和NAND的区别本篇不做介绍)。SPI一种通信接口。那么严格的来说SPI Flash是一种使用SPI通信的Flash,即,可能指NOR也可能是NAND。但现在大部分情况默认下人们说的SPI Flash指的是SPI NorFlash。早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Norflash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Norflash所取代。同时不同容量的SPI Norflash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。

    SPI FLASH与NOR FLASH的区别 详解SPI FLASH与NOR FLASH的不一样

    NorFlash根据数据传输的位数可以分为并行(Parallel,即地址线和数据线直接和处理器相连)NorFlash和串行(SPI,即通过SPI接口和处理器相连)NorFlash;区别主要就是:1、SPI NorFlash每次传输一bit位的数据,parallel连接的NorFlash每次传输多个bit位的数据(有x8和x16bit两种); 2、SPI NorFlash比parallel便宜,接口简单点,但速度慢。

    NandFlash是地址数据线复用的方式,接口标准统一(x8bit和x16bit),所以不同容量再兼容性上基本没什么问题。但是目前对产品的需求越来越小型化以及成本要求也越来越高,所以SPI NandFlash渐渐成为主流,并且采用SPI NANDFlash方案,主控也可以不需要传统NAND控制器,只需要有SPI接口接口操作访问,从而降低成本。另外SPI NandFlash封装比传统的封装也小很多,故节省了PCB板的空间。

    今天主要说下SPI NorFlash。

    二、有毛用啊

    节省成本,减小封装,存储数据。

    三、怎么用啊

    怎么用说白了对于Flash就是读写擦,也就是实现flash的驱动。先简单了解下spi flash的物理连接。

    之前介绍SPI的时候说过,SPI接口目前的使用是多种方式(具体指的是物理连线有几种方式),Dual SPI、Qual SPI和标准的SPI接口(这种方式肯定不会出现在连接外设是SPI Flash上,这玩意没必要全双工),对于SPI Flash来说,主要就是Dual和Qual这两种方式。具体项目具体看了,理论上在CLK一定的情况下, 线数越多访问速度也越快。我们项目采用的Dual SPI方式,即两线。

    当前涉及到具体的SPI flash芯片类型了,所以必须也得参考flash的datasheet手册了。我们以W25Q64JVSSIQ为例。

    这是基本信息的介绍,然后看下具体IO的定义

    这个是WSON封装的管脚定义,其他详细信息参考datasheet。

    硬件驱动的话也是和芯片强相关的,因为读写擦都是和硬件时序相关的,所以必须得参考硬件datasheet手册。

    上面的datasheet都详细说明了每个操作的时序周期发送的命令。上图中,第一列是指令名称,第二列是指令编码,第三列及以后的指令功能与对应的指令有关。带括号的字节内容为flash向主机返回的字节数据,不带括号则是主机向flash发送字节数据。

    A0A23:flash内部存储器地址;MID0MID7:制造商ID;ID0ID15:flash芯片ID;D0D7:flash内部存储的数据;dummy:指任意数据。

    比如获取deviceID:

    表示该命令由这四个字节组成,其中dummy意为任意编码,即这三个字节必须得发数据,但这些数据是任意的,上图命令列表中带括号的字节数据表示由FLASH返回给主机的响应,可以看到deviceID命令的第5个字节为从机返回的响应,(ID7~ID0),即返回设备的ID号。

    代码如下:

    uint32_t Get_Flash_DeviceID(void)

    {

    uint8_t deviceID= 0x00;

    spiflashReset();

    spi_write( 0xAB);

    spi_write( Dummy);

    spi_write( Dummy);

    spi_write( Dummy);

    deviceID = spi_write( Dummy);

    spi_write( Dummy);

    spiflashSet() ;

    return deviceID;

    }

    NOR FLASH
      NOR Flash是一种非易失闪存技术,是Intel在1988年创建。

    是现在市场上两种主要的非易失闪存技术之一。Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable Read - Only Memory)一统天下的局面。紧接着,1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。NAND的结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理需要特殊的系统接口。通常读取NOR的速度比NAND稍快一些,而NAND的写入速度比NOR快很多,在设计中应该考虑这些情况。——《ARM嵌入式Linux系统开发从入门到精通》 李亚峰 欧文盛 等编著 清华大学出版社 P52 注释 API Key

    性能比较

    flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。

    由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

    执行擦除时块尺寸的不同进一步拉大了NOR和NAND之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。

    l 、NOR的读速度比NAND稍快一些。

    2、 NAND的写入速度比NOR快很多。

    3 、NAND的4ms擦除速度远比NOR的5s快。

    4 、大多数写入操作需要先进行擦除操作。

    5 、NAND的擦除单元更小,相应的擦除电路更少。

    此外,NAND的实际应用方式要比NOR复杂的多。NOR可以直接使用,并可在上面直接运行代码;而NAND需要I/O接口,因此使用时需要驱动程序。不过当今流行的操作系统对NAND结构的Flash都有支持。此外,Linux内核也提供了对NAND结构的Flash的支持。

    详解

    NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。

    像“flash存储器”经常可以与相“NOR存储器”互换使用。许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。

    NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

    NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理需要特殊的系统接口。

    SPI FLASH与NOR FLASH的区别
      1、SPI Flash (即SPI Nor Flash)是Nor Flash的一种;

    2、NOR Flash根据数据传输的位数可以分为并行(Parallel)NOR Flash和串行(SPI)NOR Flash;

    3、SPI Nor Flash每次传输一个bit位的数据,parallel Nor Flash每次传输多个bit位的数据(有x8和x16bit两种);

    4、SPI Nor Flash比parallel便宜,接口简单点,但速度慢。

    SPI FLASH是指外接口符合SPI协议,也就是串口。

    NOR FLASH与NAND 是相对的,指的是芯片内部的串型和并行。

    SPI FLASH是NOR FLASH的一种。

    NOR Flash

    NOR Flash需要很长的时间进行抹写,但是它提供完整的寻址与数据总线,并允许随机存取存储器上的任何区域,这使的它非常适合取代老式的ROM芯片。当时ROM芯片主要用来存储几乎不需更新的代码,例如电脑的BIOS或机上盒(Set-top Box)的固件。NOR Flash可以忍受一万到一百万次抹写循环,它同时也是早期的可移除式快闪存储媒体的基础。CompactFlash本来便是以NOR Flash为基础的,虽然它之后跳槽到成本较低的 NAND Flash。

    NAND Flash

    NAND Flash式东芝在1989年的国际固态电路研讨会(ISSCC)上发表的, 要在NandFlash上面读写数据,要外部加主控和电路设计。NAND Flash具有较快的抹写时间, 而且每个存储单元的面积也较小,这让NAND Flash相较于NOR Flash具有较高的存储密度与较低的每比特成本。同时它的可抹除次数也高出NOR Flash十倍。然而NAND Flash 的I/O接口并没有随机存取外部地址总线,它必须以区块性的方式进行读取,NAND Flash典型的区块大小是数百至数千比特。

    因为多数微处理器与微控制器要求字节等级的随机存取,所以NAND Flash不适合取代那些用以装载程序的ROM。从这样的角度看来,NAND Flash比较像光盘、硬盘这类的次级存储设备。NAND Flash非常适合用于储存卡之类的大量存储设备。第一款创建在NAND Flash基础上的可移除式存储媒体是SmartMedia,此后许多存储媒体也跟着采用NAND Flash,包括MultiMediaCard、Secure Digital、Memory Stick与xD卡。

    EMMC

    emmc存储器eMMC (Embedded Multi Media Card) 为MMC协会所订立的,eMMC 相当于 NandFlash+主控IC ,对外的接口协议与SD、TF卡一样,主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的NAND供应商来说,同样的重要。

    eMMC由一个嵌入式存储解决方案组成,带有MMC(多媒体卡)接口、快闪存储器设备(Nand Flash)及主控制器,所有都在一个小型的BGA 封装。接口速度高达每秒52MBytes,eMMC具有快速、可升级的性能。同时其接口电压可以是 1.8V或者是 3.3V。

    参考:
    https://www.jdwx.info/article-991-1.html
    http://m.elecfans.com/article/778203.html

    展开全文
  • Nor flashNand flash 简要介绍

    千次阅读 2018-09-22 14:20:51
    CFI nor flash使用的外部接口是CFI(common flash interface公共闪存接口 ),是并行接口(Parallel接口),因遵循jedec标准,又被称为jedec接口。 SPI nor flash使用的外部接口是SPI(serial peripheral i...

    一、NOR flash

    NOR flash 分为CFI nor flash 和 SPI nor flash。

    CFI nor flash使用的外部接口是CFI(common flash interface公共闪存接口 ),是并行接口(Parallel接口),因遵循jedec标准,又被称为jedec接口。

    SPI nor flash使用的外部接口是SPI(serial peripheral interface串行外围设备接口 ):是一种常见的时钟同步串行通信接口。

    Ps:目前出现SSI nor flash,和SPI其实是同一种串行接口flash。 

    CFI相比SPI,速度更快、容量更大、价格便宜。SPI 每次传输一个bit,CFI每次传输多个bit数据(x8/x16)。

     

    二、Nand flash

    NAND Flash广泛应用在各种存储卡,U盘,SSD,eMMC等等大容量设备中。它的颗粒根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。

    NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。

    NAND Flash相对NOR Flash更可能发生比特翻转,就必须采用错误探测/错误更正(EDC/ECC)算法,同时NAND Flash随着使用会渐渐产生坏块;我们在使用NAND Flash的SD卡上经常使用FAT文件系统,文件分配表会被频繁改写,而每块的擦写次数是NAND Flash寿命的决定性因素。如何才能平衡各块的擦写和为可能的坏块寻找替换呢?通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类:

     

    preview

    参考链接:https://zhuanlan.zhihu.com/p/26745577 https://blog.csdn.net/zhejfl/article/details/78544796

    Ps:未完待续,仅做学习记录,不对之处请指出。。。。

    展开全文
  • NOR FLASHNAND FLASH基本结构和特点

    千次阅读 2019-03-15 00:44:30
    非易失性存储元件有很多种,如EPROM、EEPROM、NOR FLASHNAND FLASH,前两者已经基本被淘汰了,因此我仅关注后两者,本文对FLASH的基本存储单元结构、写操作、擦除操作和读操作的技术进行了简单介绍,对了NOR和NAND...
  • Nandflash和norflash的区别 两种并行FLASH Flash存储器又称闪存,是一种可以在线多次擦除的非易失性存储器,即掉电后数据不会丢失,具体积小、功耗低、抗振性强等优点,为嵌入式系统中典型的两种存储...
  • 详述NOR FlashNAND Flash区别

    千次阅读 2020-03-26 17:27:15
    在介绍NOR FlashNAND Flash之前,首先介绍一下NOR FlashNAND Flash的产生历史。 1、EPROM Intel很早就发明了EPROM,这是一种可以用紫外线擦除的存储器。相较于ROM,它的内容可以更新而且可以保持10~20年,...
  • [摘要]:作为一个嵌入式工程师,要对NorFlashNandFlash要有最起码的认知。本文通过从启动方式、读写方式、容量成本、可靠性、寿命以及是使用型上进行了全面的分析和对比。任何事物都两面性,因此其...
  • Flash编程原理都是只能将1写为0,而不能将0写成1。所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF。因此可以说,编程是将相应位写0的过程,而擦除是将...
  • 前言: 在嵌入式开发中,如uboot的移植,kernel的移植...一,Flash的内存存储结构flash按照内部存储结构不同,分为两种:nor flashnand flash。Nor FLASH使用方便,易于连接,可以在芯片上直接运行代码,稳定性出...
  • Flash(NandFlash&NorFlash)基本原理

    千次阅读 2019-08-12 23:12:02
    本文中最主要的资料来源于开源组织对NandFlash的结构定义以及电气规范、测试规范定义的文档:《Open Nand Flash Interface》 一、Flash基本原理及分类 1.1、基本存储单元 存储数据基本的元件:浮栅场效应管 ...
  • nandflash驱动详解

    千次阅读 2018-05-23 18:38:45
    架构图+-----------+ system bus +-------------------+ CLE, io[8:0] +-------------------+ | cpu |←------------→ | nand controler | ←--------------→ | nand flash |+-...
  • SPI nandflash 驱动程序

    千次阅读 2019-10-22 09:53:09
    nandflash并行的,有串行方式的,8脚的SPI nandflash是众多工程师的首选,不占地方容量又大,这里奉上我总结的SPI nandflash驱动程序,不包含坏块管理机制: H源文件: #include "stdint.h" #define MX35LF...
  • 同步Nand与异步Nand Flash 我们在浏览Nand Flash的数据手册时,一般可以看到如下的描述,有同步和非同步(异步)之分。 Asynchronous:非同步/异步 Synchronous:同步 芯片引脚 同步与异步的引脚差异:...
  • SPI NAND flash 简介

    千次阅读 2018-07-16 09:47:37
    在嵌入式系统领域,做为存储设备的NOR flashNAND flash,大家应该不陌生。早期NOR flash的接口是并行口的形式,也就是把数据线,地址线并排设置与IC的管脚中。但是由于不同容量的并行口NOR flash不能硬件上兼容...
  • NAND Flash 芯片测试

    千次阅读 2019-05-28 22:19:47
    DFT : Design For Testability ...NAND Flash 芯片测试主要是为了筛选(Screen Out)出Flash阵列、译码器、寄存器的失效。 测试流程(Test Flow) 从wafer level,到single component level、module level,...
  • SPI FLASH NAND FLASH 和NOR FLASH 的关系

    千次阅读 2015-09-11 16:00:23
    在页面容量方面分NAND也有两种类型:大页面NAND flash(如:HY27UF082G2B)和小页面NAND flash(如:K9F1G08U0A)。  这两种类型在页面容量,命令序列、地址序列、页内访问、坏块标识方面都有很大的不同,并遵循...
  • NAND Flash的驱动程序设计http://hong60104.spaces.eepw.com.cn/articles/article/item/892051. 硬件特性:【Flash的硬件实现机制】 Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device...
  •  NAND Flash是嵌入式世界里常见的存储器,对于嵌入式开发而言,NAND主要分为两大类:Serial NAND、Raw NAND,这两类NAND的差异是很大的(软件驱动开发角度而言),即使你掌握其中一种,也不代表你能了解另一种。...
  • NAND Flash

    千次阅读 2018-11-14 10:10:46
    转自...   NAND Flash  以Micron公司的MT29F2G08为例介绍NAND Flash原理和使用。 1. 概述  MT29F2G08使用一个高度复用的8-bit总线(I/O[7:0])来传输数据、地址、指令。5个命令脚(CLE...
  • 常见Nandflash芯片及厂商总结

    万次阅读 2015-04-03 10:51:59
    1、Micron(镁光)半导体, 全球第三大内存芯片厂,是全球著名的半导体存储器方案供应商,是美国500强企业之一。 2、Toshiba(东芝) ...日本最大的半导体制造商,以家用电器、重型电机为主体的企业,包括通讯、...
  • [摘要]:作为一个嵌入式工程师,要对NorFlashNandFlash要有最起码的认知。本文通过从启动方式、读写方式、容量成本、可靠性、寿命以及是使用型上进行了全面的分析和对比。任何事物都两面性,因此其本身没有好坏之...
  • nor flashnand flash 区别

    千次阅读 2012-10-23 14:48:45
    今天笔试,遇到一个题目,没想明白,就在网上看下高手们的看法 :nor flashnand flash 区别 ...从上图可以看出,该NorFlash采用并行地址和数据总线, 其中,21bit地址总线,16bit数据总线。 该
  • NAND Flash是一种非易失性随机访问存储介质,基于浮栅(Floating Gate)晶体管设计,通过浮栅来锁存电荷,电荷被储存在浮栅中,它们在无电源供应的情况下仍然可以保持。关于NAND Flash技术基本原理之前有过讲解,大家...
  • nandflash作为嵌入式中的”磁盘”, 被广泛的应用, 以(K9F2G08U0B)为例,其他型号都差不多 nandflash的结构  nandflash的结构有页(page), block(块)的概念,其中页是真实概念,而块儿是虚拟概念(目的是为了更好的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,155
精华内容 862
关键字:

flash并行nand