FLASH的读写原理.docx

上传人:b****6 文档编号:15412035 上传时间:2023-07-04 格式:DOCX 页数:22 大小:24.99KB
下载 相关 举报
FLASH的读写原理.docx_第1页
第1页 / 共22页
FLASH的读写原理.docx_第2页
第2页 / 共22页
FLASH的读写原理.docx_第3页
第3页 / 共22页
FLASH的读写原理.docx_第4页
第4页 / 共22页
FLASH的读写原理.docx_第5页
第5页 / 共22页
FLASH的读写原理.docx_第6页
第6页 / 共22页
FLASH的读写原理.docx_第7页
第7页 / 共22页
FLASH的读写原理.docx_第8页
第8页 / 共22页
FLASH的读写原理.docx_第9页
第9页 / 共22页
FLASH的读写原理.docx_第10页
第10页 / 共22页
FLASH的读写原理.docx_第11页
第11页 / 共22页
FLASH的读写原理.docx_第12页
第12页 / 共22页
FLASH的读写原理.docx_第13页
第13页 / 共22页
FLASH的读写原理.docx_第14页
第14页 / 共22页
FLASH的读写原理.docx_第15页
第15页 / 共22页
FLASH的读写原理.docx_第16页
第16页 / 共22页
FLASH的读写原理.docx_第17页
第17页 / 共22页
FLASH的读写原理.docx_第18页
第18页 / 共22页
FLASH的读写原理.docx_第19页
第19页 / 共22页
FLASH的读写原理.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

FLASH的读写原理.docx

《FLASH的读写原理.docx》由会员分享,可在线阅读,更多相关《FLASH的读写原理.docx(22页珍藏版)》请在冰点文库上搜索。

FLASH的读写原理.docx

FLASH的读写原理

FLASH的读写原理

FlashROM一般是一种单芯的FlashROM,从读写方式上看能够说是最简单的一种FlashROM。

特点是写入的单位是“页”,且写入新数据之前不需要先擦除其中原有的内容。

结构框图一般下所示:

  引脚一般有:

  A0~A16:

AddressInputs(地址线的数量与FlashROM的容量有关)

  DQ0~DQ7:

DataInputs/Outputs

  #CE:

ChipEnableInput(芯片使能)

  #OE:

OutputEnableInput(输出使能)

  #WE:

WriteEnableInput

  Figure2-1Vdd:

PowerSupply

  GND:

Ground

  一般提供了如下几种功能状态:

  1.ReadArrayMode

  由#CE和#OE控制。

当两者都为低电平时宿主(FlashROM所在的设备,

  本文描述的主板BIOS的读写,所以在这里可以将宿主理解为主板,下同)才

  可以从FlashROM中读取数据。

#CE用于设备选择,当#CE为高电平时

  FlashROM不被选中。

#OE用于输出控制,当#OE为高电平时输出被阻止。

  #CE和#OE两者中任一为高电平时数据总线处于高阻抗状态。

  2.PageWriteMode

  PageType的FlashROM的编程的基本单位是“页”,每一“页”包含一定

  的数据(一般为128字节或256字节)。

如果要修改一“页”中的某一个字节的

  数据,需要将这一“页”的数据全部读出,修改指定的字节,再写回至FlashROM

  中。

在写入每一“页”的时候,如果该“页”的某个字节没有被写入FlashROM,

  那么FlashROM中的对应位置上的数据将会被擦除为0xFF。

写操作的初始化状

  态一般是#CE和#WE为低电平且#OE为高电平。

写操作进程通常包括两个步

  骤:

第一步是字节装载周期,在那个周期中宿主将一页的数据写入FlashROM

  的页缓冲区(即上图的OUTPUTBUFFER);第二步是内部编程周期,在那个

  周期中FlashROM的页缓冲区的内容被同时写入FlashROM的非挥发存储器阵

  列(即上图的COREARRAY)。

  在字节装载周期中,在#CE或#WE的下降沿二者出现的较晚的时刻地址被

  锁存,在#CE或#WE的上升沿两者出现较早的时刻数据被锁存。

字节装载周期

  中宿主向FlashROM的页缓冲区写数据时单位为字节,但不一定必须按顺序写

  入。

在字节装载周期中,如果在设定的时间内没有新的数据写入,即在上一次

  #WE发生电平跳变之后的设定的时间内没有再次发生#WE的电平跳变,

  FlashROM将结束字节装载周期进入内部编程周期。

地址线的高若干位指明

  “页”地址,低若干位指明每个字节在该“页”中地址。

