一种基于fpga的sata ip核及数据存储方法

文档序号:1921461 发布日期:2021-12-03 浏览:24次 >En<

阅读说明:本技术 一种基于fpga的sata ip核及数据存储方法 (SATA IP core based on FPGA and data storage method ) 是由 单立超 曲晓 于 2021-09-14 设计创作,主要内容包括:本发明提出了一种基于FPGA的SATA IP核及数据存储方法,涉及数据存储技术领域。一种基于FPGA的SATA IP核,包括RAID阵列逻辑模块、多个SATA接口模块和多个通信接口模块;各个所述SATA接口模块和各个通信接口模块均与所述RAID阵列逻辑模块连接;各个所述SATA接口模块均连接有硬盘,其中,RAID阵列逻辑模块,用于通过所述通信接口模块获取外部输入数据并通过多个所述SATA接口模块将所述外部输入数据写入到对应的硬盘;还用于通过多个所述SATA接口模块从硬盘中读出数据,并通过所述通信接口模块将数据输出,RAID阵列逻辑模块将硬盘分为多组阵列形式,进而采用RAID阵列技术进行数据的储存,提高了数据存储的可靠性。(The invention provides a SATA IP core based on an FPGA and a data storage method, and relates to the technical field of data storage. A SATA IP core based on FPGA comprises a RAID array logic module, a plurality of SATA interface modules and a plurality of communication interface modules; each SATA interface module and each communication interface module are connected with the RAID array logic module; each SATA interface module is connected with a hard disk, wherein the RAID array logic module is used for acquiring external input data through the communication interface module and writing the external input data into the corresponding hard disk through the SATA interface modules; the RAID array logic module divides the hard disk into a plurality of groups of arrays, and then the RAID array technology is adopted to store data, so that the reliability of data storage is improved.)

一种基于FPGA的SATA IP核及数据存储方法

技术领域

本发明涉及数据存储技术领域,具体而言,涉及一种基于FPGA的SATA IP核及数据存储方法。

背景技术

对于高速数字信号的实时存储,目前普遍采用FPGA直接写数据至Nandflash阵列里面的方案,其Flash的控制算法(FTL算法)均在FPGA里面实现,初期性能良好,使用一段时间以后,普遍性存在蓝屏,掉盘(存储设备在系统消失),客户数据经常性的无法恢复,系统无法使用等故障,而且故障现象一旦出现,很难使用技术手段维修维护,只能更换新卡,新卡经历一段时间之后,也会同样出问题。因此采用目前的存储方案可靠性不高。

发明内容

本发明的目的在于提供一种基于FPGA的SATA IP核及数据存储方法,用以改善现有技术中数据存储可靠性不高的问题。

第一方面,本申请实施例提供一种基于FPGA的SATA IP核,包括RAID阵列逻辑模块、多个SATA接口模块和多个通信接口模块;各个SATA接口模块和各个通信接口模块均与RAID阵列逻辑模块连接;各个SATA接口模块均连接有硬盘,其中,

RAID阵列逻辑模块,用于通过通信接口模块获取外部输入数据并通过多个SATA接口模块将外部输入数据写入到对应的硬盘;还用于通过多个SATA接口模块从硬盘中读出数据,并通过通信接口模块将数据输出。

上述实现过程中,RAID阵列逻辑模块通过通信接口模块获取外部输入数据并通过多个SATA接口模块将外部输入数据写入到对应的硬盘,从而达到数据存储的目的;RAID阵列逻辑模块通过多个SATA接口模块从硬盘中读出数据,并通过通信接口模块将数据输出,从而达到数据读出的目的。RAID阵列逻辑模块将硬盘分为多组阵列形式,进而采用RAID阵列技术进行数据的储存,上述SATA IP核独立占用一块FPGA芯片,通过加载本IP核,FPGA芯片即成为具备对多个SATA接口硬盘进行阵列控制的高性能存储控制器芯片,对外通信典型地采用RapidIO协议、以太网等协议,数据通信以帧为基本单位进行组织,每个数据帧都配有CRC校验字和帧序号,因此对于数据传输错误是完全可检测的。当出现数据通信错误时,通信逻辑将使用重新传输机制对数据重传,直至数据传输正确,从而确保数据写入和读出的可靠性。同时,基于SATA协议,FPGA与每一块硬盘之间的数据也是基于帧格式进行组织和传输的,每一帧数据同样也配有CRC校验字,因此FPGA与SATA之间的数据传输错误也是完全可检测的,同样地,对于偶发的数据传输错误,FPGA将重新发起读写操作,直至数据传输正确。从而提高速据写入和读出的可靠性。

