[发明专利]自适应游程编码的测试数据压缩及解压方法在审
申请号: | 202210256585.8 | 申请日: | 2022-03-16 |
公开(公告)号: | CN114614833A | 公开(公告)日: | 2022-06-10 |
发明(设计)人: | 程一飞;邓博文;赵晓静;吴海峰;吴心竹 | 申请(专利权)人: | 程一飞 |
主分类号: | H03M7/46 | 分类号: | H03M7/46 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 246000 安徽省安庆*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 自适应 游程 编码 测试 数据压缩 解压 方法 | ||
1.一种自适应游程编码的测试数据压缩及解压方法,包括:
A.压缩步骤:
(A1)构建训练用编码表:
(1.1)所述训练用编码表包含以下字段:
组号:以一个十进制数k表示;
游程长度:以一个十进制数L表示;
0游程前缀:以一组由若干个0和1个1组成的二进制代码表示;
1游程前缀:以一组由若干个1和1个0组成的二进制代码表示;
后缀:以一组二进制代码表示;
0游程码字:以一组二进制代码表示;所述0游程码字由0游程前缀和后缀连续排列而成;
1游程码字:以一组二进制代码表示;所述1游程码字由1游程前缀和后缀连续排列而成;
所述训练用编码表中的记录按照游程长度L递增排列,并编组,组号k升序排列,游程长度最小为1,组号最小为1;
(1.2)在所述码表中,第k组包含2k条记录,第k组0游程前缀由k个0和一个1组成,第k组1游程前缀由k个1和一个0组成,第k组后缀由最小的k位二进制数至最大的k位二进制数依次排序;
(A2)对原始测试数据进行预处理,填充无关位,得到双游程序列;
(A3)通过步骤(A2)所得双游程序列,获得对应游程长度序列,依次用后一个游程长度减去前一个游程长度得到一个差值序列,找出差值序列中出现频率最高的差值M,将差值M设为最优值;
(A4)构建压缩用编码表
将训练用编码表中每条记录的游程长度全部减1,其余部分保持不变,获得压缩用编码表;
(A5)对步骤(A2)所得数据按位进行读取,得到第一个游程,记录其游程类型、游程长度;查压缩用编码表得到一个码字并加入压缩后数据队列;
(A6)继续读取数据得到当前游程,若当前游程与前一游程的长度差值为M,则根据当前游程类型得到特殊码字并加入压缩后数据队列;若当前游程与前一游程的长度差值不为M,则根据当前游程长度、游程类型查压缩用编码表得到码字并加入压缩后数据队列;
若当前游程长度减去前一游程长度差值为M,且当前游程为0游程,则当前游程记为特殊码字010;
若当前游程长度减去前一游程长度差值为M,且当前游程为1游程,则当前游程记为特殊码字100;
(A7)重复步骤(A6),直到所有游程编码完成,编码后的数据即为压缩后的数据。
2.如权利要求1所述的自适应游程编码的测试数据压缩及解压方法,其特征在于,还包括:
B.解压步骤:
(B1)按位读取待解压数据,直至得到一个0游程或1游程,所得游程即为前缀,记录游程类型和前缀长度,按所记录的前缀长度计算后缀长度并读取相应位数的数据为后缀;
(B2)判定步骤(B1)所得后缀是否为特殊码字的后缀;
若否,则在步骤(B1)所得后缀的高位添加一个1,得到一个新的二进制数,将其转换为十进制数,再减去2,得到当前游程长度,步骤(B1)所得游程类型为当前游程类型,依据当前游程类型、当前游程长度还原出一个游程作为解压后游程,记录其长度为Lx;
若是,则,当前解压后游程长度依据前一个解压后游程的长度和差值M确定,具体当前游程长度=前一游程长度Lx+M;当前解压后游程类型与步骤(B1)所得游程类型相同;依据所得游程类型、游程长度还原出一组游程作为解压后游程;
将所得解压后游程加入解压数据;
(B3)重复步骤(B1)(B2)直至解压缩完成,得到完整的解压数据用于芯片测试。
3.如权利要求2所述的自适应游程编码的测试数据压缩及解压方法,其特征在于,所述解压步骤的程序实现方法包括:
(C1)配置解码器,解码器包括一个有限状态机(FSM)、一个k+1位计数器、一个log2(k+1)位计数器、1个m位寄存器和一个异或门;
(C2)解压流程:
a)令en=1,FSM接收bit_in的数据;inc2置为高电平;bit_in的首位发送给flag,Log2(k+1)位计数器加1,此时v为低电平,输出无效;
b)FSM继续从bit_in接收数据,inc2为高电平,每传入一位Log2(k+1)位计数器加1,同时与flag值同或,当bit_in与 flag同或值为0时,前缀输入结束;
c)将后缀部分从counter_in移入k+1位计数器,shift和dec2置为高电平,即每移入一位数据,Log2(k+1)位计数器减1,直到Log2(k+1)位计数器为空,rs2为1,后缀输入结束;
d)若此时k+1位计数器中的值为10(二进制),v置为低电平,输出无效,c置为高电平,控制m位寄存器输入输出,再根据差值M的值,FSM向m位寄存器移入/移出M个0,再执行步骤(f);
e)m位寄存器重置,FSM通过d输出0到m位寄存器;dec1置为高电平,k+1位计数器每次减1,输出一个0,直到k+1位计数器值为2,rs1为1;最后输出一个1;
f)将v置为高电平,表示输出有效,将m位寄存器的数据依次与flag进行异或的结果输出;
g)重复步骤a)至f),直到解压完毕。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于程一飞,未经程一飞许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210256585.8/1.html,转载请声明来源钻瓜专利网。