DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 156|回复: 1
打印 上一主题 下一主题

基于NAND FLASH的高速大容量存储系统设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 15:11:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要:为了解决目前记录系统容量小、存储速度低的问题,采用性能优良的固态NAND型FLASH为存储介质,大规模集成电路FPGA为控制核心,通过使用并行处理技术和流水线技术实现了多片低速FLASH时高速数据的存储,提高了整个系统的存储容量和存储速度。针对FLASH内部存在坏块的自身缺陷,建立一套查询、更新和屏蔽坏块的处理机制,有效的提高了数据存储的可靠性。
关键词:高速;流水线;FLASH;FPGA

0 引言
??? 在数据采集存储系统中,往往需要对采集后的数据进行存储以方便后续分析处理。随着我国航空电子技术和雷达成像技术的快速发展,分辨率和采样率大幅提升,由此便带来了高速大容量数据的存储问题。同时存储系统又要求掉电存储数据并具有良好的抗振动能力,因此存储电路通常采用非易失的电路芯片构成,而传统的DOC,E2PROM等存储技术由于容量小、速度低等缺点已经不适用高速大容量数据的存储。快速发展的闪速存储器(FLASH MEMORY)因其具有体积小、成本低、功耗小、寿命长、抗振动和宽温度适应范围等特点,逐渐成为高速大容量存储系统设计的主流方案。

1 FLASH的控制逻辑
??? 目前FLASH芯片主要分为NOR型和NAND型。NOR型具有可靠性高,随机读取速度快等优点,适用于程序代码的存储。NAND型是一种线性存储设备,适用于大容量数据和文件的存储。 K9WBG08U1M是三星公司推出的一款NAND型FLASH芯片,存储容量达到4 GB,它内部由两片2 GB的FLASH构成,通过片选信号CE1/CE2进行选择控制,每片FLASH由8 192个块组成,每块有64页,每页能存储(4 096+128)个字节的数据。因此,访问芯片需要5个地址周期,其中3个周期的行地址用来确定某一页,2个周期的列地址用来确定每页的某个字节。对FLASH进行的操作主要有:存储、读取和擦除。由于指令、地址和数据复用芯片的8个I/O口,因此需要2个控制信号CLE和ALE分别锁存指令和地址。
??? 存储操作一般使用基于页的连续存储模式,所有的命令字、地址、数据都是在

的上升沿写入。首先输入命令字80H,随后紧跟输入5个周期的地址,并且在

的上升沿将串行输入数据加载进芯片内部的数据存储器中,最后输入页编程确认命令10H便可启动存储操作,数据将自动的从片内寄存器写入存储体中,随后可通过输入读状态命令70H来判断I/O端口输出是否为O来检测此次编程操作的成功性。
??? 读取操作通常也以页为单位进行。输入起始命令字00H、5个周期的地址和结束命令字30H后,对应地址的一页4 096个字节数据便传输给数据寄存器,随后在



??? 图1中每片FLASH都分为加载时间和编程时间,当第一片FLASH完成第一页的数据加载后进入数据编程阶段。此时第二片FLASH开始进行第一页数据加载,加载完成后也进入数据编程阶段。然后依次对第三片到第八片FLASH进行相同的操作,当第八片FLASH也完成了第一页数据的加载后,此时系统耗费的总时间约为7×102.5=717.5μs,大于单片FLASH的最大编程时间700μs即第一片FLASH已经完成了数据编程,可以接着进行第二页的数据加载。当第二页数据加载完成后,第三片FLASH便完成了第一页的数据编程,可以接着进行随后操作。这种循环流水操作,使FLASH在高速存储过程中不必去考虑页编程是否完成,节省了页编程时间,从而使存储速度近似达到芯片接口写入速度即40 MB/s。由此可见,运用流水操作技术的存储速度将是单片FLASH存储速度的8倍,实现了FLASH的快速高效无丢失存储。
                          
                       
                          
                               
2.3 坏块处理技术
??? NAND型FLASH芯片在出厂时内部会随机分布有坏块,坏块是指一个块内含有一位或更多位的数据单元无法进行操作,并且在芯片的长期使用过程中不可避免地还会增加新的坏块。不允许对坏块进行擦除和编程操作,这样会导致数据的存储错误。因此在操作FLASH的过程中,需要建立一个坏块管理列表,将芯片内部的所有坏块信息写入列表中,并且在出现新的坏快时能够及时的更新坏块管理列表。
??? FLASH内部的坏块有两种,一种是芯片出厂时本身含有的初始坏块,此类坏块厂家已经标明,通过读取芯片每块第一页和第二页的第4 096个字节来进行判断,如果均是“FFH”,则认为此块是有效块,否则便为坏块。另一种则是在使用过程中新增加的坏块,可以通过读状态寄存器来进行判断。
??? 坏块管理列表的建立和更新可以使用将其内部地址空间和FLASH内部块地址一一对应的映射方法,当发现是坏块时,只需将列表中对应此块地址的单元写入1比特“0”信息即可,而其余的地址单元仍是1比特“1”信息代表有效块。在对FLASH的每一块进行操作之前,需要先读取坏块管理列表中对应此块地址单元的信息,如果发现是坏块就跳过此块不进行操作,然后再进行下一块的判断,直至找到有效块时再进行操作。坏块管理列表的建立和更新分别如图2、图3所示。




                          
                       
                          
                               

