APP下载

基于NANDFlash大容量数据存储器的设计

2014-08-16孔令振穆建文

网络安全与数据管理 2014年9期
关键词:状态机存储系统存储器

孔令振,穆建文

(北京环境特性研究所,北京 100859)

图像数据存储系统是现代电子系统的重要组成部分,在航天、国防、通信等领域有着广泛的应用[1]。随着图像分辨率及采样频率的不断提升,高速海量数据的存储问题成为日益紧迫的研究课题。Flash作为一种新型的半导体器件,由于其非易失性、低功耗、体积小和可靠性高等优点,已逐渐取代磁盘成为嵌入式系统中首选的存储器件。Flash根据其内部逻辑架构上的差异主要分为NOR Flash和NAND Flash两种[2]。 相比NOR Flash,NAND Flash最大优势就在于其容量大,单片容量已达8 GB,但其最主要的缺点是读写速度慢。综合考虑存储系统对带宽的要求,本设计采用FPGA同时控制多片NAND Flash并行读取的方式来控制带宽。

1 NAND型Flash结构及性能

NAND Flash是采用NAND结构技术的非易失性存储器,内存有8位和16位两种形式,其I/O接口为地址与命令复用接口。以三星公司生产的K9NCG08U5M芯片为例,该芯片内分为4个器件(Device),每个器件由 8 192个块(Block)组成,每块又由 64个页(Page)组成,每一页的存储容量为4 KB+128 B[3]。NAND Flash主要以页为单位进行读写,以块为单位进行擦除,其内部有与页大小相同的页寄存器,用于数据缓存。该芯片读写操作典型时间为 25 ns/B,写编程典型时间为 200 μs/Page,擦除操作时间为1.5 ms/Block,块擦除次数可达 100万次,其结构如图1所示。

图1 NAND Flash内部结构示意图

2 大容量存储器硬件设计

大容量存储系统要实现存储数据操作需要实现两个方面功能:一是实现具体的存储接口与存储系统的数据交换;二是实现存储系统的数据管理[4]。

2.1 接口板电路设计

接口板主要负责对CCD图像数据进行采集及预处理,将Camera Link数据信号接收进来,按原有行、场及数据有效标志信号从LVDS接口接收通信图像数据。由于原始数据是随机的,需要FPGA将数据整合成有一定规律的数据格式。

输入部分首先是Camera Link接口,LVDS图像数据输入包含4组数据线和1组时钟信号,采用一片DS90CR286(将 LVDS信号转换为TTL信号)进行数据接收,一个MDR26插头。具体操作过程为:首先Camera Link数据接口模块接收LVDS信号将其转化成TTL电平,在FPGA内部整合成64 bit数据信号和相机控制信号,然后将图像数据暂存到双口RAM中,采取乒乓读取的方式将数据存入到存储板中。接口板电路结构如图2所示。

图2 接口板电路结构框图

2.2 存储板电路设计

存储板完成的任务主要是接收接口板的数据信号和控制信号,将数据存入NAND Flash芯片中,读取NAND Flash中的数据信号并传送给接口板。

存储板采用型号XC2V3000FF1152的Virtex II FPGA芯片直接控制NAND Flash芯片,其指标为:720个可用I/O,1 728 KB的内部块 RAM[5]。NAND Flash芯片采用三星公司的K9NCG08U5M,单片大小为8 GB。存储板载有32片NAND Flash,这样存储板可实现256 GB的存储容量。32片NAND Flash并行存储,单片速度为15 MB/s,并行存储速度可达480 MB/s。具体连接方式如图3所示。

图3 NAND Flash存储阵列结构图

3 大容量存储器软件设计

在搭建好存储器硬件平台后,需要进行相应的软件设计以实现系统逻辑功能。主要包括两个部分:一是根据具体的接口编写合适的程序实现图像数据的输入与输出控制,实现存储板与外部接口的数据交换;二是NAND Flash逻辑控制器的设计[6]。NAND Flash逻辑控制器是大容量存储器设计的关键。

NAND Flash逻辑控制器主要由主状态机和中间状态机两个状态机构成[7]。主状态机主要用于产生对NAND Flash进行各种操作时所需的控制时序,中间状态机主要用于控制主状态机内各个状态之间的跳转。

3.1 NAND Flash逻辑控制器主状态机设计

NAND Flash逻辑控制器主状态机内的状态分为6类:空闲状态、存储操作状态、读取操作状态、擦除操作状态、坏块检测操作状态和ID读取操作状态,如图4所示。

图4 NAND Flash逻辑控制器主状态机

