CN110620637B - 一种基于fpga的数据解压装置及方法 - Google Patents
一种基于fpga的数据解压装置及方法 Download PDFInfo
- Publication number
- CN110620637B CN110620637B CN201910917488.7A CN201910917488A CN110620637B CN 110620637 B CN110620637 B CN 110620637B CN 201910917488 A CN201910917488 A CN 201910917488A CN 110620637 B CN110620637 B CN 110620637B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- packet
- matching
- zip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0015—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy
- H04L1/0016—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy involving special memory structures, e.g. look-up tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种基于FPGA的数据解压装置及方法,其中,该数据解压装置包括依次连接的物理层接口模块、TCP/IP模块、分包组包模块、解压模块和输出模块,分包组包模块还直接与输出模块连接,物理层接口模块用于接收网络数据,并对网络数据进行MAC层解析后传输给TCP/IP模块;TCP/IP模块用于对网络数据进行TCP解析,得到应用数据;分包组包模块用于分割组合应用数据,得到ZIP数据包和未压缩数据;解压模块用于对ZIP数据包进行解压,得到解压缩数据;输出模块将解压缩数据和未压缩数据传输给计算机。与现有技术相比,本发明基于FPGA的数据解压可有效代替软件解压方法,减小CPU占用率、降低数据延迟、提高数据吞吐量,实现快速准确解压数据的目的。
Description
技术领域
本发明涉及软件技术领域,尤其是涉及一种基于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个匹配窗口,一个周期内即可得到解码结果,解决了软件算法匹配过程中多个循环匹配时间过长以及硬件上无法实现不定数量编码匹配的问题;最后使用查找表代替特权编码,解决得到解码后状态跳转判断条件过多导致的时序问题。
Claims (5)
1.一种基于FPGA的数据解压方法,应用于数据解压装置,其特征在于,所述数据解压装置包括依次连接的物理层接口模块、TCP/IP模块、分包组包模块、解压模块和输出模块,所述分包组包模块还直接与输出模块连接,所述输出模块连接至计算机,所述物理层接口模块用于接收网络数据,并对网络数据进行MAC层解析后传输给TCP/IP模块;
所述TCP/IP模块用于对网络数据进行TCP解析,得到应用数据;
所述分包组包模块用于分割组合应用数据,得到ZIP数据包和未压缩数据;
所述解压模块用于对ZIP数据包进行解压,得到解压缩数据;
所述输出模块将解压缩数据和未压缩数据传输给计算机;
所述数据解压方法包括以下步骤:
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比特位匹配解码结果进行状态跳转,得到距离值,即为距离流。
2.根据权利要求1所述的一种基于FPGA的数据解压方法,其特征在于,所述解压模块包括依次连接的数据包头对齐单元、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数据包的尾部校验码、计算输出解压缩数据的校验码,并判断解压缩数据的准确性。
3.根据权利要求2所述的一种基于FPGA的数据解压方法,其特征在于,所述历史恢复单元包括历史数据缓存RAM(Random Access Memory,随机存取存储器)和存储距离数值的FIFO(First Input First Output,先进先出)存储器。
4.根据权利要求1所述的一种基于FPGA的数据解压方法,其特征在于,所述输出模块包括依次连接的DMA(Direct Memory Access,直接内存操作)模块和PCIe接口单元,所述DMA模块将解压缩数据转移到FPGA的快速内存区,所述PCIe接口单元用于实时监测FPGA的解压缩状态,读取文件信息,以及设置解压缩参数。
5.根据权利要求1所述的一种基于FPGA的数据解压方法,其特征在于,所述步骤S5具体包括以下步骤:
S51、提取ZIP数据包的尾部校验码;
S52、计算解压缩数据的校验码;
S53、判断ZIP数据包的尾部校验码与解压缩数据的校验码是否相同,若相同,则执行步骤S6,否则返回步骤S4开始下一个数据包的解压过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910917488.7A CN110620637B (zh) | 2019-09-26 | 2019-09-26 | 一种基于fpga的数据解压装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910917488.7A CN110620637B (zh) | 2019-09-26 | 2019-09-26 | 一种基于fpga的数据解压装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110620637A CN110620637A (zh) | 2019-12-27 |
CN110620637B true CN110620637B (zh) | 2023-02-03 |
Family
ID=68924243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910917488.7A Active CN110620637B (zh) | 2019-09-26 | 2019-09-26 | 一种基于fpga的数据解压装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110620637B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111262657B (zh) * | 2020-01-16 | 2022-05-20 | 重庆大学 | 通过gatt和数据分割重组来适配的通信方法及系统 |
CN111711968B (zh) * | 2020-06-10 | 2022-02-01 | 京信网络系统股份有限公司 | 报文处理方法、装置、通信设备和通信系统 |
CN112448905B (zh) * | 2020-11-12 | 2021-08-31 | 四川九洲电器集团有限责任公司 | 一种msk数字基带信号的解调系统及解调方法 |
CN112667583B (zh) * | 2020-12-30 | 2022-11-04 | 四川效率源信息安全技术股份有限公司 | 一种恢复被损坏的zip压缩文件的方法 |
CN118295624B (zh) * | 2024-06-05 | 2024-08-20 | 南京大学 | 一种基于多周期并行不定长序列数据的传输系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0582907A2 (en) * | 1992-08-10 | 1994-02-16 | Stac Electronics, Inc. | Data compression apparatus and method using matching string searching and Huffman encoding |
JP2005198022A (ja) * | 2004-01-07 | 2005-07-21 | Sharp Corp | 画像処理装置、及びそれを備える画像形成装置 |
WO2009005758A2 (en) * | 2007-06-29 | 2009-01-08 | Rmi Corporation | System and method for compression processing within a compression engine |
CN102062855A (zh) * | 2010-11-03 | 2011-05-18 | 安徽四创电子股份有限公司 | 基于游程差值编码的雷达回波压缩/解压算法 |
CN102769512A (zh) * | 2012-07-11 | 2012-11-07 | 中兴通讯股份有限公司 | 一种通用成帧规程帧定界的实现方法和装置 |
CN102970043A (zh) * | 2012-11-14 | 2013-03-13 | 无锡芯响电子科技有限公司 | 一种基于gzip的压缩硬件系统及其加速方法 |
CN107071451A (zh) * | 2017-05-14 | 2017-08-18 | 华中科技大学 | 一种基于可变输入数据流的大动态实时解压缩系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6819271B2 (en) * | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
CN102244518B (zh) * | 2010-05-10 | 2016-01-20 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的系统及方法 |
CN108933599B (zh) * | 2018-08-17 | 2021-10-29 | 郑州云海信息技术有限公司 | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 |
-
2019
- 2019-09-26 CN CN201910917488.7A patent/CN110620637B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0582907A2 (en) * | 1992-08-10 | 1994-02-16 | Stac Electronics, Inc. | Data compression apparatus and method using matching string searching and Huffman encoding |
JP2005198022A (ja) * | 2004-01-07 | 2005-07-21 | Sharp Corp | 画像処理装置、及びそれを備える画像形成装置 |
WO2009005758A2 (en) * | 2007-06-29 | 2009-01-08 | Rmi Corporation | System and method for compression processing within a compression engine |
CN102062855A (zh) * | 2010-11-03 | 2011-05-18 | 安徽四创电子股份有限公司 | 基于游程差值编码的雷达回波压缩/解压算法 |
CN102769512A (zh) * | 2012-07-11 | 2012-11-07 | 中兴通讯股份有限公司 | 一种通用成帧规程帧定界的实现方法和装置 |
CN102970043A (zh) * | 2012-11-14 | 2013-03-13 | 无锡芯响电子科技有限公司 | 一种基于gzip的压缩硬件系统及其加速方法 |
CN107071451A (zh) * | 2017-05-14 | 2017-08-18 | 华中科技大学 | 一种基于可变输入数据流的大动态实时解压缩系统 |
Non-Patent Citations (2)
Title |
---|
基于FPGA的miniLZO解压缩算法实现;邓计才等;《现代电子技术》;20181112(第22期);全文 * |
面向IEEE COMTRADE格式的海量录波数据并行压缩/解压算法;桂勋;《电力自动化设备》;20130510(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110620637A (zh) | 2019-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110620637B (zh) | 一种基于fpga的数据解压装置及方法 | |
US7737870B1 (en) | Bit-stream huffman coding for data compression | |
EP1271886B1 (en) | Packet header compression | |
US20110058474A1 (en) | Congestion-adaptive compression | |
US10817460B2 (en) | RDMA data sending and receiving methods, electronic device, and readable storage medium | |
US8817821B2 (en) | Method and device for user datagram protocol packet compression and decompression | |
US10320520B2 (en) | Communication device, system and method | |
US10015285B2 (en) | System and method for multi-stream compression and decompression | |
US7640362B2 (en) | Adaptive compression in an edge router | |
CN100591053C (zh) | 一种报文传输方法及网络节点装置 | |
US7564861B1 (en) | Systems and methods for compressing data | |
CN114362885B (zh) | 物联网数据传输方法、通信系统、设备和介质 | |
CN112335203B (zh) | 处理局域网诊断数据 | |
US11620250B2 (en) | Systems and methods for data transfer over a shared interface | |
CN113329442B (zh) | 一种通用的多链路载荷压缩与解压缩方法和系统 | |
CN113612516A (zh) | 一种卫星通信数据包的压缩测试方法、系统及设备 | |
US20040165542A1 (en) | Packet transmitter and packet transmitter method | |
CN116684595A (zh) | 一种超低时延的图像编码系统、方法、装置及存储介质 | |
CN102638391B (zh) | 一种帧中继压缩报文传输的方法和设备 | |
CN105407351B (zh) | 一种从实时传输协议数据包中重建编码方式的方法和装置 | |
CN112017049A (zh) | 一种证券行情转发系统和方法 | |
CN112732810A (zh) | 数据发送系统及方法、装置、存储介质、电子装置 | |
GB2587427A (en) | Processing local area network diagnostic data | |
US11979477B2 (en) | Processing local area network diagnostic data | |
CN103746930B (zh) | 一种窄带串行链路tcp报文头部压缩的改进方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |