欢迎访问ic37.com |
会员登录 免费注册
发布采购

基于SOPC高密度固态存储系统的研究与实现

日期:2009-7-20 (来源:互联网)

摘要:针对磁盘及磁盘阵列无法适应冲击、振动等恶劣环境下的高速海量数据存储的需要,选用高密度FLASH 卡——SanDisk 的Ultra II CompactFlash(CF)卡组成阵列,采用Altera公司的软核嵌入式处理器Nios,应用SOPC 技术由单一可编程逻辑器件(FPGA)取代“处理器+FPGA”的系统结构,就扩展容量、提高存储速度等关键技术进行研究,提出解决措施,并给出系统实现方案。

1 引言

星载CCD 相机成像系统中,迫切需要一种容量大、存取速率高、体积小、重量轻、耗电省、可靠性高的数据存储设备。早期星上海量数据存储主要使用磁带机,直至八十年代末和九十年代初各航天大国才开始研究使用磁盘、磁光盘和固态记录器。磁盘和磁光盘比磁带机使用灵活方便,可以以文件方式随机存取,记录密度也比较高,曾一度为许多航天大国所注意,但是由于其与磁带机一样有高速转动部件,影响可靠性。随着电子技术的发展,半导体存储器密度的提高,以DRAM、FLASH 为存储介质的固态存储器,其存储密度高、无转动部件、可靠性高、体积小、重量轻,较早期的磁记录设备更适于应用在航空航天领域,因而逐渐成为空间飞行器的数据存储的主流方案。

由于 DRAM 需要复杂的刷新电路,功耗大,掉电数据丢失,不是最佳选择。FLASH具有容量密度高、存储非易失性、功耗小等优势特点,适合空间应用,鉴于FLASH 的写入速度慢、存在无效块和位差错等问题,本文选用对此已有较好解决措施的高密度FLASH卡——SanDisk 的Ultra II CompactFlash(简称CF 卡)卡作为存储体,组成阵列,采用Altera公司的软核嵌入式处理器Nios,应用SOPC 技术由单一可编程逻辑器件(FPGA)取代“处理器+FPGA”的系统结构,针对扩展容量、提高存储速度等关键技术进行研究,提出解决措施,并给出系统实现方案。

2 CF卡的工作原理及其构成大容量存储器的关键问题

SanDisk Ultra II CompactFlash 卡(简称CF 卡)是SanDisk 公司生产的一种高速闪存卡,完全符合CFA 标准,其内部结构如图1 所示。SanDisk CF 卡包括两个基本组成部分:片内的芯片控制器和片内的存储模块,片内的存储模块以NAND FLASH Memory(闪烁存储器)为载体存储数字信息,片内的芯片控制器管理与主机的接口协议、数据存储、纠错、故障处理及诊断、电源管理和时钟控制。SanDisk CF 卡对外ATA 的接口,采用了有效的数据保护及纠错编码技术,对无效块进行了映射,并采用动态Wear-Leveling 算法,解决了NAND FLASH 存在的位差错、坏块、磨损均匀化等问题。SanDisk Ultra II CF 卡连续写入速度为9MB/s;,连续读速度为11.5MB/s;数据总线为8 位、16 位可选;最大容量为4Gbytes。

图1 SanDisk CF 卡内部框图

2.1 扩展容量

CF 卡的单卡容量为4GB,为实现海量数据存储必须扩展容量。对于如何构成超大容量数据存储系统并对其进行有效管理,采用模块化处理,将整个存储区间分成若干个独立的存储模块,每个可以自行管理。如对于实现64GB 的存储系统,可以采用16 块CF 卡组成阵列构成系统存储区,每4 块组成一个存储模块,使用同一地址,可以自行管理存储、纠错、容错、坏块映射、磨损均匀化等,四个存储模块组成系统存储区间。

2.2 提高存储速度

SanDisk Ultra II CF 卡的连续写入速度为9MB/s,这样的写入速度对于要求高速的应用场合来讲是难以满足的,因此必须采取一定的技术措施。

2.2.1 并行总线技术

并行总线技术亦称拓宽总线技术,即通过拓宽数据总线的宽度实现数据宏观上的并行操作。比如,由四块8 位数据总线的CF 卡组成一个32 位宽的存储模块,它们共用相同的控制信号,包括片选信号、读写信号、地址信号等。存储模块总是被看作一个整体而进行相同的操作,只是数据加载的时候是不同的数据。这样,数据量将是使用一块CF 卡时的4倍,所以理论上速度也将是非并行时的4 倍。

2.2.2 并行分路技术

时分多路复用通信,是指各路信号在同一信道上占有不同时间间隙进行通信,具体说,就是把时间分成一些均匀的时间间隙,将各路信号的传输时间分配在不同的时间间隙,以达到互相分开,互不干扰的目的。借鉴时分多路复用通信技术,可以将输入存储系统的高速数据流看作是以传输一个字所需的时间为一个时间片,不同的时间片传输不同数据的时分多路数据复用。存储操作时可以将输入的数据流以时间片为单位进行分路,每一个时间片上的数据字分至各路接口逻辑,由各路接口逻辑将数据字沿时间轴扩展,达到对CF 卡进行写操作的时序要求。并行分路原理见图2 所示,可以看出在每个时间片上各路都在并行存储,所以在每路存储一个字所需时间小于4 个时间片的情况下,分4 路并行分路存储可以实现的速度是每路存储速度的4 倍。

