MEMORY系列之“NORFlash”

硬件助手 2019-03-19

本文主要介绍NORFlash的结构、对外接口及操作。


NORFlash中的N是NOT,含义是Floating Gate中有电荷时,读出‘0’,无电荷时读出‘1’,是一种‘非’的逻辑;OR的含义是同一个Bit Line下的各个基本存储单元是并联的,是一种‘或’的逻辑,这就是NOR的由来。

NORFlash的特点是芯片内执行(eXecute In Place),这样应用程序可以直接在Flash内运行,不必再把代码读到系统RAM中。


1、NRORFlash的结构

NORFlash结构中每两个单元共用一个位线接触孔和一条源线,采用CHE的写入和源极F-N擦除,具有高编程速度和高读取速度的优点。但其编程功耗过大,在阵列布局上,接触孔占用了相当的空间,集成度不高。具有以下特点:

  • 程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码执行,而无需先将代码下载至RAM中再执行;

  • 可以单字节或单字编程,但不能单字节擦除。必须以块为单位或对整片执行擦除操作,在对存储器进行重新编程之前需要对块或整片进行预编程和擦除操作。适合存储代码,比如用来做BIOS。由于NORFlash的擦除和编程速度较慢,而块尺寸又较大,因此擦除和编程操作所花费的时间很长。在纯数据存储和文件存储的应用中,NOR技术显得力不从心。






从支持的最小访问单元来看,NORFlash一般分为8位的和16位的。对8位的NORFlash芯片,或是工作在8-BIT模式的芯片来说,一个地址对应一个BYTE(8-BIT)的数据。例如一块8-BIT的NORFlash,假设容量为4个BYTE。那芯片应该有8个数据信号D7-D0和2个地址信号,A1-A0。地址0x0对应第0个BYTE,地址0x1对应于第1BYTE,地址0x2对应于第2个BYTE,而地址0x3则对应于第3个BYTE。

对16位的NORFlash芯片,或是工作在16-BIT模式的芯片来说,一个地址对应于一个HALF-WORD(16-BIT)的数据。例如,一块16-BIT的NORFlash,假设其容量为4个BYTE。那芯片应该有16个数据信号线D15-D0和1个地址信号A0。地址0x0对应于芯片内部的第0个HALF-WORD,地址0x1对应于芯片内部的第1个HALF-WORD。8-BIT模式比16-BIT模式的地址线多一根,但数据线少8根,一般地址线复用数据线DQ15。

NORFlash一般都分为很多个SECTOR,每个SECTOR包括一定数量的存储单元。对有些大容量的Flash,还分为不同的BANK,每个BANK包括一定数目的SECTOR。NORFlash的擦除操作一般都是以SECTOR,BANK或是整片Flash为单位的。


2、并行NOR Flash

2.1、NOR Flash引脚

引脚

定义

VDD

工作电压

VSS

DQn

数据线

An

地址线

DQ15/A-1

DQ15/A-1 LSB Address(8位模式和16位模式时的地址线相差一根,通过复用实现)

WE#

写使能

OE#

输出使能

CS#

片选

RESET#

复位信号

BYTE#

数据宽度选择

RY/BY#

Ready/Busy

ACC/WP#

Acceleration/Write Protect

 

2.2、NORFlash操作状态


CEn

OEn

WEn

RESETn

ACC/WP#

ADDRESS

DQ[7:0]

BYTEn

L

H

DQ[15:8]

Read

L

L

H

H

x

IN

OUT

DQ[14:8]=High-Z

DQ15=A-1(复用)

OUT

Write

L

H

L

H


IN

IO

IO

Acc  Program

L

H

L

H

Vhh(12±0.5V)编程电压很高

IN

IO

IO

Output  Disable

L

H

H

H

x

x

High-Z

High-Z

High-Z

Standby

VCC±0.3V

x

x

VCC±0.3V

H

x

High-Z

High-Z

High-Z

Reset

x

x

x

L

x

x

High-Z

High-Z

High-Z

 

NORFlash上电后处于数据读取状态(Reading Array Data)。此状态可以进行正常的读。这和读取SDRAM/SRAM/ROM一样。(要是不一样的话,芯片上电后如何从NORFlash中读取启动代码。)

