可编程逻辑器件配置数据流压缩、解压缩处理方法及系统.pdf

上传人:1** 文档编号:4332648 上传时间:2018-09-14 格式:PDF 页数:20 大小:780.78KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110171082.2

申请日:

2011.06.23

公开号:

CN102843142A

公开日:

2012.12.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||著录事项变更IPC(主分类):H03M 7/30变更事项:申请人变更前:深圳市国微电子股份有限公司变更后:深圳市国微电子有限公司变更事项:地址变更前:518057 广东省深圳市南山区深圳高新技术产业园区南区高新南一道国微研发大楼变更后:518057 广东省深圳市南山区高新南一道015号国微研发大楼6层A|||实质审查的生效IPC(主分类):H03M 7/30申请日:20110623|||公开

IPC分类号:

H03M7/30

主分类号:

H03M7/30

申请人:

深圳市国微电子股份有限公司

发明人:

包朝伟; 刘仕东; 王佩宁

地址:

518057 广东省深圳市南山区深圳高新技术产业园区南区高新南一道国微研发大楼

优先权:

专利代理机构:

深圳鼎合诚知识产权代理有限公司 44281

代理人:

薛祥辉

PDF下载: PDF下载
内容摘要

本发明公开一种可编程逻辑器件配置数据流的压缩、解压缩处理方法及系统,压缩方法包括获取所述配置数据流中待压缩处理的数据帧,对所述待压缩处理的数据帧内部的数据单元进行压缩处理。本发明通过以上技术方案,提供一种更加高效的可编程逻辑器件配置数据流的压缩、解压缩处理方法及系统。

权利要求书

1.一种可编程逻辑器件的配置数据流的压缩处理方法,其特征在于,包括:获取所述配置数据流中待压缩处理的数据帧;对所述待压缩处理的数据帧内部的数据单元进行压缩处理。2.如权利要求1所述的方法,其特征在于,所述数据单元包括一个或多个比特值,或者所述数据单元包括一个或多个字段值。3.如权利要求1所述的方法,其特征在于,对所述待压缩处理的数据帧内部的数据单元进行压缩处理后得到参考值和命令单元。4.如权利要求3所述的方法,其特征在于,对所述待压缩处理的数据帧内部的数据单元进行压缩处理后得到参考值和命令单元的过程具体为:将由统计得出的帧内部连续且相同的数据单元的数目与一预设值比较,判断所述连续且相同的数据单元的数目是否大于或等于所述预设值;如果是,对所述连续且相同的多个数据单元进行处理后得到的命令单元包括用于表示压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元的数目信息;如果否,对所述连续且相同的多个数据单元或1个数据单元进行处理后得到的命令单元包括用于表示非压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息。5.如权利要求4所述的方法,其特征在于,所述预设值为大于或等于3的整数。6.如权利要求1至5任一项所述的方法,其特征在于,还包括:对所述配置数据流中的帧单元进行压缩处理。7.一种可编程逻辑器件的配置数据流的解压缩处理方法,其特征在于,包括:获取所述配置数据流中待解压缩处理的数据帧;对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理。8.如权利要求7所述的方法,其特征在于,对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理的过程具体为:获取所述待解压缩处理的数据帧内部的命令单元和参考值;根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理。9.如权利要求8所述的方法,其特征在于,根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理的过程具体为:获取所述命令单元中的命令类型信息;如果所述命令单元中的命令类型信息为压缩类型,则根据所述命令单元中用于表示所述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元的数目信息,将所述参考值复制到帧内的相应地址上;如果所述命令单元中的命令类型信息为非压缩类型,则根据所述命令单元中用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息,将所述参考值复制到帧内的相应地址上。10.如权利要求7至9任一项所述的方法,其特征在于,还包括:对所述配置数据流中的帧单元进行解压缩处理。11.一种可编程逻辑器件的配置数据流的压缩处理系统,其特征在于,包括待压缩处理数据获取模块和第一压缩处理模块,其中,所述待压缩处理数据获取模块用于获取所述配置数据流中待压缩处理的数据帧;所述第一压缩处理模块用于对所述待压缩处理的数据帧内部的数据单元进行压缩处理。12.如权利要求11所述的系统,其特征在于,所述第一压缩处理模块用于对所述待压缩处理的数据帧内部的数据单元进行压缩处理后得到参考值和命令单元。13.如权利要求12所述的系统,其特征在于,所述第一压缩处理模块具体用于:将由统计得出的帧内部连续且相同的数据单元的数目与一预设值比较,判断所述连续且相同的数据单元的数目是否大于或等于所述预设值;如果是,则对所述连续且相同的多个数据单元进行处理后得到的命令单元包括用于表示压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元的数目信息;如果否,对所述连续且相同的多个数据单元或1个数据单元进行处理得到的命令单元包括用于表示非压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息。14.如权利要求11至13任一项所述的系统,其特征在于,还包括第二压缩处理模块,所述第二压缩处理模块用于对所述配置数据流中的帧单元进行压缩处理。15.一种可编程逻辑器件的配置数据流的解压缩处理系统,其特征在于,包括待解压缩处理数据获取模块和第一解压缩模块,其中:所述待解压缩处理数据获取模块用于获取所述配置数据流中待解压缩处理的数据帧;所述第一解压缩模块用于对所述待解压缩数据帧内部的数据单元进行解压缩处理。16.如权利要求15所述的系统,其特征在于,所述第一解压缩模块具体用于获取所述待解压缩处理的数据帧内部的命令单元和参考值;根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理。17.如权利要求16所述的系统,其特征在于,所述第一解压缩模块具体用于获取所述命令单元中的命令类型信息;如果所述命令单元中的命令类型信息为压缩类型,则根据所述命令单元中用于表示所述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元的数目信息,将所述参考值复制到帧内的相应地址上;如果所述命令单元中的命令类型信息为非压缩类型,则根据所述命令单元中用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息,将所述参考值复制到帧内的相应地址上。18.如权利要求15至17任一项所述的系统,其特征在于,还包括第二解压缩模块,所述第二解压缩模块用于对所述配置数据流中的帧单元进行解压缩处理。

说明书

可编程逻辑器件配置数据流压缩、解压缩处理方法及系统

技术领域

本发明涉及数据处理领域,尤其涉及一种可编程逻辑器件的配置数据流的
压缩、解压缩处理方法及系统。

背景技术

传统的可编程逻辑器件(programmable logic device,PLD),比如现场
可编程门阵列FPGA(Field Program Gate Array)是通过相应的配置数据流进
行配置的,配置数据流被下载到可编程逻辑器件,然后存储在配置存储单元中,
最后根据配置存储单元的内容对可编程逻辑器件进行相应的配置,从而将可编
程逻辑器件构造成用户预设的特定功能的器件。

通常情况下,一个设计文件中所包含的配置数据位有上百万个甚至更多,
这就需要很大的外部存储器来存储配置数据流,同时配置数据流的下载操作也
会相应地花费很多时间。因此,为了节省存储空间和节约下载时间,压缩配置
数据流是一个很有效的技术措施。

压缩一般分为有损压缩和无损压缩。,其中一个著名的的最常用的无损压缩
算法是基于字典的LZ(根据原始提出人Lempel-Ziv命名)系列。传统的FPGA开发
商采用的基本上都是基于LZ的压缩算法,LZ压缩算法主要是针对字符串或者数
据串(以下简称串)的压缩,如在一个缓冲器buffer中保存最新的被压缩的数
据流,当有数据输入时,LZ算法就查找输入数据与缓冲器的数据的匹配性,找
出最长的匹配数据,然后就输出一段编码来代替匹配的数据,编码由三部分组
成,包括匹配数据串的位置,长度和紧接着匹配数据串的最后一位的字符或者
数据。传统的部分FPGA是以帧frame为单位进行配置,以帧为单位进行压缩,即
帧外部的压缩。图1为现有技术一种FPGA的示意图,包括FPGA11、可编程逻辑单
元12和帧13,FPGA11表示FPGA的一种结构,里面的每一个虚线条表示一帧(虚
线条的数目不代表任何含义,此处只是一种示意图),FPGA通过一帧一帧地完成
配置。一帧数据又会包含若干个比特或字段,根据FPGA类型和容量的不同,其
包含的比特或字段个数也不同,假设一帧数据包含的字段个数为m,相应的位数
为32*m;再用大写字母W加上下脚标来表示帧内部字段及其顺序,如图2所示,
图2为现有技术一种FPGA中帧结构的示意图,用W0表示第一个字,W1表示第二个
字,以此类推,最后一个字用Wm-1来表示,通常当一帧数据包含的字段个数为m
时,就说这个帧的长度为m。