系统上电后,主状态机进入空闲状态,并在program_start、read_start、erase_start、check_start信 号 的 驱 动 下 进 入 相 应的存储操作状态、读取操作状态、擦除操作状态和坏块查询操作状态。在完成主控模块访问请求的操作状态后,主状态机会自动跳回到空闲状态。NAND Flash存储以页为单位进行,在对Flash某一块进行写操作前,需要对其进行擦除操作。先往Flash中写命令0x60,然后往Flash里写要擦除的块地址,再往Flash里写命令0xD0,最后等待。当往Flash里面写命令0x70后读出来的数据是0xC0时,说明擦除操作完毕。擦除操作完成后才可以向Flash里写数据。写数据的操作过程为:先往Flash中写命令0x80,然后往Flash里写要操作的地址,再向Flash搬数据,搬完后,如果要对本片Flash进行操作,一定要等一段时间,使得Flash有足够的时间把数据从Flash的缓存区域搬移到存储区域内。需要从Flash里读取数据时,主状态机进入读取操作状态,数据读取操作也是以页为单位进行。读取数据的过程为:先往Flash里写入0x00控制字,然后往Flash里写要操作的地址,再往Flash写命令0x30,等待一段时间,使得Flash有足够的时间把要读的数据从存储区搬到Flash缓存区内。NAND Flash读写与擦除操作流程如图5所示。

当Flash存储区域读写操作完毕,需要对下一块存储区域进行操作时,主状态机进入坏块查询控制模块,产生坏块查询所需的块地址信息和激励信号,状态机先进行块擦除操作,读取芯片状态寄存器来检测块擦除是否成功,如果不成功则认为该数据块为无效块,并将数据块地址写入缓存中。状态位读取操作由指令控制字70H控制,在I/O数据总线写入70H后的一个读时钟周期内可以将状态信息通过I/O总线读出。擦除结束后读取状态寄存器即可判断此块是否为坏块,如果为坏块则将当前块地址写入坏块缓存内。

图5 NAND Flash读写与擦除操作流程图

3.2 NAND Flash逻辑控制器中间状态机设计

主状态机内各个状态实现的功能各不相同,在状态机的循环过程中,每个子状态并不是在内部操作执行完之后就可以跳到下一个状态中去。主状态机内各个子状态之间的跳转需要中间状态机进行控制实现。

中间状态机的主要功能有两个:计数主状态机内各个子状态的内部操作执行次数,并与实现相应的存储器控制操作时需要执行的次数进行比较,从而控制各个子状态之间的跳转;通过内部状态之间的跳转,产生符合Flash建立保持时间要求的各种读写使能信号。此设计中,中间状态机包括4个状态,分别为触发开始、中间状态一、中间状态二和触发结束。中间状态机转换流程如图6所示,在中间状态机一次跳转循环中,主状态机的状态不发生变化。

图6 NAND Flash逻辑控制器中间状态机

针对本文设计的大容量存储板进行了存储功能测试和数据采集功能测试。在FPGA内部产生测试数据,将测试数据存储到NAND Flash中再启动读操作。数据源采用顺序数、随机数、驱动能力数,顺序数为按从小到大排列的数据,随机数为采用一定算法生成的随机数据,驱动数为采用0与1交替变换的数据。经测试,存储板存储带宽约为465 MB/s,读取带宽约为590 MB/s,满足设计要求。

NAND Flash访问速度快、成本低,而且存储密度越来越大,在不同领域都得到了广泛的应用。本文针对单片Flash存储速度慢的缺点,提出了一种多片NAND Flash并行读取的方式来提高读取带宽。通过NAND Flash逻辑控制器来实现Flash文件的读写及擦除操作;并且针对NAND Flash的坏块问题提出了一种坏块检测方法,通过不断调用坏块查询函数,可以跳过坏块并将坏块地址存储在已建立好的RAM中,增加坏块管理,保证了数据存储的可靠性。

[1]雷磊.NAND型Flash海量存储系统的设计与实现[D].北京:北京理工大学,2008.

[2]赵军伟,李宏穆,庄阿龙,等.NandFLASH和NorFLASH接口设计和驱动开发[J].现代电子技术,2009(14):40-43.

[3]Samsung Electronics.K9NCG08U5M data sheet[Z].

[4]晏敏,龙小奇,章兢,等.开放式大容量 NAND Flash数据存储系统设计与实现[J].微电子学与计算机,2009,26(11):13-16.

[5]Xilinx.Virtex-II user guide[EB/OL].http://www.xilinx.com.

[6]HO L S,HO P L K.An efficient NAND Flash files system for Flash memory storage[J].IEEE Transaction on Computers, 2006,55(7):906-912.

[7]刘卫.NAND Flash控制器的设计与验证[D].长沙:国防科学技术大型,2008.

猜你喜欢

状态机存储系统存储器
静态随机存储器在轨自检算法
分布式存储系统在企业档案管理中的应用
基于有限状态机的交会对接飞行任务规划方法
天河超算存储系统在美创佳绩
三段式状态机在单片机中的实现
任意2~k点存储器结构傅里叶处理器
华为震撼发布新一代OceanStor 18000 V3系列高端存储系统
存储器——安格尔(墨西哥)▲
基于电池管理系统的数据存储系统设计
基于反熔丝FPGA的有限状态机加固设计