基于第一方面,在本发明的一些实施例中,还包括缓冲管理模块,RAID阵列逻辑模块和外部存储芯片分别与缓冲管理模块连接;

缓冲管理模块,用于将数据缓冲到外部存储芯片中。

基于第一方面,在本发明的一些实施例中,还包括智能管理模块,智能管理模块与RAID阵列逻辑模块连接,用于对RAID阵列逻辑模块中的数据流进行监测,并根据监测结果进行调度。

基于第一方面,在本发明的一些实施例中,RAID阵列逻辑模块包括RAID逻辑单元、多个SATA控制逻辑单元和多个FIFO;多个SATA控制逻辑单元和多个FIFO均与RAID逻辑单元连接,多个FIFO与通信接口模块连接;各个SATA控制逻辑单元分别连接到各个SATA接口模块;其中,

RAID逻辑单元,用于通过多个FIFO获取外部输入数据并通过多个SATA控制逻辑单元控制对应的SATA接口模块进行存储;还用于通过多个SATA控制逻辑单元从SATA接口模块中读出数据。

基于第一方面,在本发明的一些实施例中,SATA控制逻辑单元包括控制接口和数据接口,

控制接口,用于与RAID逻辑单元发送和接收指令信息;

数据接口,用于传输数据信息。

基于第一方面,在本发明的一些实施例中,控制接口包括寄存器接口和指令FIFO接口,

寄存器接口,用于读取运行状态数据;

指令FIFO接口,用于写入指令信息。

基于第一方面,在本发明的一些实施例中,数据接口包括多个FIFO接口,FIFO接口用于写入数据或读出数据。

基于第一方面,在本发明的一些实施例中,通信接口模块包括接口管理单元和多个高速串口,接口管理单元分别与RAID阵列逻辑模块和多个高速串口连接;其中,

高速串口,用于数据传输;

接口管理单元,用于对多个高速串口进行管理。

基于第一方面,在本发明的一些实施例中,还包括LVDS总线接口,LVDS总线接口与接口管理单元连接。

第二方面,本申请实施例提供一种基于FPGA的SATA IP核的数据存储方法,包括以下步骤:

获取读写指令参数信息;

根据读写指令参数信息提取当前的存储信息并展示给用户;

获取用户输入的启动信号;

根据启动信号采用预置的基于FPGA的SATA IP核对数据进行读写操作。

上述实现过程中,通过获取读写指令参数信息;然后根据读写指令参数信息提取当前的存储信息并展示给用户;然后获取用户输入的启动信号;最后根据启动信号采用预置的基于FPGA的SATA IP核对数据进行读写操作,由于基于FPGA的SATA IP核进行数据存储具有很高的可靠性,因此采用该方法进行数据读写,可以提高速据读写的可靠性。

本发明实施例至少具有如下优点或有益效果:

本发明实施例提供一种基于FPGA的SATA IP核及数据存储方法,通过RAID阵列逻辑模块将硬盘分为多组阵列形式,进而采用RAID阵列技术进行数据的储存,上述SATA IP核独立占用一块FPGA芯片,通过加载本IP核,FPGA芯片即成为具备对多个SATA接口硬盘进行阵列控制的高性能存储控制器芯片,对外通信典型地采用RapidIO协议、以太网等协议,数据通信以帧为基本单位进行组织,每个数据帧都配有CRC校验字和帧序号,因此对于数据传输错误是完全可检测的。当出现数据通信错误时,通信逻辑将使用重新传输机制对数据重传,直至数据传输正确,从而确保数据写入和读出的可靠性。同时,基于SATA协议,FPGA与每一块硬盘之间的数据也是基于帧格式进行组织和传输的,每一帧数据同样也配有CRC校验字,因此FPGA与SATA之间的数据传输错误也是完全可检测的,同样地,对于偶发的数据传输错误,FPGA将重新发起读写操作,直至数据传输正确。从而提高速据写入和读出的可靠性。通过缓冲管理模块与在外部存储芯片连接形成缓冲池,一方面能够对外部输入的实时数据流进行缓冲,从而平滑硬盘阵列的短暂性带宽下滑;另一方面对数据进行纠错性缓存,在数据传输被确认正确之前,数据会被缓存在DDR3 SDRAM中,直至确认传输正确,数据才会被从DDR3中抹去。例如如果写入硬盘的数据块出现偶发错误,则调用缓冲池中的数据进行再次写入,直至数据写入正确,从而提高了数据存储的准确性。通过采用智能管理模块对全局逻辑的调度以及监测,使得该IP核能够正常运行,从而保证数据存储的稳定性。SATA控制逻辑单元为用户屏蔽复杂的SATA协议,使用户通过简便易用的逻辑接口即可实现对SATA接口硬盘的快速读写控制。通过获取读写指令参数信息;然后根据读写指令参数信息提取当前的存储信息并展示给用户;然后获取用户输入的启动信号;最后根据启动信号采用预置的基于FPGA的SATA IP核对数据进行读写操作,由于基于FPGA的SATA IP核进行数据存储具有很高的可靠性,因此采用该方法进行数据读写,可以提高速据读写的可靠性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的一种基于FPGA的SATA IP核的示意图;

