首页>>科技 >>内容

基于FPGA器件实现大容量高速存储系统的方案设计

发布时间:2023-08-23 15:00:40编辑:温柔的背包来源:

很多朋友对基于FPGA器件实现大容量高速存储系统的方案设计不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

基于FPGA器件实现大容量高速存储系统的方案设计

1、综述

数据存储设备是航天器的关键设备之一,为各种空间试验或探测数据的采集、存储和在轨处理提供了重要的支撑平台。随着航天电子技术的发展,人们面临着越来越繁重的数据处理任务,这对数据采集系统的数据采集速率和存储容量提出了越来越高的技术要求。

目前,以FLASH为基本存储介质的大容量固态存储器已经成为航天器数据存储的主流方案之一。闪存(简称Flash memory)是从EEPROM发展而来的一种新型存储器件,因其具有非易失性、低成本、高密度、低功耗、可在线重复编程和擦除、抗冲击和温度适应性广等特点而得到广泛应用。

同时,由于目前FPGA技术成熟,易于编程,控制灵活,各种接口功能都可以通过软件实现,在高速数据采集和存储中使用FPGA作为控制部分,可以提高系统的处理速度和灵活性、适应性。

介绍了一种以FPGA为控制器,以FLASH存储器为主存储器的大容量高速存储系统方案,并讨论了其中的关键技术和实现途径,实现了存储容量和存储速度的突破。2.系统方案设计

超大容量高速存储系统主要由高速总线、中央控制逻辑和存储单元组成,其中存储单元是核心部分。该系统使用三个存储模块实现超大容量数据的存储,达到96GB的存储容量,其原理框图如图1所示。

其中每个存储模块有两个存储通道,每个通道采用16块1GB的FLASH,这样单个通道的存储容量为16GB,单个存储模块的存储容量为32GB。如果要继续增加存储容量,可以增加存储组。其中,由于存储模块的容量需求非常大,选择K9K8G08U0M作为存储模块的组成单元,每片容量1GB,读写速度高达40 MB/s.

按每组存储器40MB/s的读写速度计算,Flash存储器每页(2KB)最大编程时间为700us,则每页(2KB)所需时间为TW=1/40MB2048=25 ns2048=51.2 US。

要通过分页读写Flash,总共需要串联70051.2=14个芯片,这样Flash才能以40mB/s的满写速度运行.每组存储器的读写速度为Sc(这里存储器的读写速度为40MB/s),存储器的数据总线宽度为8位(1字节),有n组存储器读写接口可以并行完成读写操作,所以总的读写速度Sg为:Sg=Sc n=40MB/s n图1高速海量存储模块框图3、系统工作顺序和逻辑控制。

存储模块有三种工作状态:读、写和擦除。系统上电后进入初始化状态,可编程逻辑器件根据输入状态判断读、写、擦除进入哪个状态。所有逻辑控制由可编程逻辑控制器(FPGA)完成。3.1闪存数据周期写入技术

本设计采用16片FLASH数据循环写入技术,每片FLASH在每次读写和擦除操作前都要判断为无效块。如果某个缓冲区被判断为无效块,则跳过并继续下一个块操作。

每个FLASH一页的数据缓冲区为2KB,最快写入速度为40MB/s,可以计算出一页缓冲区写入数据大约需要50us,而一页缓冲区编程数据的典型时间为200us,最长时间为700us。16个FLASH芯片组成一个内存阵列,共有32KB数据缓冲,连续循环写入速度为40mb/s,需要80个才能完成16个FLASH芯片的写入操作。

依次操作,直到所有内存都满了。存储完一个通道后,FPGA中的通道切换模块将该通道切换到另一个通道继续存储。

3.2无效块的处理使用大容量闪存时,无效块的处理是首要考虑的问题。在这种设计中,每次读写和擦除操作之前,都要对每一块FLASH进行判断。过程如下:上电判断无效块,在每个块的第一页或第二页的2048列地址上做标记。如果不是11111111,则为无效块,先判断第一个。

页面无效,跳到下一个块;如果第一页有效,则判断第二页。如果第二页不是11111111,该块也无效,跳到下一块处理。无效块识别的时序如图2所示。图2无效块识别时序3.3程序流程和地址管理

使用VHDL编写程序的流程如图3所示,由于在对FLASH的操作中有对无效块的操作,所以如果顺序进行读写擦除操作,在单路16片FLASH芯片的地址管理上将会出现混乱。所以采取的地址管理方法是:

(1) 在进行读、写、擦除之前,均先对无效块进行识别;

(2) 确定是无效块时,直接跳至下一片,块地址不变;

(3) 确定不是无效块时,直接对其进行读、写、擦除操作;

(4) 在读和擦除状态时,通过等待R/B信号进入下一块的操作,而在写状态时不等待R/B信号,在上一块编程的同时下一块也开始进入写操作,在一次片选循环完成后统计无效块的个数,等待16片全部编程完成后,再将片选加一进入下一次循环。

图3 程序流程图

3.4 多模块同时写入方式

要想达到大容量存储,必须采用多个存储模块同时存储的方式,具体是由外部的主控制模块调度采集模块向具体的存储模块传输数据,可采用轮询的方式来选择存储模块。如图4所示,通过外部的控制卡设置存储模块的地址,先存001号存储模块,然后002号,之后003号,再返回001号,每次传输X个字节后切换存储模块(X可根据需要自行设定),由主控制模块来控制传输的方向。

4、 结束语

本文提出了一种实现超大容量数据存储的方案,采用层次化设计思想,将整个系统分成几个模块,再将整个存储区间分成若干个独立的子模块分别进行存储,每个模块可以自行管理,可根据需要灵活改变存储容量;采用分页并行存储及拓宽总线的方式以提高存取速度;研究了针对FLASH芯片的存储区管理策略,包括多块FLASH芯片的地址管理以及无效块管理等。

文章创新点:

1、超大容量数据的存储:采用层次化设计思想,将整个系统分成几个模块,再将整个存储区间分成若干个独立的子模块分别进行存储,每个模块可以自行管理,可根据需要灵活改变存储容量;

2、采用分页并行存储及拓宽总线的方式以提高存储速度;

3、研究针对FLASH芯片的存储区管理策略,包括多块FLASH芯片的地址管理以及无效块管理等。

以上知识分享希望能够帮助到大家!