ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:24.99KB ,
资源ID:15412035      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15412035.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FLASH的读写原理.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

FLASH的读写原理.docx

1、FLASH的读写原理FLASH的读写原理FlashROM 一般是一种单芯的FlashROM,从读写方式上看能够说是最简单的一种FlashROM。特点是写入的单位是“页”,且写入新数据之前不需要先擦除其中原有的内容。结构框图一般下 所示:引脚一般有:A0A16:Address Inputs (地址线的数量与FlashROM 的容量有关)DQ0DQ7:Data Inputs/Outputs#CE:Chip Enable Input (芯片使能)#OE:Output Enable Input (输出使能)#WE:Write Enable Input Figure 2-1 Vdd:Power Supp

2、lyGND:Ground一般提供了如下几种功能状态:1. Read Array Mode由#CE 和#OE 控制。当两者都为低电平时宿主(FlashROM 所在的设备,本文描述的主板BIOS 的读写,所以在这里可以将宿主理解为主板,下同)才可以从FlashROM 中读取数据。#CE 用于设备选择,当# CE 为高电平时FlashROM 不被选中。 #OE 用于输出控制,当#OE 为高电平时输出被阻止。当#CE 和#OE 两者中任一为高电平时数据总线处于高阻抗状态。2. Page Write ModePage Type 的FlashROM 的编程的基本单位是“页”,每一“页”包含一定的数据(一般

3、为128 字节或256 字节)。如果要修改一“页”中的某一个字节的数据,需要将这一“页”的数据全部读出,修改指定的字节,再写回至FlashROM中。在写入每一“页”的时候,如果该“页”的某个字节没有被写入FlashROM,那么FlashROM 中的对应位置上的数据将会被擦除为0xFF。写操作的初始化状态一般是#CE 和#WE 为低电平且#OE 为高电平。写操作进程通常包括两个步骤:第一步是字节装载周期,在那个周期中宿主将一页的数据写入FlashROM的页缓冲区(即上图的OUTPUT BUFFER);第二步是内部编程周期,在那个周期中FlashROM 的页缓冲区的内容被同时写入FlashROM

4、的非挥发存储器阵列(即上图的CORE ARRAY)。在字节装载周期中,在#CE 或#WE 的下降沿二者出现的较晚的时刻地址被锁存,在#CE 或#WE 的上升沿两者出现较早的时刻数据被锁存。字节装载周期中宿主向FlashROM 的页缓冲区写数据时单位为字节,但不一定必须按顺序写入。在字节装载周期中,如果在设定的时间内没有新的数据写入,即在上一次#WE 发生电平跳变之后的设定的时间内没有再次发生#WE 的电平跳变,FlashROM 将结束字节装载周期进入内部编程周期。地址线的高若干位指明“页”地址,低若干位指明每个字节在该“页”中地址。这里,不同的FlashROM对“页”大小的定义有差异,以“页”

5、大小为128 字节为例,指明“页”地址的地址线为 A7A16,指明“页”内偏移的地址线为A0A6。在内部编程周期中,FlashROM 的页缓冲区中的内容被同时写入FlashROM 的非挥发性存储器阵列中;在这个过程中宿主可以执行除对FlashROM 操作外的任何任务。3. SoftWare Protected Data WriteFlashROM 一般会提供软件保护数据写模式,当这种模式被启用后,在进行任何写操作之前都必须先写入一组三个字节的命令序列(即向特定的地址写入特定的数据)。这个三字节的命令序列开启了字节装载周期,否则写操作不会被激活。这种策略可以保护FlashROM 免受无意造成的写

6、周期,比如,由于系统启动或关闭时产生的总线上的噪声,的影响。退出该模式需要写入一组六字节的命令序列。事实上这一点也是通过软件写BIOS 的基础。以Winbond 公司制造的W29EE011 为例(Winbond W29EE011 是Page Type 的FlashROM 产品,下文将简称为W29EE011),进入写操作之前要写入的命令序列为:向地址0x5555 写入0xAA、向地址0x2AAA 写入0x55、向地址0x5555 写入0xA0,然后才可以进入字节装载周期。这里提到的地址指相对于FlashROM 映射到物理地址的起始地址。退出写操作需要写入的命令序列为:向地址0x5555 写入0x