图2为本发明实施例提供的一种基于FPGA的SATA IP核的数据存储方法流程图。

图标:1-RAID阵列逻辑模块;2-智能管理模块;3-SATA接口模块;4-硬盘;5-缓冲管理模块;6-外部存储芯片;7-接口管理单元;8-高速串口;9-LVDS总线接口。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

实施例

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的各个实施例及实施例中的各个特征可以相互组合。

请参看图1,图1为本发明实施例提供的一种基于FPGA的SATA IP核的示意图。该基于FPGA的SATA IP核,包括RAID阵列逻辑模块1、多个SATA接口模块3和多个通信接口模块;各个SATA接口模块3和各个通信接口模块均与RAID阵列逻辑模块1连接;各个SATA接口模块3均连接有硬盘4,其中,RAID阵列逻辑模块1,用于通过通信接口模块获取外部输入数据并通过多个SATA接口模块3将外部输入数据写入到对应的硬盘4;还用于通过多个SATA接口模块3从硬盘4中读出数据,并通过通信接口模块将数据输出。

上述RAID阵列管理逻辑,用于将硬盘4分为多组阵列形式,上述阵列形式可以是RAID5、RAID1、RADI0、RAID10、RAID50、RAID51。例如将10块硬盘4分为A\B两组,每组5块硬盘4,每组硬盘4可组成RAID0,RAID5两种模式,两组硬盘4可组成RAID10,RAI50,RAID51等模式。

例如:采用的RAID5构架,RAID5构架在进行数据存储时,会产生冗余的校验数据,即使在某块硬盘4永久损毁或失效时,数据仍可以完整地保留在其余的硬盘4之中。当用户使用正常的硬盘4替换失效硬盘4时,新使用的硬盘4中应有的数据可以从其余硬盘4中恢复。10块硬盘4以RAID5模式并行工作,本系统以8KB为最小管理空间,每块硬盘4间歇性、条带化地存储冗余信息,任意一块硬盘4上的数据或冗余信息可以基于其余硬盘4中的数据计算出来,数据流进入阵列系统时,以8KB为最小单位进行组织,依据当前所使用的LBA扇区地址的不同,而决定原始数据以及由原始数据产生的冗余数据对应使用的硬盘4和硬盘4空间,从而确保数据存储的可靠性。

其中,RAID阵列逻辑模块1包括RAID逻辑单元、多个SATA控制逻辑单元和多个FIFO;多个SATA控制逻辑单元和多个FIFO均与RAID逻辑单元连接,多个FIFO与通信接口模块连接;各个SATA控制逻辑单元分别连接到各个SATA接口模块3;其中,RAID逻辑单元,用于通过多个FIFO获取外部输入数据并通过多个SATA控制逻辑单元控制对应的SATA接口模块3进行存储;还用于通过多个SATA控制逻辑单元从SATA接口模块3中读出数据。

上述多个FIFO可分别用于运行状态跟踪数据输出、接收应用指令和多种数据的输入输出。上述RAID逻辑单元可以将硬盘4配置为多种阵列形式,例如RAID0、RAID1、RADI0、RAID5等。上述SATA控制逻辑单元包括SATA传输层和SATA链路层。

上述SATA接口模块3可以是SATA3.0,进而硬盘4选择适配符合SATA3.0规范的各种硬盘4、固态盘。SATA接口模块3的数量可以是10个,对应可连接的硬盘4也是10个。

其中,通信接口模块包括接口管理单元7和多个高速串口8,接口管理单元7分别与RAID阵列逻辑模块1和多个高速串口连接;其中,

