您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > FLASH原理与应用培训
FLASHIntroductionPage2目录•FLASH器件简介•FLASH应用场合•FLASH硬件设计•FLASH软件设计•FLASH测试指标•FLASH应用案例Page3FLASH作为一种非易失性存储器,在原理、技术和结构上,与ROM、PROM、EPROM和EEPROM存储器有着显著不同。它是一种可快速擦除可现场编程的快擦写存储器。这种特性决定了FLASH作为BIOS、在线擦写和掉电保护数据和分区保护数据等场合有着广泛的应用。FLASH是由一个带浮栅的晶体管构成,该晶体管的阈值电压可通过在其栅极上施加电场而被反复改变(编程),结合了EPROM编程机制和EEPROM擦除特点。FLASH器件简介Page4非易失性:掉电数据不会丢失--ROM特性在线更改数据:--RAM特性兼有ROM和RAM的特点:块结构:Flash按块操作的特点命令接口:可编程特性编程特点:编程之前必须擦除寿命限制:一般的Flash为10万次的擦写循环,20年的数据保持时间FLASH器件简介Page5容量:1Mbit(128K×8bit),4Mbit(512K×8bit/256K×16bit)16Mbit(2M×8bit/1M×16bit),32Mbit(2M×16bit)64Mbit(4M×16bit),128Mbit(16M×8bit/8M×16bit)数据宽度:有2种数据总线宽度,byte、word(一般可配置)FLASH器件简介Page6FlashIC几乎每块单板上都有它的身影单板的BIOS载体都是Flash单板软件,主机软件的载体也是FlashFlashCard由Flash芯片和一些外围控制电路组合而成可以存储大量的数据,我司所用的容量为:128\256\512MB在我司应用越来越广泛FLASH应用场合Page7FLASH应用场合FLASH应用于系统中,存放代码、数据,主要有以下三种情况1、只用来存储BIOS程序,这部分器件有的需要插座,在生产线用编程器写入程序后,插在已加工好的单板上使用;2、只用来存储数据,如语音数据、话单数据、汉化字库等,通过后台进行在线加载,须要在加载程序中对不同厂家的ID号进行识别;3、部分容量用来存储BIOS程序,剩余容量用来存储数据、程序等;系统上电开始工作,进行后台加载,BIOS程序可以是通过软件车间烧好也可以是通过后台加载,等BIOS程序运行后,可以将其他程序或数据加载到其他FLASH器件上,也可以是对自身进行加载;因此须要在加载程序中对不同厂家的ID号进行识别;Page8保留(不可CACHE)小系统(LPU_BASE)(不可Cache)大系统(LPU_MAIN)(不可CaChe)ROM_BASEROM_TEST_ADRROM_TOP_ADR0X100解压缩后的BOOROM代码COMPRESSEDBOOTROM代码RAM_LOW_ADDRRAM_HIGH_ADDRBOOTROM(FLASH芯片)1、主机编译BIOS代码,通过JTAG加载线烧入BOOTROM,代码的起始位置为BOOTROM基址偏移0X100。2、单板上电相当于硬件产生了0X100的复位中断,CPU从0X100的位置开始执行代码,上电时整个地址空间没有划分,各个外设的片选和基址都没有初始化,硬件的片选默认是切到BOOTROM,启动代码开始运行。3、最初的代码是在BOOTROM中运行的,首先关闭中断,禁止CACHE,关闭默认的基址寄存器,设置CPU寄存器,初始化内存参数,配置内存基址空间,大小,DEVICEBUS参数,实现从汇编向C语言的跳转,然后拷贝BOOTROM中的代码到内存的高端地址,解压缩并执行。FLASH应用场合—BIOS启动流程SDRAMPage9FLASH硬件设计—管脚分布不同型号的FLASH管脚可能不同,但基本都包括下面的部分:Vcc/Vccq/Vpen/GND:电源A0-An:地址线D0-Dn:数据线CEn#:片选信号OE#:输出允许WE#:写入允许/对FLASH的编程、擦除的状态机进行操作RP#(RST#):复位信号/POWER-DOWNBYTE#:数据宽度选择WP#:写保护信号STS(RY/BY#):状态指示VccAddrVpenDataCE0#CE[2:1]#WE#OE#RP#BYTE#WP#STSGNDPage10FLASH硬件设计—数据地址管脚对于不存在A-1/D15复用管脚的INTELJ3系列FLASH芯片,字节操作时,A0管脚选择高低字节。字节操作时,A0接CPU低位地址输出脚(注意区分INTEL和MOTORAL不同);当选择字操作时(BYTE#=1),A0悬空。对于有DQ15/A-1管脚的(如MBM29LV160TE)芯片进行字节操作时,DQ15/A-1作为最低位地址线接CPU的A0(MOTOROLA为A31)。FLASH器件的地址线设计应该考虑兼容问题。即同一个系列FLASH中,引脚是相互兼容的情况,低容量存储器中不使用的高位地址应该通过0欧姆电阻接到CPU的地址线上,这样在单板发生FLASH容量升级时,无需单板硬件改板。Page11STS:STS用于指示芯片内部状态,有效时可以是低电平输出或脉冲输出,一般接控制器的中断输入管脚。配置为缺省模式时功能与RY/BY脚功能相同,当内部进行擦除、编程或加锁操作时,输出低电平。因其为开漏输出,设计中应该加上拉电阻。/RP:复位/深度低功耗控制输入线,低电平有效,可以使芯片处于深度低功耗状态,锁定自举模块,同时停止模块擦除和字节编程操作以及使写状态机WSM复位,用以防止储存单元被擦除或编程。这样在电源变化的过渡期提供数据保护功能。一般用CPU的复位输出控制该管脚。/BYTE:字节选通信号,逻辑低表示工作在×8模式,逻辑高表示工作在×16模式。在通常的×16模式设计中,该管脚接电阻上拉。FLASH硬件设计—状态控制管脚Page12FLASH硬件设计—状态控制管脚/CE:片选引脚,低电平有效。片选信号使能片内:器件控制逻辑,输入缓存,解码器,感应放大器。为了设计上的方便,有一些FLASH器件的有3个片选信号。芯片资料提供了使用真值表。/OE/WE:读写信号,低电平有效。某些芯片会有以下管脚:/WP:当WP为低电平时,保护块不能通过软件解锁。WP为高电平时,保护块能够通过软件解锁。RY/BY:为低电平时,表示当前正在编程或擦除;高电平时,表示准备就绪,可以进行操作。与STS管脚功能相同Page13FLASH硬件设计—状态控制管脚INTELJ3系列的/CE信号真值表如下所示:Page14VCC:器件电源电压,电源电压Vlko(Lock-OutVoltage)时,所有的写操作都会被禁止。电源电源在Vcc(min)和Vlko或者大于Vcc(max)时写操作不可靠。VCCQ:输出BUFFER电源电压。如SST39VF160Q和INTEL的28F160/320C3/J3系列,前者VCCQ可以在2.7V-5.5V范围内调整以提高器件的灵活接口能力;而后者在3.3Vcc时的调整范围为2.7V-3.6V。需要注意的是,如果端口电平无需调整,VCCQ必须连接Vcc而不能悬空。VPEN:擦除、写、块保护的电压使能管脚。当VpenVpenlk时,以上操作被禁止,只允许读状态寄存器,厂商及器件ID,Query数据库。因此设计中应上拉或直接与电源电压接在一起。FLASH硬件设计—电源管脚Page15FLASH硬件设计—内部结构Page16FLASH硬件设计—读写操作读操作:原理与普通SRAM一样,速度30ns-200ns,与操作电压及器件工艺有直接关系,高速CPU要适当增加读等待周期以保证FLASH的可靠响应。擦写操作:为了降低意外操作导致FLASH数据被改写的概率,设计了多周期指令——FLASH指令序列。序列含多周期建立指令和最后的启动指令,即向特殊地址写入特定指令(此部分不占用可寻址单元)。擦写最主要的特点在于其内部状态机(internalstatemachine)及指令序列(commandsequences)的操作模式,通过其内部状态机的输出来反映当前擦写的执行状态,擦写时需执行指令序列并同时检测内部状态机的输出以保证功能的正常执行,因而FLASH存储器需要较为复杂的软件支持。Page17FLASH软件设计—指令序列不同的厂家设计的指令序列都不同,例如:1)INTEL的器件为2周期指令;2)AMD,ST,MXIC,FUJITSU,HYUNDAI,TOSHIBA的器件为4或6周期指令;如下针对我们产品常用的FUJITSUMBM29LV400TC器件作一些介绍,其为6周期指令序列。Page18FLASH软件设计—内部状态擦写和超时操作的内部状态主要包括两种:Toggle:数据0/1翻转Polling:数据为定值Page19FLASH软件设计—Toggle检测法当擦写正在进行时,每执行一次读操作相应的Toggle位都会发生翻转,如果在未超时(DQ5=0)前Toggle位不再发生翻转,表示此数据擦写成功。如果超时(DQ5=1)后检测Toggle位仍发生翻转,则表明此次擦写失败。读操作可以是任意地址空间,因Toggle位只与CE、OE和当前内部擦写进行的状态有关。Page20FLASH软件设计—Polling检测法当编程操作正在进行时,每执行一次读操作相应的DQ7值与最后一次写入的DQ7值相反,如果在未超时(DQ5=0)前DQ7值与最后一次写入的DQ7值一致,表示此数据擦写成功。如果超时(DQ5=1)后检测的DQ7值仍为相反值,则表明此次编程失败。擦除操作中对应的DQ7值为0,为1时表明擦除成功。对于编程指令读操作地址可以是任意地址空间,但对于擦除指令读操作地址必须是正被擦除且未被保护的空间。Page21FLASH软件设计—Read/Reset指令上电后器件自动进入Read/Reset状态(FLASH硬复位信号有效后),因此CPU自举时不需要执行Read/Reset指令即可直接从FLASH中读出数据,然而在进行完擦除、编程指令序列操作后需要发送Read/Reset指令使FLASH存储器恢复为读数据状态,否则下一个命令可能出错。从读取厂商和器件信息的Autoselect状态中跳出时需要执行Read/Reset指令。当擦写时出现错误,内部状态机计数器超过其最大值后需要通过检测相应的DQ5值为1,并执行Read/Reset指令才能从擦写失败中跳出。Page22LA采样的MBM29LV400TC器件Read/Reset指令周期:FLASH软件设计—Read/Reset指令Page23FLASH软件设计—Autoselect指令执行Autoselect指令后,即可从相应的地址空间里读出厂商和器件的ID信息,此时扫描扇区的地址空间可以获得扇区的写保护状态,结束此操作状态需要先执行Read/Reset指令再执行一次Autoselect指令才能退出。Page24FLASH软件设计—Erase指令通过写入芯片擦除指令或扇区擦除指令开始擦除操作,并通过Polling或Toggle方式检测擦除是否正常结束。对于扇区擦除指令,分别在要擦除扇区的扇区地址内写入30H即可以同时执行多个段的擦除,但两次写入的时间间隔不能超过50us,因最后一次写入扇区地址的50us后芯片开始执行擦除操作。Page25FLASH软件设计—Erase指令如下所示为FLASH的扇区空间地址,地址空间的大小并不相同,内部状态机通过对A12-A17地址线的译码从而实现扇区的区分。Page26FLASH软件设计—Program指令通过写入编程指令开始编程操作,每写入一个数据需要通过Polling或Toggle方式检测此地址的编程操作是否正常结束,如此循环直到把所有的数据都写入FLASH。时序上在WE的下降沿锁存编程字节的地址,在WE的上升沿锁存所要编程的字节数据。注意:对于存取单元数据0不能被编程为1(执行此操作可能挂死器件),只有擦除操作才能将数据0转换成1,因此编程前需要先执
本文标题:FLASH原理与应用培训
链接地址:https://www.777doc.com/doc-958118 .html