7、AA、向地址0x2AAA 写入0x55、向地址0x5555 写入0x80、向地址0x5555写入0xAA、向地址0x2AAA 写入0x55、向地址0x5555 写入0x20。固然不同的FlashROM 对这些命令序列的定义可能有所不同。4. HardWare Data ProtectionFlashROM 一般会提供多种硬件上的数据保护策略,这里列出其中的一部分:(1) 噪声保护:#WE 脉冲时间长度小于指定时间长度的会被忽略而不会开启写周期;这种策略可以降低信号中的毛刺的影响;(2) VDD 电压检测:当VDD 的电压值小于指定值时,读写操作都会被忽略;(3) 抑制写模式:强制使#OE 为低

8、电平,#CE 或#WE 为高电平可以使写操作被忽略;这种策略可以避免在系统启动和关闭时总线上产生的噪声的影响;固然有些厂商可能会针对自己的产品提出一些特殊的数据保护策略,这里不再列举。 Status DetectionFlashROM 一般会提供多种编程状态的检测方法,常见的有两种:DataPolling 和Toggle Bit。下面分别说明。Data Polling:当FlashROM 仍然处于内部编程周期时,读取在字节装载周期所载入的最后一个字节时,其某一位(通常是最高位)的值将是真实数据的补码;直至内部编程周期结束后,该位的内容才会变成真实值。Toggle Bit:当FlashROM 仍

9、然处于内部编程周期时,连续地读此前在字节装载周期载入的某个字节时,其某一位(通常是次高位)的值将是连续的0 和1 的跳变;直至内部编程周期结束后,该位的内容才会稳定下来变成真实值。这两种方法提供了内部编程模式的状态检测方法。如上所说,由于FlashROM 在处于内部编程周期中时对FlashROM 的任何写入操作都是非法的,因此只有在通过状态检测确认FlashROM 已经完成了内部编程周期之后才能对其进行进一步的操作,如写入下一页等。6. SoftWare Chip EraseFlashROM 一般会提供用软件擦除芯片模式。启用这种模式需要先写入一组六字节的指令序列,擦除模式会自动执行,并且会在

10、执行完之后自动返回至Read Mode;擦除模式的执行是在FlashROM 的内部进行的,其间不需要宿主的干预,当然宿主也不应对FlashROM 有任何与写操作相关的操作。以W29EE011 为例,这一组指令序列为:向地址0x5555 写入0xAA、向地址0x2AAA写入0x55、向地址0x5555 写入0x80、向地址0x5555 写入0xAA、向地址0x2AAA写入0x55、向地址0x5555 写入0x10。这里提到的地址指相对于FlashROM 映射到物理地址的起始地址。不同厂商的FlashROM 对这些命令序列的定义可能有所不同。中国科学技术大学本科毕业论文第 11 页7. Produ

11、ct IdentificationFlashROM 一般会内置厂商代码和产品代码,该功能用于输出这两个代码。这两个代码(下面称为Product ID)是该型号产品的认证码,通过这两个代码可以检索到这个型号的产品的全部信息。Product ID 可以通过硬件和软件的方法检测。硬件检测方法是将某些引脚的信号置为特定的高低电平组合,这个组合各种产品的定义多少都有些差别,在这里不作说明;软件检测方法是写入一组六字节的指令序列(有些FlashROM可能是写入三字节的指令序列,这个定义主要来自厂商的差别),然后读取指定地址上的数据。检测完之后还需要写入一组三字节的指令序列以退出该模式。以 W29EE011

