数据压缩和解压方法及装置

文档序号:32806629发布日期:2023-01-04 01:01阅读:63来源:国知局
数据压缩和解压方法及装置

1.本公开涉及数据处理和数据压缩技术领域,尤其涉及一种数据压缩和解压方法及装置。


背景技术:

2.在数据处理、传输、存储等领域,对数据的压缩都有需求。由于应用场景的不同,对数据压缩的需求也不同,例如,要求数据在压缩并解压后不损失任何数据信息时,则对压缩比例,压缩解压的效率等要求放宽。对于压缩比有极高要求时,则必然会牺牲数据质量,即解压后,数据有部分信息特征丢失。对压缩解压的效率有极高要求时,如要求完全实时进行,则会牺牲一定的数据质量和一定的压缩比。
3.目前的压缩方法多以离线计算为主,且压缩方法对计算力有一定需求,例如,根据数据特征同时使用多种数据压缩方法。但是,在实时数据传输场景,如果没有用于压缩解压数据的计算力支持条件,即便能接受一定的数据质量损失,也不能进行有效的压缩及解压。此外,对于高速数字变换器,如模拟数字变换器adc,数字模拟变换器dac,与数据源之间的数据传递,往往使用并行数据总线,但随着数据分辨率的提升,数据的位宽越宽,不仅传输时相互之间串扰大,在电路版图设计时,占用面积大,占用芯片io数量多。


技术实现要素:

