资讯
HOME
资讯
正文内容
nand flash编程 案例分析,NAND FLASH流水实现高速存储
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

案例分析,NAND FLASH流水实现高速存储

流水技术原理

所谓流水线处理,如同生产装配线一样,是将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行。这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时间无关。这样,在理想的流水操作状态下,其运行效率很高。

如果某个设计的处理流程分为若干步骤,而且整个数据处理是单流向的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,则可以采用流水线设计方法来提高系统的工作效率。

利用流水线的设计方法,可大大提高系统的工作速度。这种方法可广泛运用于各种设计,特别是大型的、对速度要求较高的系统设计。虽然采用流水线会增大资源的使用,但是它可降低寄存器间的传播延时,保证系统维持高的系统时钟速度。在实际应用中,考虑到资源的使用和速度的要求,可以根据实际情况来选择流水线的级数以满足设计需要。

下面我们以房屋装修为例展示一下流水线的流程,如图3-7所示。

图3-7 房屋装修流水线示意图

房屋装修分4个步骤,分别是水电改造、木工上场、瓦工上场和油工上场。

如果设计团队由4个人员组成,那么在装修A小区某房屋的时候,需要按照上述出场顺序工作。水电改造工人完成A小区的工作后,可以去B小区某房屋工作,B小区工作完毕后,再去C小区工作。同理,木工、瓦工和油工也是如此。

我们可以得出结论,从水平方向上看,对于某个小区的房屋,需要四个人顺序出场;但是基于某个特定人员,在整个平面上来看,在平面方向上是排满饱和的。

所以基于团队,用流水线的方式确保了高效率,每个人工作量饱满,收益最大。

案例:NAND FLASH流水实现高速存储

NAND FLASH的详细介绍见第9章。

我们知道,NAND FLASH的特点是读/写速度比较慢。

以写为例,写数据后,必须有长时间的编程等待时间,编程结束之后,才能进行下一次写数据过程。

例如:K9K4G08UOM这款芯片的最大写入时间(编程时间)为700 μs,写数据阶段的时间为125 μs(2 Kb/16 M,假如用16 MHz时钟,一次写入2 Kb个数据)。评估一下有效的写入速率为2 Kb/(125 μs+700 μs)=2.42 Mb/s。

我们可以利用流水线技术来提高读/写速度,如图3-8所示。

图3-8 FLASH控制器流水线式进行写操作

示例中,我们用了5片芯片,为写入时间(编程时间)分配了800 μs的时间,为写数据分配了200 μs时间,组成了5级流水。第一片芯片写数据结束、编程等待的时候,对第二片芯片进行写数据,第二片芯片写数据结束、编程等待的时候,对第三片芯片进行写数据,以此类推,第五片芯片写数据结束后,重新对第一片芯片进行写数据。

重新评估一下写入速度为2Kb/200 μs=10Mb/s。

当然,上面的计算是为了方便读者理解来设定的,目的是让800 μs成为200 μs的整数倍,图片看上去美观一些。实际上我们还是用125 μs来进行写数据,写入速度接近16Mb/s。

在大容量存储类的项目中,不止使用流水线技术,还采用并行工作方式,优化之后的速度能达到几百兆。

以上介绍的为FLASH写阶段的流水线过程,读和擦除也可以利用流水线技术,此处不展开论述。

专栏推荐,【零基础学FPGA】

本专栏基于Altera公司的器件和Verilog HDL语言。学完以后,相信读者能够掌握FPGA开发的基本技术,并能够独立进行FPGA项目开发。

SPI-Flash是什么?使用注意事项及常见问题

一.概念:

SPI:serial peripheral interface

串行接口设备,spi flash 就是通过串行的接口进行操作的flash存储设备

flash按照内部存储结构不同,分为两种:nor flash和nand flash。这里spi flash 属于 nor flash!

spi flash 读写较慢,次数有限制,一般用于不经常更改的存储。

早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Norflash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Norflash所取代。同时不同容量的SPI Norflash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。

二、SPI FLASH读写介绍

对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区等。

其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再依次写指令,地址和数据,就可以对FLASH芯片进行操作。

掌握以上方法,就可以轻松操作SPI flash芯片了,当然,对时序这种底层的操作,还需要不断学习和积累,不论是用FPGA还是MCU,最终都是为了产生时序信号,只要静下来认真理解了它,一切问题就迎刃而解了。

三.注意事项

1.不同的SPI FLASH芯片可能会提供的擦除方式:扇区擦除(4KBytes),半块擦除(32KBytes),块擦除(64KBytes),片擦除。

2.不同的SPI FLASH芯片可能会提供的编程方式(也就是写数据):页编程(256Bytes),扇区编程(4KBytes)。

3.SPI FLASH如果擦除过,在往里面写0xFF这样的数据意义不大,因为它的特性就是擦除后数据就是0xFF。

4.写入flash时,只能把数据(bit)从1该为0。