这里,不同的FlashROM

  对“页”大小的定义有差异,以“页”大小为128字节为例,指明“页”地址

  的地址线为A7~A16,指明“页”内偏移的地址线为A0~A6。

在内部编程周期

  中,FlashROM的页缓冲区中的内容被同时写入FlashROM的非挥发性存储器

  阵列中;在这个过程中宿主可以执行除对FlashROM操作外的任何任务。

  3.SoftWareProtectedDataWrite

  FlashROM一般会提供软件保护数据写模式,当这种模式被启用后,在进

  行任何写操作之前都必须先写入一组三个字节的命令序列(即向特定的地址写

  入特定的数据)。

这个三字节的命令序列开启了字节装载周期,否则写操作不会

  被激活。

这种策略可以保护FlashROM免受无意造成的写周期,比如,由于系

  统启动或关闭时产生的总线上的噪声,的影响。

退出该模式需要写入一组六字

  节的命令序列。

事实上这一点也是通过软件写BIOS的基础。

以Winbond公司

  制造的W29EE011为例(WinbondW29EE011是PageType的FlashROM产品,

  下文将简称为W29EE011),进入写操作之前要写入的命令序列为:

向地址

  0x5555写入0xAA、向地址0x2AAA写入0x55、向地址0x5555写入0xA0,然

  后才可以进入字节装载周期。

这里提到的地址指相对于FlashROM映射到物理

  地址的起始地址。

退出写操作需要写入的命令序列为:

向地址0x5555写入

  0xAA、向地址0x2AAA写入0x55、向地址0x5555写入0x80、向地址0x5555

  写入0xAA、向地址0x2AAA写入0x55、向地址0x5555写入0x20。

固然不同

  的FlashROM对这些命令序列的定义可能有所不同。

  4.HardWareDataProtection

  FlashROM一般会提供多种硬件上的数据保护策略,这里列出其中的一部

  分:

  

(1)噪声保护:

#WE脉冲时间长度小于指定时间长度的会被忽略而不会开

  启写周期;这种策略可以降低信号中的毛刺的影响;

  

(2)VDD电压检测:

当VDD的电压值小于指定值时,读写操作都会被忽略;

  (3)抑制写模式:

强制使#OE为低电平,#CE或#WE为高电平可以使写操

  作被忽略;这种策略可以避免在系统启动和关闭时总线上产生的噪声的影响;

固然有些厂商可能会针对自己的产品提出一些特殊的数据保护策略,这里

  不再列举。

  StatusDetection

  FlashROM一般会提供多种编程状态的检测方法,常见的有两种:

Data

  Polling和ToggleBit。

下面分别说明。

  DataPolling:

当FlashROM仍然处于内部编程周期时,读取在字节装载周

  期所载入的最后一个字节时,其某一位(通常是最高位)的值将是真实数据的

  补码;直至内部编程周期结束后,该位的内容才会变成真实值。

  ToggleBit:

当FlashROM仍然处于内部编程周期时,连续地读此前在字节

  装载周期载入的某个字节时,其某一位(通常是次高位)的值将是连续的0和

  1的跳变;直至内部编程周期结束后,该位的内容才会稳定下来变成真实值。

  这两种方法提供了内部编程模式的状态检测方法。

如上所说,由于

  FlashROM在处于内部编程周期中时对FlashROM的任何写入操作都是非法的,

  因此只有在通过状态检测确认FlashROM已经完成了内部编程周期之后才能对

  其进行进一步的操作,如写入下一页等。

  6.SoftWareChipErase

  FlashROM一般会提供用软件擦除芯片模式。

启用这种模式需要先写入一

  组六字节的指令序列,擦除模式会自动执行,并且会在执行完之后自动返回至

  ReadMode;擦除模式的执行是在FlashROM的内部进行的,其间不需要宿主

  的干预,当然宿主也不应对FlashROM有任何与写操作相关的操作。

  W29EE011为例,这一组指令序列为:

向地址0x5555写入0xAA、向地址0x2AAA

  写入0x55、向地址0x5555写入0x80、向地址0x5555写入0xAA、向地址0x2AAA

  写入0x55、向地址0x5555写入0x10。

这里提到的地址指相对于FlashROM映

  射到物理地址的起始地址。

不同厂商的FlashROM对这些命令序列的定义可能

  有所不同。

  中国科学技术大学本科毕业论文

  第11页

  7.ProductIdentification

  FlashROM一般会内置厂商代码和产品代码,该功能用于输出这两个代码。

  这两个代码(下面称为ProductID)是该型号产品的认证码,通过这两个代码

  可以检索到这个型号的产品的全部信息。

  ProductID可以通过硬件和软件的方法检测。

