一种fpga码流数据的压缩及解压缩方法
技术领域
1.本发明属于fpga应用技术领域,具体涉及一种fpga码流数据的压缩及解压缩方法。
背景技术:2.近年来,随着大规模、高性能fpga的出现,以及软硬件设计流程和设计方法的改进,基于fpga的可重构系统逐渐成为计算机系统领域研究的一个新热点。基于fpga的可重构系统中的硬件信息,即fpga的配置信息,可以利用先进的eda工具,使其像软件一样可以进行修改或动态调用,使得该系统在具有硬件计算的高性能同时,还兼具软件所具有的的高灵活性。
3.利用可重构系统来实现一个计算逻辑,其运行的开销包括两部分:第一是计算时间,也就是用于实际计算的时间;第二是配置时间,即配置内部可编程器件所产生的延时。但是,随着fpga规模不断扩大和内部资源的不断丰富,配置时间会变得越来越长,严重制约了可重构计算的应用。fpga配置时间的一个主要部分是消耗在配置文件从片外存储器传送到fpga过程中,而降低配置文件规模,可以缩短fpga的配置时间;除此之外,还可以减小片外存储器的规模,从而节约系统成本。
4.fpga码流数据的压缩过程如图1所示,先压缩eda工具产生的配置文件,再将压缩后的配置文件存储在片外的非易失性存储器(比如基于flash工艺的存储器)中。
5.fpga码流数据的解压缩过程如图2所示,当fpga系统需要配置此文件时,系统会立即从片外的非易失性存储器中读取配置文件的数据,然后经过片内解压缩得到原始配置数据流,直接送入fpga内部进行配置。
6.现有技术中,对fpga码流数据多采用基于字典的压缩方法。当输入数据流中的一个字符或者一个字符串与字典中的一个字符或一个字符串相匹配时,压缩器就输出字典中相匹配位置的标识。只要用于表示该相应匹配位置的编码字位数小于输入数据流中对应的匹配串的位数,就可以实现压缩的目的。如果进行精心的设计,就可以取得相当好的压缩效果。根据字典在压缩的过程中是否可更新,又可以将其分为静态的字典压缩和动态的字典压缩。
7.静态字典是一种基本固定的字典,有时也允许添加字符串,但不允许删除字符串。动态字典一般是从空字典出发,并在压缩过程中,字典的内容和大小是可变的。
8.但一般的字典压缩和解压缩方法存在以下两个缺陷:(1)码流中存在大部分重复内容时,需要每隔固定字节数就生成压缩码,降低了压缩率。
9.(2)只能降低存储大小和数据传输时间,无法降低配置时间。
技术实现要素:10.本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种fpga码流
数据的压缩方法,其对于重复率高的码流数据的压缩率更高,可以占用更少的资源。
11.为解决上述技术问题,本发明采用的技术方案是:一种fpga码流数据的压缩方法,该方法包括以下步骤:步骤一、获取待压缩的码流数据在设备中的位置;步骤二、分析整个待压缩的码流数据在设备中的位置,并根据位置将待压缩的码流数据以行为单位分割为多个数据块;步骤三、分每行数据全部相同和每行数据中有个别数据不相同两种情况对数据块进行压缩。
12.上述的一种fpga码流数据的压缩方法,步骤三中所述分每行数据全部相同和每行数据中有个别数据不相同两种情况对数据块进行压缩的具体方法为:分析每行数据块的数据是否全部相同,当每行数据块的数据全部相同时,采用将整行跳过的方法对数据块进行压缩;当每行数据块的数据中有个别数据不相同时,采用分段跳过的方法对数据块进行压缩;其中,所述采用整行跳过的方法对数据块进行压缩的方法为:当每行数据块的数据全部相同时,在上一个数据块的结尾处以代表跳过一行数据块的关键字来替换整个数据;当连续的数行数据块数据都为相同时,以代表数行数据块的关键字来替换数行数据块;其中,所述采用分段跳过的方法对数据块进行压缩的方法为:分析每行数据块的数据,将每行数据块的数据以一定个数为一组,当连续超过一定组的数据为相同时,以部分特殊关键字代替之前的几组数据。
13.本发明还公开了一种大大提高了配置效率、可以进一步对用户电路进行保密的fpga码流数据的解压缩方法,该方法为:解析码流数据中是否使能全压缩或分段部分压缩,当使能全压缩时,采用部分解压缩方法进行解压缩;当使能分段部分压缩时,采用分段部分解压缩方法进行解压缩;其中,采用部分解压缩方法进行解压缩的方法为:解析码流数据中的代表一个行数据块的关键字和代表数个行数据块的关键字,根据关键字和解压缩协议来控制配置时需要跳过的地址和数据;其中,采用分段部分解压缩方法进行解压缩的方法为:解析码流数据中的部分特殊关键字,根据关键字和解压缩协议来配置相应的数据和地址。
14.本发明与现有技术相比具有以下优点:1、本发明提供了一种对fpga码流数据进行压缩和解压缩的方法,相比传统的方法能够将重复率高的码流以更高的压缩率进行压缩,并且在配置fpga时消耗的时间更少,从而提高了配置速度。
15.2、本发明中的fpga码流数据压缩方法,将非压缩非加密码流中表征数据数值为相同的数据,通过相关协议的关键字来替代,从而实现压缩的目的;可以将重复率高的码流文件大小压缩的更小,因此将压缩后的码流放置在片外存储设备内,可以占用更少的资源。
16.3、本发明中的fpga码流数据压缩方法,每次压缩的码流长度由相同的数据个数决定,不需要根据字典将固定长度的数据进行压缩,因此对于重复率高的码流数据的压缩率更高。
17.4、本发明中的fpga码流数据解压缩方法,部分解压缩方法不需要将数据解压缩后
再进行配置,可以根据解压缩方法直接跳过数据配置,分段部分解压缩方法将某部分分段压缩数据解压缩后一次性配置,因此大大提高了配置效率。
18.5、本发明中的fpga码流数据解压缩方法,有部分内容不需要完全解压缩,降低用户电路被破解的可能,因此可以进一步对用户电路进行保密。
19.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
20.图1为fpga码流数据的压缩过程示意图。
21.图2为fpga码流数据的解压缩过程示意图。
22.图3为本发明fpga码流数据的压缩方法的流程示意图。
23.图4为本发明fpga码流数据的解压缩方法的流程示意图。
具体实施方式
24.下面以实施例1说明本发明的fpga码流数据的压缩方法,以实施例2说明本发明的fpga码流数据的解压缩方法。
25.实施例1如图3所示,本实施例的fpga码流数据的压缩方法,包括以下步骤:步骤一、获取待压缩的码流数据在设备中的位置;步骤二、分析整个待压缩的码流数据在设备中的位置,并根据位置将待压缩的码流数据以行为单位分割为多个数据块;步骤三、分每行数据全部相同和每行数据中有个别数据不相同两种情况对数据块进行压缩。
26.本实施例中,步骤三中所述分每行数据全部相同和每行数据中有个别数据不相同两种情况对数据块进行压缩的具体方法为:分析每行数据块的数据是否全部相同,当每行数据块的数据全部相同时,采用将整行跳过的方法对数据块进行压缩;当每行数据块的数据中有个别数据不相同时,采用分段跳过的方法对数据块进行压缩;其中,所述采用整行跳过的方法对数据块进行压缩的方法为:当每行数据块的数据全部相同时,在上一个数据块的结尾处以代表跳过一行数据块的关键字来替换整个数据;当连续的数行数据块数据都为相同时,以代表数行数据块的关键字来替换数行数据块;其中,所述采用分段跳过的方法对数据块进行压缩的方法为:分析每行数据块的数据,将每行数据块的数据以一定个数为一组,当连续超过一定组的数据为相同时,以部分特殊关键字代替之前的几组数据。
27.fpga码流数据的压缩是在软件层面实现的,分为全压缩和分段部分压缩两种方法,采用全压缩的方法对数据块进行压缩时,直接跳过整个数据块的数据,地址直接跳过即可,即进行跳过配置;采用分段部分压缩的方法对数据块进行压缩时,由于数据块的数据中有个别数据不相同,因此不能跳过整个部分,采用了对这部分数据进行分段部分压缩的方法,对该数据块中某组全相同的数据采用部分特殊关键字代替,进行压缩。本发明中的fpga码流数据压缩方法,将非压缩非加密码流中表征数据数值为相同的数据,通过相关协议的
关键字来替代,从而实现压缩的目的;可以将重复率高的码流文件大小压缩的更小,因此将压缩后的码流放置在片外存储设备内,可以占用更少的资源。
28.本发明的fpga码流数据的压缩方法,不需要字典,能够以较少关键字压缩较大数据量;而且,本发明中的压缩方法每次压缩的码流长度由相同的数据个数决定,不需要根据字典将固定长度的数据进行压缩,因此对于重复率高的码流数据的压缩率更高;本发明不仅从文件大小和数据传输来减少配置时间,还从内部配置效率来减少配置时间的特点。
29.实施例2如图4所示,本实施例的fpga码流数据的解压缩方法,该方法为:解析码流数据中是否使能全压缩或分段部分压缩,当使能全压缩时,采用部分解压缩方法进行解压缩;当使能分段部分压缩时,采用分段部分解压缩方法进行解压缩;其中,采用部分解压缩方法进行解压缩的方法为:解析码流数据中的代表一个行数据块的关键字和代表数个行数据块的关键字,根据关键字和解压缩协议来控制配置时需要跳过的地址和数据;其中,采用分段部分解压缩方法进行解压缩的方法为:解析码流数据中的部分特殊关键字,根据关键字和解压缩协议来配置相应的数据和地址。
30.fpga码流数据的解压缩是在软件层面实现的,与压缩方法相对应,根据全压缩和分段部分压缩两种情况进行解压缩,部分解压缩方法不需要将数据解压缩后再进行配置,可以根据解压缩方法直接跳过数据配置,分段部分解压缩方法将某部分分段压缩数据解压缩后一次性配置,因此大大提高了配置效率。
31.本发明中的解压缩方法有部分内容不需要完全解压缩,降低用户电路被破解的可能,因此可以进一步对用户电路进行保密。
32.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
33.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
34.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
35.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
36.前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。