高速串口8,用于数据传输;包括支持4xRapidIO(5G)或Fibre Channel(8G)或4xXilinx Aurora或PCIE协议。上述高速串口8的数量可以根据具体FPGA型号而异,可配置多个数据通道。本IP核对外通信典型地采用RapidIO协议、以太网等协议,数据通信以帧为基本单位进行组织,每个数据帧都配有CRC校验字和帧序号,因此对于数据传输错误是完全可检测的。当出现数据通信错误时,通信逻辑将使用重新传输机制对数据重传,直至数据传输正确,从而确保数据写入和读出的可靠性。

接口管理单元7,用于对多个高速串口8进行管理。上述接口管理单元7与RAID阵列逻辑模块1连接,进而控制数据传输的通道。

上述实现过程中,RAID阵列逻辑模块1通过通信接口模块获取外部输入数据并通过多个SATA接口模块3将外部输入数据写入到对应的硬盘4,从而达到数据存储的目的;RAID阵列逻辑模块1通过多个SATA接口模块3从硬盘4中读出数据,并通过通信接口模块将数据输出,从而达到数据读出的目的。RAID阵列逻辑模块1将硬盘4分为多组阵列形式,进而采用RAID阵列技术进行数据的储存,上述SATA IP核独立占用一块FPGA芯片,通过加载本IP核,FPGA芯片即成为具备对多个SATA接口硬盘4进行阵列控制的高性能存储控制器芯片,对外通信典型地采用RapidIO协议、以太网等协议,数据通信以帧为基本单位进行组织,每个数据帧都配有CRC校验字和帧序号,因此对于数据传输错误是完全可检测的。当出现数据通信错误时,通信逻辑将使用重新传输机制对数据重传,直至数据传输正确,从而确保数据写入和读出的可靠性。同时,基于SATA协议,FPGA与每一块硬盘4之间的数据也是基于帧格式进行组织和传输的,每一帧数据同样也配有CRC校验字,因此FPGA与SATA之间的数据传输错误也是完全可检测的,同样地,对于偶发的数据传输错误,FPGA将重新发起读写操作,直至数据传输正确。从而提高速据写入和读出的可靠性。

其中,还包括缓冲管理模块5,RAID阵列逻辑模块1和外部存储芯片6分别与缓冲管理模块5连接;缓冲管理模块5,用于将数据缓冲到外部存储芯片6中。上述缓冲管理模块5可以是内部集成DDR3 SDRAM控制器,上外部存储芯片6可以是DDR3 SDRAM,通过缓冲管理模块5与DDR3 SDRAM连接形成了基于DDR3存储芯片实现2GB数据缓冲池。

上述实现过程中,通过缓冲管理模块5与在外部存储芯片6连接形成缓冲池,一方面能够对外部输入的实时数据流进行缓冲,从而平滑硬盘4阵列的短暂性带宽下滑;另一方面对数据进行纠错性缓存,在数据传输被确认正确之前,数据会被缓存在DDR3 SDRAM中,直至确认传输正确,数据才会被从DDR3中抹去。例如如果写入硬盘4的数据块出现偶发错误,则调用缓冲池中的数据进行再次写入,直至数据写入正确,从而提高了数据存储的准确性。

其中,还包括智能管理模块2,智能管理模块2与RAID阵列逻辑模块1连接,用于对RAID阵列逻辑模块1中的数据流进行监测,并根据监测结果进行调度。上述智能管理模块2可以使用Xilinx的Microblaze处理器实现,智能管理模块2用于对全局逻辑的调度以及监测、文件系统管理等功能。例如数据流调度、指令流处理、错误管理机制、内建文件系统、硬盘4检测、数据恢复、系统监测、工作日志等。

上述实现过程中,通过采用智能管理模块2对全局逻辑的调度以及监测,使得该IP核能够正常运行,从而保证数据存储的稳定性。

其中,SATA控制逻辑单元包括控制接口和数据接口,控制接口,用于与RAID逻辑单元发送和接收指令信息;数据接口,用于传输数据信息。