硬件检测方法是将某些引脚

  的信号置为特定的高低电平组合,这个组合各种产品的定义多少都有些差别,

  在这里不作说明;软件检测方法是写入一组六字节的指令序列(有些FlashROM

  可能是写入三字节的指令序列,这个定义主要来自厂商的差别),然后读取指定

  地址上的数据。

检测完之后还需要写入一组三字节的指令序列以退出该模式。

  以W29EE011为例,检测ProductID需写入的指令序列为:

向地址0x5555

  写入0xAA、向地址0x2AAA写入0x55、向地址0x5555写入0x80、向地址0x5555

  写入0xAA、向地址0x2AAA写入0x55、向地址0x5555写入0x60;然后从地

  址0上读取厂商代码,从地址1上读取产品代码;对这个型号的产品来说,厂

  商代码为0xDA,产品代码为0xC1;退出该模式需写入的指令序列为:

向地址

  0x5555写入0xAA、向地址0x2AAA写入0x55、向地址0x5555写入0xF0。

  里提到的地址指相对于FlashROM映射到物理地址的起始地址。

不同厂商的

  FlashROM对这些指令序列的定义可能有所不同。

  该模式的重要性在于,不同的FlashROM的擦除/写入方法存在差异,因此

  需要通过检测到的ProductID来对特定的FlashROM设定指定的擦除/写入方

  法。

  SectorType

  SectorType的FlashROM一般包括多个区块,对一个区块的擦除/写入操作

  不会影响其它区块。

从结构上来看较PageType复杂。

SectorType的FlashROM

  写入的单位是字节,但是在写入新数据前需要将要写入的地址所在的Sector原

  有的内容全部擦除。

  中国科学技术大学本科毕业论文

  第12页

  如下Figure2-2是一个典型的SectorType的FlashROM的结构框图:

  引脚一般包括:

  A0–A21:

AddressInputs(地址线的数目与FlashROM的容量有关)

  DQ0–DQ15:

DataInput/Output(一般来说数据线只需8位即可,有些产

  品可能出于某些考虑设计了16条数据线)

  #CE:

ChipEnableInput

  #OE:

OutputEnableInput

  #WE:

WriteEnableInput

  #RP:

Reset/DeepPower-DownInput(通过两级电平(VIL,VIH)来控制

  reset/deeppowerdown模式)

  #WP:

WriteProtectInput

  VCC:

Power,DEVICEPowerSupply

  Figure2-2

  中国科学技术大学本科毕业论文

  第13页

  VPP:

Power,PROGRAM/ERASEPowerSupply

  GND:

Ground

  一般提供了如下几种功能状态:

  1.ReadArray

  这是通常所能见到的状态,现在FlashROM的表现同一般的ROM,能够随

  机读取。

进入该模式的条件是:

#RP从低电平跳至高电平。

通常加电后#RP就

  会发生跳变。

因此可以说这种状态就是FlashROM默认的状态。

当然要能够被

  宿主访问还需要如下的信号:

  #WE处于高电平;#CE处于低电平;#OE处于低电平;#RP处于高电平。

  固然,另外还需腹地址线上的相应的地址信号。

从其它的状态,如擦除/

  写入状态返回ReadArray状态必需先写入一组命令字。

以Intel28F016B3为例

(Intel28F016B3是Intel公司生产的“AdvancedBootBlockFlashMemory(B3)”

  系列产品中的一个型号),这一组命令字是:

向地址0x5555写入0xAA、向地

  址0x2AAA写入0x55、向地址0x5555写入0xFF。

这里提到的地址指相对于

  FlashROM映射到物理地址的起始地址。

不同的产品对这组命令字的定义可能

  有所不同。

  2.ProductIdentification

  读产品的生产厂商代码和产品代码的操作。

一般FlashROM会提供一组特

  殊的指令来检测这两个代码。

这部分请参考上一节相关部分的描述。

为表明不

  同产品在这个模式操作的定义上的不同,这里以Intel28F016B3为例说明检测

  方法。

对用作示例的FlashROM来说,读取厂商朝码和产品代码之前需要写入

  一组三字节的指令序列:

向地址0x5555写入0xAA、向地址0x2AAA写入0x5五、

  向地址0x5555写入0x90。

这里提到的地址指相对于FlashROM映射到物理地

  址的起始地址。

