一种基于fpga的数据解压装置及方法

文档序号:1660257 发布日期:2019-12-27 浏览:5次 >En<

阅读说明:本技术 一种基于fpga的数据解压装置及方法 (Data decompression device and method based on FPGA ) 是由 左佳 赵中瑞 于 2019-09-26 设计创作,主要内容包括:本发明涉及一种基于FPGA的数据解压装置及方法,其中,该数据解压装置包括依次连接的物理层接口模块、TCP/IP模块、分包组包模块、解压模块和输出模块,分包组包模块还直接与输出模块连接,物理层接口模块用于接收网络数据,并对网络数据进行MAC层解析后传输给TCP/IP模块;TCP/IP模块用于对网络数据进行TCP解析,得到应用数据;分包组包模块用于分割组合应用数据,得到ZIP数据包和未压缩数据;解压模块用于对ZIP数据包进行解压,得到解压缩数据;输出模块将解压缩数据和未压缩数据传输给计算机。与现有技术相比,本发明基于FPGA的数据解压可有效代替软件解压方法,减小CPU占用率、降低数据延迟、提高数据吞吐量,实现快速准确解压数据的目的。(The invention relates to a data decompression device and a method based on FPGA, wherein the data decompression device comprises a physical layer interface module, a TCP/IP module, a packet packaging module, a decompression module and an output module which are connected in sequence, the packet packaging module is also directly connected with the output module, and the physical layer interface module is used for receiving network data, analyzing the network data by an MAC layer and transmitting the network data to the TCP/IP module; the TCP/IP module is used for carrying out TCP analysis on the network data to obtain application data; the packet packaging module is used for dividing and combining the application data to obtain a ZIP data packet and uncompressed data; the decompression module is used for decompressing the ZIP data packet to obtain decompressed data; the output module transmits the decompressed data and the uncompressed data to the computer. Compared with the prior art, the data decompression based on the FPGA can effectively replace a software decompression method, reduce the CPU occupancy rate, reduce the data delay, improve the data throughput and realize the purpose of quickly and accurately decompressing the data.)

一种基于FPGA的数据解压装置及方法

技术领域

本发明涉及软件技术领域,尤其是涉及一种基于FPGA的数据解压装置及方法。

背景技术

随着信息科技的飞速发展,计算机网络已经遍布日常生活的各个角落,在使用计算机网络的过程中存在海量需要交互的数据,增加了传输数据和存储数据的要求。通常压缩后的数据会占用比原来数据小很多的存储空间,在传输的过程中也会占用较少的带宽并降低服务器的传输流量,从而进行快速的传输。因此将数据压缩后进行传输或存储、需要使用数据时再对其进行解压缩就变得十分必要。

现有技术大多都是直接采用软件对数据进行解压缩操作的,但软件在对大数据进行解压缩操作时,会占用较大的CPU资源,导致数据吞吐量低、数据解析延迟。若采用硬件方式则可降低CPU因处理解压缩时的资源占用率、提高解压速率。当前FPGA(Field-Programmable Gate Array,现场可编程门阵列)芯片的快速发展使得其容量以及处理数据的速度都有很大的提升,因此能够利用FPGA的硬件功能实现数据快速解压的目的,现有技术中,通常利用Haffman编码重新表示字符,以进行数据压缩,但由于匹配码表存储格式复杂,使得硬件无法实现动态内存分配存储匹配码表,此外,Haffman编码长不超过15,且出现频率高的字符编码短、出现频率低的字符编码长,在硬件实现解码的过程中,会存在无法实现不定数量编码的匹配解码以及循环匹配时间过长的问题,在对匹配解码结果进行状态跳转时,传统采用特权编码的方式,依次对匹配解码结果进行按位操作,这将产生复杂的硬件电路,引发状态跳转条件过多导致的时序问题。

发明内容

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于FPGA的数据解压装置及方法,利用Haffman编码的连续性特点生成匹配码表,结合不定长匹配解码方式和查找表方式,实现快速、高效、准确解码数据的目的。