12、 为例,检测Product ID 需写入的指令序列为:向地址0x5555写入0xAA、向地址0x2AAA 写入0x55、向地址0x5555 写入0x80、向地址0x5555写入0xAA、向地址0x2AAA 写入0x55、向地址0x5555 写入0x60;然后从地址0 上读取厂商代码,从地址1 上读取产品代码;对这个型号的产品来说,厂商代码为0xDA,产品代码为0xC1;退出该模式需写入的指令序列为:向地址0x5555 写入0xAA、向地址0x2AAA 写入0x55、向地址0x5555 写入0xF0。这里提到的地址指相对于FlashROM 映射到物理地址的起始地址。不同厂商的FlashROM 对

13、这些指令序列的定义可能有所不同。该模式的重要性在于,不同的FlashROM 的擦除/写入方法存在差异,因此需要通过检测到的Product ID 来对特定的FlashROM 设定指定的擦除/写入方法。 Sector TypeSector Type 的FlashROM 一般包括多个区块,对一个区块的擦除/写入操作不会影响其它区块。从结构上来看较Page Type 复杂。Sector Type 的FlashROM写入的单位是字节,但是在写入新数据前需要将要写入的地址所在的Sector 原有的内容全部擦除。中国科学技术大学本科毕业论文第 12 页如下 Figure 2-2 是一个典型的Sector T

14、ype 的FlashROM 的结构框图:引脚一般包括:A0A21:Address Inputs(地址线的数目与FlashROM 的容量有关)DQ0DQ15:Data Input/Output(一般来说数据线只需8 位即可,有些产品可能出于某些考虑设计了16 条数据线)#CE:Chip Enable Input#OE:Output Enable Input#WE:Write Enable Input#RP:Reset/Deep Power-Down Input(通过两级电平(VIL, VIH)来控制reset/deep powerdown 模式)#WP:Write Protect InputVC

15、C:Power,DEVICE Power SupplyFigure 2-2中国科学技术大学本科毕业论文第 13 页VPP: Power,PROGRAM/ERASE Power SupplyGND:Ground一般提供了如下几种功能状态:1. Read Array这是通常所能见到的状态,现在FlashROM 的表现同一般的ROM,能够随机读取。进入该模式的条件是:#RP 从低电平跳至高电平。通常加电后#RP 就会发生跳变。因此可以说这种状态就是FlashROM 默认的状态。当然要能够被宿主访问还需要如下的信号:#WE 处于高电平;#CE 处于低电平;#OE 处于低电平;#RP 处于高电平。固然,

16、另外还需腹地址线上的相应的地址信号。从其它的状态,如擦除/写入状态返回Read Array 状态必需先写入一组命令字。以Intel 28F016B3 为例(Intel 28F016B3 是Intel 公司生产的“Advanced Boot Block Flash Memory(B3)”系列产品中的一个型号),这一组命令字是:向地址0x5555 写入0xAA、向地址0x2AAA 写入0x55、向地址0x5555 写入0xFF。这里提到的地址指相对于FlashROM 映射到物理地址的起始地址。不同的产品对这组命令字的定义可能有所不同。2. Product Identification读产品的生产厂

17、商代码和产品代码的操作。一般FlashROM 会提供一组特殊的指令来检测这两个代码。这部分请参考上一节相关部分的描述。为表明不同产品在这个模式操作的定义上的不同,这里以Intel 28F016B3 为例说明检测方法。对用作示例的FlashROM 来说,读取厂商朝码和产品代码之前需要写入一组三字节的指令序列:向地址0x5555 写入0xAA、向地址0x2AAA 写入0x5五、向地址0x5555 写入0x90。这里提到的地址指相对于FlashROM 映射到物理地址的起始地址。之后从地址0 上读取厂商ID,从地址1 上读取产品ID;Intel的厂商ID 为0x89。从该模式退出至Read Array

18、 Mode 需要写入一组三字节的指令序列(即在前面Read Array Mode 描述的指令序列)。中国科学技术大学本科毕业论文第 14 页3. Read/Clear Status RegisterFlashROM 中的状态寄存器指明擦除/写入操作的进行情况(完成与否和成功与否)。读取该寄存器信息需要预先写入一组三字节的指令序列。在这里要强调一下,所有的FlashROM 都会提供擦除/写入操作进行情况的检测方法,但是不同的产品提供的方法多少有些不同;这里只是描述其中的一种方法。以 Intel 28F016B3 为例,读取状态寄放器需要预先写入的指令序列是:向地址0x5555 写入0xAA、向地