图2 并行分路原理图

2.3 控制模块的实现

通常存储系统的控制模块采用“处理器+FPGA”的系统结构,此结构中处理器与FPGA之间通过电路板上的连线联接,不仅影响可靠性,而且处理器与FPGA 之间的传输速度受到很大的限制。本文采用Altera 公司的软核嵌入式处理器Nios,与其它控制逻辑和接口逻辑一起集成于一片高速FPGA 中,这样不仅提高了系统的可靠性和集成性,而且处理器与其它逻辑之间通过内部互连逻辑联接,传输速度大大提高。

3 SOPC 技术及Nios 处理器简介

SOPC(System DSP 系统、数字通信系统、存储电路以及普通数字系统等,在单一FPGA 中实现,具有设计灵活、可裁减、可扩充、可升级、并具备软硬件在系统可编程的功能,使得所设计的电路系统在其规模、可靠性、体积、功耗、功能、性能指标、上市周期、开发成本、产品维护及其硬件升级等多方面实现最优化。

Nios 嵌入式处理器是FPGA 生产厂商Altera 推出的软核CPU,是一种面向用户的,可以灵活定制的通用RISC(精简指令集架构)嵌入式CPU。Nios 以软核的方式提供给用户,并专为在Altera 的FPGA 上实现作了优化,用于SOPC 集成,最后在FPGA 上实现。Nios处理器采用16 位指令集,16/32 位数据通道,5 级流水线技术,平均一个时钟周期处理一条指令,性能高达50MIPS

4 基于SOPC 高密度固态存储系统实现方案

4.1 系统目标

实现存储速度 60MB/s;

实现存储容量 32GB;

实现数据回放;

4.2 系统组成

根据系统目标要求,结合关键技术的解决方案,系统由控制模块和存储区两部分组成,系统组成如图3 所示。

图3 系统组成框图

存储区

存储区由四个存储模块组成,每个存储模块由两块 CF 卡组成。CF 卡选用16 位数据总线,两块卡并行接在存储模块32 位数据总线的高16 位和低16 位上,共用相同的地址和控制信号。因两块卡并行存取,每个存储模块的写入速度可实现18MB/s。存储区最大容量为32GB。

控制模块

控制模块主要由两部分组成。第一部分为接口部分,与系统外部的接口——输入FIFO、输出FIFO、命令/状态寄存器,其功能是完成外部数据的接收和发送、接收外部命令以及向外部发送状态参数;与存储区的接口——CF控制1…CF控制4,其功能是完成对各路存储模块的读写操作。第二部分为控制部分,其功能是初始化存储区及接口部分、向各存储模块发送各种命令及发送和接收数据。CPU是整个系统的核心,负责协调控制各个模块的工作。在系统启动以后,CPU的主要工作有:系统初始化;对数据进行编码变换处理;将数据写入CF卡。系统初始化工作主要进行通用寄存器设置、定时器设置、中断设置、CF 卡初始化。CPU对外部数据按一定格式进行编码,编码后的数据暂存于外部RAM 中的缓冲区中。CPU 在主程序中循环查询缓冲区数据长度,当数据量大于等于512bytes 时,就将512bytes 的数据写入CF 卡的一个扇区(512bytes⁄Sector) 。

4.3 系统工作原理

存储过程:

系统完成初始化,各存储模块完成自检后处于待命状态。CPU 接到外部的存储命令后,向各存储模块发出写命令,并给出存储地址,通知DMA 控制器准备存储。外部输入的高速数据进入输入FIFO 缓存,并将数据由8 位转换成32 位,实现降速,由输入的60MHz降至15MHz。DMA 控制器在各存储模块准备好接收数据后,将经缓存的数据以字为单位顺序分配给CF 控制1…CF 控制4,由各路CF 控制实现对各路存储模块的写操作,从而实现四路并行同时存储,每路存储模块可实现18MB/s(4.5MHz)的存储,四路并行同时存储可实现72MB/s,对于60MB/s 的输入数据可以实现存储功能。

回放过程:

CPU 接到外部的回放命令后,查找地址索引表,向各存储模块发出读命令,并给出地址,通知DMA 控制器准备回放。DMA 控制器在各存储模块准备好后,按存储的顺序依次向CF 控制1…CF 控制4 加载读控制信号,由各路CF 控制实现对各路存储模块的读操作,DMA 控制器依次从各路CF 控制的读数据线上取出数据,合路输出给输出FIFO,由输出FIFO 将数据由32 位转换为8 位输出,实现回放功能。

5 结束语

本文的创新是通过对用SanDisk Ultra II CF 卡组成阵列构成存储系统的关键技术的研究,提出采用SOPC 技术实现存储系统的具体方案,本方案集成度高、全固态、非易失、可靠性高,可以满足冲击、振动等恶劣环境下的高速海量数据存储的需要。