[0033] 下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0034] 发明克服现有技术的不足,本申请人提供了一种二分区间的测试数据压缩方法,可以将若干个测试向量甚至整个测试集映射到区间(0,1),再通过多次二分区间的方法找到该位置,存储该二分区间的规律即可存储该若干个测试向量甚至整个测试集。
[0035] 具体步骤为:
[0036] 步骤1:统计原始测试数据的游程长度Y1、Y2、……,Yn,其中,Yn表示为第n个测试向量的游程长度,n为正整数,将该测试向量按0类型游程统计游程长度,直到无关位结束,若无关位与前一游程可以组成同一游程,舍弃最后一游程长度,只记前若干游程长度;否则记前所有游程长度。
[0037] 若无关位与前一游程可以组成同一游程,舍弃最后一游程长度,只记前若干游程长度;否则记前所有游程长度。以00001 00110XXX为例,前三个游程是确定的,是4、2、0,后面一个游程可以3,即最后4位是0001;如对于00001 00101XXX,前3个游程分别是4、2和1,后面的无关位不能直接与前一游程拼成同一游程,此时只记前3个游程。此过程主要是将无关位尽可能的往前一游程填充。
[0038] 不失一般性,设原始测试数据为:00000001 0001 00001 0001 00000001 000001,则游程长度分别为7、3、4、3、7和5;
[0039] 步骤2:转化成小数,默认小数的整数部分为0,步骤1所统计的游程长度依次组成小数部分,转化的小数为0.Y1Y2……Yn,0.Y1Y2……Yn属于区间(0,1),如步骤1所统计的游程长度依次为7、3、4、3、7和5,转化后的小数为0.734375,记为t,有t∈(0,1);t是代表了转化后的小数;
[0040] 步骤3:初始化区间和原始编码,记t0=0,t1=1,原始编码为空;t0是代表了初始化区间转化后的小数,t1代表了原始编码转化后的小数;
[0041] 步骤4:二分区间,令 比较t′与t大小并编码,t′代表了t0、t1之和的一半,规则为:若t≤t′,编码增加1位数据0,令t1=t′;若t>t′,编码增加1位数据1,令t0=t′,重复执行该步骤直到t=t′,例如,上述步骤2中小数t=0.734375,步骤3中初始时t0=0,t1=1,原始编码为空,首先 此时t>t′,编码在原始编码为空的基础上增加
1位数据1,即此时编码为1;重复t′与t并编码有, t≤t′,此时编码结果为
10,重复该过程,最终t的编码为101110。
[0042] 从上面可以看出原始的测试数据为00000001 0001 00001 0001 00000001 000001,压缩后的数据为101110,压缩前35位,压缩后6位。
[0043] 通过以上压缩方法,提高了测试效率,由于将若干个测试向量甚至整个测试集映射到区间(0,1),再通过多次二分区间的方法找到该位置,存储该二分区间的规律即可存储该若干个测试向量甚至整个测试集,占用空间较小,并且运算简单,非常实用。
[0044] 本发明提供一种解压上述数据的电路以及解压方法。
[0045] 解压电路如图1所示,包含3个寄存器A、寄存器B和寄存器C的寄存器组、1个计数器、第一三态门T1、第二三态门T2、1个加法器和1个控制器。
[0046] 第一三态门T1和第二三态门T2的输入端连接,寄存器C的输出端连接到第一三态门T1和第二三态门T2的输入端。第一三态门T1的输出端连接到寄存器B的输入端,第二三态门T2的输出端连接到寄存器A的输入端,第一三态门T1和第二三态门T2的控制端连接到控制器的第一信号端C1,寄存器A和寄存器B的输出端连接到加法器,加法器的输出端连接到寄存器C,寄存器C的输出端连接到计数器,计数器的输出端作为解压电路的输出端。寄存器C的置位端和移位端分别连接到控制器的第三信号端C3和第四信号端C4,控制器的第二信号端C2作为解压电路的输入端。
[0047] 控制器的第二信号端C2输入需要解压的数据,解压以后的数据从寄存器输出。控制器的第一信号端C1控制寄存器A和寄存器B,控制器的第三信号端C3和第四信号端C4分别控制寄存器C的置位和移位。
[0048] 加法器采用超前进位加法器构成,加法运算可以在一个时钟内完成。由于除以2的运算可以转化为向右移位运算完成,通过第四信号端C4控制寄存器C完成向右移位运算即可达到除以2的运算。
[0049] 需要指出的是,加法器采用超前进位加法器,对于一位加法器可以用如下逻辑函数表示:
[0050] Ci=Pi+QiCi-1 Si=AiBiCi (1)
[0051] 其中,Ai、Bi为两个加数,Si表示和,Ci-1表示来自低位的进位,Ci表示向高位的进位。Pi=AiBi为进位生成函数,Qi=Ai+Bi为进位传送函数,i为加法器的位数。
[0052] 从上式可以看出最高位的运算必须等到低位的所有位运算结束后才是有效的。即运算的延迟主要是由于进位延迟所引起的,为了提高运算速度,必须尽量减少由于进位信号逐级传递所耗费的时间。所以最好能在加法运算一开始就得到高位的进位输入信号。
[0053] 分析(1)式发现,只要AiBi=1,即Pi=1,就会产生向第i位的进位;只要Ai+Bi=1,即Qi=1,就会把第Ci-1传递到第i位。如果我们把Ci的等式展开,就会得到:
[0054] Ci=Pi+QiPi-1+QiQi-1Pi-2+QiQi-1Qi-2Pi-3+…+QiQi-1Qi-2…Q2P1+QiQi-1Qi-2…Q2Q1C0 (2)[0055] 使用(2)式来产生所有进位的加法器称为超前进位加法器,其对应的进位Ci的实现电路如图2所示。超前进位加法器相对于串行进位加法器,大大缩短了延迟时间,超前进位加法器只需五级门延迟,这样就可以确保加法运算能在一个时钟周期内完成工作,可以采用如74LS283的超前进位加法器。
[0056] 使用上述解压电路对数据进行解压的方法包括下述步骤:
[0057] 步骤1:初始化,寄存器A和寄存器B分别置为数据“0”和“1”,寄存器A和寄存器B完成累加移位运算得到0.5,此时寄存器C的值为0.5;
[0058] 步骤2:控制器的第二信号端C2自压缩数据的第一位开始依次输入压缩数据,输入压缩数据的相应位为1时,控制器C1为高电平,控制器C1控制第二三态门T2,将寄存器C的值直接传输到寄存器A,输入压缩数据的相应位为0时,控制器C1为低电平,控制器C1控制第一三态门T1,将寄存器C的值直接传输到寄存器B,重复上述加法以及移位计算,寄存器C的值更新,最终更新数值为0.Y1Y2……Yn,0.Y1Y2……Yn属于区间(0,1);
[0059] 步骤3:将寄存器C的最终更新数值移位到计数器,统计压缩前数据的游程长度依次为Y1、Y2、……Yn,Yn表示为第n个测试向量的游程长度,n为正整数,按游程长度编码输出即可得到解压以后的数据。
[0060] 以压缩后的数据101110为例说明本电路结构的工作原理。
[0061] 初始时寄存器A和寄存器B分别置为数据“0”和“1”,寄存器A和寄存器B完成累加移位运算得到0.5,此时寄存器C的值为0.5。输入信号input第一位为1到C2,控制器C1为高电平,控制器通过三态门T2将寄存器C的值直接传输到寄存器A,寄存器A的值更新为0.5,如图3中t1。重复加法和移位运算,寄存器C的值为0.75,如图3中t2,输入信号input第二位为0到C2,控制器C1为低电平,控制器通过三态门T1将寄存器C的值直接传输到寄存器B,寄存器B的值更新为0.75。重复加法和移位运算,寄存器C的值为0.625,如图3中t3,输入信号input第二位为1到C2,控制器C1为低电平,控制器通过三态门T2将寄存器C的值直接传输到寄存器A,寄存器B的值更新为0.625。一直重复此过程,寄存器C的值分别更新为t4,t5,t6。由寄存器C的值即可得到原始测试数据的数据流的顺序依次为7、3、4、3、7、5。将该数值移位到计数器,按游程长度编码输出即可得到00000001 0001 00001 0001 00000001 000001。
[0062] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。