3 系统设计
3.1 系统硬件结构组成
??? 本文所设计的高速大容量存储系统的结构框图如图4所示。系统中FLASH芯片选用三星公司的K9WBG08U1M,存储阵列分为8组,采用流水线操作,每组由8片FLASH并联共用控制线,各组对应行的FLASH共用数据线。系统存储容量达到4×8×8=256 GB,存储速度理论值为40MB/?? s×8=320 MB/s。FPGA是整个系统的控制核心,它将产生各种复杂的逻辑时序来控制外围芯片协调有序地工作,选用Altera公司StratixⅡ系列的EP2S60F484I4芯片,该芯片有48 352个逻辑单元,内置存储RAM容量达2.5 MB,满足缓存数据的要求。USB接口电路选用CYPRESS公司的CY7C68013A,该芯片集成了一个8.5 KB片上RAM的8051核、4 KB的FIFO以及USB 2.0收发器,满足USB2.0通信协议,是进行USB2.0开发的常用芯片。坏块信息存储电路用于存储和更新FLASH存储阵列随机出现的坏块位置,它必须是非易失零出错的存储介质,因此选用AMD公司的Am29LV800B NOR型FLASH,存储容量为8 Mb,保证无坏块。




3.2 系统具体实现
??? FPGA是整个硬件系统的核心,它完成电路的复杂时序控制,使系统有条不紊地运行。FPGA上电后进行初始化和加载配置信息,完成后进入工作状态。首先根据USB接口电压判断是进入数据记录状态还是数据下载状态,然后分别按照各自流程进行工作。FPGA内部逻辑设计如图5所示。




??? 由于FLASH存储阵列是8片并联一起操作,因此数据总线宽度便为64位,同时由于USB的接口数据宽度为16位,因此系统中使用了2个FIFO分别进行缓存。在系统记录状态下,前端接收到高速串行数据后首先进行串/并转换,然后为其添加一个64位的标志头一并存入FIFO缓存,标识头是用来标记每次的加电情况,方便FLASH数据的分段下载。同时将外部NORFLASH内所存储的坏块信息读入FPGA内部建立的RAM中,在总接口控制下,屏蔽FLASH存储阵列内部的坏块,并按一定顺序将数据写入FLASH芯片。由于数据在存储过程中会产生新的坏块,因此在每页写操作结束后需判断此页编程是否成功,若编程失败,则对照此坏块地址更新RAM中的坏块信息,等待FLASH的存储操作结束后,再将更新后的RAM数据写入外部NOR FLASH进行保存。
??? 在系统下载状态时,首先对FLASH内部的存储数据进行搜索,找到标识头所在存储阵列中的位置并将此位置信息写入FPGA内部的RAM中,这样便可知道每次加电后存储数据在FLASH阵列中的起始块位置和所占块的容量。然后通过上位机软件输入起始位置,块容量和下载命令后,FPGA内部的总接口控制便可根据这些命令信息,同时屏蔽坏块后将FLASH存储阵列中相应的数据写入16位FIFO缓存中,随后便可通过USB接口下载至计算机进行数据分析。

4 结语
??? 随着基于NAND技术的FLASH固态存储器的快速发展,其存储密度也越来越大,而体积、功耗和成本却在减小,这使得NAND型FLASH在大容量高速存储设备的研制中得到广泛应用。本文针对单片FLASH存储速度慢的缺点,将多片低速FLASH芯片并行起来工作,同时又运用流水线操作节省了FLASH的自身编程时间,从而使得整个存储系统的存储速度大大提高。针对NAND FLASH内部存在坏块的问题,建立了一套完善的坏块处理机制,使得系统能够准确的存储数据,保证数据的可靠性。使用FPGA对FLASH存储阵列及USB下载电路进行控制,充分发挥了FPGA处理复杂逻辑的特点,简化了系统的硬件结构。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-15 08:26 , 耗时 0.081703 秒, 17 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表