NORFlash具有像内存一样的接口,它可以像内存一样读,却不可以像内存一样写,NORFlash的写、擦除都需要发出特定的命令。谈到NORFlash通常就会涉及到CFI([Common Flash Interface)接口,一般NORFlash都支持发命令来读取厂家ID和设备ID等基本信息,但并不是所有的NORFlash都支持发命令来获取和芯片本身容量大小、扇区数、擦除块大小等信息。为了让将来的NORFlash兼容性更好,引进了CFI接口,将芯片有关的信息都写入芯片内部,通过CFI命令就可以获取这些信息。

一般在对Flash进行操作前都要读取芯片信息比如设备ID号。这样做的主要目的是为了判断自己写的程序是否支持该设备。NORFlash支持2种方式获取ID号。一种是编程器所用的方法需要高电压(11.5V-12.5V)。另一种方法就是所谓的in-system方法,就是在系统中通过NORFlash的命令寄存器来完成。in-system方法需要切换到自动选择(Autoselect Command)模式,这要通过发送命令来完成。进入自动选择(Autoselect Command)模式后需要发送复位命令才能回到数据读取状态(Reading Array Data)。

在完成信息获取后一般就要擦除数据。NORFlash支持扇区擦(Sector Erase)除和整片擦除(Chip Erase)。这2种模式都有对应的命令序列。在完成擦除命令后会自动返回到数据读取(Reading Array Data)状态。在返回前可查询编程的状态。

完成擦除后就需要对芯片进行写入操作也就是编程。这就需要进入编程(Program)状态。在完成编程命令后会自动返回到数据读取(Reading Array Data)状态。在返回前可查询编程的状态。注意:编程前一定要先擦除。因为编程只能将‘1’改写为‘0’,通过擦写可以将数据全部擦写为‘1’。


2.2.1、区擦除(Sector Erase)

NORFlash支持扇区擦除(Sector Erase)和整片擦除(Chip Erase)。这两种模式都有对应的命令序列。在完成擦除命令后会自动返回到数据读取(Reading Array Data)状态。在返回前可查询编程的状态。



Embedded Erase algorithm是指“嵌入的擦除算法程序”,当发出擦除命令的时候NORFlash内部就会执行一系列指令来进行擦除工作,在这过程它通过检测Data=FF?来判断擦除状态,但是这是NORFlash内部的判断方法,与之对应,外部的内存控制器可以通过Data#Polling来检测。


2.2.2、编程(Program)

完成擦除后就需要对芯片进行写入操作也就是编程。这就需要进入编程(Program)状态。在完成编程命令后会自动返回到数据读取(Reading Array Data)状态。在返回前可查询编程的状态。注意:编程前一定要先擦除。因为编程只能将‘1’改写为‘0’,通过擦写可以将数据全部擦写为‘1’。





2.2.3、写操作状态(WRITE OPERATION STATUS)

NORFlash提供几个数据位来确定一个写操作的状态,它们分别是:DQ2,DQ3,DQ5,DQ6,DQ7,and RY/BY#。其中DQ7,RY/BY#和DQ6中的每一个都提供了一种方法来判断一个编程或者擦除操作是否已经完成或正在进行中。实际编程中只需要使用其中的一种。

  • DQ7:Data# Pollingbit,在编程过程从正在编程的地址中读出的数据的DQ7为要写入数据位的补码。比如写入的数据为0x0000,即输入的DQ7为0,则在编程中读出的数据为1;当编程完成时读出的数据又变回输入的数据0。在擦除过程中DQ7输出为0;擦除完成后输出为1;注意读取的地址必须是擦除范围内的地址。RY/BY#:高电平表示‘就绪’,低电平表示‘忙’。

  • DQ6:轮转位1(Toggle Bit 1),在编程和擦除期间,读任意地址都会导致DQ6的轮转(0,1间相互变换)。当操作完成后,DQ6停止转换。

  • DQ2:轮转位2(Toggle Bit 2),当某个扇区被选中擦除时,读有效地址(地址都在擦除的扇区范围内)会导致DQ2的轮转。DQ2只能判断一个特定的扇区是否被选中擦除,但不能区分这个扇区是否正在擦除中或者正处于擦除暂停状态。相比之下,DQ6可以区分NORFlash是否处于擦除中或者擦除暂停状态,但不能区分哪个扇区被选中擦除,因此需要这2个位来确定扇区和模式状态信息。

  • DQ5:超时位(ExceededTiming Limits),当编程或擦除操作超过了一个特定内部脉冲计数时DQ5=1,表明操作失败。当编程时把0改为1就会导致DQ5=1,因为只有擦除操作才能把0改为1。当错误发生后需要执行复位命令才能返回到读数据状态。

  • DQ3:扇区擦除计时位(SectorErase Timer),只在扇区擦除指令时起作用。当擦除指令真正开始工作时DQ3=1,此时输入的命令(除擦除暂停命令外)都被忽略,DQ3=0时,可以添加附加的扇区用于多扇区擦除。


3、串行NOR Flash

串行NOR Flash的主要接口是SPI接口,其内部存储矩阵的访问和存储结构同并行NORFlash的一致,只不过多了个串行接口,用于实现对串行数据的解码。


3.1、SPI的SDR/DDR采样方式

SPI的SCK支持单沿触发和双沿触发,单沿触发时只在上升沿或下降沿触发,双沿触发时在上升沿和下降沿均触发。



3.2、SPI的x1/2/4连接方式

SPI支持1位、2位、4位数据传输宽度。

Traditional SPI single bit wide commands (Single orSIO) send information from the host to the memory only on the SI signal. Datamay be sent back to the host serially on the Serial Output (SO) signal.

Dual or Quad Output commands send information fromthe host to the memory only on the SI signal. Data will be returned to the hostas a sequence of bit pairs on IO0 and IO1 or four bit (nibble) groups on IO0,IO1, IO2, and IO3.

Dual or Quad Input/Output (I/O) commands sendinformation from the host to the memory as bit pairs on IO0 and IO1 or four bit(nibble) groups on IO0, IO1, IO2, and IO3. Data is returned to the hostsimilarly as bit pairs on IO0 and IO1 or four bit (nibble) groups on IO0, IO1,IO2, and IO3.








硬件助手 将艺术融于技术,将技术融于生活。 Art in tech, tech in life.
评论
热门推荐
相关推荐
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