19、址0x2AAA 写入0x5五、向地址0x5555 写入0x70。这里提到的地址指相对于FlashROM 映射到物理地址的起始地址。写入这一组指令序列后读操作的结果反映在DQ 数据线的低八位上就是状态寄存器的内容。从该模式退出至Read Array Mode 需要写入一组三字节的指令序列(即在前面Read Array Mode 描述的指令序列)。为了防止可能的总线上的错误(如毛刺的影响),设计时一般会在#OE 或#CE 的下降沿将状态寄存器的数据锁存。如果擦除/写入动作没有完成,则#CE 或#OE 将持续翻转。状态寄存器一般也会有特殊的指令可以清除其中的内容,以 Intel Intel28F01

20、6B3 为例,清除状态寄放器内容的一组指令是:向地址0x5555 写入0xAA、向地址0x2AAA 写入0x55、向地址0x5555 写入0x50。这里提到的地址指相对于FlashROM 映射到物理地址的起始地址。不过可能并不是所有位都能清除,因为厂商可能会对状态寄存器的特定位作特殊的定义。当然,从该模式退出至Read Array Mode 需要写入一组三字节的指令序列(即在前面描述Read ArrayMode 描述的指令序列)。4. Program ModeSector Type 的FlashROM 写入的单位是字节。通常写入操作是通过两步来完成的。首先要写入一组指令序列,然后才可以向指定的

21、地址写入指定的数据,随后FlashROM 将会执行内部编程动作将指定的内容写入非挥发性存储器阵列。以Intel 28F016B3 为例,写入数据前需要预先写入的指令序列是:向地址0x5555 写入0xAA、向地址0x2AAA 写入0x55、向地址0x5555 写入0x40。这中国科学技术大学本科毕业论文第 15 页里提到的地址指相对于 FlashROM 映射到物理地址的起始地址。随后才可以向指定的地址写入指定的数据。要注意的是,Sector Type 的编程只能将指定位的值由“1”变成“0”,而不能将“0”变成“1”,这也就是在写入新数据前需要将原有数据擦除的原因。写入操作的进行情况由状态寄存

22、器反映。在执行写入操作的时候所允许的操作只有读状态寄存器和/或有些产品提供的编程延缓和编程再继续操作。这两个操作可以暂时中断写入过程以执行其它的动作,比如Read Array 操作等。结束该模式需要清除状态寄存器中的内容(即在前面 Read/Clear StatusRegister 所描述的内容)。从该模式退出至Read Array Mode 需要写入一组三字节的指令序列(即在前面Read Array Mode 描述的指令序列)。5. Erase Mode所有的Sector Type 的FlashROM 都需要提供擦除功能。擦除一个Sector 的内容通常也是需要两步:擦除设置命令和擦除确认命

23、令。同时需要指定要擦除的Sector 的地址。在擦除过程中,该Sector 内的所有位都会被置为“1”。一般一次只允许擦除一个Sector,且擦除一个Sector 不会影响存储器阵列中的其它Sector 的内容。擦除动作的进行情况由状态寄存器反映。在执行擦除操作的时候所允许的操作只有读状态寄存器和/或有些产品提供的擦除延缓和擦除再继续操作。这两个操作可以暂时中断擦除过程以执行其它的动作,比如Read Array 操作和对其它地址上的写入操作等。结束该模式需要清除状态寄存器中的内容(即在前面 Read/Clear StatusRegister 所描述的内容)。从该模式退出至Read Array

24、Mode 需要写入一组三字节的指令序列(即在前面Read Array Mode 描述的指令序列)。6. Hardware Data Protection and Other ModeSector Type 的FlashROM 对数据的硬件上的保护大同小异,主要目的都是为了避免总线上的突发信号对 FlashROM 产生的不可预期的影响。接下来从功耗的角度介绍一下 FlashROM 的几种工作状态。Active Power,活动态当#CE 处于低电平且#RP 处于高电平时,FlashROM 处于活动状态。活动状态是FlashROM 功耗的主要部分。降低活动态的能耗有利于降低整个系统的功耗。Auto