本发明的目的可以通过以下技术方案来实现:一种基于FPGA的数据解压装置,包括依次连接的物理层接口模块、TCP/IP模块、分包组包模块、解压模块和输出模块,所述分包组包模块还直接与输出模块连接,所述输出模块连接至计算机,所述物理层接口模块用于接收网络数据,并对网络数据进行MAC层解析后传输给TCP/IP模块;

所述TCP/IP模块用于对网络数据进行TCP解析,得到应用数据;

所述分包组包模块用于分割组合应用数据,得到ZIP数据包和未压缩数据;

所述解压模块用于对ZIP数据包进行解压,得到解压缩数据;

所述输出模块将解压缩数据和未压缩数据传输给计算机。

进一步地,所述解压模块包括依次连接的数据包头对齐单元、CCL解码单元、SQ解码单元、不定长匹配解码单元、历史恢复单元和CRC(Cyclic Redundancy Check,循环冗余校验)单元,所述数据包头对齐单元用于提取ZIP数据包的头部特征和压缩类型,以输出对齐的ZIP数据流;

所述CCL解码单元用于提取ZIP数据流的CCL比特位,得到CCL序列,以构建第一huffman树;

所述SQ解码单元根据第一huffman树、第一SQ比特位和第二SQ比特位,构建第二huffman树和第三huffman树;

所述不定长匹配解码单元根据第二huffman树、第三huffman树、LIT比特位和DIST比特位,解码得到字符/长度流和距离流;

所述历史恢复单元用于缓存字符/长度流和距离流,并输出解压缩数据;

所述CRC单元用于提取ZIP数据包的尾部校验码、计算输出解压缩数据的校验码,并判断解压缩数据的准确性。

进一步地,所述历史恢复单元包括历史数据缓存RAM(Random Access Memory,随机存取存储器)和存储距离数值的FIFO(First Input First Output,先进先出)存储器。

进一步地,所述输出模块包括依次连接的DMA(Direct Memory Access,直接内存操作)模块和PCIe接口单元,所述DMA单元将解压缩数据转移到FPGA的快速内存区,所述PCIe接口单元用于实时监测FPGA的解压缩状态,读取文件信息,以及设置解压缩参数。

一种应用基于FPGA的数据解压装置的数据解压方法,包括以下步骤:

S1、物理层接口模块接收网络数据,并对网络数据进行MAC层解析后传输给TCP/IP模块;

S2、TCP/IP模块负责与远程建立TCP连接,通过接收与发送TCP数据,对网络数据进行TCP层解析,得到应用数据;

S3、分包组包模块对应用数据进行分割组合,得到ZIP数据包和未压缩数据,并将ZIP数据包传输给解压模块、将未压缩数据传输给输出模块;

S4、解压模块依次对ZIP数据包进行包头对齐、CCL解码、SQ解码、不定长匹配解码和数据缓存,得到解压缩数据;

S5、解压模块对解压缩数据进行CRC校验,以判断解压缩数据是否准确,若解压缩数据准确,则执行步骤S6,否则返回步骤S4;

S6、输出模块将解压缩数据和未压缩数据转移到FPGA的快速内存区,之后将解压缩数据和未压缩数据分别编码成对应的PCIe协议格式数据,最后将PCIe格式数据传输给计算机。

进一步地,所述步骤S3具体包括以下步骤:

S31、根据数据协议的头部标志和长度指示,分包组包模块从应用数据中识别协议头部标志,得到标志位置,以此进行分割,剥去数据头部,并得到包长度、包协议类型和压缩标志位;

S32、过滤非指定类型的包,对比包长度和实际长度,以判断是否丢包,若包长度小于实际长度,则判断为存在丢包,需要返回步骤S31,否则执行步骤S33;

S33、根据压缩标志位,判断应用数据是否为未压缩数据,若存在压缩标志位,则输出ZIP数据包并传输给解压模块,否则判断该应用数据为未压缩数据,将该未压缩数据传输给输出模块。

