中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 存储设计 >>电子行业新闻正文

FLASH存储器的编程模式与兼容性研究

时间:2007/5/26 13:04:00  作者:  来源:ic72  浏览人数:1317
 
 

      摘  要:FLASH存储器是继传统ROM和EPROM之后推出的新型存储器件。它可通过与之相连的微处理器在线编程和擦除,因而十分适合嵌入式系统的设计和开发。文章分析了FLASH存储器的软硬件结构特征,探讨了FLASH存储器在实际应用中遇到的编程模式与兼容性问题。

      关键词:FLASH存储器;编程模式;兼容性

      FLASH是一种非易失性的存储器,即在掉电情况下仍能保证数据不丢失。与传统的ROM和E-PROM相比,它可以通过与之相连的微处理器在线编程和擦除,这一优点使得FLASH十分适合嵌入式系统的设计和开发。它不必在调试完成用户代码后再制作PCB,而可以在制板前后反复多次写入测试代码以用于系统的调试,从而大大加快了开发的进度。它的另外一个优点就是系统升级十分方便,设备供应商甚至用户自己都可以从网上下载最新版本的程序代码并载入FLASH中来实现系统的升级。此外,由于程序可以直接在 FLASH中运行,因而节省了引导加载步骤,减少了高成本RAM的容量,节省了系统空间和功耗。由于性能和价格方面的优势,FLASH已广泛用于MP3播放器、机顶盒等消费电子产品以及PC机主板的BIOS芯片、CD-ROM、DVD等计算机外设中,甚至在一些网络设备中(比如路由器、防火墙)也有应用。 FLASH作为一种半导体新技术,必将促使便携式可重新编程应用系统内部的存储器体系的重大变革。

      1硬件结构

      FLASH存储器按功能一般可分为两种类型:引导型(Boot Block Flash Memory)和均匀型(UniformBlock Flash Memory)。引导型FLASH的存储单元包括若干大小不等的引导块(Boot Block)、参数块(Parameter Block)、小的主块(Small Main Block)和主块(Main Block)。引导块一般为16k字节大小,可存放引导程序,用于微处理器的复位运行。它一般都加保护处理,以防止被加电或掉电时出现的脉冲信号错误修改而导致系统无法正常启动。参数块一般为8k字节大小,可存放系统参数。参数块一般容量较小,但擦除和编程速度比较快,适合于升级。小的主块及主块一般分别为32k及64k字节大小。小的主块和部分主块用来存放应用程序,而其余的主块则用来存放用户数据。根据引导块处于高地址区或低地址区的位置不同又可以将其进一步划分为两种类型,其选择主要取决于微处理器的自启地址以及其与FLASH的连接方式。引导型FLASH十分适合作为微处理器的引导单元,以在系统加电后运行引导程序或实现应用程序的加载运行。而均匀型FLASH则由大小相等的主块构成,它仅仅作为微处理器的外扩存储单元。与ROM相比,FLASH 的优点主要在于可在线编程。在实际应用中,如果不涉及系统引导,引导型或均匀型在使用上没有太大区别。

      FLASH主要与微处理器连接使用,连接方式除增加了控制线和写使能外,其它基本与EPROM类似。按数据访问方式,FLASH又可分为并行访问型、串行访问型和串行NAND访问型。并行访问型FLASH采用并行的数据和地址总线,并支持随机存取。在读数据时,它先将地址送到地址线,然后由控制线向 FLASH发出读取指令,最后由FLASH将数据送到数据线。在写数据时,它先将地址和数据送到地址线和数据线,然后由控制线发出编程指令将数据锁存进相应的地址。其中,控制线的指令是向FLASH中的公共接口单元发出的,FLASH可在接到指令后判断微处理器进行何种操作。串行访问型FLASH则采用串行总线,常见的有SPI总线。其中地址和数据都是通过时钟来顺序传送的。串行NAND

      访问型FLASH尽管也采用8位并行总线,却不支持随机存取。它的命令字、地址和数据都是以8位并行传送的。一般用于与简单控制器的连接(如用于PC卡的 ATA控制器),而不直接和微处理器连接使用。在以上类型中,并行访问型FLASH较为常用。另外,在连接时还要注意速率匹配问题,并应适当也插入等待周期。

      FLASH的存储容量常见的有512kb、1Mb、2Mb、4Mb、8Mb、16Mb等,最近又推出更大容量的128Mb、256Mb也有推出。其总线宽度有8位、16位以及32位几种,不少FLASH同时支持多种总线宽度,比如8/16位FLASH可通过管脚BYTE选择8位或16位总线模式。它们在与微处理器连接的时候尤其要注意地址的映射方式,即微处理器内部的地址要转换为FLASH内部的地址,这样FLASH才能正确的接收微处理器发出的指令。假如FLASH地址线为A0~An,对8位总线而言,低地址A0选择奇偶字节,而对16位总线而言,A0则选择奇偶字,对32位总线而言,A0选择奇偶双字。一些8/16位总线FLASH中通常有一个复用管脚A-1/DQ15,该脚一般在8位总线工作时作为最低地址位A-1,而工作在16位总线时作为最高数据位DQ15。

