发明名称 一种基于RLE和LZW的优化比特文件压缩与解压缩方法
摘要 一种基于RLE和LZW的优化比特文件压缩与解压缩方法,通过对FPGA配置比特文件进行数据格式分析,抠出比特文件的头部控制字,从真实配置数据开始,采用游长为4的RLE编码进行初步压缩,再进行LZW压缩进一步提升压缩率。解压缩时为压缩的逆过程,先进行LZW解压缩还原出中间数据,再对不包含头部控制字的数据部分进行RLE解压缩,还原出原始的FPGA配置比特文件。该方法综合考虑了压缩/解压缩的时间和压缩率,与Xilinx自带的压缩工具比较,与单纯应用RLE算法,单纯应用LZW算法比较,实现了压缩率与压缩速度的双赢。解决了Xilinx先进型号FPGA配置比特文件过大的问题,节省了存储芯片的开销,为FPGA在轨重构技术提供了关键技术支撑。
申请公布号 CN106407285A 申请公布日期 2017.02.15
申请号 CN201610752157.9 申请日期 2016.08.26
申请人 西安空间无线电技术研究所 发明人 杨玉辰;周国昌;赖晓玲;袁雅婧;高翔
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 安丽
主权项 一种基于RLE和LZW的优化比特文件压缩方法,其特征在于:包括步骤如下:步骤一:FPGA配置比特文件由多部分数据组成,包含头部控制字、数据和命令字,其中,数据和命令字格式都是以四字节为一个单位,抠除FPGA配置比特文件的头部控制字;初始化RLE中的游长计数器;将RLE的游程长度根据步骤一所述比特文件数据特点设置为4;初始化LZW的压缩字典,使字典包含所有可能的根,所述根为单一词条;设置前缀pre_char,令当前前缀pre_char为空;步骤二:设置字符串pre_string;将步骤一中抠除头部控制字的FPGA配置比特文件的第一个字符串赋给字符串pre_string;所述抠除头部控制字的FPGA配置比特文件为被压缩文件;步骤三:将被压缩文件进行压缩,步骤如下:(1)判断被压缩文件中是否有字符串需要压缩,如果没有字符串需要压缩,则先输出字符串pre_string,再输出游长计数器的值,进入步骤四;(2)如果有字符串需要压缩,设置当前字符串current_string,令当前字符串current_string等于字符流中的下一个字符串;(3)判断pre_string与current_string是否一致:如果pre_string与current_string一致,游长计数器加1,判断游长计数器值是否计到255;如果游长计数器值计到255,先输出pre_string,再输出游长计数器值,令游长计数器值为1,读取待压缩文件的未压缩的字符串给pre_string,返回步骤三如果游长计数器值未计到255,返回步骤三;如果pre_string与current_string不一致,输出pre_string,输出游长计数器值,将此时current_string赋给pre_string,返回步骤三;步骤四:设定当前字符current_char,按照步骤三(1)输出顺序,将输出依次排列成新的字符流,读取该字符流中的第一个字符赋给current_char;步骤五:判断pre_char与current_char依次排列组成的词条是否在字典中:如果在字典中,将pre_char与current_char依次排列组成的词条赋给pre_char;如果未在字典中,则输出当前前缀pre_char的码字,添加pre_char与current_char依次排列组成的词条到字典中,将current_char的值赋给pre_char;步骤六:判断新的字符流中是否还有字符需要压缩,如果有字符需要压缩,将需要压缩的第一个字符赋给current_char,返回步骤五;如果没有字符需要压缩,输出当前前缀pre_char的码字,完成压缩。
地址 710100 陕西省西安市长安区西街150号