进一步地,所述步骤S4具体包括以下步骤:

S41、提取ZIP数据包的头部特征和压缩类型,得到文件名、文件长度和文件时间戳信息,以输出对齐的ZIP数据流;

S42、提取ZIP数据包的CCL比特位,通过置换和3bit解码,得到CCL序列,以构建第一huffman树,即第一匹配码表,其中,huffman树包含三张子匹配码表,分别为每层叶子数量表、每层首叶子对应原码地址表和原码表;

S43、根据SQ1比特位和SQ2比特位,结合第一匹配码表,解码得到SQ1序列和SQ2序列;

S44、通过游程解码,将SQ1序列和SQ2序列分别解码为CL1序列和CL2序列,以分别构建第二huffman树和第三huffman树,即得到第二匹配码表及其三张子匹配码表、第三匹配码表及其三张子匹配码表;

S45、根据LIT比特位,结合第二匹配码表,解码得到字符/长度流,之后根据DIST比特位,结合第三匹配码表,解码得到距离流;

S46、对字符/长度流和距离流进行数据缓存,得到解压缩数据。

进一步地,所述步骤S45具体包括以下步骤:

S451、采用15个特征匹配窗口,结合第二匹配码表,对ZIP数据流的LIT比特位进行匹配,得到15个LIT比特位匹配解码结果;

S452、通过查找表的方式,同时对15个LIT比特位匹配解码结果进行状态跳转,得到字符及其对应的长度值,即为字符/长度流;

S453、采用15个特征匹配窗口,结合第三匹配码表,对ZIP数据流的DIST比特位进行匹配,得到15个DIST比特位匹配解码结构;

S454、通过查找表的方式,同时对15个DIST比特位匹配解码结果进行状态跳转,得到距离值,即为距离流。

进一步地,所述步骤S5具体包括以下步骤:

S51、提取ZIP数据包的尾部校验码;

S52、计算解压缩数据的校验码;

S53、判断ZIP数据包的尾部校验码与解压缩数据的校验码是否相同,若相同,则执行步骤S6,否则返回步骤S4开始下一个数据包的解压过程。

与现有技术相比,本发明具有以下优点:

一、本发明提出的基于FPGA的数据解压装置,使用FPGA加速方案代替软件数据解析方案,构造一个低延迟、高吞吐量全硬件ZIP解压缩方案,结合解压模块的匹配解码以及解压缩数据校验过程,能够减小解压时CPU的资源占用率,降低数据接收延迟,提高数据协议的解析速率和解析准确性。

二、本发明利用huffman树每层编码连续性,构建huffman树时只需存储首个叶子节点及每层叶子个数,通过简化匹配码表的存储格式,解决了硬件无法实现动态内存分配存储匹配码表的问题。

三、本发明针对huffman编码长不超过15以及编码不定长的特点,采用15个特征匹配窗口同时进行数据匹配对比,解决了软件算法匹配过程中循环匹配时间长和硬件无法实现不定数量编码匹配的问题,有效提高了匹配解码速度。

四、本发明利用查找表代替特权编码,以对匹配解码结果进行状态跳转,能够同时对多个匹配解码结果进行状态跳转,避免了解码后状态跳转判断条件过多而引发的时序问题。

附图说明

图1为本发明的装置结构示意图;

图2为本发明装置中解压模块的结构示意图;

图3为本发明的方法流程示意图;

图4为实施例中ZIP数据包的数据格式示意图;

图5为实施例中匹配解码的流程示意图;

图中标记说明:1、物理层接口模块,2、TCP/IP模块,3、分包组包模块,4、解压模块,41、数据包头对齐单元,42、CCL解码单元,43、SQ解码单元,44、不定长匹配解码单元,45、历史恢复单元,46、CRC单元,5、输出模块,51、DMA单元,52、PCIe接口单元。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。

