上节内容介绍了Flash Memory的原理、结构及分类。本节内容将介绍NOR Flash的读写及应用,并结合实例芯片MX29LV800对NOR Flash的硬件、接口、读写命令以及读写数据等操作进行详细介绍。
1.硬件及封装
图1为NOR Flash MX29LV800芯片的封装及接口描述,该芯片为并行接口的NOR Flash存储器,接口部分有地址线,数据线,片选信号和读写信号等。图2为TSSOP的封装形式。

图 1 MX29LV800 接口定义及SOP封装

图2 MX29LV800 接口定义及TSOP封装
2. MX29LV800 管脚描述
NOR Flash MX29LV800的管脚描述如表1所示,
表1
| 管脚名称
(PIN Name) |
PIN description | 管脚描述 |
| A0–A18 | Address Input | 地址输入 |
| Q0–Q14 | Data Input/Output | 数据输入/输出的低15位 |
| Q15/A-1 | Q15(word mode) or
A-1 LSB addr(Byte mode) |
当运行在word模式时为数据的第16位(Q15)或
当运行在Byte模式时为地址线的A-1,与A0–A18共同组成20根地址线 |
| #CE | Chip enable Input | 芯片使能(片选),低电平有效 |
| #WE | Write enable Input | 写使能输入 |
| #Byte | Word/Byte Selection Input | Word模式还是Byte模式选择:
当#Byte为低电平时,选择Byte模式,此时数据线为8位,Q15此时被用作最低位地址(A-1)。 当#Byte为高电平时,选择Word模式,此时数据线为16位,Q15此时被用作数据线的最高位。 |
| #Reset | Hardware Reset Pin | 硬件复位脚,低电平有效 |
| #OE | Output Enable Input | 输出使能管脚,低电平有效 |
| RY/#BY | Ready/Busy Output | 空闲/忙输出指示脚,高电平为空闲,低电平指示芯片为擦除或编程阶段 |
| VCC | Power Supply Pin (2.7V–3.6V) | 电源管脚,供电范围2.7V–3.6V |
| GND | Grourd Pin | 地 |
3. NOR Flash 存储器的读写及擦除
-
Nor Flash读
读过程非常简单,只要#CE,#OE为低电平,#Reset为高电平,数据线就会输出给定地址对应的数据。读的过程不需要预先写入特定的命令。
-
Nor Flash写
对于闪存的写入,即控制栅极对浮置栅极充电。对栅极加压,使得浮置栅极存储的电荷足够多,超过阈值,就表示0。
-
Nor Flash擦除
闪存的擦除,即对浮置栅极进行放电,低于阈值,就表示1。加电 的过程与充电过程相反。
为了保护Nor Flash内容不被误操作改写或擦除, Nor Flash的写与擦除需要严格的命令配合。关于Nor Flash的命令操作,见本节后续内容。
4. 与Nor Flash 硬件设计相关的要点
程序及数据存储器:根据上面的管脚描述即可正确进行硬件电路的设计,在NOR Flash进行读操作时,与SRAM的时序一致,因此可以直接作为可运行的程序存储器使用。
图3展示了在16位模式下的硬件电路设计实例。注意在图中采用的是TSOP48 的封装结构(不同的封装形式,管脚排列不同)。本设计的主控器将可以是MCU或FPGA。为了与更大容量的芯片兼容,将9,10两个NC(no connect)的管脚进行地址扩展,将来硬件板卡可以有更大容量的芯片,如可以兼容MX29LV160CBTC及MX29LV320CBTC等。

图3 Nor Flash 硬件原理图示意图。
5. Nor Flash 扇区的划分
MX29LV800的扇区划分是不均等的,有大小扇区之分,不同型号的芯片小扇区的位置也不相同,MX29LV800T表示小扇区在底部,如表2所示。在对扇区擦除的时候要注意。对于MX29LV800T/AT,SA15,SA16,SA17,SA18是小扇区,而MX29LV800B/AB的小扇区对应的是SA0,SA1,SA2,SA3。SAn由地址线A18-A12译码进行选择。
表2
思考题:
(1)阅读MX29LV800BBTC的数据手册,了解芯片的供电电压范围。
(2)各个管脚的电平范围。
(3)“LV” 的含义。
(4)复习在FPGA,MCU体系中各种电平标准。
(5)熟练掌握nOE,nWE,nCE 与地址数据的关系,以及学会如何看时序图及时序参数。
6. NOR Flash存储器内部逻辑及功能
(1)读数据,读数据过程与一般的SRAM一样,#OE 为低电平, #WE为高电平,#RESET 为高电平,在给定地址后(A18-A0),数据从D15-D0输出。
(2)其它操作:包括复位,擦除,编程写等都是按照特定的命令顺序进行。命令由地址,控制信号(#OE ,#WE ,#RESET ,#CE ),数据(D15-D0)共同译码决定。功能框图见图4。在特定的命令给定后( #OE ,#WE ,#RESET ,#CE )数据锁存并译码,写入状态寄存器。由写状态机产生对应的高压信号完成芯片的擦除或写操作。字线,位线的译码原理与掩膜技术的ROM原理基本相同。可见该芯片具有在线编程ISP (in system programmable)的功能。

图4 MX29LV800内部逻辑框图
-
NOR Flash存储器命令功能表及使用
状态及功能命令,见功能命令表3,
表3

根据表3的内容,对各个命令进行分析以便学习利用软件或FPGA对NOR Flash操作。
7. 编程及擦除操作:
在编程之前一定要先进行芯片或扇区擦除。擦除分整片擦除和扇区擦除两种,具体选用哪种根据实际需要及编程需要进行。
-
整片擦除的命令(Chip Erase):
整片擦除的命令总共6条命令,分6个步骤进行,地址/数据组合如下:
-
-
16位模式(word):
-
(1)555H,AAH,(2)2AAH,55H(3)555H,80H(4)555H,AAH(5)2AAH,55H(6)555H,10H
-
-
8位模式(byte)
-
(1)AAAH,AAH,(2)555H,55H(3)AAAH,80H(4)AAAH,AAH(5)555H,55H(6)AAAH,10H

图 6 MX29LV800整片擦除流程图

图7 MX29LV800整片擦除时序图(部分)
-
扇区擦除(Sector Erase)
扇区擦除在命令执行后只会对所操作的扇区起作用,其中SA是扇区的地址。扇区擦除还可以悬挂和恢复,比如在擦除期间想读其它扇区的数据或其它操作,就可以悬挂,完成其它操作后再恢复该扇区的擦除。
-
-
16位模式(word)
-
(1)555H,AAH,(2)2AAH,55H(3)555H,80H(4)555H,AAH(5)2AAH,55H(6)SA,30H
-
-
8位模式(byte)
-
(1)AAAH,AAH,(2)555H,55H(3)AAAH,80H(4)AAAH,AAH(5)555H,55H(6)SA,30H

图8 MX29LV800扇区擦除流程图

图9 MX29LV800扇区擦除时序图(部分)
-
编程(Program)
在编程之前,需要确保整片擦除或者对应的扇区已经擦除。
-
-
16位模式(word)
-
(1)555H,AAH,(2)2AAH,55H(3)555H,A0H(4)PA,PD
-
-
8位模式(byte)
-
(1)AAAH,AAH,(2)555H,55H(3)AAAH,A0H(4)PA,PD

图10 MX29LV800编程流程图

图11 MX29LV800编程时序图(部分)
对应视频: