FPGA 读写访问 Flash

目录

前言

1、AT25DF641A flash芯片简介

2、AT25DF641A flash读访问时序

3、AT25DF641A flash写访问时序

(1)关于Protect Sector

(2)关于Write Enable

(3)关于Erase

(4)关于状态寄存器

(5)写访问时序

4 flash存储结构

5 NOR 与NAND Flash的区别

5.1 芯片管脚区别


前言

工作中,用到过两种flash:M25P32、AT25DF641A。

下面以这个串行Flash(AT25DF641A)为例,对Flash读写访问进行简单介绍。

总结:

  • flash能够单字节读写访问,也允许以页(4K字节)为单位做读写访问。
  • SPI接口的串行flash,一般是NOR Flash;但也有串行SPI NAND Flash (F35SQA002G、W25M02GV(SpiStack))
  • NAND Flash IO是8bit;但也有串行SPI NAND Flash (F35SQA002G、W25M02GV(SpiStack))
  • NOR Flash中可以直接运行程序(XIP);NAND Flash则受其内部结构的复杂限制,一般是不支持。
  • Flash 的编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将对应的Page擦除,而擦除的过程就是把所有位都写为 1 的过程。
  • 注:因为串行NOR Flash与串行NAND Flash所要实现的功能一致,为了减少/简化并行Nand Flash的接口,所以两者的封装等都是一样的,差异只是在于存储器单位存储的结构不同
  • flash在SCLK上升沿采样数据。如下图所示。

1、AT25DF641A flash芯片简介

AT25DF641A flash芯片管脚封装

AT25DF641A flash芯片管脚封装

2、AT25DF641A flash读访问时序

按照芯片手册的读时序进行即可,没有特别需要注意的地方。

3、AT25DF641A flash写访问时序

有几点说明需要注意:

(1)关于Protect Sector

由下图芯片手册说明可知,该Flash芯片在上电后,会默认处于保护状态。

在Flash芯片处于保护状态下,是不允许写访问和擦除操作。

(2)关于Write Enable

首先需要知道,WEL bit 需要在写访问和擦除操作之前置1。

其次需要知道,WEL bit在写访问和擦除操作等成功后,会被自动清0。

(3)关于Erase

首先需要知道,写访问的地址空间必须是擦除过的地址空间。

其次需要知道,进行擦除操作之前,需要先将WEL bit置1.

最后需要知道,擦除操作成功后,Flash芯片会自动将WEL bit清零。


    Flash 的编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将对应的Page擦除,而擦除的过程就是把所有位都写为 1 的过程。

1.擦除的单位是page,一个page可能是256B也可能是512B。

2.擦除的地址需要提前进行页对齐。

实现目标 擦除一个page的数据
流程:

(1)设置寄存器为page擦除状态
(2)加载一个无效数据dummy,任意值到目标区域上
(3)激活寄存器高电平状态
(4)加一个while死循环,等待高电平状态消失,高电平状态消失说明擦写完成
(5)使能寄存器的鉴别模式
(6)读出所有数据和0xFFFFFFFF比较
(7)数据相符,关闭寄存器verify模式,返回success。失败重复上面所有步骤
(8)失败次数达到门限值,关闭寄存器verify模式,返回fail

(4)关于状态寄存器

一般在所有数据全部写入Flash之后,会将Flash芯片置于保护状态。

(5)写访问时序

在发写指令和写地址之前,需要进行下面几个步骤:

  1. Write Enable,取消保护
  2. Write Enable,擦除对应地址空间
  3. Write Enable,等待写指令、写地址、写数据。

在上面3个步骤执行完之后,按照手册的写访问时序进行即可实现数据的写入操作。

Byte写访问和Page写访问,是没有太大区别的。因为他们发的写指令码是一样的。

详细的代码不再介绍,按时序图写Verilog代码即可。

4 flash存储结构

这部分引用文章  “片外存储器---FLASH以及页、扇区、块介绍” ,方便阅读和理解。

(一) 什么是FLASH存储器?

  FLASH属于广义的ROM,因为它也是带电擦除的ROM。但是为了区别于一般的按字节为单位的擦写的E2PROM,我们叫它FLASH。FLASH做的改进就是擦除时不再以字节为单位,而是以块为单位。

  FLASH分为Nor FLASH和NAND FLASH。NOR FLASH数据线和地址线分开,可以实现RAM一样的随机寻址功能,可以读取任何一个字节。但是擦除仍要按块来擦。

  NAND FLASH同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取(NAND FLASH按块来擦除,按页来读,NOR FLASH没有页)。由于NAND FLASH引脚上复用,因此读取速度比NORFLASH慢一点,但是擦除和写入速度比NORFLASH快很多。NAND FLASH内部电路更简单,因此数据密度大,体积小,成本也低。因此大容量的FLASH都是NAND型的。小容量的2~12M的FLASH多是NOR型的。

  NORFLASH可以进行字节寻址,所以程序可以在NOR FLASH中运行。嵌入式系统多用一个小容量的NOR FLASH存储引导代码,用一个大容量的NAND FLASH存放文件系统和内核。
 

(二)Flash中页、扇区、块是什么意思?有什么区别?

  Flash是用于存储数据的存储器,但很多人看到页(Page)、扇区(Sector)、块(Block)等这些单位时总是分不清楚到底是什么含义,下面就来详细讲解一下!

  下面以W25Q128芯片为例,先看下面这段话:

  W25Q128存储芯片是由65536可编程的页组成的,每页有256个字节。一次最多可以写256个字节。可以一次擦除16页(4K字节)、128页(32K字节)、256页(64K字节)或者一整片。W25Q128有4096个可擦除的扇区,256个可擦除的块。4K字节的扇区对于数据和参数存储有更高的灵活性。
  如果不理解的话,先看完下面的内容之后,再回过头来看就会理解了。

 

 

5 NOR 与NAND Flash的区别

5.1 芯片管脚区别

nor flash一般是串行传输,即通常意义上走的SPI协议端口。

 nand flash

一、NAND flash和NOR flash的性能比较
1、NOR的读速度比NAND稍快一些。
2、NAND的写入速度比NOR快很多。
3、NAND的4ms擦除速度远比NOR的5s快。
4、大多数写入操作需要先进行擦除操作。
5、NAND的擦除单元更小,相应的擦除电路更少。

二、NAND flash和NOR flash的接口差别
NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。

三、NAND flash和NOR flash的容量和成本
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。

四、NAND flash和NOR flash的可靠性和耐用性
采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。

五、NAND flash和NOR flash的寿命(耐用性)
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。

七、EDC/ECC算法
这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。

八、坏块处理
NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。
NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。

九、易于使用
可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。
由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

十、软件支持
当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。
使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。
驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。

>>点击这里返回导航页<<

参考文献

作者博客
1、afishflyFPGA读写Flash模块 Verilog程序设计
2、lai-jian-tao基于FPGA的SPI FLASH控制器设计
3、时间看得见基于FPGA的关于flash一些学习记录
4、obiFPGA学习心得及(flash读写,+lwip+数据发送等问题)
5、张华山FPGA verilog 基于SPI总线协议控制flash的项目升级
6、起魔FPGA基础入门【8】开发板外部存储器SPI flash访问
ARM的Nand Flash入门使用手册(以K9F2G08X0M为例)
读nandflash---根据数据手册K9GAG08U0D
nand flash和nor flash区别_flash详解
vcs仿真flash模型时,flash一直为忙的分析
FPGA实现SPI协议读写FLASH(三)----- SPI读写控制模块设计
ROM、RAM、DRAM、SRAM和FLASH的区别_flash rom和sram
SPI FLASH与NOR FLASH的区别
NOR FLASH和NAND FLASH基本结构和特点
Flash(NandFlash&NorFlash)基本原理
NAND Flash系列之NAND与NOR Flash
nor flash原理详细讲解
W25Qxx系列FLASH初级使用指南(W25Q64 W25Q128等
Flash Memory(W25Q64+SPI协议)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值