5.传统的EEPROM的特点就是可以随机访问和修改任何一个字节,可以往每个bit中写入0或1。而写入flash时,只能把数据(bit)从1该为0。但是传统的EEPROM容量因成本的缘故收到限制,绝少有超过有512K的。

6.Nor Flash容量相对小,成本高,基本没坏块,数据线和地址线分开,可以实现随机寻址,读取任何一个字节,擦除任然要按块来擦。NAND FLASH容量大,成本低,坏块经常出现,但可以标记坏块,使软件跳过,数据线和地址线复用,按块擦除按页读取。

四、项目实操中的问题

项目中需要用到SPI flash,在使用这个4MB 的SPI flash中出了三个问题让印象深刻,特记录下来以作提醒

问题1:我们知道SPI flash也分主从模式,一般master都是有MCU等器件担当的,而slave有SPI器件担任,笔者的这个小系统同样如此。

并且MCU是自带有SPI controler,接线方式依然是四线解法,SCK,CS,DO,DI,在看手册的过程因为自己的不注意,看到描述是“user can

decide the SPICS configuration in the master mode,if P_IO_Ctrl[10] set 1, the IOA[12] as GPIO function, if P_IO_Ctrl[10] set 0, the IOA[12] as SPICS hardware function” 我当时没有好好体会这句话的意思,简单的认为我在使用SPI flash之前就k肯定需要把P_IO_Ctrl[10]设置为 0, 其实这是错误的认识。

因为现在是通过MCU对slave SPI器件操作,首先肯定是需要MCU端来选中SPI器件,从master角度来讲,只需要一个GPIO信号线接到slave的CS端,同时输出低电平就相当了选中了这个slave了,之所以如此说法是因为这是从slave角度来说的,相当于MCU现在也作为一个slave,另一个MCU控制这个slave,则这时候SPI 初始化时就需要把 P_IO_Ctrl[10] set 0

问题2:需要一个烧录器向SPI flash中烧写内容,用的是西立特公司的superPro,但烧录步骤错误了,忘记了在编程之前必须要erase,

了解了一下,好像是和nor flash一样的介质,擦除会把所有bit置1,在编程的时候根据需要只可以把相应位置0.

问题3:在使用MCU上一个SPI 控制器接口接SPI flash时,没有交叉连接,即MCU 的DI应该接SPI 的DO,MCU 的DO应该接SPI 的DI。

相关问答

NorFlash与 NandFlash 的区别?

NorFlash和NandFlash是两种不同的闪存存储器,它们的主要区别在于其存储方式和应用场景。1.存储方式:NorFlash采用的是随机访问存储(RAM)方式,也就是说可以...

嵌入式开发,请问学习嵌入式的时候,是否需要先学习别 - Deha...

成为一名嵌入式Linux开发工程师需要学习哪些知识?随着嵌入式行业的迅猛发展,嵌入式Linux凭借其系统发展的成熟度、市场应用的高份额也受到更多工程...

flash编程 能实现什么功能?

Flash编程可以实现许多功能,包括创建交互式动画、游戏、演示文稿、网站、应用程序等。通过使用Flash编程语言(如ActionScript),开发人员可以轻松地创建动态、...

beeprog烧录起无法校验器件是什么问题?

估计你是烧录NANDFlash。因为NANDFlash和普通的Flash结构有些不一样,在烧录的时候需要注意ECC。为何有ECC呢?那是NANDFlash本身的特性,偶尔的出现位反转的...

Flash 是怎么与FPGA连接实现将C程序写入Flash中并从Flash中引导?

没听说FPGA可以从flash引导启动。目前的FPGA都是配置EEPROM芯片,如果要使用C语言,必须有相应的转换系统,譬如altera公司的NIOS就可以实现C语言编程下载到FPGA...

能烧录GD5F1GQ4UAY 编程 器有哪些?

这个芯片是SPINANDFlash,特点是接口只要3跟线,同时GD的同系列的芯片容量较大,可以到528M。我这里有SmartPRO6000F可以支持这款芯片的烧录,截图供参考:这...

Flash ,、Flex、 Air和Flashplayer之间的相互关系是怎样的?

FLASH是一个基于时间轴动画设计的且可编程的软件,它可以绘画,做动画,游戏,网页等,是以绘画工具为主的所见即所得的多功能媒体创作软件。FLEX没有舞台和绘画...

STM32怎么通过串口来烧写字库到 FLASH ?..._网络编辑_帮考网

2.编辑字库文件,可以使用字库制作软件,如FontCreator、字库工具等,将字库文件保存为二进制文件。3.将字库文件通过串口发送到STM32,可以使用终端...

CAN 如何连成总线

[回答]spanname=whlmid=whlm摘要:控制器局域网(CAN)WBR是一种有效支持分布式控制或实时控制的现场总线,WBR具有高性能和高可靠性的特点;随着现代汽车技...

如何使用MDK建立一个STM32工程?

Runtomain前打钩6.4切换到Utilities选额调试器类型,我们选择Cortex-M3J-Link点settings按钮,添加Flash编程算法,我们选择STM32...

 白云天  d2031 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部