之后从地址0上读取厂商ID,从地址1上读取产品ID;Intel

  的厂商ID为0x89。

从该模式退出至ReadArrayMode需要写入一组三字节的指

  令序列(即在前面ReadArrayMode描述的指令序列)。

  中国科学技术大学本科毕业论文

  第14页

  3.Read/ClearStatusRegister

  FlashROM中的状态寄存器指明擦除/写入操作的进行情况(完成与否和成

  功与否)。

读取该寄存器信息需要预先写入一组三字节的指令序列。

在这里要强

  调一下,所有的FlashROM都会提供擦除/写入操作进行情况的检测方法,但是

  不同的产品提供的方法多少有些不同;这里只是描述其中的一种方法。

  以Intel28F016B3为例,读取状态寄放器需要预先写入的指令序列是:

  地址0x5555写入0xAA、向地址0x2AAA写入0x5五、向地址0x5555写入0x70。

  这里提到的地址指相对于FlashROM映射到物理地址的起始地址。

写入这一组

  指令序列后读操作的结果反映在DQ数据线的低八位上就是状态寄存器的内

  容。

从该模式退出至ReadArrayMode需要写入一组三字节的指令序列(即在

  前面ReadArrayMode描述的指令序列)。

为了防止可能的总线上的错误(如毛

  刺的影响),设计时一般会在#OE或#CE的下降沿将状态寄存器的数据锁存。

  如果擦除/写入动作没有完成,则#CE或#OE将持续翻转。

  状态寄存器一般也会有特殊的指令可以清除其中的内容,以IntelIntel

  28F016B3为例,清除状态寄放器内容的一组指令是:

向地址0x5555写入0xAA、

  向地址0x2AAA写入0x55、向地址0x5555写入0x50。

这里提到的地址指相对

  于FlashROM映射到物理地址的起始地址。

不过可能并不是所有位都能清除,

  因为厂商可能会对状态寄存器的特定位作特殊的定义。

当然,从该模式退出至

  ReadArrayMode需要写入一组三字节的指令序列(即在前面描述ReadArray

  Mode描述的指令序列)。

  4.ProgramMode

  SectorType的FlashROM写入的单位是字节。

通常写入操作是通过两步来

  完成的。

首先要写入一组指令序列,然后才可以向指定的地址写入指定的数据,

  随后FlashROM将会执行内部编程动作将指定的内容写入非挥发性存储器阵

  列。

以Intel28F016B3为例,写入数据前需要预先写入的指令序列是:

向地址

  0x5555写入0xAA、向地址0x2AAA写入0x55、向地址0x5555写入0x40。

  中国科学技术大学本科毕业论文

  第15页

  里提到的地址指相对于FlashROM映射到物理地址的起始地址。

随后才可以向

  指定的地址写入指定的数据。

要注意的是,SectorType的编程只能将指定位的

  值由“1”变成“0”,而不能将“0”变成“1”,这也就是在写入新数据前需要

  将原有数据擦除的原因。

  写入操作的进行情况由状态寄存器反映。

在执行写入操作的时候所允许的

  操作只有读状态寄存器和/或有些产品提供的编程延缓和编程再继续操作。

这两

  个操作可以暂时中断写入过程以执行其它的动作,比如ReadArray操作等。

  结束该模式需要清除状态寄存器中的内容(即在前面Read/ClearStatus

  Register所描述的内容)。

从该模式退出至ReadArrayMode需要写入一组三字

  节的指令序列(即在前面ReadArrayMode描述的指令序列)。

  5.EraseMode

  所有的SectorType的FlashROM都需要提供擦除功能。

擦除一个Sector的

  内容通常也是需要两步:

擦除设置命令和擦除确认命令。

同时需要指定要擦除

  的Sector的地址。

在擦除过程中,该Sector内的所有位都会被置为“1”。

一般

  一次只允许擦除一个Sector,且擦除一个Sector不会影响存储器阵列中的其它

  Sector的内容。

  擦除动作的进行情况由状态寄存器反映。

在执行擦除操作的时候所允许的

  操作只有读状态寄存器和/或有些产品提供的擦除延缓和擦除再继续操作。

这两

  个操作可以暂时中断擦除过程以执行其它的动作,比如ReadArray操作和对其

  它地址上的写入操作等。

  结束该模式需要清除状态寄存器中的内容(即在前面Read/ClearStatus

  Register所描述的内容)。