IC72新闻中心

      以8、16位总线模式FLASH为例,微处理器与FLASH的连接大致有如图1所示的几种方式。在图1(a)中,MCU按字节寻址,地址一一对应直接相连;在(b)中,MCU按字寻址,其中的两片FLASH,一片用于存储高字节,另一片存储低字节;(c)中的MCU按字节寻址,该方式可利用复用位A- 1将FLASH划分成以字节为单位;在(d)中,MCU按字寻址,FLASH以字为单位。当然,上述连接方式也不是唯一的。由于应用方式各异,不同连接方式下的寻址一般来说是不同的。

      2软件结构

      FLASH的读出如同RAM或EPROM一样不需要特殊的指令,但对FLASH的写入则需要特殊的编程指令序列。通常不直接写入FLASH的主要原因是为了防止加电或去电时产生的脉冲信号写入FLASH而破坏原来的数据。当FLASH 焊到电路板上之后,对其编程有两种方式:第一种是通过与板相连的PROM编程器来进行,第二种则是通过微处理器(比如DSP)软件来编程。在第一种方式下,系统通过PROM编程器提供编程电压和编程指令。而在第二种方式下,其编程电压则是经内部的供给泵或DC/DC转换器将低电压上调而产生的,但在第二种方式下,需要根据FLASH支持的指令集编写驱动程序。这两种方式各有优点,但后者更适合于系统的在线升级。如前所述,对FLASH读写数据可以以字节或字为单位独立进行,但在写入之前必须先对所在的块进行删除操作。

      除了底层的总线读写操作之外,FLASH还支持一定的指令集。如ST公司的M29F400B定义的片擦除指令10h、读指令F0h、写指令A0h等。不同指令通常要占用长短不一的若干个总线写周期。FLASH中的公共FLASH接口(Common FLASHInterface)可对控制线的指令进行判断,以识别当前控制线上是属于读指令、写指令或者其它。目前,此接口协议已成为业界的兼容性标准[2],但此接口本身并不占据可寻址的存储空间,它只是存储指令以及执行指令所需要的地址和数据。基于这种结构,FLASH可从第一个总线写周期获得指令且不会破坏特定地址上所存储的数据。而在实际的读写操作中,一般都在每条指令前加入两个编码序列以用于启动公共FLASH接口。

      通过公共FLASH接口中的命令集定义,可以解释得到输入的命令字序列,这将使得FLASH工作在读阵列、自动选择、编程/擦除和擦除继续几种模式之一。在读阵列模式下,它相当于ROM,也就是说可以在指定的地址上读取数据。而在自动选择模式下,它可以读取识别号(厂商号和器件号)以及块保护状态标志位。而在编程/擦除模式下,则可以进行编程和擦除,并且可在随后来读取状态寄存器的内容。而在擦除继续模式下,它可在擦除某一块的同图1微处理器与 FLASH的连接方式时读取另一块中的数据。FLASH可在不同的命令字序列输入方式下进行各个模式之间的转移。除了读、写和擦除等基本命令字外, FLASH通常还提供一些其它命令字,如用于防止数据被意外改写的加保护和去保护命令,可在执行擦除操作期间响应中断请求的擦除等待和擦除继续命令,另外,还有校验、复位等命令。在每一次命令操作之后,FLASH还可以支持状态寄存器查询,以使用户能够了解命令的执行情况。

      除了命令集之外,公共接口还定义了FLASH的块结构、接口参数、厂商属性等一切外部控制软件所需的特征信息,并可以通过写入特定的命令字来进行查询。

      3编程模式

      由于FLASH存储器的实际应用千差万别,因此FLASH支持的命令集也因器件系列的不同而不同。比如常见的M28和M29两个系列,它们在管脚定义和命令集方面就有较大差异,这就导致了在一种器件上开发的软件无法在另一种器件上直接使用。因此,可以考虑由下而上将整个系统分为如图2所示的4个层次。

