发明名称 基于二次异或运算的测试数据压缩与解压缩方法
摘要 本发明提供了一种基于二次异或运算的测试数据压缩与解压缩方法,能够减少划分数目,提高最短游程长度,从而进一步提高压缩率。本发明所提供的方法通过相邻位异或将连续01或者10序列合并成为一个码字,这样不仅减少了划分数目,而且提高了最短游程长度,从而能进一步提高压缩率。通过解码分析,该方法解码结构额外增加的硬件开销不大,并且与被测试电路无关。因此该方法具有极好的压缩率硬件开销比。
申请公布号 CN104038232B 申请公布日期 2017.02.22
申请号 CN201410195188.X 申请日期 2014.05.09
申请人 安庆师范学院 发明人 程一飞;吴琼;詹文法;吴海峰;朱世娟
分类号 H03M7/30(2006.01)I 主分类号 H03M7/30(2006.01)I
代理机构 代理人
主权项 一种基于二次异或运算的测试数据压缩与解压缩方法,包括以下步骤:A、构建码表;所述的码表包括以下字段:以L’表示的游程长度、以k表示的组号、组前缀、组后缀、由组前缀和组后缀组合而成的游程长度对应的码字,码表中的记录按照游程长度L’递增排列并编组;第k组包括2<sup>k+1</sup>条记录;在第k组的前半组,组前缀以长度为k的0游程对应的编码表示;在第k组的前半组,组后缀由最小的k位二进制数至最大的k位二进制数依次排列;在第k组的后半组,组前缀以长度为k的1游程对应的编码表示;在第k组的后半组,组后缀同样由最小的k位二进制数至最大的k位二进制数依次排列;B、编码步骤;(1)将所有测试立方首尾相连,形成数据流;(2)i=0;(3)以当前点i作为起点,获取最长能取得的0游程,将结果存储到res[0]中,并记录终点位置到pos[0]中;(4)以当前点i作为起点,获取最长能取得的1游程,将结果存储到res[1]中,并记录终点位置到pos[1]中;(5)以当前点i作为起点,获取最长能取得的01序列,将结果存储到res[2]中,并记录终点位置到pos[2]中;所述的01序列是指起始为0且0/1交替的序列,序列最后两位相同;(6)以当前点i作为起点,获取最长能取得的10序列,将结果存储到res[3]中,并记录终点位置到pos[3]中;所述的10序列是指起始为1且0/1交替的序列,序列最后两位相同;(7)取pos数组最大值所对应下标index;(8)第一次异或运算;判断res[index]类型:若res[index]为0游程,则c1为0;若为1游程,则c1为1;若为01序列,则c1为1;若为10序列,则c1为0;将c1与res[index]组成字符串,相邻位异或得到0或者1游程,结果保存在res[index]中;(9)第二次异或运算;对第(8)步处理的res[index]进行类型判断:若res[index]为0游程,则c2为0;若为1游程,则c2为1;将c2与res[index]组成字符串,相邻位异或得到0游程,记录c2及游程长度;(10)通过游程长度査A步骤所得的码表获取对应的码字;(11)输出c2、c1和码字;(12)将i置为pos[index]+1;(13)重复(3)-(12)直到数据编码完成;C、将B步骤所得数据编码传送至被测芯片;D、解码步骤;①被测芯片的解码器读取一个二进制数,作为游程类型代码c2;②继续读取一个二进制数,作为字符串类型代码c1;③读取一个连续的0游程或1游程作为组前缀,根据得到的组前缀确定组后缀的位数,并读取组后缀,取二进制数1和组前缀起始位以及组后缀组成一个二进制数,转换为十进制,再减2得到当前目标数据流长度L;④若c2=0且c1=0,则输出一个长度为L的0游程;若c2=0且c1=1,则输出一个长度为L的1游程;若c2=1且c1=0,则输出一个长度为L的10序列;若c2=1且c1=1,则输出一个长度为L的01序列;⑤重复上述①‑④步骤直到解码完成,还原得到完整的数据流。
地址 246133 安徽省安庆市宜秀区集贤北路1138号