从该模式退出至ReadArrayMode需要写入一组三字

  节的指令序列(即在前面ReadArrayMode描述的指令序列)。

  6.HardwareDataProtectionandOtherMode

  SectorType的FlashROM对数据的硬件上的保护大同小异,主要目的都是

为了避免总线上的突发信号对FlashROM产生的不可预期的影响。

  接下来从功耗的角度介绍一下FlashROM的几种工作状态。

  ActivePower,活动态

  当#CE处于低电平且#RP处于高电平时,FlashROM处于活动状态。

活动

  状态是FlashROM功耗的主要部分。

降低活动态的能耗有利于降低整个系统的

  功耗。

  AutomaticPowerSavings(APS)自动节能状态

  APS是能够在FlashROM处于ReadArray模式下提供自动节能的一项技术。

  在数据被从存储器阵列中读出后,地址线上没有信号的时候,自动节能电路会

  将FlashROM置于这种小电流的状态;直到地址线上再次出现信号,即有新的

  地址被送上时才恢复到正常需要的电流水平。

这种技术可以有效地降低

  FlashROM的功耗。

  StandbyPower待机状态

  当#CE处于高电平并且之前FlashROM是在ReadArray模式下时,

  FlashROM就进入待机状态。

这种状态下FlashROM中的大部分电路停止工作,

  因此可以降低功耗。

此时不论#OE处于何种状态,数据线上始终保持高阻抗状

  态,也就是说,此时任何针对此FlashROM的读写操作都无效。

当然,如果#CE

  跳至高电平时FlashROM是处于擦除模式或编程模式,则直至正在进行的动作

  完成之前,FlashROM不会进入待机状态。

  DeepPower-DownMode/ResetMode复位

  当#RP处于低电平时FlashROM进入该状态。

当FlashROM从ReadArray

  模式转至此状态时,该FlashROM被取消选定,数据线上保持高阻抗状态。

  此状态恢复需要等一段指定的时间,这个时间是由硬件设计决定的。

如果在

  FlashROM处于擦除/写入状态时#RP跳至低电平,则所有进行中的操作会被强

  制退出,此时不能保证FlashROM的内容的正确性和一致性。

由于这个状态的

  存在,#RP一般是与系统的复位信号相连的。

  中国科学技术大学本科毕业论文

  第17页

  Bulk-EraseType

  这种类型的FlashROM大体上与SectorType的FlashROM相似:

它们都是

  由多个Sector构成的,写入的单位都是字节。

但是最大的不同在于这个类型的

  FlashROM在写入时需要把FlashROM中的全部内容全部清除。

就是说此类型

  的FlashROM的编程原理与SectorType的编程原理基本相同,即在写入时都是

  只允许将“1”改成“0”,而不允许将“0”改成“1”。

这方面产品的一个例子

  是STM29F512B。

  Bulk-EraseBlankingType

  这种类型的FlashROM大体上与Bulk-EraseType相似,唯一的不同在于擦

  除一个Sector之前需要将该Sector的内容全部清成0,然后才可以进行擦除操

  作。

这方面产品的一个例子是Catalyst28F010。

  SmallSectorType

  这个类型可以说是一个比较特别的类型。

它的Sector的定义比通常的Sector

  Type定义的Sector包含的字节数要少,与PageType定义的“页”大小比较近

  似;它在对一个Sector进行写入操作之前需要对该Sector进行擦除操作,然后

  才可以进行按字节进行写入操作。

也就是说,该类型具有近似于PageType的

  单位定义和SectorType的操作特性。

这方面产品的一个例子是SST28SF040。

  小结:

5类FlashROM的比较

  这5类FlashROM中,PageType和SectorType是目前所应用的最广泛的

  两类,其余三类可以看作是这两类的变形。

  从实际使用的角度(仅考虑作为BIOS的载体)看,FlashROM的最重要的

  性能参数指标应该是读性能。

一般来说FlashROM的访问时间比RAM的访问

  中国科学技术大学本科毕业论文

  第18页

  时间长大约一个数量级。

FlashROM的主要用途是ROM,即在计算机加电启动

  时提供最初的指令。

FlashROM提供擦除/写入功能的目的是为了能够支持BIOS

  的较方便的更新。

因此,应该可以这样说,只要FlashROM的读性能比较优秀,

  不管写性能都多糟糕,就有选择它做BIOS载体的理由。

因为用户不会经常的

  (甚至可能一次也不会)应用到FlashROM的擦除/写入功能。

实际上目前

  FlashROM的读性能大体比较相近,主板厂商选择产品可能更多的是出

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2