如图1所示,一种基于FPGA的数据解压装置,包括依次连接的物理层接口模块1、TCP/IP模块2、分包组包模块3、解压模块4和输出模块5,分包组包模块3还直接与输出模块5连接,输出模块5连接至计算机,其中,输出模块5包括DMA单元和PCIe接口单元,具体的,物理层接口模块1与网络连接,以接收网络数据,并对网络数据进行MAC层解析后传输给TCP/IP模块2;

TCP/IP模块2对网络数据进行TCP解析,得到应用数据;

分包组包模块3则应用数据进行分割组合,得到ZIP数据包和未压缩数据;

解压模块4对ZIP数据包进行解压,得到解压缩数据;

输出模块5将解压缩数据和未压缩数据传输给计算机,其中的DMA单元51将解压缩数据转移到FPGA的快速内存区,PCIe接口单元52实时监测FPGA的解压缩状态,读取文件信息,以及设置解压缩参数。

如图2所示,解压模块4包括依次连接的数据包头对齐单元41、CCL解码单元42、SQ解码单元43、不定长匹配解码单元44、历史恢复单元45和CRC单元46,其中,数据包头对齐单元41用于提取ZIP数据包的头部特征和压缩类型,以输出对齐的ZIP数据流;

CCL解码单元42用于提取ZIP数据流的CCL比特位,得到CCL序列,以构建第一huffman树;

SQ解码单元43根据第一huffman树、第一SQ比特位和第二SQ比特位,构建第二huffman树和第三huffman树;

不定长匹配解码单元44根据第二huffman树、第三huffman树、LIT比特位和DIST比特位,解码得到字符/长度流和距离流;

历史恢复单元45用于缓存字符/长度流和距离流,并输出解压缩数据;

CRC单元46用于提取ZIP数据包的尾部校验码、计算输出解压缩数据的校验码,并判断解压缩数据的准确性。

应用上述数据解压装置的解压方法,如图3所示,包括以下步骤:

S1、物理层接口模块接收网络数据,并对网络数据进行MAC层解析后传输给TCP/IP模块;

S2、TCP/IP模块负责与远程建立TCP连接,通过接收与发送TCP数据,对网络数据进行TCP层解析,得到应用数据;

S3、分包组包模块对应用数据进行分割组合,得到ZIP数据包和未压缩数据,并将ZIP数据包传输给解压模块、将未压缩数据传输给输出模块;

S4、解压模块依次对ZIP数据包进行包头对齐、CCL解码、SQ解码、不定长匹配解码和数据缓存,得到解压缩数据;

S5、解压模块对解压缩数据进行CRC校验,以判断解压缩数据是否准确,若解压缩数据准确,则执行步骤S6,否则返回步骤S4;

S6、输出模块将解压缩数据和未压缩数据转移到FPGA的快速内存区,之后将解压缩数据和未压缩数据分别编码成对应的PCIe协议格式数据,最后将PCIe格式数据传输给计算机。

本实施例是对网络金融数据进行解压缩,金融数据大小为64bit,具体工作过程为:

(1)FPGA加速板卡利用物理层接口模块采集万兆以太网络数据,经过低延迟TCP/IP模块,得到TCP Payload部分;TCP/IP模块负责与远程建立TCP连接,接收与发送TCP数据,输出应用数据。

(2)根据金融协议头部标志和长度指示分割组合TCP数据包,经过分包组包模块输出完整的ZIP数据包,ZIP数据包的数据格式如图4所示:

分包组包模块每个时钟从8个字节数据中识别出协议头部标志,并得到标志位置P0,根据协议规定,P0+4位置开始四字节为包长度,P0+12位置开始四字节为包协议类型,P0+32位置开始四字节为压缩标志位;过滤非指定类型的包,根据包长度和实际长度判定是否存在丢包,以及丢包的数量,若存在丢包,则会触发解压模块的复位;根据压缩标志位,如果不存在压缩标志位,则输出未压缩数据、通过DMA单元和PCIe接口单元直接上发到计算机,如果存在压缩标志位,则输出ZIP数据包给解压模块。