IC72新闻中心

      图2中,最低层是硬件适配层,该层次主要考虑的是如何与实际的硬件总线协调工作,并为上层提供可调用的读和写等最基本模块。这一层还需要考虑微处理器的地址空间和FLASH的地址空间是如何映射的,以及各自工作在字节、字还是双字模式。理顺了这些关系之后,就可以实现微处理器在指定的FLASH地址位置的读出或是写入指定长度的数据。从底层向上的第二层为FLASH适配层,该层主要是和公共FLASH接口进行通信,任务是向上层提供FLASH可接受的命令集,并由公共FLASH接口负责解释,同时发出一定的响应。这一层需要考虑与FLASH软件结构密切相关的各种功能的支持程度和指令时序,以及各种事件的具体响应和模式转移。该部分可用于决定实际读写擦除的时间开销等性能指标。再往上的第三层为功能适配层,该层功能适配层的功能主要是向上层提供一切读写擦除功能,其命令方式独立于具体的FLASH,它可以以某个数据记录为单位进行读写。这一层需要对FLASH的命令集进行适当的封装,并隔离上层和 FLASH之间的直接联系,以使得应用程序开发人员不必了解FLASH的具体细节就可调用各种功能并对其操作。最上层是应用适配层,它面向的是最终应用,可以为普通用户提供高级功能和友好的交互接口。

      在图2所示的数据库应用系统中,由硬件适配层提供的三个基本模块FlashWrite()和FlashRead()和FlashPause()分别是总线写、总线读和等待操作。FLASH适配层提供的FlashAutoSelect()、FlashRead-Reset()、 FlashBlockErase()、FlashChipErase()、Flash-Program()等几个和实际命令集有关的模块则可分别用于实现进入自动选择模式、进入读阵列模式、块擦除、整片擦除、编程等功能,当然也可以根据实际器件的支持程度增加其它功能模块。功能适配层提供的 ReadRecord()、AddRecord()、DeleteRecord()等记录操作模块则用于实现基本的数据库操作。如读记录、添加记录和删除记录等。最后由应用适配层提供诸如查找、排序、身份认证、注销等各种面向用户的功能以及系统实际需要的其它功能。

      采用分层的编程模式有利于建立清晰的逻辑结构,增加模块的可重用性。它可使高层应用和底层器件相互独立,并最终提高软件的开发质量,缩短开发周期,同时提供更丰富的应用和更友好的人机互交界面。

      4兼容性

      所谓兼容性,就是不同层次上的功能模块可以不作修改或者少量修改就可以替代同一层次模块的属性。影响FLASH的最根本因素是其制造工艺,常见的有NOR、DINOR、NAND和AND等几种技术。采用不同制造工艺的FLASH一般是很难兼容的。所以本节讨论兼容性是建立在采用同一制造工艺这一前提下的。按照上文提到的分层模式,大致存在如下几个方面的兼容性问题。

      4.1电气兼容性

      电气兼容性主要包括管脚连接、封装方式、直流和交流特性、电压和功率要求、数据存储容量、定时匹配要求以及工作温度范围等方面的兼容性内容。不同属性的器件之间是不能直接替换的,其中有些可以通过增加转换电路的方法来实现兼容匹配,而有些则无法实现兼容替换。

      4.2命令集兼容性

      实际上,公共FLASH接口的标准化正是兼容性的产物,对于同一系列的FLASH产品,其公共接口往往提供兼容的命令集。同时,为了便于日后的升级,也要考虑兼容性,而硬件的兼容则相对于软件的兼容要容易的多。采用公共接口标准可使软件的升级变得十分方便。它可使开发者无需知道具体是哪家厂商的产品就可以调用统一的命令字作高层开发应用。比如AMD公司的Am29F400B和ST公司的M29F400B都属于M29系列,除了设备和生产商的标识号的不同之外,其它功能都是可以互换的。而M28和M29两个系列公共接口的命令集却是不兼容的。Intel公司的FLASH多采用M28系列,因此,无法替代M29系列的Flash存储芯片。

      4.3软件兼容性

      不同的软件只要做到输入输出的接口标准化,就可以相互调用和替代以实现同样的功能。比如只要知道支持的是M28还是M29系列的Flash芯片,就可以设计相应的模块接口参数,从而使得多方合作开发成为可能。

      从分层模式的角度来看,上述几种兼容性由低到高都存在。显然,要达到各个层次完全一致的兼容替代是比较困难的。事实上,只要某一较低层次上满足了兼容性,那么在这一层以上的模块在替代前后根本不需要改变,而这一点要相对容易得多。一般不同厂商生产的不同类型的FLASH芯片带有不同的厂商识别号和器件识别号以选择适当的算法,如果上层要真正做到与具体的FLASH芯片无关,就要处理好识别问题。比如用户可以选用前面提到的Am29F400B或者 M29F400B,它们的识别号如表1所列。

IC72新闻中心

      那么软件在处理芯片识别问题时,就要同时考虑它们的识别号。假设系统原来是专为Am29F400B设计的,现在需要同时识别M29F400B。则处理器件识别号的代码示

IC72新闻中心

IC72新闻中心

      经过上述处理以后,无论用户采用的是Am29F400B还是M29F400B,返回的器件号都是0x22AB。即从上层看来,底层始终采用的是 Am29F400B。由于前面提到这两种器件是指令集兼容的,所以这样的处理就可以保证系统无论使用上述哪种FLASH都能正常工作。类似的,也可以将其它不同厂商的可兼容器件进行上述处理以便相互替代。

 
【相关文章】
·外接式存储盒子解决方案
·FLASH存储器的编程模式与兼容性研究
·DFT郑州广发行数据集中存储备份系统成功案例
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9