传统的帧外部进行压缩的方法在一定程度上考虑了FPGA本身的结构特征和
编程特点,但是没有考虑到帧内部的数据特征,因此传统的帧外部基于帧单元
进行压缩的方法存在一定的局限性,效率较低。

发明内容

本发明提供一种更加高效的可编程逻辑器件的配置数据流的压缩、解压缩
处理方法及系统。

为解决上述技术问题,本发明采用以下技术方案:

一种可编程逻辑器件的配置数据流的压缩处理方法,包括:

获取所述配置数据流中待压缩处理的数据帧;

对所述待压缩处理的数据帧内部的数据单元进行压缩处理。

所述数据单元包括一个或多个比特值,或者所述数据单元包括一个或多个
字段值。

对所述待压缩处理的数据帧内部的数据单元进行压缩处理后得到参考值和
命令单元。

对所述待压缩处理的数据帧内部的数据单元进行压缩处理后得到参考值和
命令单元的过程具体为:

将由统计得出的帧内部连续且相同的数据单元的数目与一预设值比较,判
断所述连续且相同的数据单元的数目是否大于或等于所述预设值;

如果是,对所述连续且相同的多个数据单元进行处理后得到的命令单元包
括用于表示压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单
元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元的数目信
息;

如果否,对所述连续且相同的多个数据单元或1个数据单元进行处理后得
到的命令单元包括用于表示非压缩类型的命令类型信息、用于表示所述连续且
相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示所述连
续且相同的多个数据单元或1个数据单元的数目信息。

所述预设值为大于或等于3的整数。

还包括:

对所述配置数据流中的帧单元进行压缩处理。

一种可编程逻辑器件的配置数据流的解压缩处理方法,包括:

获取所述配置数据流中待解压缩处理的数据帧;

对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理。

对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理的过程具体
为:

获取所述待解压缩处理的数据帧内部的命令单元和参考值;

根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元
进行解压缩处理。

根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元
进行解压缩处理的过程具体为:

获取所述命令单元中的命令类型信息;

如果所述命令单元中的命令类型信息为压缩类型,则根据所述命令单元中
用于表示所述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所
述连续且相同的多个数据单元的数目信息,将所述参考值复制到帧内的相应地
址上;

如果所述命令单元中的命令类型信息为非压缩类型,则根据所述命令单元
中用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址
信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息,
将所述参考值复制到帧内的相应地址上。

还包括:

对所述配置数据流中的帧单元进行解压缩处理。

一种可编程逻辑器件的配置数据流的压缩处理系统,包括待压缩处理数据
获取模块和第一压缩处理模块,其中,

所述待压缩处理数据获取模块用于获取所述配置数据流中待压缩处理的数
据帧;

所述第一压缩处理模块用于对所述待压缩处理的数据帧内部的数据单元进
行压缩处理。

所述第一压缩处理模块用于对所述待压缩处理的数据帧内部的数据单元进
行压缩处理后得到参考值和命令单元。

所述第一压缩处理模块具体用于:将由统计得出的帧内部连续且相同的数
据单元的数目与一预设值比较,判断所述连续且相同的数据单元的数目是否大
于或等于所述预设值;如果是,则对所述连续且相同的多个数据单元进行处理
后得到的命令单元包括用于表示压缩类型的命令类型信息、用于表示所述连续
且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多
个数据单元的数目信息;如果否,对所述连续且相同的多个数据单元或1个数
据单元进行处理得到的命令单元包括用于表示非压缩类型的命令类型信息、用
于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息
和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息。

还包括第二压缩处理模块,所述第二压缩处理模块用于对所述配置数据流
中的帧单元进行压缩处理。

一种可编程逻辑器件的配置数据流的解压缩处理系统,包括待解压缩处理
数据获取模块和第一解压缩模块,其中:

所述待解压缩处理数据获取模块用于获取所述配置数据流中待解压缩处理
的数据帧;

所述第一解压缩模块用于对所述待解压缩数据帧内部的数据单元进行解压
缩处理。

所述第一解压缩模块具体用于获取所述待解压缩处理的数据帧内部的命令
单元和参考值;根据所述命令单元和参考值对所述待解压缩处理的数据帧内部
的数据单元进行解压缩处理。

所述第一解压缩模块具体用于获取所述命令单元中的命令类型信息;如果
所述命令单元中的命令类型信息为压缩类型,则根据所述命令单元中用于表示
所述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且
相同的多个数据单元的数目信息,将所述参考值复制到帧内的相应地址上;如
果所述命令单元中的命令类型信息为非压缩类型,则根据所述命令单元中用于
表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和
用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息,将所述
参考值复制到帧内的相应地址上。

还包括第二解压缩模块,所述第二解压缩模块用于对所述配置数据流中的
帧单元进行解压缩处理。

本发明提供一种可编程逻辑器件的配置数据流的压缩、解压缩处理方法及
系统,压缩方法中包括对待压缩处理的数据帧内部的数据单元进行压缩处理,
通过对帧内部的数据单元进行压缩,提高压缩效率,本发明还可以通过设置预
设值,针对数据帧或帧内部数据单元的特点,选择最佳的压缩比,因此,还具
有很强的灵活性。

附图说明

图1为现有技术一种FPGA的示意图;

图2为现有技术一种FPGA中帧结构的示意图;

图3为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法的流
程图;

图4为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法中帧
内部压缩方法的流程图;

图5为本发明实施例对数目大于或等于该预设值的连续且相同的多个数据
单元进行处理后得到的命令单元的结构示意图;

图6为本发明实施例对数目小于该预设值的连续且相同的多个或1个数据
单元进行处理后得到的命令单元的结构示意图;

图7为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法中帧
内部压缩数据的示意图;

图8为本发明实施例一种可编程逻辑器件的配置数据流解压缩处理方法的
流程图;

图9为本发明实施例一种可编程逻辑器件的配置数据流解压缩处理方法中
帧内部解压缩数据的示意图;

图10为本发明实施例一种可编程逻辑器件的配置数据流压缩处理系统的模
块图;

图11为本发明另一实施例一种可编程逻辑器件的配置数据流压缩处理系统
的模块图;

图12本发明实施例一种可编程逻辑器件的配置数据流解压缩处理系统的模
块图;

图13本发明另一实施例一种可编程逻辑器件的配置数据流解压缩处理系统
的模块图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。

一种可编程逻辑器件的配置数据流的压缩处理方法,包括:

获取所述配置数据流中待压缩处理的数据帧;

对所述待压缩处理的数据帧内部的数据单元进行压缩处理。

图3为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法的流
程图,请参考图3,本实施例以FPGA配置数据流的压缩方法为例:

S31、利用设计文件产生数据流;

S32、判断是否可以进行帧外部基于帧单元的压缩处理,若是,则执行步骤
S33,否则执行步骤S34;

S33、对数据流进行帧外部基于帧单元的压缩处理,帧外部帧单元的压缩结
束后,执行S34;

S34、对数据流进行帧内部基于帧内部数据单元的压缩处理;

S35、将压缩结果存储到压缩数据流存储器中。

本实施例优选的是先进行帧外部压缩,再进行帧内部压缩,本发明还适用
于先进行帧内部压缩,再进行帧外部压缩的方法。

其中步骤S34对数据流进行帧内部压缩的具体过程包括:

将由统计得出的帧内部连续且相同的数据单元的数目与一预设值比较,判
断该连续且相同的数据单元的数目是否大于或等于所述预设值;如果是,则判
断结果为满足压缩条件,对满足压缩条件的连续且相同的多个数据单元进行压
缩处理。

根据数据流中的数据类型不同,数据单元可以是比特值或字段值或其他,
其压缩和解压缩方法相类似。本发明不局限于以一个比特值或一个字段值为数
据单元进行压缩,还可以以多个比特值或多个字段值为一个数据单元进行压缩,
预设值为大于或等于3的整数。

