[0033] 以下结合附图对本发明的具体实施方式做进一步说明。
[0034] 本发明的基于间隔划分的数据压缩与解压缩方法,包括以下步骤:
[0035] 压缩步骤:
[0036] (1)依次按位读取二进制原始数据,得到一个0游程或1游程;记录该游程类型,同时将该游程记为一个划分;
[0037] (2)若步骤(1)所得划分的长度为奇数,则将所得划分的左边第1位去掉,得到间隔划分基础码;若步骤(1)所得划分的长度为偶数,则将该划分记为间隔划分基础码;同时将步骤(1)所得划分长度的奇偶性记为奇偶标志,奇偶标志用1bit表示,该位为1表示划分长度为奇数,该位为0表示划分长度为偶数;
[0038] (3)对步骤(2)所得间隔划分基础码,从第1位开始,每隔1位取1位组成间隔划分码,并将该间隔划分码的长度记为十进制数L;
[0039] (4)计算最终编码;
[0040] (4.1)将步骤(3)所得十进制数L加1;
[0041] (4.2)将步骤(4.1)所得结果转换成其对应的二进制形式代码串;
[0042] (4.3)去除步骤(4.2)所得二进制形式代码串的最左位;
[0043] (4.4)计算步骤(4.3)所得结果之长度为十进制数G;
[0044] (4.5)若步骤(1)所得游程类型为0游程,则生成由G个0和1个1组成的分隔符串;若步骤(1)所得游程类型为1游程,则生成由G个1和1个0组成的分隔符串;
[0045] (4.6)将步骤(2)所得奇偶标志位作为最终编码的第一位,再将步骤(4.5)所得分隔符串和步骤(4.3)所得代码串逐位交替组建最终编码,所述分隔符串的各位依次放在最终编码的偶数位,所述代码串的各位依次放在最终编码的奇数位(第一位除外);
[0046] (5)重复步骤(1)至步骤(4),所得最终编码序列即为压缩后的数据。
[0047] 下面通过一个实例来说明本编码方法,假设原始测试数据为00000000001111111100000010000010000000000000001101000000001,共59b。若采用FDR编码,其对应划分分别为:00000000001 1 1 1 1 1 1 1 0000001 000001 0000000000000001 1 01 000000001,编码为110100 00 00 00 00 00 00 00 110000 1011 11100001 00 01,共102b。
[0048] 以下用本发明方法对原始测试数据进行运算,可依次获得下面结果:
[0049] 表1编码过程表
[0050]
[0051] 分析最后一行的编码可知,最终经过本方法得到的编码总长度为46b。
[0052] 需要说明的是,在本方法中,基于某一个游程所产生的划分,该划分的长度始终为该游程的长度加1。即:对于0游程,其末尾存在一个游程结束标志1,对于1游程,其末尾存在一个游程结束标志0;该游程结束标志不计入游程长度,但计入划分长度。
[0053] 特殊情况的处理:对于原始数据的结尾,可能出现不能构成游程的情形,例如结尾为1个0、1个1、若干个连续的0、若干个连续的1等情形。出现此种情况,则在所获得的编码后面加上游程结束标志,让其结尾构成一个游程。例如最后得到的结果是111111,则在其后添加1位0,变成1111110;例如得到得到的结果是00000,则添加1位1,得到000001。经过处理后,本发明能够连续工作完成压缩编码。在后续的解码步骤,能够解码得到原始的结尾数据以及附加的游程结束标志,而在芯片测试过程中,对测试集数据长度是有要求的,因而在读取测试数据时,最后附加的游程结束标志不被读入,因而不影响测试结果。
[0054] 解压设计
[0055] 由编码码字表(表1)可知,间隔划分码长度L等于1+所有偶数位部分组成的二进制数换算为十进制再减1,即L=(1t)2-1。如间隔划分码长度L=6的0游程编码为01011,提取偶数位部分得到11,则(111)2-1=7-1=6,又如L=8的1游程编码为1010110,提取偶数位部分得到001,则(1001)2-1=9-1=8。因此可以使用一个特殊的K+1位计数器控制输出序列的长度。该计数器的初值置为1,当编码输入时,将1和编码偶数位部分依次向高位移位得到一个k+1位二进制数。通过该计数器减1操作控制输出序列的长度,直到该计数器的值为十进制1(二进制01时)输出结束。
[0056] 输入编码的第2位决定输出游程的类型,其值为0表示需要输出的是0游程,其值为1表示需要输出的是1游程。
[0057] 此于上述分析,我们设计一个由一个FSM(有限状态机)、一个K+1位计数器、和一个异或门构成的解码器,该解码器结构简单,独立于被测电路和测试数据集并且大小可变,解码器结构框图见图1,其中的信号名称及其对应功能描述见表2。
[0058] 下面结合图1、图2及解码器中信号及表2介绍本方法解码基本过程。
[0059] a)初始化:置en=1;置V为1;置rs为1;置shift为0;置data为1表示解码准备好;
[0060] b)接收b_in的一位数据(奇偶标志),若数据为1,则data输出一位0,若数据为0,则不做处理;
[0061] c)继续接收b_in的一位数据,并在FSM内部保存该数据,记为s,同时通过F输出该值;继续接收b_in的一位数据并从c_in移入(k+1)位计数器,shift置1;
[0062] d)若data为0,则data与F异或得到out输出,否则不处理;
[0063] e)继续接收b_in的一位数据,若其值与s相同,转f),若其值与s不相同,转g);
[0064] f)继续接收b_in的一位数据并从c_in移入(k+1)位计数器,shift保持不变;转e);
[0065] g)(k+1)位计数器进行减法操作。(k+1)位计数器每减一,data输出00,直到(k+1)位计数器值为2。最后data输出01;
[0066] h)data与F异或得到out;
[0067] i)重复a)到h)直到所有数据解码结束。
[0068] 步骤a)到h)用流程图表示见图2.
[0069] 表2解码器中信号及其对应功能
[0070]
[0071] 需要说明的是,本领域技术人员可依据本发明所提供的压缩方法自行设计多种解压缩方法,本发明的具体实施方式包括但不局限于上述实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但仍然落入本发明的保护范围。