4.针对上述技术问题,本公开提供一种数据压缩和解压方法及装置,用于至少部分解决上述技术问题。
5.基于此,本公开第一方面提供一种数据压缩方法,包括:定义压缩后的数据格式,数据格式包括数据区和标志位区;将待压缩数据当前数据帧和上一数据帧进行比较,确定数据变化的最高位;将最高位对应的位数表述为预设进制后存入标志位区,作为当前数据帧的标志位;将当前数据帧从数据变化的最高位向低位截取预设位宽的数据存入数据区,得到压缩数据;其中,预设位宽等于数据区的位宽。
6.根据本公开的实施例,数据区和标志位区的位宽之和等于待压缩数据的预设总位宽。
7.根据本公开的实施例,对当前数据帧和上一数据帧进行异或操作,确定数据变化的最高位。
8.根据本公开的实施例,在当前数据帧和上一数据帧相同的情况下,将上一数据帧对应的标志位数值减数据位宽,作为当前数据帧的标志位。
9.根据本公开的实施例,通过硬件描述语言或数字门电路对待压缩数据进行压缩。
10.根据本公开的实施例,数据区位于高位区,标志位区位于低位区;或者数据区位于低位区,标志位区位于高位区。
11.本公开第二方面提供一种数据压缩装置,包括:定义模块,用于定义压缩后的数据格式,数据格式包括数据区和标志位区;对比模块,用于将待压缩数据当前数据帧和上一数
据帧进行比较,确定数据变化的最高位;第一填充模块,用于将最高位对应的位数表述为预设进制后存入标志位区,作为当前数据帧的标志位;第二填充模块,用于将当前数据帧从数据变化的最高位向低位截取预设位宽的数据存入数据区,得到压缩数据;其中,预设位宽等于数据区的位宽。
12.本公开第三方面提供一种基于上述数据压缩方法的数据解压方法,包括:提取标志位区中预设进制的标志位,对预设进制的标志位进行解析,得到数据的填充位数;提取数据区中预设位宽的数据,将预设位宽的数据从填充位数指示的位置从高位到低位进行填充,对于未填充数据的低位,采用上一数据帧对应位数的数据进行填充,得到解压数据。
13.本公开第四方面提供一种基于上述数据压缩装置的数据解压装置,包括:第一提取模块,用于提取标志位区中预设进制的标志位,对预设进制的标志位进行解析,得到数据的填充位数;第二提取模块,用于提取数据区中预设位宽的数据,将预设位宽的数据从得到填充位数指示的位置从高位到低位进行填充,对于未填充数据的低位,采用上一数据帧对应位数的数据进行填充,得到解压数据。
14.本公开实施例还提供一种数据压缩及解压方法,包括:通过压缩端执行以下操作:定义压缩后的数据格式,数据格式包括数据区和标志位区;将待压缩数据当前数据帧和上一数据帧进行比较,确定数据变化的最高位;将最高位对应的位数表述为预设进制后存入标志位区,作为当前数据帧的标志位;将当前数据帧从数据变化的最高位向低位截取预设位宽的数据存入数据区,得到压缩数据;其中,预设位宽等于数据区的位宽;通过解压端执行以下操作:接收压缩端传输的压缩数据,提取标志位区中预设进制的标志位,对预设进制的标志位进行解析,得到数据的填充位数;提取数据区中预设位宽的数据,将预设位宽的数据从填充位数指示的位置从高位到低位进行填充,对于未填充数据的低位,采用上一数据帧对应位数的数据进行填充,得到解压数据。
15.根据本公开实施例提供的数据压缩和解压方法及装置,至少包括以下
16.有益效果:
17.该压缩方法基于传输总线的位宽定义数据区和标志位区,固定压缩比例,再将待压缩数据当前数据帧和上一数据帧进行比较,确定数据变化的最高位作为标志位,基于标志位从最高位向低位截取预设位宽的数据存入数据区,实现无计算力需求的条件下,实现数据的实时压缩。并且,由于数据压缩时无计算力需求,易于通过硬件描述语言或数字门电路实现,解决了现有电路版图设计时,占用面积大,占用芯片io数量多。
附图说明
18.通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
19.图1示意性示出了本公开实施例提供的数据压缩方法的流程图。
20.图2示意性示出了本公开实施例提供的数据解压方法的流程图。
21.图3示意性示出了本公开实施例提供的数据压缩装置的结构图。
22.图4示意性示出了本公开实施例提供的数据解压装置的结构图。
具体实施方式
23.为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
24.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
25.在本公开中,除非另有明确的规定和限定,术语“安装”、“相连”“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接或可以互相通讯;可以是直接连接,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
26.在本公开的描述中,需要理解的是,术语“纵向”、“长度”、“周向”、“前”、“后”、“左”、“右”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开和简化描述,而不是指示或暗示所指的子系统或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本公开的限制。
27.贯穿附图,相同的元素由相同或相近的附图标记来表示。可能导致本公开的理解造成混淆时,将省略常规结构或构造。并且图中各部件的形状、尺寸、位置关系不反映真实大小、比例和实际位置关系。另外,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。
28.类似地,为了精简本公开并帮助理解各个公开方面中的一个或多个,在上面对本公开示例性实施例的描述中,本公开的各个特征有时被一起分到单个实施例、图或者对其描述中。参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或者多个实施例或示例中以合适的方式结合。
29.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。因此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个、三个等,除非另有明确具体的限定。
30.在实现本公开实施例过程中,发明人发现一般情况下,数据特征与压缩解压需求为:第一,数据为一个模拟波形信号的数字化表示;第二,多数情况下,数据被送给dac变成一个模拟信号输出;第三,数据为自然编码,或者可恢复到自然编码状态;第四,能够用于传输数据的数据总线宽度固定,但低于数据的原始位宽;第五,不提供实时的数据压缩、解压计算力,但可以提供简单的数字门电路和其组合。
31.基于这些需求分析可知,本公开提供的数据压缩方法需要实现以下功能:
32.第一,数据变化较为平稳。因为对模拟信号的一个数字化表示,每个数据描述模拟
信号上的一个点,且前后两个数据是信号上连续位置的两个点数据,考虑到信号带宽与dac采样率要符合采样定理,所以数据变化较为平稳,连续。
33.第二,能够接受一定的数据损失。因为在dac的应用场景,dac输出端一般有限制带宽的滤波器,可以将因数据损失等因素带来的信号跳变通过滤波形式将其跳变变得平稳。
34.第三,压缩比可以固定,因为传输总线位宽固定,只要压缩后数据位宽与总线位宽相同即可,没必要动态变化位宽。
35.第四,能够通过数字门电路的组合实现,无需cpu类型的计算力的需求。
36.基于上述分析,本公开实施例提供一种数据压缩及解压方法,用于实现实时、固定压缩比例、免计算力需求的数据压缩及解压。
37.图1示意性示出了本公开实施例提供的数据压缩方法的流程图。
38.如图1所示,该数据压缩方法例如可以包括操作s101~操作s104。
39.在操作s101,定义压缩后的数据格式,该数据格式包括数据区和标志位区。
40.在本公开实施例,根据传输待压缩数据的预设总位宽分配数据区的位宽和标志位区的位宽,也即数据区和标志位区的位宽之和等于待压缩数据的预设总位宽。预设总位宽可以根据实际应用场景设定,本公开不做限制,例如在数据实时传输的场景下,预设总位宽可以设置为传输待压缩数据所采用的传输总线的位宽。
41.记数据区为b1,对应的位宽为w1,标志位区为b2,对应的位宽为w2,传输总线的位宽为w,传输的待压缩数据的位宽w0。压缩后的数据位宽应满足条件:w1与w2之和为w,其中,具体的宽度根据输的待压缩数据的位宽w0和数据压缩能够接收的损失决定。数据的压缩比为(w
0-w)/w,例如,传输的待压缩数据的位宽为20,总线位宽(压缩后的数据位宽)为8,则数据的压缩比为60%。数据区b1和标志位区b2的前后位置关系不限,数据区b1位于高位区,标志位区b2位于低位区,或者数据区b1位于低位区,标志位区b2位于高位区,也即数据区b1在标志位区b2之前,也可是标志位区b2在数据区b1之前,具体应用需求而定,本公开不做限制。
42.在操作s102,将待压缩数据当前数据帧和上一数据帧进行比较,确定数据变化的最高位。
43.在本公开实施例中,可以通过对当前数据帧和上一数据帧进行异或操作,确定数据变化的最高位,异或操作时,数据变化的最高位指的是当前数据大头第一个出现1的位置。异或操作可以通过电路实现。在非实时数据传输应用场景中,当前数据帧可以是当前位置的数据帧,上一数据帧可以指当前位置之前位置的数据帧。在实时数据传输应用场景中,当前数据帧可以是当前时刻传输的数据帧,上一数据帧可以指上一时刻传输的数据帧。
44.在操作s103,将最高位对应的位数表述为预设进制后存入标志位区,作为当前数据帧的标志位。
45.在本公开实施例中,可以将最高位对应的位数表述为二进制后,存入标志位区b2。
46.在操作s104,将当前数据帧从数据变化的最高位向低位截取预设位宽的数据存入数据区,得到压缩数据。
47.在本公开实施例中,预设位宽等于数据区的位宽。
48.在上述数据压缩方法的基础上,本公开实施例还提供一种数据解压方法。
49.图2示意性示出了本公开实施例提供的数据解压方法的流程图。
50.如图2所示,该数据解压方法例如可以包括操作s201~操作s202。
51.在操作s201,提取标志位区中预设进制的标志位,对预设进制的标志位进行解析,得到数据的填充位数。
52.在操作s202,提取数据区中预设位宽的数据,将预设位宽的数据从填充位数指示的位置从高位到低位进行填充,对于未填充数据的低位,采用上一数据帧对应位数的数据进行填充,得到解压数据。
53.在本公开实施例中,在解压过程中,将上一数据帧按照压缩信息进行修改,将数据区b1的内容,覆盖到由标志位区b2指示的最高位开始的位置,其他未涉及的位置数据保持不变。
54.进一步地,在解压后,可以对最大错误偏差进行复核:
55.例如,解压端上一数据帧全为0,压缩端待传递的数据全为1,则经过压缩,在解压端得到的数据区b1的最高位为1,其他低位为0,解压后数据值与原始数据值的偏差为:
[0056][0057]
即误差比例为:
[0058][0059]
进一步地,在上述实施例的基础上,在当前数据帧和上一数据帧相同的情况下,将上一数据帧对应的标志位的数值减数据位宽,作为当前时刻传输的数据的标志位。
[0060]
具体地,压缩端遇到前后两个数据一致,也即发现需要传递的标志位区b2值为0,则将标志位区b2的值重新赋值为上一次的标志位区b2的值减去数据区b1的位宽w1,数据区b1从该新位置取w1长度的数据,填充至数据区b1。
[0061]
本公开实施例提供的数据压缩及解压方法,易于通过硬件描述语言或数字门电路实现,只需要数字电路的时钟驱动,无需计算能力,且可以实现在相邻的时钟或流水线型直接完成数据的压缩。
[0062]
应当理解,上述数据压缩方法和数据解压方法可以单独执行,也可以结合在一起执行,具体根据实际应用需求选择,本公开不做限制。
[0063]
为了进一步清楚地阐述数据的压缩和解压过程,下面列举一个具体的示例对上述数据的压缩和解压过程进行详细的说明。
[0064]
设待压缩数据的位宽w0为16,需要压缩的数据的位宽w为8,根据待压缩数据的数值特点选取标志位区b2的位宽w2为4位,则数据区b1的位宽w1为4位。
[0065]
上一数据帧0:0111_aaaa_aaaa_aaaa;
[0066]
当前数据帧1:1000_bbbb_bbbb_bbbb。
[0067]
定义左边为高位,将数据0和数据1进行异或操作,发现数据变化的最高位为16位(或者0~15表示中的15),则将二级制的15,即1111写入标志位区b2。而数据区b1的内容为从15位开始向下的4位内容为1000。若数据区b1在标志位区b2之前,则压缩后的8位数据为10001111,若标志位区b2在数据区b1之前则压缩后的8位数据为11111000。
[0068]
数据解压时,将数据区b1的数据1000,从第15位开始填写,即得到1000_xxxx_xxxx_xxxx,其中,后面的xxx为上一次数据的值。
[0069]
基于同一发明构思,本公开实施例还提供一种数据压缩装置。
[0070]
图3示意性示出了本公开实施例提供的数据压缩装置的结构图。
[0071]
如图3所示,该数据压缩装置300例如可以包括定义模块310、对比模块320、第一填充模块330以及第二填充模块340。
[0072]
定义模块310,用于定义压缩后的数据格式,该数据格式包括数据区和标志位区。
[0073]
对比模块320,用于将待压缩数据当前数据帧和上一数据帧进行比较,确定数据变化的最高位。
[0074]
第一填充模块330,用于将最高位对应的位数表述为预设进制后存入所述标志位区,作为当前数据帧的标志位。
[0075]
第二填充模块340,用于将当前数据帧从数据变化的最高位向低位截取预设位宽的数据存入数据区,得到压缩数据;其中,预设位宽等于数据区的位宽。
[0076]
需要说明的是,本公开的数据压缩装置部分与本公开的实施例中数据压缩方法部分是相对应的,其具体实施细节及带来的技术效果也是相同的,在此不再赘述。
[0077]
图4示意性示出了本公开实施例提供的数据解压装置的结构图。
[0078]
如图4所示,该数据压缩装置400例如可以包括第一提取模块410以及第二提取模块420。
[0079]
第一提取模块410,用于提取标志位区中预设进制的标志位,对预设进制的标志位进行解析,得到数据的填充位数。
[0080]
第二提取模块420,用于提取数据区中预设位宽的数据,将预设位宽的数据从得到填充位数指示的位置从高位到低位进行填充,对于未填充数据的低位,采用上一数据帧对应位数的数据进行填充,得到解压数据。
[0081]
需要说明的是,本公开的数据解压装置部分与本公开的实施例中数据解压方法部分是相对应的,其具体实施细节及带来的技术效果也是相同的,在此不再赘述。
[0082]
本公开实施例还提供一种数据压缩及解压方法,该方法可以应用于对将数据实时地由数据源芯片送入数字模拟变换器(dac)的过程中,数据实时传递过程进行一定数据压缩的场景。该方法包括:通过压缩端执行操作s101~操作s104,得到压缩数据。解压端接收压缩端传输的压缩数据,执行操作s201~操作s202,对数据进行解压。在数据实时传输过程中,采用本公开实施例的数据压缩及解压方法,在节省带宽或者说节省总线宽度的情况下,实现对数据的实时压缩。
[0083]
应当理解,本公开实施例提供的数据压缩及解压方法不仅限于应用于该场景,对于其他涉及数据压缩和解压的场景同样适用。
[0084]
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1