(3)数据包头对齐单元先提取头部特征和压缩类型,得到文件名,文件长度、文件时间戳等信息,然后输出对齐的64bit的ZIP数据流。

(4)CCL解码单元提取CCL比特位,经过置换和3bit解码得到CCL序列,然后构建一棵CCL Huffman树,得到匹配码表C1:

利用Huffman树每层编码连续性,存储Huffman树只需存储首个叶子节点和每层的叶子个数,同时构建出Huffman树的三张子匹配码表(每层叶子数量表、每层首叶子对应原码地址表和原码表)。

(5)SQ解码单元根据SQ1比特位、SQ2比特位,结合匹配码表C1解码得到SQ1序列和SQ2序列。

(6)经过游程解码将SQ1序列和SQ2序列解码为CL1序列和CL2序列,然后构建两棵CL Huffman树C2、C3以及C2、C3各自对应的三张子匹配码表。

(7)不定长匹配解码单元根据LIT比特位和DIST比特位,结合匹配码表C2、C3解码得到literal/length流和distance流:

使用15个特征匹配窗口,对待匹配数据流按Huffamn树C2进行匹配,窗口大小分别为1到15,将带匹配窗口与匹配窗口做差值得到差值D2,如果差值D2小于当前窗口长度L所对应的Huffman树的第D2层叶子节点数量Count,则认为当前数据匹配,找到所匹配的对应的原码R;按压缩编码原理,不存在一种以上的匹配状态,故以查找表代替特权跳转状态;如果R<256,则表示解出为字符,直接输出;如果R=256,表示为终止符,即解压结束;如果R>256,则需通过查找表找到所对应的长度值,然后进一步的对之后的位流按Huffman树C3进行匹配得到距离值。

上述步骤(4)~步骤(7)的流程示意图如图5所示。

(8)历史恢复单元重建历史数据缓存同时输出原始数据流,历史恢复单元包含一个32K的历史数据缓存RAM和一个存储距离数值的FIFO:

历史缓存RAM为一个真双口Block RAM,端口A用于写入步骤(7)输出的数据,如果数据为字符,则依次进入RAM中,如果码流为长度L,则需要跳过L位存入之后的字符;端口B依次输出RAM中存储的字符,如果字符<256则输出,如果大于256,则读取FIFO中距离值D,到当前地址A0-D的位置读取长度为L的数据段,读出的同时,通过端口B写入到RAM中,此时同样的读到字符256表示结束。

(9)CRC单元分别提取ZIP数据包尾部校验码和解压缩数据的校验码,并对这两个校验码对比,只有两个校验码相同时,才判断解压缩数据为正确的,执行步骤(10),否则返回步骤(3)对下一个数据包开始解压过程;

(10)DMA单元和PCIe接口单元负责将解压缩数据发送到计算机上。

综上所述,本发明提出的基于FPGA的数据解压装置,实现效果如下:

1、基于FPGA的金融数据解压缩可有效代替软件软件,卸载服务器CPU负荷、大大降低数据延迟、提高数据吞吐量;

2、解压缩中出现异常以及校验错误均可自动恢复状态,不影响下一次解压缩;

3、可通过PCIe接口实时读取解压缩状态,文件名称、属性,硬件解压缩可应用于多种大数据场合。

此外,本发明提出的基于FPGA的数据解压方法,首先利用Huffman编码连续性特点,只存储首个叶子节点和节点个数,解决了硬件上无法实现动态内存分配存储匹配码表问题,简化码表存储格式;其次利用了算法上Huffaman编码长不超过15这个特征,简化匹配解码模块,仅利用15个匹配窗口,一个周期内即可得到解码结果,解决了软件算法匹配过程中多个循环匹配时间过长以及硬件上无法实现不定数量编码匹配的问题;最后使用查找表代替特权编码,解决得到解码后状态跳转判断条件过多导致的时序问题。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据传输控制方法及相关设备、存储介质

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类