25、matic Power Savings(APS)自动节能状态APS是能够在FlashROM处于Read Array 模式下提供自动节能的一项技术。在数据被从存储器阵列中读出后,地址线上没有信号的时候,自动节能电路会将FlashROM 置于这种小电流的状态;直到地址线上再次出现信号,即有新的地址被送上时才恢复到正常需要的电流水平。这种技术可以有效地降低FlashROM 的功耗。Standby Power 待机状态当#CE 处于高电平并且之前FlashROM 是在Read Array 模式下时,FlashROM 就进入待机状态。这种状态下FlashROM 中的大部分电路停止工作,因此可以降低功耗。

26、此时不论#OE 处于何种状态,数据线上始终保持高阻抗状态,也就是说,此时任何针对此FlashROM 的读写操作都无效。当然,如果#CE跳至高电平时FlashROM 是处于擦除模式或编程模式,则直至正在进行的动作完成之前,FlashROM 不会进入待机状态。Deep Power-Down Mode/Reset Mode 复位当#RP 处于低电平时FlashROM 进入该状态。当FlashROM 从Read Array模式转至此状态时,该FlashROM 被取消选定,数据线上保持高阻抗状态。从此状态恢复需要等一段指定的时间,这个时间是由硬件设计决定的。如果在FlashROM 处于擦除/写入状态时#

27、RP 跳至低电平,则所有进行中的操作会被强制退出,此时不能保证FlashROM 的内容的正确性和一致性。由于这个状态的存在,#RP 一般是与系统的复位信号相连的。中国科学技术大学本科毕业论文第 17 页 Bulk-Erase Type这种类型的FlashROM 大体上与Sector Type 的FlashROM 相似:它们都是由多个Sector 构成的,写入的单位都是字节。但是最大的不同在于这个类型的FlashROM 在写入时需要把FlashROM 中的全部内容全部清除。就是说此类型的FlashROM 的编程原理与Sector Type 的编程原理基本相同,即在写入时都是只允许将“1”改成“0

28、”,而不允许将“0”改成“1”。这方面产品的一个例子是ST M29F512B。 Bulk-Erase Blanking Type这种类型的FlashROM 大体上与Bulk-Erase Type 相似,唯一的不同在于擦除一个Sector 之前需要将该Sector 的内容全部清成0,然后才可以进行擦除操作。这方面产品的一个例子是Catalyst28F010。 Small Sector Type这个类型可以说是一个比较特别的类型。它的Sector 的定义比通常的SectorType 定义的Sector 包含的字节数要少,与Page Type 定义的“页”大小比较近似;它在对一个Sector 进行写

29、入操作之前需要对该Sector 进行擦除操作,然后才可以进行按字节进行写入操作。也就是说,该类型具有近似于Page Type 的单位定义和Sector Type 的操作特性。这方面产品的一个例子是SST 28SF040。 小结:5 类FlashROM 的比较这 5 类FlashROM 中,Page Type 和Sector Type 是目前所应用的最广泛的两类,其余三类可以看作是这两类的变形。从实际使用的角度(仅考虑作为BIOS 的载体)看,FlashROM 的最重要的性能参数指标应该是读性能。一般来说FlashROM 的访问时间比RAM 的访问中国科学技术大学本科毕业论文第 18 页时间长大约一个数量级。FlashROM 的主要用途是ROM,即在计算机加电启动时提供最初的指令。FlashROM 提供擦除/写入功能的目的是为了能够支持BIOS的较方便的更新。因此,应该可以这样说,只要FlashROM 的读性能比较优秀,不管写性能都多糟糕,就有选择它做BIOS 载体的理由。因为用户不会经常的(甚至可能一次也不会)应用到FlashROM 的擦除/写入功能。实际上目前FlashROM 的读性能大体比较相近,主板厂商选择产品可能更多的是出

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

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