上述SATA控制逻辑单元可以是SATA控制器,SATA控制器可以采用现有SATA3.0主控制器数字逻辑IP核,该IP核应用于FPGA芯片中,使用FPGA内置的高速串行解串器(GTX或GTH)实现SATA协议物理层,使用FPGA内部通用逻辑资源实现SATA协议的链路层及传输层,每个控制器只需占用约5K个寄存器和50KB存储器资源。该SATA控制器完全遵循相关协议规范(Serial ATA Revision 3.0)设计,其中SATA协议的物理层使用FPGA内部集成的高速串行数据收发控制器实现,完成诸如时钟恢复、逗点检测、8B10B编解码等功能;控制器的链路层和传输层则完全通过FPGA内部的可编程逻辑模块实现,完成诸如数据CRC校验、扰码、协议原语生成与解析,帧组装和解析等功能。为封闭SATA协议的复杂细节、简化用户对IP核的使用,该控制器采用了极其简单的对外接口。外部逻辑只需对最常见的寄存器及FIFO模块进行接口驱动即可实现对硬盘4的读写控制。

其中,控制接口包括寄存器接口和指令FIFO接口,寄存器接口,用于读取运行状态数据;指令FIFO接口,用于写入指令信息。

其中,数据接口包括多个FIFO接口,FIFO接口用于写入数据或读出数据。

上述实现过程中,SATA控制逻辑单元为用户屏蔽复杂的SATA协议,使用户通过简便易用的逻辑接口即可实现对SATA接口硬盘4的快速读写控制。

其中,还包括LVDS总线接口9,LVDS总线接口9与接口管理单元7连接。LVDS总线接口9可扩展为千兆以太网接口,通过LVDS差分总线扩展配套芯片电路实现,从而扩大使用范围。

基于同样的发明构思,本发明还提出一种基于FPGA的SATA IP核的数据存储方法。请参看图2,图2为本发明实施例提供的一种基于FPGA的SATA IP核的数据存储方法流程图,该基于FPGA的SATA IP核的数据存储方法包括以下步骤:

步骤S110:获取读写指令参数信息;通过指令端口由用户发起指令写入。读写指令参数信息可以包括有a)指令类型,例如:绝对扇区控制写入ReqRAWWrite(0x000A2000);b)写入起始地址,例如为0x0100;c)写入容量,例如写入容量为128KB;d)状态反馈帧的写入地址,例如状态反馈帧的写入地址为0x1234-0000。

步骤S120:根据读写指令参数信息提取当前的存储信息并展示给用户;例如,提取当前工作状态、存储空间使用情况并展示给用户。

步骤S130:获取用户输入的启动信号;即数据的写入或是写出信号。

步骤S140:根据启动信号采用预置的基于FPGA的SATA IP核对数据进行读写操作。

上述实现过程中,通过获取读写指令参数信息;然后根据读写指令参数信息提取当前的存储信息并展示给用户;然后获取用户输入的启动信号;最后根据启动信号采用预置的基于FPGA的SATA IP核对数据进行读写操作,由于基于FPGA的SATA IP核进行数据存储具有很高的可靠性,因此采用该方法进行数据读写,可以提高速据读写的可靠性。

综上,本申请实施例提供的一种基于FPGA的SATA IP核及数据存储方法,该基于FPGA的SATA IP核的RAID阵列逻辑模块1通过通信接口模块获取外部输入数据并通过多个SATA接口模块3将外部输入数据写入到对应的硬盘4,从而达到数据存储的目的;RAID阵列逻辑模块1通过多个SATA接口模块3从硬盘4中读出数据,并通过通信接口模块将数据输出,从而达到数据读出的目的。RAID阵列逻辑模块1将硬盘4分为多组阵列形式,进而采用RAID阵列技术进行数据的储存,上述SATA IP核独立占用一块FPGA芯片,通过加载本IP核,FPGA芯片即成为具备对多个SATA接口硬盘4进行阵列控制的高性能存储控制器芯片,对外通信典型地采用RapidIO协议、以太网等协议,数据通信以帧为基本单位进行组织,每个数据帧都配有CRC校验字和帧序号,因此对于数据传输错误是完全可检测的。当出现数据通信错误时,通信逻辑将使用重新传输机制对数据重传,直至数据传输正确,从而确保数据写入和读出的可靠性。同时,基于SATA协议,FPGA与每一块硬盘4之间的数据也是基于帧格式进行组织和传输的,每一帧数据同样也配有CRC校验字,因此FPGA与SATA之间的数据传输错误也是完全可检测的,同样地,对于偶发的数据传输错误,FPGA将重新发起读写操作,直至数据传输正确。从而提高速据写入和读出的可靠性。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于LINUX操作系统的NANDFLASH无文件系统的坏块管理方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!