图4为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法中帧
内部压缩方法的流程图,请参考图4,本实施例中一个数据单元为帧内的一个字
段值:

S341、将数据流加载到缓冲器A中,优选的,缓冲器A的大小比一帧的配置
数据长度多出一位,用作标志位,优选的标志位为缓冲器A的第一位;

S342、判断数据流是否进行过帧外部基于帧单元的压缩处理,本实施例可
以通过帧外部基于帧单元的压缩处理后,帧所附带的帧压缩命令或者其他标志
来判断,若是,则执行S343,否则执行S344;

S343、在步骤S341中缓冲器A所预留的标志位,即缓冲器A的第一位上写
进“1”标志,执行S345;

S344、在步骤S341中缓冲器A所预留的标志位,即缓冲器A的第一位上写
进“0”标志,执行S345;

S345、将缓冲器A中的数据流复制到同样大小的缓冲器B中,复制完之后
缓冲器A继续接收新的数据流,缓冲器B除了第一位之外,其他的都是经过编
址的,其中基本的编址单元是一个字段,即32位为一个编址单位,比如:缓冲
器B大小为106×32位(bits),有106个字段,对每个字段进行编址,地址是
1-106,用二进制表示是00000001-01101010,用十六进制表示是00-6A;

S346、以一个字段值为一个数据单位,处理的顺序按照缓冲器B的地址由
低到高来进行,依次处理每一个字段,统计连续且相同的该字段值的数目,将
其与一预设值比较,判断连续且相同的该字段值的数目是否大于或等于该预设
值,如果是,则执行S347,否则,执行S348;

S347、对数目大于或等于该预设值的连续且相同多个字段值进行处理后得
到以下形式:命令单元+参考值。其中命令单元包括用于表示压缩类型的命令类
型信息、用于表示所述连续且相同的多个字段值位于帧内部的地址信息和用于
表示所述连续且相同的多个字段值的数目信息,执行S349;

图5为本发明实施例对数目大于或等于该预设值的连续且相同的多个数据
单元进行处理后得到的命令单元的结构示意图,请参考图5,本实施例的命令单
元为命令字段,这个命令字段的宽度可以是32bit,其中第一部分内容用于表示
压缩类型的命令类型信息,可以用1个二进制位“0”来标识,表示该命令类型
的为压缩类型,第二部分内容用于表示所述连续且相同的多个字段值位于帧内
部的地址信息,地址信息指一帧数据内每个字段所在的顺序或者编号,也可以
是这些被压缩的连续且相同的多个字段值中的第一个字段值的地址信息,由于
这些字段是连续的,因此知道第一个字段的地址信息之后,可以推算其他字段
的地址信息;第三部分内容用于表示所述连续且相同的多个字段值的数目信息。

S348、对数目小于该预设值的连续且相同多个字段值或1个字段值进行处
理后得到以下形式:命令单元+参考值,命令单元包括用于表示非压缩类型的命
令类型信息、用于表示所述连续且相同的多个数据单元或1个数据单元位于帧
内部的地址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的
数目信息,执行S349;

图6为本发明实施例对数目小于该预设值的连续且相同的多个或1个数据
单元进行处理后得到的命令单元的结构示意图,请参考图6,本实施例的命令单
元为命令字段,这个命令字的宽度可以是32bit,其结构、格式和含义类似于上
述对数目大于或等于预设值的连续且相同的多个数据单元进行压缩处理后得到
的命令单元,其中第一部分内容用于表示非压缩类型,最高位,即第31位用1
个二进制位“1”来标识,表示该命令类型为非压缩类型,第二部分内容用于表
示数目小于该预设值的连续且相同的多个字段值或1个字段值位于帧内部的地
址信息,地址信息指一帧数据内每个字段所在的顺序或者编号,也可以是这些
字段中第一个字段的地址信息,由于这些字段是连续的,因此,知道第一个字
段的地址信息之后,可以推算其他字段的地址信息;第三部分内容用于表示所
述连续且相同的多个字段值或1个字段值的数目信息。

图7为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法中帧
内部压缩数据的示意图,请参考图7,假设一帧数据的长度m=106,根据命令字
段的定义,其地址编码从0000到0069,指向相应的字段,而每个字段的内容
也被数据填满了,这里的地址和字段值都是用十六进制表示,字段值的省略部
分表示相同的若干个字段值,而地址的省略部分表示递增的若干个地址值,第0
个字段值为:0000_0000;第1个字段值到第15个字段值相同,为1111_1111;
第16个字段值到第20字段值分别为:2222_2222,3333_3333,4444_4444,
4444_4444,5555_5555;第21个字段值到第102个字段值相同,为6666_6666;
第103个字段值到105个字段值分别为:7777_7777,6666_6666,6666_6666,
假设预设值为10,假设本实施例对数目大于或等于预设值的连续且相同的多个
字段值进行压缩处理后得到的命令单元为CMD1,对数目小于预设值的连续且相
同的多个或1个字段值进行处理得到的命令单元为CMD2,则处理过程为:由于
第0个字段值的数目为1,所以将其处理为CMD2,0000_0000,即命令单元和参
考值,参考值为该字段值本身,第1个字段值到第15个字段值连续且相同,连
续且相同的字段值的数目为15,大于预设值,所以将其压缩为:CMD1,1111_1111,
即命令单元和参考值,参考值为该字段值本身,同理,剩下的字段值分别处理
为:CMD2,2222_2222,3333_3333,4444_4444,4444_4444,5555_5555;CMD1,
6666_6666;CMD2,7777_7777,6666_6666,6666_6666。

具体化CMD1和CMD2,就可以得到:8000_0001,0000_0000,0002_000E,
1111_1111,8010_0005,2222_2222,3333_3333,4444_4444,4444_4444,
5555_5555,0015_0056,6666_6666,8067_0003,7777_7777,6666_6666,
6666_6666。

在这个实施例中,可以将一帧的106个字段压缩成16个字段,提高了数据压
缩的效率。

数目小于预设值的多个连续且相同的数据单元,即当连续且相同的数据单
元的数目为大于或等于2的整数,且该数目小于预设值,这种情况其命令单元
包括用于表示非压缩类型的命令类型信息、用于表示所述连续且相同的多个数
据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元的数
目信息,其中,用于表示所述连续且相同的多个数据单元位于帧内部的地址信
息包括各个数据单元位于帧内部的地址信息,或者是这些相同数据单元中的第
一个数据单元位于帧内部的地址信息,用于表示所述连续且相同的多个数据单
元的数目信息为这些相同数据单元的数目,如图7中的第18个字段值和第19
字段值:4444_4444,4444_4444;数目小于预设值的1个数据单元,即连续且
相同的数据单元的数目为1,且该数目小于预设值,这种情况其命令单元包括用
于表示非压缩类型的命令类型信息、用于表示该数据单元位于帧内部的地址信
息和用于表示该数据单元的数目信息,其中该数据单元的数目信息为1,如图7
中的第16个字段2222_2222,第17字段3333_3333。

S349、将步骤S347和S348的处理结果放到缓冲器C中,直到缓冲器B的
数据完全被处理,再将缓冲器C的内容输出。

本实施例通过命令单元中的命令类型信息,即用于表示压缩类型的命令类
型信息和用于表示非压缩类型的命令类型信息,在解压缩时可以通过识别命令
单元中的命令类型信息,方便地区分经过帧内部压缩和未经过帧内部压缩的数
据,优先的,在解压缩时利用现有的技术,只需增加两根译码线,就可以区分
经过帧内部压缩和未经过帧内部压缩的数据。

本实施例还包括一种数据解压缩处理方法,图8为本发明实施例一种可编
程逻辑器件的配置数据流解压缩处理方法的流程图,请参考图8:

S81、获取待解压缩处理的数据流,放入缓冲器D中;

S82、对数据帧进行解析,判断是否经过帧内部数据单元的压缩处理,若是,
则执行S83,否则执行步骤S84;

S83、对帧内部的数据单元进行解压缩处理,结束帧内部解压缩处理之后,
执行S84;

