CN112713899B - Fpga码流数据的压缩方法、装置及存储介质 - Google Patents
Fpga码流数据的压缩方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112713899B CN112713899B CN202011505981.7A CN202011505981A CN112713899B CN 112713899 B CN112713899 B CN 112713899B CN 202011505981 A CN202011505981 A CN 202011505981A CN 112713899 B CN112713899 B CN 112713899B
- Authority
- CN
- China
- Prior art keywords
- data
- code stream
- compression
- reference value
- stream data
- 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
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种FPGA码流数据的压缩方法、装置及存储介质。所述压缩方法中,对待压缩的码流数据进行分析,评估是否存在未被应用的数据并采取相应的处理,得到待压缩处理的可统一压缩码流或可压缩数据块,所述可统一压缩码流或可压缩数据块具有相应的压缩参考值,然后选出被压缩参考值替换的字符串,利用所述压缩参考值替换对应的字符串,实现对码流数据的压缩。所述压缩方法基于当前待压缩的码流数据获得压缩参考值,利用该压缩参考值对码流数据中的字符串进行替换,可以在确保数据正确性的基础上实现对码流数据的动态压缩,减小码流数据的大小,降低所述码流数据占用的存储空间,缩短数据传输时间,有助于提高FPGA的配置速度。
Description
技术领域
本发明涉及FPGA应用领域,尤其涉及一种FPGA码流数据的压缩方法、装置及存储介质。
背景技术
FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)目前已在电子系统设计中广泛应用。FPGA使用时依赖于外部写入的码流数据进行配置。FPGA的码流数据是由用户设计,经过综合、布局和布线等流程,根据FPGA码流配置库产生的一种数据流。通过将码流数据下载到对应的FPGA芯片中,可以实现特定的功能。
随着FPGA的资源及规模的不断扩大,FPGA写入的码流数据信息量不断增大,相应的,对用来存储码流数据的存储器空间的需求也在增大,而且,码流数据越大,从外部传输到FPGA芯片所消耗的时间越长,导致FPGA的配置时间很长。
发明内容
为了在写入FPGA之前对码流数据进行压缩处理,减小FPGA码流数据所占的空间大小,缩短FPGA的配置时间,本发明提供一种FPGA码流数据的压缩方法。另外提供一种FPGA码流数据压缩装置以及一种计算机可读存储介质。
一方面,本发明提供一种FPGA码流数据的压缩方法,包括如下步骤:
获取待压缩的码流数据;
对所述码流数据进行分析,若存在未被应用的数据,则所述码流数据为可统一压缩码流,选取至少一个未被应用的数据作为压缩参考值,若无,则将所述码流数据分割成至少两个不完全相同的数据块,使得至少部分所述数据块为可压缩数据块,选择仅在所述可压缩数据块以外的数据块中应用的至少一个数据作为所述可压缩数据块采用的压缩参考值;
从所述可统一压缩码流或者所述可压缩数据块中选出至少一个字符串与所述压缩参考值对应;以及,
利用所述压缩参考值替换对应的所述字符串,得到压缩后的码流数据。
可选的,在利用所述压缩参考值替换对应的所述字符串之前,所述压缩方法还包括:
计算所述码流数据的压缩比;
将所述压缩比与压缩比设定值进行比较,当所述压缩比小于等于所述压缩比设定值时,利用所述压缩参考值替换对应的字符串,当所述压缩比大于所述压缩比设定值时,重新获取所述压缩参考值和/或重新获取与所述压缩参考值对应的字符串,并计算压缩比,直到所述压缩比不超过所述压缩比设定值。
可选的,重新获取所述压缩参考值的方法包括:改变所述码流数据的分割状态、调整所述压缩参考值的取值或数量、或者调整分割出的各个所述数据块的大小。
可选的,重新获取与所述压缩参考值对应的所述字符串的方法包括:重新选择与所述压缩参考值对应的所述字符串,或者调整所述压缩参考值和所述字符串的对应关系。
可选的,与所述压缩参考值对应的所述字符串中的字符均为0或者均为1。
可选的,所述可统一压缩码流或所述可压缩数据块采用的压缩参考值为多个,且各个所述压缩参考值分别用来替换不同的字符串。
一方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令被处理器执行时,执行上述压缩方法。
一方面,本发明提供一种FPGA码流数据压缩装置,包括码流输入模块、数据分析模块、数据检测模块以及数据压缩模块;其中,所述码流输入模块配置为获取待压缩的码流数据;所述数据分析模块配置为对所述码流数据进行分析,若存在未被应用的数据,则所述码流数据为可统一压缩码流,并选取至少一个未被应用的数据作为所述可统一压缩码流采用的压缩参考值,若无,则将所述码流数据分割成至少两个不完全相同的数据块,使得至少部分所述数据块为可压缩数据块,选择仅在所述可压缩数据块以外的数据块中应用的至少一个数据作为所述可压缩数据块采用的压缩参考值;所述数据检测模块配置为从所述可统一压缩码流或者所述可压缩数据块中选出至少一个字符串与所述压缩参考值对应;所述数据压缩模块配置为利用所述压缩参考值替换对应的所述字符串,得到压缩后的码流数据。
可选的,所述码流输入模块包括解析单元,所述解析单元配置为对所述码流数据的功能配置状态进行解析,以获得所述码流数据的功能配置信息。
可选的,所述FPGA码流数据压缩装置还包括压缩数据存储模块,所述压缩数据存储模块配置为将所述压缩参考值、各个所述数据块的起始地址和所述字符串中的至少一种信息添加入所述码流数据的功能配置状态中。
本发明提供的FPGA码流数据的压缩方法,在获取待压缩的码流数据后,对待压缩的码流数据进行分析,通过考察所述码流数据中是否具有未被应用的数据并采取相应的处理,得到待压缩处理的可统一压缩码流或可压缩数据块,所述可统一压缩码流或可压缩数据块具有相应的压缩参考值,然后选出计划被压缩参考值替换的字符串,并利用所述压缩参考值替换对应的字符串,实现对码流数据的压缩处理。所述压缩方法基于当前待压缩的码流数据获得压缩参考值,利用该压缩参考值对码流数据中的字符串进行替换,可以在确保数据正确性的基础上实现对码流数据的动态压缩,减小码流数据的大小,降低所述码流数据占用的存储空间,缩短数据传输时间,有助于提高FPGA的配置速度。
本发明提供的FPGA码流数据压缩装置和计算机可读存储介质与本发明提供的压缩方法具有相同或类似的优点。
附图说明
图1是本发明实施例的FPGA码流数据的压缩方法的步骤示意图。
图2是采用本发明一实施例FPGA码流数据的压缩方法进行压缩处理的流程示意图。
图3是本发明实施例的FPGA码流数据压缩装置的模块示意图。
具体实施方式
以下结合附图和具体实施例对本发明的FPGA码流数据的压缩方法、装置及存储介质作进一步详细说明。根据下面的说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
为了降低写入FPGA前后码流数据占用的存储空间,缩短码流数据传输到(即写入)FPGA芯片消耗的时间,提高FPGA的配置速度,本发明实施例涉及一种FPGA码流数据的压缩方法,用于在写入之前对配置FPGA的码流数据进行压缩处理。所述码流数据是由用户设计的个性化码流数据,并且经过了综合、布局、布线等流程,根据FPGA码流配置库处理获得。
图1是本发明实施例的FPGA码流数据的压缩方法的步骤示意图。参见图1,本发明实施例的FPGA码流数据的压缩方法包括以下步骤:
步骤S1:获取待压缩的码流数据;
步骤S2:对所述码流数据进行分析,若存在未被应用的数据,则所述码流数据为可统一压缩码流,选取至少一个未被应用的数据作为压缩参考值,若无,将所述码流数据分割成至少两个不完全相同的数据块,使得至少部分所述数据块为可压缩数据块,选择仅在所述可压缩数据块以外的数据块中应用的至少一个数据作为所述可压缩数据块采用的压缩参考值;
步骤S3:从所述可统一压缩码流或者所述可压缩数据块中选出至少一个字符串与所述压缩参考值对应;
步骤S4:利用所述压缩参考值替换对应的所述字符串,得到压缩后的码流数据。
图2是采用本发明一实施例的FPGA码流数据的压缩方法进行压缩处理的流程示意图。以下结合图2对图1所示的压缩方法作详细的说明。
首先,在步骤S1中,获取待压缩的码流数据。具体的,步骤S1可以从FPGA外部的码流存储器中读取压缩前的码流数据。对于压缩前的码流数据,其不仅包含用户设计产生的芯片各个位的配置状态,还包含用户对各功能选项的配置状态(或配置信息),所述功能选项或功能配置状态通常设置在码流数据的头部和/或尾部,具体比如包括是否压缩、是否加密、是否进行CRC校验(循环冗余校验)等。本压缩方法后续形成的有关压缩功能的配置也可以添加入码流数据的功能配置状态中。对于具体的一组码流数据来说,用户可以事先将是否需要进行压缩的信息写入所述码流数据的功能配置状态中。从而,在步骤S1中,为了获取待压缩的码流数据,可以在读取码流数据时,从码流数据的功能配置状态解析出用户设置的是否进行压缩的配置状态,根据该配置状态判断是否需要对当前的码流数据进行压缩处理。本实施例以下就需要进行压缩处理的情况进行说明,为此,从码流数据中,可以获得待压缩的码流数据。
接着,执行步骤S2,对待压缩的码流数据进行分析,目的是提取本实施例的压缩方法要用到的压缩参考值。
具体的,步骤S2中,首先判断所述码流数据中是否具有未被应用的数据,此处“未被应用的数据”是指码流数据或码流数据块中并未出现的数值,如某一码流数据块中未出现数据值0x16,则对于该码流数据块来说,0x16为未被应用的数据。本实施例采用码流数据或者码流数据块中未出现的数据用来作为压缩参考值,进行数据压缩。获得码流数据中未被应用的数据可采用如下方法:遍历所述码流数据,根据设定宽度统计不同数值的使用次数,使用次数为0的即为未被应用的数据,如0x00~0xFF之间,统计各个数值出现的次数即可获得未被应用的数值。
步骤2中,如果所述码流数据中具有未被应用的数据,为了与不具有未被应用的数据的情况区分,将具有未被应用的数据的码流数据称为可统一压缩码流。对于可统一压缩码流,选取至少一个未被应用的数据作为所述可统一压缩码流采用的压缩参考值,所述压缩参考值用于对该可统一压缩码流进行压缩。
在某些情况下,所述码流数据较为庞大,可能整体分析后,未能找出未被应用的数据,说明该码流数据无法进行统一的无损压缩处理,这种情况下,则可以对所述码流数据进行分割,得到两个以上的数据块,再对各个数据块进行分析,这些数据块不完全相同,存在仅被部分数据块应用而部分数据块没有应用的数据,则这部分数据可以作为没有应用它的数据块的压缩参考值,简便起见,这些不包含压缩参考值的数据块称为可压缩数据块。举例来说,码流数据整体上没有未被使用的数据,但数值124仅被使用一次,经过分析,通过对码流数据进行分块处理,将存在数值124的一段数据作为一个数据块,该数据块相对于数值124为不可压缩数据块,而其它数据块不含数值124,则数值124对于所述其它数据块为未被应用的数据,这部分其它数据块能够将数值124作为压缩参考值,属于可压缩数据块。但是否能够压缩并不是固定的,对于包含数值124的数据块,虽然对于数值124为不可压缩的,但是其可以采用相应的未使用的数值作为压缩参考值,则也可以转换为可压缩数据块。例如两个数据块均包括对方没有应用的数据,则两个数据块均可利用仅在另一数据块应用的数据作为压缩参考值,则两个数据块都是可压缩数据块,且采用的压缩参考值不同。
可以采用已知的数据流分割方法对所述码流数据进行分割,在数据块的大小满足设置值(数据块的设置值可由用户在软件中设置)的情况下,通过分割,使得到至少一个可压缩数据块。数据块分割方式可以不止一种,各个数据块的大小可以相同,也可以不同。另外,选择哪些数据作为压缩参考值以及确定压缩参考值的数量,可以根据能够获得的压缩比(压缩后的码流数据大小与压缩前的码流数据大小的比值)以及处理时间等方面权衡分析,使得压缩参考值满足要求,优选的,为了便于获得可压缩数据块,以及最大化地利用压缩参考值对数据块进行压缩,在分块情况下,可以选择被应用次数最少的数据作为未应用它的数据块对应的压缩参考值,当同一数据块能采用的压缩参考值不止一个时,可选择码流数据中应用次数较少的相应数量的数据作为压缩参考值。另外,所述可统一压缩码流或所述可压缩数据块的压缩参考值为多个,目的是充分利用未被应用的数据进行压缩操作,降低压缩比。
经过步骤S2,对于步骤S1获取的待压缩的码流数据,可以得到一个或两个以上的压缩参考值。步骤S1得到的压缩参考值可以作为初步的压缩参考值,在计算压缩比之后可以更换压缩参考值,若所述压缩参考值在初步选择时已通过分析比较为最佳选择,或者是唯一选择,则所述压缩参考值为最终压缩操作采用的压缩参考值。所述压缩参考值、各个数据块(若进行了分割)的起始地址及地址长度可以被写入所述码流数据的功能配置信息中,用来在写入FPGA后为解压缩提供信息。
接着,执行步骤S3,在步骤S2的基础上,检测所述可统一压缩码流或者所述可压缩数据块,从所述可统一压缩码流或者所述可压缩数据块中选出至少一个字符串,所述字符串与所在的可统一压缩码流或者可压缩数据块的压缩参考值对应。
所述压缩参考值用来替换对应的字符串,从而将所述可统一压缩码流或者所述可压缩数据块的存储空间缩小,实现压缩,因而,所述字符串的存储空间较对应的压缩参考值大。具体的,与压缩参考值对应的字符串可以选择包括连续字符的字符串,以方便记录以及便于后续写入FPGA后进行无损解压。所述压缩参考值例如为1个字符,则包括两个以上字符的字符串的存储空间大于对应的压缩参考值。
举例来说,待压缩的码流数据为可统一压缩码流,从中选择出三个不同的压缩参考值,分别为第一压缩参考值、第二压缩参考值及第三压缩参考值,然后,在步骤S3中,从所述可统一压缩码流中选择连续8字节为0的字符串与第一压缩参考值对应,选择连续4字节为0的字符串与第二压缩参考值对应,选择连续2字节为0的字符串与第三压缩参考值对应。所述可统一压缩码流中可包括不止一个与同一压缩参考值对应的字符串。
对于可压缩数据块及其采用的压缩参考值,步骤S3中,可以通过对各个所述可压缩数据块进行检测,选择出与相应可压缩数据块采用的压缩参考值对应的字符串。各个所述可压缩数据块的块信息不同,而采用的压缩参考值可以相同或不同。
一个以上的所述字符串和一个以上的压缩参考值的对应关系、该对应关系属于可统一压缩码流还是属于可压缩数据块,这些信息可以被写入所述码流数据或者可压缩数据块的功能配置信息中,以便于写入FPGA进行解压时参照。
接着,执行步骤S4,利用所述压缩参考值替换对应的字符串,并得到压缩后的码流数据。
仍以上述选取第一至第三压缩参考值的例子说明。在步骤S3选定了与第一至第三压缩参考值对应的字符串后,步骤S4中,利用第一压缩参考值替换所述可统一压缩码流中的全部连续8字节为0的字符串,利用第二压缩参考值替换所述可统一压缩码流中的全部连续4字节为0的字符串,利用第三压缩参考值替换所述可统一压缩码流中的全部连续2字节为0的字符串。在替换之后,所述可统一压缩码流的字符数量减少,即被压缩,压缩后的所述可统一压缩码流的存储空间降低,有助于提高传输速率。与所述压缩参考值对应的所述字符串中的字符均为0或者均为1,有助于实现无损解压。
分块压缩处理时,可压缩数据块通过该数据块采用的压缩参考值替换掉该数据块中对应的字符串后,可将可压缩数据的信息以及对应的替换信息写入到该数据块的功能配置状态,以便于写入FPGA进行解压时使用。经过替换,无论对于单个可压缩数据块而言还是从全部数据块整体来看,存储空间均得到了降低,有助于提高传输速率。
可选实施方式中,在执行步骤S4之前,即在利用所述压缩参考值替换对应的所述字符串之前,所述压缩方法还包括计算压缩比并判断压缩比是否满足要求的步骤,如果不满足,则重新执行步骤S2和步骤S3,目的是尽可能提高压缩程度,缩小压缩码流的存储空间,提高传输速度,进而缩短FPGA的配置时间。
具体的,在步骤S4之前,本实施例的压缩方法还可以包括以下步骤:
首先,计算所述码流数据的压缩比;所述压缩比代表所述码流数据在压缩后相对于压缩前存储空间的减少量,本实施例中,由于码流数据通常为二进制序列,则可以将所述码流数据在采用压缩参考值进行替换后字符数量的减少作为压缩比,例如,压缩参考值为1个字符,用其替换字符串后,对应的压缩比=(替换掉的字符串的长度-1)×替换的字符串的个数);
然后,将所述压缩比与压缩比设定值进行比较(所述压缩比设定值可以由用户事先设定);
其中,当所述压缩比大于等于压缩比设定值,则说明满足压缩比要求,则可以直接执行步骤S4,利用所述压缩参考值替换对应的字符串;当所述压缩比小于压缩比设定值时,可以重新执行步骤S2(即对所述码流数据进行分析以重新获得可采用的压缩参考值)和/或步骤S3(即重新获取与所述压缩参考值对应的字符串),并再次计算压缩比,直到所述压缩比不超过压缩比设定值。
当所述压缩比小于压缩比设定值时,重新执行步骤S2的过程与前次执行过程相比,可采取的手段包括改变所述码流数据的分割状态、调整所述压缩参考值的取值或数量、或者调整分割出的各个所述数据块的大小等。
改变所述码流数据的分割状态指的是对前次执行过程采用的可统一压缩码流进行分块处理,在数据块的大小满足设置值的情况下,通过分割,使得能够得到至少一个可压缩数据块,并相应获取该可压缩数据块的压缩参考值,通过分别对各个可压缩数据块进行压缩处理,相对于对码流数据作统一压缩的情况,有助于提高压缩比。
调整所述压缩参考值的取值或数量指的是,对于前次处理为对可统一压缩码流进行统一压缩的情形,对所述可统一压缩码流中的未被应用的数据再次进行分析,选择与前次执行过程不完全相同的未被应用的数据作为所述可统一压缩码流本次采用的压缩参考值(占用空间更小),或者,相对于前次执行过程,增加所述可统一压缩码流采用的压缩参考值的数量,以提高压缩比;对于前次处理即为分割为数据块再压缩的情形,可以选择与前次执行过程不完全相同的数据块分割方式来得到可压缩数据块,对于每个可压缩数据块,配置仅在其它数据块应用的数据作为压缩参考值,以调节压缩比。对于同一可压缩数据块,压缩参考值的取值或数量根据码流分配的实际情况选择调整。
调整各个所述数据块的大小指的是重新对码流数据进行分块处理,则相应的,可压缩数据块对应的压缩参考值也相应发生变化,从而可以改变压缩比。
当所述压缩比小于压缩比设定值时,重新执行步骤S3的过程与前次执行过程相比,可采取的手段包括:重新选择与所述压缩参考值对应的所述字符串即更换计划被同一所述压缩参考值替换的字符串,或者,调整所述压缩参考值和所述字符串的对应关系(如前次执行过程是压缩参考值A和B分别与第一字符串和第二字符串对应,则本次可以调整为压缩参考值A和B分别与第二字符串和第一字符串对应),这样在替换之后压缩比也会发生变化,可以实现对压缩比的调整。
上述为了优化压缩比而采用的手段仅是举例,可以根据具体的码流数据,选择适宜的手段进行分析及调整,以使得压缩比满足要求。
压缩后的码流数据在下载到FPGA内,需要进行解压处理,在解压过程中,通过压缩数据的功能配置信息中的各数据块的地址(若存在分块处理),以及压缩参考值与对应字符串的信息,遍历相应的压缩数据(或压缩数据块),将压缩参考值替换为对应字符串,从而实现数据的解压处理。
本发明实施例描述的FPGA码流数据的压缩方法,基于当前待压缩的码流数据获得压缩参考值,利用该压缩参考值对码流数据中的字符串进行替换,在确保数据正确性的基础上,可以实现对码流数据的快速动态压缩,减小码流数据的大小,降低所述码流数据占用的存储空间,缩短数据传输时间,有助于提高FPGA的配置速度。
本发明实施例还涉及一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令被处理器执行时,能够执行上述实施例所述的FPGA码流数据的压缩方法。所述计算机可读存储介质例如是光盘或者计算机系统中的存储器。
本发明实施例还涉及一种FPGA码流数据压缩装置,用于在写入之前对配置FPGA的码流数据进行压缩处理,该FPGA码流数据压缩装置可以是一计算机系统或平台,通过对FPGA码流数据进行压缩处理,目的是缩小码流数据写入FPGA前后所需的存储空间,以及加快码流数据传输到FPGA的速度,进而缩短FPGA的配置时间。
图2是本发明实施例的FPGA码流数据压缩装置的模块示意图。参见图2,所述FPGA码流数据压缩装置包括码流输入模块、数据分析模块、数据检测模块以及数据压缩模块。具体说明如下。
所述码流输入模块配置为获取待压缩的码流数据。例如可以从FPGA外部的码流存储器中读取压缩前的码流数据。可选的,所述码流输入模块包括解析单元,所述解析单元配置为对所述码流数据的功能配置状态进行解析,以获得所述码流数据的功能配置信息。
所述数据分析模块配置为对上述待压缩的码流数据进行分析,判断所述码流数据是否具有未被应用的数据,若有,则将所述码流数据作为可统一压缩码流,并选取至少一个未被应用的数据作为所述可统一压缩码流采用的压缩参考值,若无,则将所述码流数据分割成至少两个不完全相同的数据块,使得至少部分所述数据块为可压缩数据块,选择仅在所述可压缩数据块以外的数据块中应用的至少一个数据作为所述可压缩数据块采用的压缩参考值。
此处“未被应用的数据”是指码流数据或码流数据块中并未出现的数值,如某一码流数据块中未出现数据值0x16,则对于该码流数据块来说,0x16为未被应用的数据。本实施例采用码流数据或者码流数据块中未出现的数据用来作为压缩参考值,进行数据压缩。获得码流数据中未被应用的数据可采用如下方法:遍历所述码流数据,根据设定宽度统计不同数值的使用次数,使用次数为0的即为未被应用的数据,如0x00~0xFF之间,统计各个数值出现的次数即可获得未被应用的数值。
所述数据分析模块可以通过执行上述FPGA码流数据的压缩方法中的步骤S2的过程,而得到压缩参考值。所述压缩参考值基于当前的码流数据得到,压缩参考值的数值和数量并不是固定不变的,而是可以根据具体的码流数据以及压缩要求进行动态调整,以获得较大的压缩比。可选的,所述用于配置FPGA的码流数据包括设置于其头部和/或尾部的功能配置状态数据,所述功能配置状态数据包括用户对各功能选项的配置状态,如是否是否压缩的信息。关于功能配置状态的数据不属于本实施例要压缩的数据。所述FPGA码流数据压缩装置还可包括压缩数据存储模块,在获得所述所述可统一压缩码流或所述可压缩数据块采用的压缩参考值后,压缩数据存储模块可将所述压缩参考值和/或各个所述数据块的起始地址添加入要输出的码流数据的功能配置状态中。
所述数据检测模块用于检测数据分析模块分析后得到的可统一压缩码流或者可压缩数据块,从所述可统一压缩码流或者所述可压缩数据块中选出至少一个字符串,所述字符串与所在的可统一压缩码流或者可压缩数据块采用的压缩参考值对应。具体的,所述压缩参考值可设置的较对应的字符串的存储空间小。作为示例,与压缩参考值对应的字符串可以选择包括连续字符的字符串,所述连续字符的字符串指的是连续多个字节相同,例如均为0或者均为1,具体如连续8字节为0、连续4字节为0或者连续2字节为0的字符串,这类字符串便于记录,且后续写入FPGA后进行解压时,不容易出错,可以实现无损解压。
所述数据压缩模块配置为利用所述压缩参考值替换对应的字符串,并得到压缩后的码流数据。
为了在进行压缩前评估压缩比是否能够满足要求,一实施例中,所述FPGA码流数据压缩装置还包括压缩比评估模块,所述压缩比评估模块用于在得到压缩参考值和对应的字符串后,计算所述待压缩的码流数据在利用压缩参考值替换对应的字符串后,能够获得的压缩比的大小,所述压缩比越大,所述码流数据压缩后占用的空间越小,传输速度也越快。由于码流数据通常为二进制序列,可以将所述码流数据在采用压缩参考值进行替换后字符数量的减少作为压缩比。所述压缩比评估模块还用于将所述压缩比与预先设定的压缩比设定值进行比较,其中,当所述压缩比小于压缩比设定值时,触发所述数据分析模块和/或所述数据检测模块工作,并利用所述压缩比评估模块得到新的压缩比,直到所述压缩比小于所述压缩比设定值。
可选实施方式中,当所述压缩比小于压缩比设定值时,所述数据分析模块执行的操作包括:改变所述码流数据的分割状态、调整所述压缩参考值的取值或数量、或者调整分割出的各个数据块的大小等。所述数据检测模块执行的操作包括:调整所述字符串,或者调整所述压缩参考值和字符串的对应关系等。
上述FPGA码流数据压缩装置基于要压缩的码流数据的内容进行分析,获得压缩参考值,利用该压缩参考值替换对应的字符串,在确保数据正确性的基础上,可以实现对码流数据的动态压缩,实现高压缩比的数据压缩处理,可以减少码流数据的大小,降低码流数据占用的存储空间,缩短数据传输时间,提高FPGA的配置速度。
可以理解的是,本发明实施例的FPGA码流数据压缩装置可以包括通过诸如网络的通信单元互连的多个计算机、硬件、装置等,或者包括具有实现本发明的过程的单个计算机、硬件、装置等。所述的计算机可包括中央处理单元(CPU)、存储器以及输入及输出组件等等,所述的输入及输出组件例如为键盘、鼠标、触摸屏、显示器等。本文使用的“模块”或“单元”通常是指本发明的组件,诸如逻辑可分离软件(计算机程序)、硬件或等效部件。例如,所述FPGA码流数据压缩装置中的码流输入模块、数据分析模块、数据检测模块、数据压缩模块等模块、压缩数据存储模块、压缩比评估模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块,或者,这些模块中的一个或多个模块的至少部分功能可以与其它模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,各个模块中的至少一个一般是以软件程序的方式配合硬件的方式来实施,然而,他们全部(或其中一部分)也可以使用电子硬件或软件程序的方式来实施。不管是以软件或者硬件方式,其个别部分是熟悉电子、软件领域人员可以进行实施的,因此,其细节就不在本说明书中赘述。
上述描述仅是对本发明较佳实施例的描述,并非对本发明权利范围的任何限定,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
Claims (10)
1.一种FPGA码流数据的压缩方法,其特征在于,所述压缩方法包括:
获取待压缩的码流数据;
对所述码流数据进行分析,若存在未被应用的数据,则所述码流数据为可统一压缩码流,选取至少一个未被应用的数据作为压缩参考值,若无,则将所述码流数据分割成至少两个不完全相同的数据块,使得至少部分所述数据块为可压缩数据块,选择仅在所述可压缩数据块以外的数据块中应用的至少一个数据作为所述可压缩数据块采用的压缩参考值,其中,对所述码流数据进行分析的方法包括:遍历所述码流数据,根据设定宽度统计不同数值的使用次数,使用次数为0的数值为所述码流数据中未被应用的数据;
从所述可统一压缩码流或者所述可压缩数据块中选出至少一个字符串与所述压缩参考值对应;以及,
利用所述压缩参考值替换对应的所述字符串,得到压缩后的码流数据。
2.如权利要求1所述的压缩方法,其特征在于,在利用所述压缩参考值替换对应的所述字符串之前,所述压缩方法还包括:
计算所述码流数据的压缩比;
将所述压缩比与压缩比设定值进行比较,当所述压缩比小于等于所述压缩比设定值时,利用所述压缩参考值替换对应的字符串,当所述压缩比大于所述压缩比设定值时,重新获取所述压缩参考值和/或重新获取与所述压缩参考值对应的字符串,并计算压缩比,直到所述压缩比不超过所述压缩比设定值。
3.如权利要求2所述的压缩方法,其特征在于,重新获取所述压缩参考值的方法包括:改变所述码流数据的分割状态、调整所述压缩参考值的取值或数量、或者调整分割出的各个所述数据块的大小。
4.如权利要求2所述的压缩方法,其特征在于,重新获取与所述压缩参考值对应的所述字符串的方法包括:重新选择与所述压缩参考值对应的所述字符串,或者调整所述压缩参考值和所述字符串的对应关系。
5.如权利要求1所述的压缩方法,其特征在于,与所述压缩参考值对应的所述字符串中的字符均为0或者均为1。
6.如权利要求1所述的压缩方法,其特征在于,所述可统一压缩码流或所述可压缩数据块采用的压缩参考值为多个,且各个所述压缩参考值分别用来替换不同的字符串。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,其特征在于,当所述计算机指令被处理器执行时,执行如权利要求1至6任一项所述的压缩方法。
8.一种FPGA码流数据压缩装置,其特征在于,包括:
码流输入模块,配置为获取待压缩的码流数据;
数据分析模块,配置为对所述码流数据进行分析,若存在未被应用的数据,则所述码流数据为可统一压缩码流,并选取至少一个未被应用的数据作为所述可统一压缩码流采用的压缩参考值,若无,则将所述码流数据分割成至少两个不完全相同的数据块,使得至少部分所述数据块为可压缩数据块,选择仅在所述可压缩数据块以外的数据块中应用的至少一个数据作为所述可压缩数据块采用的压缩参考值,其中,对所述码流数据进行分析包括:遍历所述码流数据,根据设定宽度统计不同数值的使用次数,使用次数为0的数值为所述码流数据中未被应用的数据;
数据检测模块,配置为从所述可统一压缩码流或者所述可压缩数据块中选出至少一个字符串与所述压缩参考值对应;以及,
数据压缩模块,配置为利用所述压缩参考值替换对应的所述字符串,得到压缩后的码流数据。
9.如权利要求8所述的FPGA码流数据压缩装置,其特征在于,所述码流输入模块包括解析单元,所述解析单元配置为对所述码流数据的功能配置状态进行解析,以获得所述码流数据的功能配置信息。
10.如权利要求8所述的FPGA码流数据压缩装置,其特征在于,还包括:
压缩数据存储模块,配置为将所述压缩参考值、各个所述数据块的起始地址和所述字符串中的至少一种信息添加入所述码流数据的功能配置状态中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011505981.7A CN112713899B (zh) | 2020-12-18 | 2020-12-18 | Fpga码流数据的压缩方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011505981.7A CN112713899B (zh) | 2020-12-18 | 2020-12-18 | Fpga码流数据的压缩方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112713899A CN112713899A (zh) | 2021-04-27 |
CN112713899B true CN112713899B (zh) | 2021-10-08 |
Family
ID=75544505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011505981.7A Active CN112713899B (zh) | 2020-12-18 | 2020-12-18 | Fpga码流数据的压缩方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112713899B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9264068B2 (en) * | 2014-05-09 | 2016-02-16 | Micron Technology, Inc. | Deflate compression algorithm |
CN105005464B (zh) * | 2015-07-02 | 2017-10-10 | 东南大学 | 一种Burrows Wheeler变换硬件处理装置 |
JP6680126B2 (ja) * | 2016-07-25 | 2020-04-15 | 富士通株式会社 | 符号化プログラム、符号化装置、符号化方法、及び検索方法 |
WO2019011944A1 (en) * | 2017-07-10 | 2019-01-17 | Intopix | METHOD AND DEVICE FOR COMPRESSING DIGITAL DATA |
CN108322220A (zh) * | 2018-02-08 | 2018-07-24 | 华为技术有限公司 | 编解码方法、装置及编解码设备 |
-
2020
- 2020-12-18 CN CN202011505981.7A patent/CN112713899B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112713899A (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101311931B (zh) | 基于值的出现的表压缩 | |
US6820035B1 (en) | System and method for determining workload characteristics for one or more applications operating in a data storage environment | |
US6735747B2 (en) | Pre-silicon verification path coverage | |
JP5881416B2 (ja) | データ圧縮装置、及びデータ圧縮装置を含むデータ処理装置 | |
US6189069B1 (en) | Optimized logging of data elements to a data storage device | |
US7650538B2 (en) | Identifying temporal ambiguity in an aggregated log stream | |
EP2937794B1 (en) | Method and system for archiving digital data | |
CN111723059B (zh) | 一种数据压缩方法、装置、终端设备及存储介质 | |
US11775529B2 (en) | Recursive functionality in relational database systems | |
US10505563B1 (en) | Techniques for optimizing entropy computations | |
US20130262407A1 (en) | Multiplex classification for tabular data compression | |
US20240118939A1 (en) | Utilizing key value-based record distribution data to perform parallelized segment generation in a database system | |
JP2016100006A (ja) | パフォーマンス試験のためのベンチマーク・アプリケーションを生成する方法および装置 | |
Harrison et al. | Storage workload modelling by hidden Markov models: Application to Flash memory | |
CN110995273A (zh) | 电力数据库的数据压缩方法、装置、设备及介质 | |
CN111291041B (zh) | 列数据的非统一分页 | |
CN102270262A (zh) | 集成电路仿真模拟波形压缩和解压缩方法及装置 | |
CN115438114A (zh) | 存储格式转换方法、系统、装置、电子设备及存储介质 | |
US8325188B1 (en) | Method and system for implementing a waveform viewer | |
CN112713899B (zh) | Fpga码流数据的压缩方法、装置及存储介质 | |
Karandikar et al. | CDPU: Co-designing compression and decompression processing units for hyperscale systems | |
CN105975498A (zh) | 数据查询的方法、装置和系统 | |
US20150095866A1 (en) | Vlsi circuit signal compression | |
KR20160111327A (ko) | 정보 처리 장치 및 데이터 관리 방법 | |
US10841405B1 (en) | Data compression of table rows |
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 |