S84、将经过帧内部解压缩处理和未经过帧内部解压缩处理的数据帧放入缓
冲器D中,并检测缓冲器D中第一位的值是否为“1”,若是则执行S85,否则执
行S86;

S85、进行帧外部基于帧单元的解压缩处理,执行S87;

S86、不进行帧外部基于帧单元的解压缩处理,执行S87;

S87、将步骤S85和S86得到的数据流下载到FPGA中;

本实施例优选的是先进行帧内部解压缩,再进行帧外部解压缩,本发明还
适用于先进行帧外部解压缩,再进行帧内部解压缩的方法。

图9为本发明实施例一种可编程逻辑器件的配置数据流解压缩处理方法中
帧内部解压缩数据的示意图,请参考图9,比如接收到的经过帧内部压缩的一帧
数据如下:

8000_0001,0000_0000,0002_000E,1111_1111,8010_0005,2222_2222,
3333_3333,4444_4444,4444_4444,5555_5555,0015_0056,6666_6666,
8067_0003,7777_7777,6666_6666,6666_6666。

其中8000_0001、8010_0005和8067_0003为CMD2,0002_000E和0015_0056
为CMD1。

当接收到8000_0001时,就通知解压电路直接将0000_0000放到缓冲器D相
应的地址上,接收到0002_000E时,就通知解压电路接下来要对连续的多个相
同字段进行解压缩操作,紧接着根据0002_000E中用于表示该多个相同字段位
于帧内部的地址信息和用于表示该多个相同字段的数目信息,将相应数目的
1111_1111复制到帧内的相应地址上,接下来的解压缩操作依次类推,得到一帧
数据:第0个字段值为0000_0000;第1个字段值到第15个字段值数据相同,
为1111_1111;第16个字段值到第20个字段值分别为:2222_2222,3333_3333,
4444_4444,4444_4444,5555_5555;第21个字段值到第102个字段值相同,
为6666_6666;第103个字段值到第105个字段值分别为7777_7777,6666_6666,
6666_6666。

目前业界典型的一种FPGA配置数据流文件压缩方法是Xilinx公司XC2V40
器件采用的帧外部基于帧单元的压缩处理方法,本实施例采用ISE10.1开发工
具,用Verilog HDL作为设计的输入文件,通过ISE10.1生成标准配置流文件,
将生成的标准配置流文件用ISE10.1自带的帧外部基于帧单元的压缩算法进行
压缩,获得压缩后的第一压缩数据流文件;另外将ISE10.1生成的XC2V40配置
数据流文件在采用ISE10.1自带的帧外部基于帧单元的压缩算法进行压缩的基
础上,再采用本发明帧内部数据单元的压缩方法进行压缩,获得压缩后的第二
压缩数据流文件,由上述两种压缩方法获得的压缩数据流文件的文件大小如表1
所示:

表1


分别计算采用上述两种压缩方法所得到的压缩数据流文件的压缩比如表2
所示,压缩比指的是:用压缩后的文件大小除以原文件的大小所得结果的百分
比。

表2



其中压缩比提高幅度指的是:将第一压缩数据流文件的大小减去第二压缩
数据流文件的大小,再将所得到的结果除以第一压缩数据流文件的大小,所得
到的百分比。

由表2对比数据可见,本发明将传统的帧外部基于帧单元的压缩方法和帧
内部的压缩方法相结合所获得的压缩比,比单独使用基于帧单元的压缩方法所
获得的压缩比,平均提高了42.81%。因此,本发明提出的压缩方法可以大幅度
的提高FPGA配置流文件的压缩性能。

本实施例还包括一种数据压缩处理系统,图10为本发明实施例一种可编程
逻辑器件的配置数据流压缩处理系统的模块图,请参考图10:

一种数据压缩处理系统包括待压缩处理数据获取模块101和第一压缩处理
模块102,待压缩处理数据获取模块101用于获取配置数据流中待压缩处理的数
据帧,第一压缩处理模块102用于对所述待压缩处理的数据帧内部的数据单元
进行压缩处理。

进一步,第一压缩处理模块102用于对所述待压缩处理的数据帧内部的数
据单元进行压缩处理后得到参考值和命令单元。

进一步,第一压缩处理模块102具体用于将由统计得出的帧内部连续且相
同的数据单元的数目与一预设值比较,判断所述连续且相同的数据单元的数目
是否大于或等于所述预设值;如果是,则对所述连续且相同的多个数据单元进
行处理后得到的命令单元包括用于表示压缩类型的命令类型信息、用于表示所
述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相
同的多个数据单元的数目信息;如果否,对所述连续且相同的多个数据单元或1
个数据单元进行处理得到的命令单元包括用于表示非压缩类型的命令类型信
息、用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地
址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息。

图11为本发明另一实施例一种可编程逻辑器件的配置数据流压缩处理系统
的模块图,请参考图11,还包括第二压缩处理模块103,第二压缩处理模块103
用于用于对所述配置数据流中的帧单元进行压缩处理。

图12本发明实施例一种可编程逻辑器件的配置数据流解压缩处理系统的模
块图,请参考图12:

一种数据解压缩处理系统,包括待解压缩处理数据获取模块121和第一解
压缩模块122,待解压缩处理数据获取模块121用于获取配置数据流中待解压缩
处理的数据帧,第一解压缩模块122用于对所述待解压缩数据帧内部的数据单
元进行解压缩处理。

进一步,第一解压缩模块122具体用于获取所述待解压缩处理的数据帧内
部的命令单元和参考值;根据所述命令单元和参考值对所述待解压缩处理的数
据帧内部的数据单元进行解压缩处理。

进一步,第一解压缩模块122具体用于获取所述命令单元中的命令类型信
息;如果所述命令单元中的命令类型信息为压缩类型,则根据所述命令单元中
用于表示所述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所
述连续且相同的多个数据单元的数目信息,将所述参考值复制到帧内的相应地
址上;如果所述命令单元中的命令类型信息为非压缩类型,则根据所述命令单
元中用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地
址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息,
将所述参考值复制到帧内的相应地址上。

图13本发明另一实施例一种可编程逻辑器件的配置数据流解压缩处理系统
的模块图,请参考图3,还包括第二解压缩模块123,第二解压缩模块123用于
对所述配置数据流中的帧单元进行解压缩处理。

以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认
定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术
人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,
都应当视为属于本发明的保护范围。

可编程逻辑器件配置数据流压缩、解压缩处理方法及系统.pdf_第1页
第1页 / 共20页
可编程逻辑器件配置数据流压缩、解压缩处理方法及系统.pdf_第2页
第2页 / 共20页
可编程逻辑器件配置数据流压缩、解压缩处理方法及系统.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《可编程逻辑器件配置数据流压缩、解压缩处理方法及系统.pdf》由会员分享,可在线阅读,更多相关《可编程逻辑器件配置数据流压缩、解压缩处理方法及系统.pdf(20页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102843142 A (43)申请公布日 2012.12.26 C N 1 0 2 8 4 3 1 4 2 A *CN102843142A* (21)申请号 201110171082.2 (22)申请日 2011.06.23 H03M 7/30(2006.01) (71)申请人深圳市国微电子股份有限公司 地址 518057 广东省深圳市南山区深圳高新 技术产业园区南区高新南一道国微研 发大楼 (72)发明人包朝伟 刘仕东 王佩宁 (74)专利代理机构深圳鼎合诚知识产权代理有 限公司 44281 代理人薛祥辉 (54) 发明名称 可编程逻辑器件配置数据流压缩、解压缩处。

2、 理方法及系统 (57) 摘要 本发明公开一种可编程逻辑器件配置数据流 的压缩、解压缩处理方法及系统,压缩方法包括获 取所述配置数据流中待压缩处理的数据帧,对所 述待压缩处理的数据帧内部的数据单元进行压缩 处理。本发明通过以上技术方案,提供一种更加高 效的可编程逻辑器件配置数据流的压缩、解压缩 处理方法及系统。 (51)Int.Cl. 权利要求书2页 说明书10页 附图7页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 10 页 附图 7 页 1/2页 2 1.一种可编程逻辑器件的配置数据流的压缩处理方法,其特征在于,包括: 获取所述配置数据流中待压缩。

3、处理的数据帧; 对所述待压缩处理的数据帧内部的数据单元进行压缩处理。 2.如权利要求1所述的方法,其特征在于,所述数据单元包括一个或多个比特值,或者 所述数据单元包括一个或多个字段值。 3.如权利要求1所述的方法,其特征在于,对所述待压缩处理的数据帧内部的数据单 元进行压缩处理后得到参考值和命令单元。 4.如权利要求3所述的方法,其特征在于,对所述待压缩处理的数据帧内部的数据单 元进行压缩处理后得到参考值和命令单元的过程具体为: 将由统计得出的帧内部连续且相同的数据单元的数目与一预设值比较,判断所述连续 且相同的数据单元的数目是否大于或等于所述预设值; 如果是,对所述连续且相同的多个数据单元进。

4、行处理后得到的命令单元包括用于表示 压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元位于帧内部的地址信 息和用于表示所述连续且相同的多个数据单元的数目信息; 如果否,对所述连续且相同的多个数据单元或1个数据单元进行处理后得到的命令单 元包括用于表示非压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元或 1个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元或1个数 据单元的数目信息。 5.如权利要求4所述的方法,其特征在于,所述预设值为大于或等于3的整数。 6.如权利要求1至5任一项所述的方法,其特征在于,还包括: 对所述配置数据流中的帧单元进行压缩处理。。

5、 7.一种可编程逻辑器件的配置数据流的解压缩处理方法,其特征在于,包括: 获取所述配置数据流中待解压缩处理的数据帧; 对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理。 8.如权利要求7所述的方法,其特征在于,对所述待解压缩处理的数据帧内部的数据 单元进行解压缩处理的过程具体为: 获取所述待解压缩处理的数据帧内部的命令单元和参考值; 根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元进行解压 缩处理。 9.如权利要求8所述的方法,其特征在于,根据所述命令单元和参考值对所述待解压 缩处理的数据帧内部的数据单元进行解压缩处理的过程具体为: 获取所述命令单元中的命令类型信息; 如。

6、果所述命令单元中的命令类型信息为压缩类型,则根据所述命令单元中用于表示所 述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个 数据单元的数目信息,将所述参考值复制到帧内的相应地址上; 如果所述命令单元中的命令类型信息为非压缩类型,则根据所述命令单元中用于表示 所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示所述 连续且相同的多个数据单元或1个数据单元的数目信息,将所述参考值复制到帧内的相应 地址上。 权 利 要 求 书CN 102843142 A 2/2页 3 10.如权利要求7至9任一项所述的方法,其特征在于,还包括: 对所述配置数据流中的帧。

7、单元进行解压缩处理。 11.一种可编程逻辑器件的配置数据流的压缩处理系统,其特征在于,包括待压缩处理 数据获取模块和第一压缩处理模块,其中, 所述待压缩处理数据获取模块用于获取所述配置数据流中待压缩处理的数据帧; 所述第一压缩处理模块用于对所述待压缩处理的数据帧内部的数据单元进行压缩处 理。 12.如权利要求11所述的系统,其特征在于,所述第一压缩处理模块用于对所述待压 缩处理的数据帧内部的数据单元进行压缩处理后得到参考值和命令单元。 13.如权利要求12所述的系统,其特征在于,所述第一压缩处理模块具体用于:将由统 计得出的帧内部连续且相同的数据单元的数目与一预设值比较,判断所述连续且相同的数。

8、 据单元的数目是否大于或等于所述预设值;如果是,则对所述连续且相同的多个数据单元 进行处理后得到的命令单元包括用于表示压缩类型的命令类型信息、用于表示所述连续且 相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元 的数目信息;如果否,对所述连续且相同的多个数据单元或1个数据单元进行处理得到的 命令单元包括用于表示非压缩类型的命令类型信息、用于表示所述连续且相同的多个数据 单元或1个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元 或1个数据单元的数目信息。 14.如权利要求11至13任一项所述的系统,其特征在于,还包括第二压缩处理模块,所 述第二压缩。

9、处理模块用于对所述配置数据流中的帧单元进行压缩处理。 15.一种可编程逻辑器件的配置数据流的解压缩处理系统,其特征在于,包括待解压缩 处理数据获取模块和第一解压缩模块,其中: 所述待解压缩处理数据获取模块用于获取所述配置数据流中待解压缩处理的数据 帧; 所述第一解压缩模块用于对所述待解压缩数据帧内部的数据单元进行解压缩处理。 16.如权利要求15所述的系统,其特征在于,所述第一解压缩模块具体用于获取所述 待解压缩处理的数据帧内部的命令单元和参考值;根据所述命令单元和参考值对所述待解 压缩处理的数据帧内部的数据单元进行解压缩处理。 17.如权利要求16所述的系统,其特征在于,所述第一解压缩模块具。

10、体用于获取所述 命令单元中的命令类型信息;如果所述命令单元中的命令类型信息为压缩类型,则根据所 述命令单元中用于表示所述连续且相同的多个数据单元位于帧内部的地址信息和用于表 示所述连续且相同的多个数据单元的数目信息,将所述参考值复制到帧内的相应地址上; 如果所述命令单元中的命令类型信息为非压缩类型,则根据所述命令单元中用于表示所述 连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示所述连续 且相同的多个数据单元或1个数据单元的数目信息,将所述参考值复制到帧内的相应地址 上。 18.如权利要求15至17任一项所述的系统,其特征在于,还包括第二解压缩模块,所述 第二解压缩模块用于。

11、对所述配置数据流中的帧单元进行解压缩处理。 权 利 要 求 书CN 102843142 A 1/10页 4 可编程逻辑器件配置数据流压缩、 解压缩处理方法及系统 技术领域 0001 本发明涉及数据处理领域,尤其涉及一种可编程逻辑器件的配置数据流的压缩、 解压缩处理方法及系统。 背景技术 0002 传统的可编程逻辑器件(programmable logic device,PLD),比如现场可编程门 阵列FPGA(Field Program Gate Array)是通过相应的配置数据流进行配置的,配置数据流 被下载到可编程逻辑器件,然后存储在配置存储单元中,最后根据配置存储单元的内容对 可编程逻辑。

12、器件进行相应的配置,从而将可编程逻辑器件构造成用户预设的特定功能的器 件。 0003 通常情况下,一个设计文件中所包含的配置数据位有上百万个甚至更多,这就需 要很大的外部存储器来存储配置数据流,同时配置数据流的下载操作也会相应地花费很多 时间。因此,为了节省存储空间和节约下载时间,压缩配置数据流是一个很有效的技术措 施。 0004 压缩一般分为有损压缩和无损压缩。,其中一个著名的的最常用的无损压缩算法 是基于字典的LZ(根据原始提出人Lempel-Ziv命名)系列。传统的FPGA开发商采用的基 本上都是基于LZ的压缩算法,LZ压缩算法主要是针对字符串或者数据串(以下简称串) 的压缩,如在一个缓。

13、冲器buffer中保存最新的被压缩的数据流,当有数据输入时,LZ算法 就查找输入数据与缓冲器的数据的匹配性,找出最长的匹配数据,然后就输出一段编码来 代替匹配的数据,编码由三部分组成,包括匹配数据串的位置,长度和紧接着匹配数据串的 最后一位的字符或者数据。传统的部分FPGA是以帧frame为单位进行配置,以帧为单位进 行压缩,即帧外部的压缩。图1为现有技术一种FPGA的示意图,包括FPGA11、可编程逻辑 单元12和帧13,FPGA11表示FPGA的一种结构,里面的每一个虚线条表示一帧(虚线条的 数目不代表任何含义,此处只是一种示意图),FPGA通过一帧一帧地完成配置。一帧数据 又会包含若干个。

14、比特或字段,根据FPGA类型和容量的不同,其包含的比特或字段个数也不 同,假设一帧数据包含的字段个数为m,相应的位数为32*m;再用大写字母W加上下脚标来 表示帧内部字段及其顺序,如图2所示,图2为现有技术一种FPGA中帧结构的示意图,用W 0 表示第一个字,W 1 表示第二个字,以此类推,最后一个字用W m-1 来表示,通常当一帧数据包含 的字段个数为m时,就说这个帧的长度为m。 0005 传统的帧外部进行压缩的方法在一定程度上考虑了FPGA本身的结构特征和编程 特点,但是没有考虑到帧内部的数据特征,因此传统的帧外部基于帧单元进行压缩的方法 存在一定的局限性,效率较低。 发明内容 0006 。

15、本发明提供一种更加高效的可编程逻辑器件的配置数据流的压缩、解压缩处理方 法及系统。 说 明 书CN 102843142 A 2/10页 5 0007 为解决上述技术问题,本发明采用以下技术方案: 0008 一种可编程逻辑器件的配置数据流的压缩处理方法,包括: 0009 获取所述配置数据流中待压缩处理的数据帧; 0010 对所述待压缩处理的数据帧内部的数据单元进行压缩处理。 0011 所述数据单元包括一个或多个比特值,或者所述数据单元包括一个或多个字段 值。 0012 对所述待压缩处理的数据帧内部的数据单元进行压缩处理后得到参考值和命令 单元。 0013 对所述待压缩处理的数据帧内部的数据单元进。

16、行压缩处理后得到参考值和命令 单元的过程具体为: 0014 将由统计得出的帧内部连续且相同的数据单元的数目与一预设值比较,判断所述 连续且相同的数据单元的数目是否大于或等于所述预设值; 0015 如果是,对所述连续且相同的多个数据单元进行处理后得到的命令单元包括用于 表示压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元位于帧内部的地 址信息和用于表示所述连续且相同的多个数据单元的数目信息; 0016 如果否,对所述连续且相同的多个数据单元或1个数据单元进行处理后得到的命 令单元包括用于表示非压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单 元或1个数据单元位于帧内部的地址。

17、信息和用于表示所述连续且相同的多个数据单元或1 个数据单元的数目信息。 0017 所述预设值为大于或等于3的整数。 0018 还包括: 0019 对所述配置数据流中的帧单元进行压缩处理。 0020 一种可编程逻辑器件的配置数据流的解压缩处理方法,包括: 0021 获取所述配置数据流中待解压缩处理的数据帧; 0022 对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理。 0023 对所述待解压缩处理的数据帧内部的数据单元进行解压缩处理的过程具体为: 0024 获取所述待解压缩处理的数据帧内部的命令单元和参考值; 0025 根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元进行 。

18、解压缩处理。 0026 根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元进行 解压缩处理的过程具体为: 0027 获取所述命令单元中的命令类型信息; 0028 如果所述命令单元中的命令类型信息为压缩类型,则根据所述命令单元中用于表 示所述连续且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的 多个数据单元的数目信息,将所述参考值复制到帧内的相应地址上; 0029 如果所述命令单元中的命令类型信息为非压缩类型,则根据所述命令单元中用于 表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示 所述连续且相同的多个数据单元或1个数据单元的数目信息。

19、,将所述参考值复制到帧内的 相应地址上。 说 明 书CN 102843142 A 3/10页 6 0030 还包括: 0031 对所述配置数据流中的帧单元进行解压缩处理。 0032 一种可编程逻辑器件的配置数据流的压缩处理系统,包括待压缩处理数据获取模 块和第一压缩处理模块,其中, 0033 所述待压缩处理数据获取模块用于获取所述配置数据流中待压缩处理的数据 帧; 0034 所述第一压缩处理模块用于对所述待压缩处理的数据帧内部的数据单元进行压 缩处理。 0035 所述第一压缩处理模块用于对所述待压缩处理的数据帧内部的数据单元进行压 缩处理后得到参考值和命令单元。 0036 所述第一压缩处理模块。

20、具体用于:将由统计得出的帧内部连续且相同的数据单元 的数目与一预设值比较,判断所述连续且相同的数据单元的数目是否大于或等于所述预设 值;如果是,则对所述连续且相同的多个数据单元进行处理后得到的命令单元包括用于表 示压缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元位于帧内部的地址 信息和用于表示所述连续且相同的多个数据单元的数目信息;如果否,对所述连续且相同 的多个数据单元或1个数据单元进行处理得到的命令单元包括用于表示非压缩类型的命 令类型信息、用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址 信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息。 。

21、0037 还包括第二压缩处理模块,所述第二压缩处理模块用于对所述配置数据流中的帧 单元进行压缩处理。 0038 一种可编程逻辑器件的配置数据流的解压缩处理系统,包括待解压缩处理数据获 取模块和第一解压缩模块,其中: 0039 所述待解压缩处理数据获取模块用于获取所述配置数据流中待解压缩处理的数 据帧; 0040 所述第一解压缩模块用于对所述待解压缩数据帧内部的数据单元进行解压缩处 理。 0041 所述第一解压缩模块具体用于获取所述待解压缩处理的数据帧内部的命令单元 和参考值;根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单元进行 解压缩处理。 0042 所述第一解压缩模块具体用于。

22、获取所述命令单元中的命令类型信息;如果所述命 令单元中的命令类型信息为压缩类型,则根据所述命令单元中用于表示所述连续且相同的 多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元的数目 信息,将所述参考值复制到帧内的相应地址上;如果所述命令单元中的命令类型信息为非 压缩类型,则根据所述命令单元中用于表示所述连续且相同的多个数据单元或1个数据单 元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的 数目信息,将所述参考值复制到帧内的相应地址上。 0043 还包括第二解压缩模块,所述第二解压缩模块用于对所述配置数据流中的帧单元 进行解压缩处理。 0044 。

23、本发明提供一种可编程逻辑器件的配置数据流的压缩、解压缩处理方法及系统, 说 明 书CN 102843142 A 4/10页 7 压缩方法中包括对待压缩处理的数据帧内部的数据单元进行压缩处理,通过对帧内部的数 据单元进行压缩,提高压缩效率,本发明还可以通过设置预设值,针对数据帧或帧内部数据 单元的特点,选择最佳的压缩比,因此,还具有很强的灵活性。 附图说明 0045 图1为现有技术一种FPGA的示意图; 0046 图2为现有技术一种FPGA中帧结构的示意图; 0047 图3为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法的流程图; 0048 图4为本发明实施例一种可编程逻辑器件的配置数据。

24、流压缩处理方法中帧内部 压缩方法的流程图; 0049 图5为本发明实施例对数目大于或等于该预设值的连续且相同的多个数据单元 进行处理后得到的命令单元的结构示意图; 0050 图6为本发明实施例对数目小于该预设值的连续且相同的多个或1个数据单元进 行处理后得到的命令单元的结构示意图; 0051 图7为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法中帧内部 压缩数据的示意图; 0052 图8为本发明实施例一种可编程逻辑器件的配置数据流解压缩处理方法的流程 图; 0053 图9为本发明实施例一种可编程逻辑器件的配置数据流解压缩处理方法中帧内 部解压缩数据的示意图; 0054 图10为本发明实。

25、施例一种可编程逻辑器件的配置数据流压缩处理系统的模块 图; 0055 图11为本发明另一实施例一种可编程逻辑器件的配置数据流压缩处理系统的模 块图; 0056 图12本发明实施例一种可编程逻辑器件的配置数据流解压缩处理系统的模块 图; 0057 图13本发明另一实施例一种可编程逻辑器件的配置数据流解压缩处理系统的模 块图。 具体实施方式 0058 下面通过具体实施方式结合附图对本发明作进一步详细说明。 0059 一种可编程逻辑器件的配置数据流的压缩处理方法,包括: 0060 获取所述配置数据流中待压缩处理的数据帧; 0061 对所述待压缩处理的数据帧内部的数据单元进行压缩处理。 0062 图3。

26、为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法的流程图, 请参考图3,本实施例以FPGA配置数据流的压缩方法为例: 0063 S31、利用设计文件产生数据流; 0064 S32、判断是否可以进行帧外部基于帧单元的压缩处理,若是,则执行步骤S33,否 则执行步骤S34; 说 明 书CN 102843142 A 5/10页 8 0065 S33、对数据流进行帧外部基于帧单元的压缩处理,帧外部帧单元的压缩结束后, 执行S34; 0066 S34、对数据流进行帧内部基于帧内部数据单元的压缩处理; 0067 S35、将压缩结果存储到压缩数据流存储器中。 0068 本实施例优选的是先进行帧外部压。

27、缩,再进行帧内部压缩,本发明还适用于先进 行帧内部压缩,再进行帧外部压缩的方法。 0069 其中步骤S34对数据流进行帧内部压缩的具体过程包括: 0070 将由统计得出的帧内部连续且相同的数据单元的数目与一预设值比较,判断该连 续且相同的数据单元的数目是否大于或等于所述预设值;如果是,则判断结果为满足压缩 条件,对满足压缩条件的连续且相同的多个数据单元进行压缩处理。 0071 根据数据流中的数据类型不同,数据单元可以是比特值或字段值或其他,其压缩 和解压缩方法相类似。本发明不局限于以一个比特值或一个字段值为数据单元进行压缩, 还可以以多个比特值或多个字段值为一个数据单元进行压缩,预设值为大于或。

28、等于3的整 数。 0072 图4为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法中帧内部 压缩方法的流程图,请参考图4,本实施例中一个数据单元为帧内的一个字段值: 0073 S341、将数据流加载到缓冲器A中,优选的,缓冲器A的大小比一帧的配置数据长 度多出一位,用作标志位,优选的标志位为缓冲器A的第一位; 0074 S342、判断数据流是否进行过帧外部基于帧单元的压缩处理,本实施例可以通过 帧外部基于帧单元的压缩处理后,帧所附带的帧压缩命令或者其他标志来判断,若是,则执 行S343,否则执行S344; 0075 S343、在步骤S341中缓冲器A所预留的标志位,即缓冲器A的第一位上写。

29、进“1” 标志,执行S345; 0076 S344、在步骤S341中缓冲器A所预留的标志位,即缓冲器A的第一位上写进“0” 标志,执行S345; 0077 S345、将缓冲器A中的数据流复制到同样大小的缓冲器B中,复制完之后缓冲器A 继续接收新的数据流,缓冲器B除了第一位之外,其他的都是经过编址的,其中基本的编址 单元是一个字段,即32位为一个编址单位,比如:缓冲器B大小为10632位(bits),有106 个字段,对每个字段进行编址,地址是1-106,用二进制表示是00000001-01101010,用十六 进制表示是00-6A; 0078 S346、以一个字段值为一个数据单位,处理的顺序按。

30、照缓冲器B的地址由低到高 来进行,依次处理每一个字段,统计连续且相同的该字段值的数目,将其与一预设值比较, 判断连续且相同的该字段值的数目是否大于或等于该预设值,如果是,则执行S347,否则, 执行S348; 0079 S347、对数目大于或等于该预设值的连续且相同多个字段值进行处理后得到以下 形式:命令单元+参考值。其中命令单元包括用于表示压缩类型的命令类型信息、用于表示 所述连续且相同的多个字段值位于帧内部的地址信息和用于表示所述连续且相同的多个 字段值的数目信息,执行S349; 0080 图5为本发明实施例对数目大于或等于该预设值的连续且相同的多个数据单元 说 明 书CN 1028431。

31、42 A 6/10页 9 进行处理后得到的命令单元的结构示意图,请参考图5,本实施例的命令单元为命令字段, 这个命令字段的宽度可以是32bit,其中第一部分内容用于表示压缩类型的命令类型信息, 可以用1个二进制位“0”来标识,表示该命令类型的为压缩类型,第二部分内容用于表示所 述连续且相同的多个字段值位于帧内部的地址信息,地址信息指一帧数据内每个字段所在 的顺序或者编号,也可以是这些被压缩的连续且相同的多个字段值中的第一个字段值的地 址信息,由于这些字段是连续的,因此知道第一个字段的地址信息之后,可以推算其他字段 的地址信息;第三部分内容用于表示所述连续且相同的多个字段值的数目信息。 0081。

32、 S348、对数目小于该预设值的连续且相同多个字段值或1个字段值进行处理后得 到以下形式:命令单元+参考值,命令单元包括用于表示非压缩类型的命令类型信息、用于 表示所述连续且相同的多个数据单元或1个数据单元位于帧内部的地址信息和用于表示 所述连续且相同的多个数据单元或1个数据单元的数目信息,执行S349; 0082 图6为本发明实施例对数目小于该预设值的连续且相同的多个或1个数据单元进 行处理后得到的命令单元的结构示意图,请参考图6,本实施例的命令单元为命令字段,这 个命令字的宽度可以是32bit,其结构、格式和含义类似于上述对数目大于或等于预设值的 连续且相同的多个数据单元进行压缩处理后得到。

33、的命令单元,其中第一部分内容用于表示 非压缩类型,最高位,即第31位用1个二进制位“1”来标识,表示该命令类型为非压缩类 型,第二部分内容用于表示数目小于该预设值的连续且相同的多个字段值或1个字段值位 于帧内部的地址信息,地址信息指一帧数据内每个字段所在的顺序或者编号,也可以是这 些字段中第一个字段的地址信息,由于这些字段是连续的,因此,知道第一个字段的地址信 息之后,可以推算其他字段的地址信息;第三部分内容用于表示所述连续且相同的多个字 段值或1个字段值的数目信息。 0083 图7为本发明实施例一种可编程逻辑器件的配置数据流压缩处理方法中帧内部 压缩数据的示意图,请参考图7,假设一帧数据的长。

34、度m106,根据命令字段的定义,其地 址编码从0000到0069,指向相应的字段,而每个字段的内容也被数据填满了,这里的地址 和字段值都是用十六进制表示,字段值的省略部分表示相同的若干个字段值,而地址的省 略部分表示递增的若干个地址值,第0个字段值为:0000_0000;第1个字段值到第15个 字段值相同,为1111_1111;第16个字段值到第20字段值分别为:2222_2222,3333_3333, 4444_4444,4444_4444,5555_5555;第21个字段值到第102个字段值相同,为6666_6666; 第103个字段值到105个字段值分别为:7777_7777,6666_。

35、6666,6666_6666,假设预设值 为10,假设本实施例对数目大于或等于预设值的连续且相同的多个字段值进行压缩处理 后得到的命令单元为CMD1,对数目小于预设值的连续且相同的多个或1个字段值进行处 理得到的命令单元为CMD2,则处理过程为:由于第0个字段值的数目为1,所以将其处理为 CMD2,0000_0000,即命令单元和参考值,参考值为该字段值本身,第1个字段值到第15个字 段值连续且相同,连续且相同的字段值的数目为15,大于预设值,所以将其压缩为:CMD1, 1111_1111,即命令单元和参考值,参考值为该字段值本身,同理,剩下的字段值分别处理 为:CMD2,2222_2222,。

36、3333_3333,4444_4444,4444_4444,5555_5555;CMD1,6666_6666; CMD2,7777_7777,6666_6666,6666_6666。 0084 具体化CMD1和CMD2,就可以得到:8000_0001,0000_0000,0002_000E,1111_1111, 8010_0005,2222_2222,3333_3333,4444_4444,4444_4444,5555_5555,0015_0056, 说 明 书CN 102843142 A 7/10页 10 6666_6666,8067_0003,7777_7777,6666_6666,666。

37、6_6666。 0085 在这个实施例中,可以将一帧的106个字段压缩成16个字段,提高了数据压缩的 效率。 0086 数目小于预设值的多个连续且相同的数据单元,即当连续且相同的数据单元的数 目为大于或等于2的整数,且该数目小于预设值,这种情况其命令单元包括用于表示非压 缩类型的命令类型信息、用于表示所述连续且相同的多个数据单元位于帧内部的地址信息 和用于表示所述连续且相同的多个数据单元的数目信息,其中,用于表示所述连续且相同 的多个数据单元位于帧内部的地址信息包括各个数据单元位于帧内部的地址信息,或者是 这些相同数据单元中的第一个数据单元位于帧内部的地址信息,用于表示所述连续且相 同的多个数。

38、据单元的数目信息为这些相同数据单元的数目,如图7中的第18个字段值和 第19字段值:4444_4444,4444_4444;数目小于预设值的1个数据单元,即连续且相同的数 据单元的数目为1,且该数目小于预设值,这种情况其命令单元包括用于表示非压缩类型 的命令类型信息、用于表示该数据单元位于帧内部的地址信息和用于表示该数据单元的数 目信息,其中该数据单元的数目信息为1,如图7中的第16个字段2222_2222,第17字段 3333_3333。 0087 S349、将步骤S347和S348的处理结果放到缓冲器C中,直到缓冲器B的数据完全 被处理,再将缓冲器C的内容输出。 0088 本实施例通过命令。

39、单元中的命令类型信息,即用于表示压缩类型的命令类型信息 和用于表示非压缩类型的命令类型信息,在解压缩时可以通过识别命令单元中的命令类型 信息,方便地区分经过帧内部压缩和未经过帧内部压缩的数据,优先的,在解压缩时利用现 有的技术,只需增加两根译码线,就可以区分经过帧内部压缩和未经过帧内部压缩的数据。 0089 本实施例还包括一种数据解压缩处理方法,图8为本发明实施例一种可编程逻辑 器件的配置数据流解压缩处理方法的流程图,请参考图8: 0090 S81、获取待解压缩处理的数据流,放入缓冲器D中; 0091 S82、对数据帧进行解析,判断是否经过帧内部数据单元的压缩处理,若是,则执行 S83,否则执。

40、行步骤S84; 0092 S83、对帧内部的数据单元进行解压缩处理,结束帧内部解压缩处理之后,执行 S84; 0093 S84、将经过帧内部解压缩处理和未经过帧内部解压缩处理的数据帧放入缓冲器D 中,并检测缓冲器D中第一位的值是否为“1”,若是则执行S85,否则执行S86; 0094 S85、进行帧外部基于帧单元的解压缩处理,执行S87; 0095 S86、不进行帧外部基于帧单元的解压缩处理,执行S87; 0096 S87、将步骤S85和S86得到的数据流下载到FPGA中; 0097 本实施例优选的是先进行帧内部解压缩,再进行帧外部解压缩,本发明还适用于 先进行帧外部解压缩,再进行帧内部解压缩。

41、的方法。 0098 图9为本发明实施例一种可编程逻辑器件的配置数据流解压缩处理方法中帧内 部解压缩数据的示意图,请参考图9,比如接收到的经过帧内部压缩的一帧数据如下: 0099 8000_0001,0000_0000,0002_000E,1111_1111,8010_0005,2222_2222, 3333_3333,4444_4444,4444_4444,5555_5555,0015_0056,6666_6666,8067_0003, 说 明 书CN 102843142 A 10 8/10页 11 7777_7777,6666_6666,6666_6666。 0100 其中8000_0001。

42、、8010_0005和8067_0003为CMD2,0002_000E和0015_0056为 CMD1。 0101 当接收到8000_0001时,就通知解压电路直接将0000_0000放到缓冲器D相应 的地址上,接收到0002_000E时,就通知解压电路接下来要对连续的多个相同字段进行解 压缩操作,紧接着根据0002_000E中用于表示该多个相同字段位于帧内部的地址信息和 用于表示该多个相同字段的数目信息,将相应数目的1111_1111复制到帧内的相应地址 上,接下来的解压缩操作依次类推,得到一帧数据:第0个字段值为0000_0000;第1个字 段值到第15个字段值数据相同,为1111_111。

43、1;第16个字段值到第20个字段值分别为: 2222_2222,3333_3333,4444_4444,4444_4444,5555_5555;第21个字段值到第102个字段 值相同,为6666_6666;第103个字段值到第105个字段值分别为7777_7777,6666_6666, 6666_6666。 0102 目前业界典型的一种FPGA配置数据流文件压缩方法是Xilinx公司XC2V40器件 采用的帧外部基于帧单元的压缩处理方法,本实施例采用ISE10.1开发工具,用Verilog HDL作为设计的输入文件,通过ISE10.1生成标准配置流文件,将生成的标准配置流文件用 ISE10.1。

44、自带的帧外部基于帧单元的压缩算法进行压缩,获得压缩后的第一压缩数据流文 件;另外将ISE10.1生成的XC2V40配置数据流文件在采用ISE10.1自带的帧外部基于帧单 元的压缩算法进行压缩的基础上,再采用本发明帧内部数据单元的压缩方法进行压缩,获 得压缩后的第二压缩数据流文件,由上述两种压缩方法获得的压缩数据流文件的文件大小 如表1所示: 0103 表1 0104 0105 分别计算采用上述两种压缩方法所得到的压缩数据流文件的压缩比如表2所示, 压缩比指的是:用压缩后的文件大小除以原文件的大小所得结果的百分比。 0106 表2 说 明 书CN 102843142 A 11 9/10页 12 。

45、0107 0108 0109 其中压缩比提高幅度指的是:将第一压缩数据流文件的大小减去第二压缩数据流 文件的大小,再将所得到的结果除以第一压缩数据流文件的大小,所得到的百分比。 0110 由表2对比数据可见,本发明将传统的帧外部基于帧单元的压缩方法和帧内部的 压缩方法相结合所获得的压缩比,比单独使用基于帧单元的压缩方法所获得的压缩比,平 均提高了42.81。因此,本发明提出的压缩方法可以大幅度的提高FPGA配置流文件的压 缩性能。 0111 本实施例还包括一种数据压缩处理系统,图10为本发明实施例一种可编程逻辑 器件的配置数据流压缩处理系统的模块图,请参考图10: 0112 一种数据压缩处理系。

46、统包括待压缩处理数据获取模块101和第一压缩处理模块 102,待压缩处理数据获取模块101用于获取配置数据流中待压缩处理的数据帧,第一压缩 处理模块102用于对所述待压缩处理的数据帧内部的数据单元进行压缩处理。 0113 进一步,第一压缩处理模块102用于对所述待压缩处理的数据帧内部的数据单元 进行压缩处理后得到参考值和命令单元。 0114 进一步,第一压缩处理模块102具体用于将由统计得出的帧内部连续且相同的数 据单元的数目与一预设值比较,判断所述连续且相同的数据单元的数目是否大于或等于所 述预设值;如果是,则对所述连续且相同的多个数据单元进行处理后得到的命令单元包括 用于表示压缩类型的命令。

47、类型信息、用于表示所述连续且相同的多个数据单元位于帧内部 的地址信息和用于表示所述连续且相同的多个数据单元的数目信息;如果否,对所述连续 且相同的多个数据单元或1个数据单元进行处理得到的命令单元包括用于表示非压缩类 型的命令类型信息、用于表示所述连续且相同的多个数据单元或1个数据单元位于帧内部 的地址信息和用于表示所述连续且相同的多个数据单元或1个数据单元的数目信息。 0115 图11为本发明另一实施例一种可编程逻辑器件的配置数据流压缩处理系统的模 块图,请参考图11,还包括第二压缩处理模块103,第二压缩处理模块103用于用于对所述 说 明 书CN 102843142 A 12 10/10页。

48、 13 配置数据流中的帧单元进行压缩处理。 0116 图12本发明实施例一种可编程逻辑器件的配置数据流解压缩处理系统的模块 图,请参考图12: 0117 一种数据解压缩处理系统,包括待解压缩处理数据获取模块121和第一解压缩模 块122,待解压缩处理数据获取模块121用于获取配置数据流中待解压缩处理的数据帧,第 一解压缩模块122用于对所述待解压缩数据帧内部的数据单元进行解压缩处理。 0118 进一步,第一解压缩模块122具体用于获取所述待解压缩处理的数据帧内部的命 令单元和参考值;根据所述命令单元和参考值对所述待解压缩处理的数据帧内部的数据单 元进行解压缩处理。 0119 进一步,第一解压缩。

49、模块122具体用于获取所述命令单元中的命令类型信息;如 果所述命令单元中的命令类型信息为压缩类型,则根据所述命令单元中用于表示所述连续 且相同的多个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单 元的数目信息,将所述参考值复制到帧内的相应地址上;如果所述命令单元中的命令类型 信息为非压缩类型,则根据所述命令单元中用于表示所述连续且相同的多个数据单元或1 个数据单元位于帧内部的地址信息和用于表示所述连续且相同的多个数据单元或1个数 据单元的数目信息,将所述参考值复制到帧内的相应地址上。 0120 图13本发明另一实施例一种可编程逻辑器件的配置数据流解压缩处理系统的模 块图,请参考图3,还包括第二解压缩模块123,第二解压缩模块123用于对所述配置数据流 中的帧单元进行解压缩处理。 012。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 基本电子电路


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1