CN102664636A - 一种变长编码、解码方法及装置 - Google Patents
一种变长编码、解码方法及装置 Download PDFInfo
- Publication number
- CN102664636A CN102664636A CN201210151574XA CN201210151574A CN102664636A CN 102664636 A CN102664636 A CN 102664636A CN 201210151574X A CN201210151574X A CN 201210151574XA CN 201210151574 A CN201210151574 A CN 201210151574A CN 102664636 A CN102664636 A CN 102664636A
- Authority
- CN
- China
- Prior art keywords
- code block
- code
- bits
- module
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000001186 cumulative effect Effects 0.000 claims description 44
- 238000004364 calculation method Methods 0.000 claims description 28
- 230000002194 synthesizing effect Effects 0.000 claims description 10
- 230000015572 biosynthetic process Effects 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 6
- 238000003786 synthesis reaction Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000053 physical method Methods 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Dc Digital Transmission (AREA)
Abstract
本发明实施例公开了一种变长编码方法,包括:将需要传输的数据按一个字节为一个码块的原则进行分块;读取码块t,计算码块t高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;根据所述码块t的低3位数据、Dt和Ht判断是否需要查询编码表;如果是,则根据Dt和Ht在所述编码表中查找所述码块t的低3位数据对应的码字,并将查找得到的码字附加在所述码块t的高5位数据之后,构成所述码块t的码字;否则,确定所述码块t的8位数据为所述码块t的码字。本发明实施例还公开了一种变长编码装置、一种变长解码方法及一种变长解码装置。
Description
技术领域
本发明涉及数字通信技术领域,尤其涉及一种变长编码、解码方法及装置。
背景技术
随着数字通信业务的增长,数据传输的速率不断提高,信号恶化问题也更加严重。直流平衡技术,为一种通过对数据进行编码,使数据流中的1与0的个数相等的技术,可以很好的解决信号恶化的问题,减少数据传输过程中的数据失真与错误,提高数据传输的可靠性。
现有实现直流平衡技术的编码方法多种多样,如8B/10B编码、9B/10B编码、6B/8B编码、7B/8B编码等。以8B/10B编码为例,编码过程具体为:将连续的8位数据分为两组,其中,高3位为第一组,进行3B/4B编码,成为一组4位的码字;低5位为第二组,进行5B/6B编码,成为一组6位的码字;将上述6位的码字附加在4位的码字后面,组成一组10位的码字,即原8位数据对应的用于传输的数据。
上述所有编码方法都有一个缺点:编码比率过高,为100%,即所有待传输的数据都要编为固定长度的代码。在实际应用中,数据流中的许多数据本身就具有直流平衡性,直接传输的可靠性很高;若此时仍将其编码为长度更长的码字进行传输,必然会加大编码比率,进而增加终端编码运算的工作量,降低编码效率。
发明内容
有鉴于此,本发明目的在于提供一种变长编码、解码方法及装置,以解决现有编码方法存在的编码比率高、效率低、工作量大的问题。
为实现上述目的,本发明提供如下技术方案:
一种变长编码方法,其特征在于,包括:
将需要传输的数据按一个字节为一个码块的原则进行分块,并将码块依次记为码块1、码块2、码块3……码块T;其中,T为正整数;
读取码块t,计算码块t高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;其中,t的取值范围为[1,T];
根据所述码块t的低3位数据、Dt和Ht判断是否需要查询编码表;所述编码表为当Dt和Ht取不同值时,数据与码字的对应关系表;
如果是,则根据Dt和Ht在所述编码表中查找所述码块t的低3位数据对应的码字,并将查找得到的码字附加在所述码块t的高5位数据之后,构成所述码块t的码字;否则,确定所述码块t的8位数据为所述码块t的码字;
判断t是否等于T,如果否,则将t的值加1,并返回执行所述读取码块t。
优选地,所述计算所述码块t的高5位数据的瞬时不均等性Dt具体为:
利用瞬时不均等性计算公式计算所述码块t的高5位数据的瞬时不均等性Dt;其中,S=Dt,数据位数n=5,bi为所述码块t的高5位数据中的第i位数据。
优选地,所述计算当前的累积不均等性Ht具体为:
利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1编码时的累积不均等性,Dt-1为所述码块t-1的高5位数据的瞬时不均等性,Mt-1为所述码块t-1的低3位数据的码字的瞬时不均等性。
优选地,所述根据所述码块t的低3位数据、Dt和Ht判断是否需要查询编码表具体包括:
判断是否满足条件:-3<Dt<+3;
或者,判断是否满足条件:Dt=+3,且Ht<+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=+3,且Ht≥+4,且所述码块t的低3位数据不完全相同,且首位为“1”;
或者,判断是否满足条件:Dt=-3,且Ht>+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=-3,且Ht≤-4,且所述码块t的低3位数据不完全相同,且首位为“0”;
如果是,则不需要查询编码表;否则需要查询编码表。
一种变长解码方法,用于对利用所述变长编码方法得到的码字序列进行解码,包括:
从码字序列未解码部分的首位开始,读取连续的5位码字作为码块t的高5位数据;其中,t为正整数;
计算所述码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;
根据Dt和Ht确定所述码块t的低3位数据对应的码字的位数N;
判断N是否等于3,如果是,则从所述连续的5位码字的结束位置开始,读取连续的3位码字作为所述码块t的低3位数据;否则,从所述连续的5位码字的结束位置开始,读取连续的N位码字,根据Dt和Ht,从编码表中查找所述N位码字对应的3位数据,将其作为所述码块t的低3位数据;
将所述低3位数据附加在所述高5位数据之后,得到所述码块t的8位数据;
判断是否还有未解码的码字序列,如果是,则将t的值加1,并返回执行所述从待解码的码字序列的首位开始,读取连续的5位码字作为码块t的高5位数据。
优选地,所述计算所述码块t的高5位数据的瞬时不均等性Dt具体为:
优选地,所述计算当前的累积不均等性Ht具体为:
利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1解码时的累积不均等性,Dt-1为所述码块t-1的高5位数据的瞬时不均等性,Mt-1为所述码块t-1的低3位数据的码字的瞬时不均等性。
优选地,所述根据Dt、Ht确定所述码块t的低3位数据对应的码字的位数N具体包括:
判断是否满足条件:-3<Dt<+3;
或者,判断是否满足条件:Dt=+3,且Ht<+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=+3,且Ht≥+4,且所述码块t的低3位数据不完全相同,且首位为“1”;
或者,判断是否满足条件:Dt=-3,且Ht>+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=-3,且Ht≤-4,且所述码块t的低3位数据不完全相同,且首位为“0”;
如果是,则N=3,否则,
判断是否满足条件Dt=+5,且Ht≥+4;或者,判断是否满足条件Dt=-5,且Ht≤-4;
如果是,则N=5,否则N=4。
一种变长编码装置,包括:
分块模块,用于将需要传输的数据按一个字节为一个码块的原则进行分块,并将码块依次记为码块1、码块2、码块3……码块T;其中,T为正整数;
计算模块,用于读取码块t,计算所述码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;其中,t的取值范围为[1,T];
判断模块,用于根据所述码块t的低3位数据、Dt和Ht判断是否需要查询编码表;所述编码表为当Dt和Ht取不同值时,数据与码字的对应关系表;
查找模块,用于当所述判断模块的判断结果为需要查询编码表时,根据Dt和Ht在所述编码表中查找所述码块t的低3位数据对应的码字;
合成模块,用于将所述查找模块查找得到的码字附加在所述码块t的高5位数据之后,构成码块t的码字;
确定模块,用于确定所述码块t的8位数据为所述码块t的码字;
循环模块,用于在所述合成模块或确定模块得到所述码块t的码字后,判断t是否等于T,如果否,则将t的值加1,并触发所述计算模块。
优选地,所述计算模块包括:
累积不均等性计算模块,用于利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1编码时的累积不均等性,Dt-1为所述码块t-1的高5位数据的瞬时不均等性,Mt-1为所述码块t-1的低3位数据的码字的瞬时不均等性。
一种变长解码装置,用于对利用所述变长编码装置得到的码字进行解码,包括:
第一读码模块,用于从码字序列未解码部分的首位开始,读取连续的5位码字作为码块t的高5位数据;其中,t为正整数;
计算模块,用于计算所述第一读码模块读取到的所述码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;
确定模块,用于根据所述计算模块计算得到的Dt和Ht确定所述码块t的低3位数据对应的码字的位数N;
判断模块,用于判断所述确定模块确定的位数N是否等于3;
第二读码模块,用于当所述判断模块的判断结果为N等于3时,从所述第一读码模块读取结束的位置开始,读取连续的3位码字作为所述码块t的低3位数据;
第三读码模块,用于当所述判断模块的判断结果为N不等于3时,从所述第一读码模块读取结束的位置开始,读取连续的N位码字;
查找模块,用于根据所述计算模块计算得到的Dt和Ht,从编码表中查找所述第三读码模块读取到的N位码字对应的3位数据,将其作为所述码块t的低3位数据;
合成模块,用于将所述第二读码模块或查找模块得到的所述低3位数据附加在所述高5位数据之后,得到所述码块t的8位数据;
循环模块,用于在所述合成模块得到所述码块t的8位数据后,判断是否还有未解码的码字序列,如果是,则将t的值加1,并触发所述第一读码模块。
优选地,所述计算模块包括:
累积不均等性计算模块,用于利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1解码时的累积不均等性,Dt-1为所述码块t-1的高5位数据的瞬时不均等性,Mt-1为所述码块t-1的低3位数据的码字的瞬时不均等性。
从上述的技术方案可以看出,本发明通过如下方法实现对数据的编码:对需要传输的数据以字节为单位分块;计算码块t高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;并根据Dt和Ht判断是通过查询编码表确定码块t的低3位数据的码字,还是直接将码块t的低3位数据作为其码字;码块t的高5位数据均直接作为其码字,置于上述低3位数据的码字之前,共同构成码块t的的码字,即完成对码块t的编码。可见,本发明实际应用时,仅仅对Dt和Ht符合一定条件的以字节为单位的码块的低3位数据通过查询编码表确定其码字,每个码块的高5位数据以及一部分码块的低3位数据的码字仍为其原数据,从而保留了本身直流平衡性很好的数据,大大减少了编码运算的工作量,降低了编码比率,提高了编码效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的变长编码方法的流程图;
图2为本发明实施例所提供的变长解码方法的流程图;
图3为本发明实施例所提供的变长编码装置的结构示意图;
图4为本发明实施例所提供的变长解码装置的结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结如下:
直流平衡:指数据流中的1与0的个数相等的状态,即使数据流中1与0的数量相等的一种技术;
瞬时不均等性:一段数据的瞬时不均等性,是指该段数据中1和0的个数之差;正值表示1多过0的个数,负值表示0多过1的个数;
累积不均等性:指在使用物理电路调整信号以减少直流失衡后,由于时延等因素的影响,累积到一起的历史信号产生的不均等性;
调整系数a:指在对一个字节的码字进行接收解码过程中,使用补偿量等物理方法调整后累积信号不平衡性剩余比例的倒数。理论上,a可以取任意大于1的正数;根据测试,实际应用中,a∈[2,3,4]。补偿效果好时,a取4;补偿效果一般时,a取3;补偿效果较差时,a取2。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种变长编码方法,以解决现有编码方法存在的编码比率高、效率低、工作量大的问题。
参照图1,本发明实施例提供的变长编码方法包括步骤:
S101:将需要传输的数据按一个字节为一个码块的原则进行分块,并将码块依次记为码块1、码块2、码块3……码块T;其中,T为正整数;
分块后,可再将每个码块的8位数据分为Bhigh和Blow两部分,表示为[Bhigh&Blow]其中Bhigh为高5位,Blow为低3位。例如,要传输的数据为32位比特流“11111111111111111011101001101001”,分块后表示为:码块1[11111&111]、码块2[11111&111]、码块3[10111&010]、码块4[01101&001],即T=4。
S102:读取码块t,计算码块t高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;其中,t的取值范围为[1,T];
S103:根据码块t的低3位数据、Dt和Ht判断是否需要查询编码表;如果是,则进入步骤S104;否则进入步骤S105。
不同码块中数据的直流平衡性不尽相同,数据传输时的可靠性也不同,编码时应该区别对待:对于直流平衡性好(即1和0的个数相等或接近相等)的数据,传输时可靠性很高,可以直接将其作为码字传输;对于直流平衡性较差(即1和0的个数相差较大)的数据,传输时可靠性较差,需要将原数据改编为预设的直流平衡性较好的码字。
实际应用中,数据直流平衡性是通过Dt和Ht来衡量的,编码表表示的是,当Dt和Ht为不同值时,数据与上述预设码字的对应关系。
S104:根据Dt和Ht在上述编码表中查找码块t的低3位数据对应的码字,并将查找得到的码字附加在码块t的高5位数据之后,构成码块t的码字,进入步骤S106;
S105:确定码块t的8位数据为码块t的码字,进入步骤S106;
S106:判断t是否等于T,如果否,则进入步骤S107;
S107:将t的值加1,并返回步骤S102。
由上述技术方案可知,本发明实施例通过如下方法实现对数据的编码:对需要传输的数据以字节为单位分块;计算码块t高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;并根据Dt和Ht判断是通过查询编码表确定码块t的低3位数据的码字,还是直接将码块t的低3位数据作为其码字;码块t的高5位数据均直接作为其码字,置于上述低3位数据的码字之前,共同构成码块t的码字,即完成对码块t的编码。可见,本发明实际应用时,仅仅对Dt和Ht符合一定条件的以字节为单位的码块的低3位数据通过查询编码表确定其码字,每个码块的高5位数据以及一部分码块的低3位数据的码字仍为其原数据,从而保留了本身直流平衡性很好的数据,大大减少了编码运算的工作量,降低了编码比率,提高了编码效率。
进一步的,本发明上述实施例中的计算码块t的高5位数据的瞬时不均等性Dt的具体实施方式为:
例如,假设码块t为[01101&010],即b1=0、b2=1、b3=1、b4=0、b5=1,则其瞬时不均等性
进一步的,本发明上述实施例中的计算当前的累积不均等性Ht的具体实施方式为:
利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1编码时的累积不均等性,Dt-1为所述码块t-1的高5位数据的瞬时不均等性,Mt-1为所述码块t-1的低3位数据的码字的瞬时不均等性。
假设码块t-1对应的数据为[10111&010],对应的码字为“101110100”,Ht-1=+5,取a=3,由于所有码块高5位数据对应的码字仍为其数据本身,则Dt-1=2*(1+0+1+1+1)-5=3,Mt-1=2*(0+1+0+0)-4=-2,Ht=+3+(-2)+Int(+5/3)=+2
进一步的,本发明上述实施例中的步骤S103具体包括:
判断是否满足条件:-3<Dt<+3;
或者,判断是否满足条件:Dt=+3,且Ht<+4,且码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=+3,且Ht≥+4,且码块t的低3位数据不完全相同,且首位为“1”;
或者,判断是否满足条件:Dt=-3,且Ht>+4,且码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=-3,且Ht≤-4,且码块t的低3位数据不完全相同,且首位为“0”;
如果是,则不需要查询编码表;否则需要查询编码表。
满足上述任一条件,则不需查询编码表,直接将码块t的8位数据为码块t的码字;若上述任一条件都不满足,则需通过查询编码表确定码块t的低3位数据对应的码字。
为清楚起见,下面以64位比特流“11111111 11111111 10111010 0110100100000100 11101000 01100100 00000001”为例,对本发明实施例作进一步描述。
S101:将上述64位比特流分块,并表示为[Bhigh&Blow]形式,结果为:
码块1[11111&111];码块2[11111&111];码块3[10111&010];
码块4[01101&001];码块5[00000&100];码块6[11101&000];
码块7[01100&100];码块8[00000&001];且T=8。
第1次循环(t=1):
S102:读取码块1[11111&111], H1=0。
S103:由于D1=+5,不满足上述任一不需要查询编码表的前提条件,故码块1低3位数据的码字需要通过查询编码表确定。
表1示出了本发明实施例提供的编码表一,其中“-”表示不需查询本编码表。
表1编码表一
S104:由D1=+5,H1=0<+4,低3位数据Blow为“111”,查询表1可知Blow的码字为“0011”,将其附加在码块1的高5位数据之后,得到码块1的码字“111110011”。
S106:由于t=1<T=8,故进入步骤S107。
S107:将t值加1得t=2,返回步骤S102,开始第2次循环。
第2次循环(t=2):
S102:读取码块2[11111&111], H2=D1+M1+Int(H1/a)=+5+(0)+Int(0/3)=+5。
S103:由于D2=+5,必须通过查询编码表确定码块2低3位数据的码字。
S104:由D2=+5,H2=+5>+4,低3位数据Blow为“111”,查询表1可知Blow的码字为“00011”,将其附加在码块2的高5位数据之后,得到码块2的码字“1111100011”。
S106:由于t=2<T=8,故进入步骤S107。
S107:将t值加1得t=3,返回步骤S102,开始第3次循环。
第3次循环(t=3):
S102:读取码块3[10111&010], H3=D2+M2+Int(H2/a)=+5+(-1)+Int(+5/3)=+5。
S103:由于D2=+5,必须通过查询编码表确定码块3低3位数据的码字。
S104:由D3=+3,H3=+5>+4,低3位数据Blow为“010”,首位不是“1”故查询表1可知Blow的码字为“0100”,将其附加在码块3的高5位数据之后,得到码块3的码字“101110100”。
S106:由于t=3<T=8,故进入步骤S107。
S107:将t值加1得t=4,返回步骤S102,开始第4次循环。
与上述循环过程类似,第4次循环得到码块4的码字为“01101001”,第5次循环得到码块5的码字为“000001010”,第6次循环得到码块6的码字“111010001”,第7次循环得到码块7的码字“01100100”,第8此循环得到码块8的码字“000000101”,第8次循环结束时,t=8,不再循环,本次编码结束。由于每个码块低3位数据对应的码字位数不同,可能为3位、4位或5位,故整个码块对应的码字位数也不同,可能为8位、9位或10位,即所谓的8B/(8~10)B变长编码。
通过本发明实施例所述的编码方法,得到的64位比特流的码字为“111110011 1111100011 101110100 01101001 000001010 11101000101100100 000000101”,码字长度为71位,游程最长为8位。为了说明编码表的使用,本实施例的数据中连续的1和0比较多,导致编码效率只有90%,而实际平均编码效率可以到达99.22%。
另外,编码表的形式不仅局限于表1所示,也可为表2所示的编码表二,与表1不同,应用表2进行编码时,步骤S103的判断条件可简化为只判断是否满足-3<Dt<+3,若不满足,则都将通过查询表2得到码块低3位数据对应的码字。
表2编码表二
参照图2,本发明实施例还提供了一种变长解码方法,用于对利用所述变长编码方法得到的码字序列进行解码,该变长解码方法包括步骤:
S201:从码字序列未解码部分的首位开始,读取连续的5位码字作为码块t的高5位数据;其中,t为正整数;
由上述变长编码方法可知,每个码块的高5位数据对应的码字就是该高5位数据本身,故直接将读取到的5位码字作为码块t的高5位数据。
S202:计算码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;
S203:根据Dt和Ht确定码块t的低3位数据对应的码字的位数N;
由上述变长编码方法可知,每个码块的低3位数据对应的码字位数是不同的,故读取码字之前需先确定当前码块低3位数据对应的码字位数N。
S204:判断N是否等于3,如果是,则进入步骤S205,否则进入步骤S206;
S205:从上述连续的5位码字的结束位置开始,读取连续的3位码字作为码块t的低3位数据,进入步骤S207;
N=3,说明该段码字不是通过查询编码表得到的,而是原码块数据,故可直接将3位码字作为低3位数据。
S206:从上述连续的5位码字的结束位置开始,读取连续的N位码字,根据Dt和Ht,从编码表中查找上述N位码字对应的3位数据,将其作为码块t的低3位数据,进入步骤S207;
S207:将上述低3位数据附加在高5位数据之后,得到码块t的8位数据;
S208:判断是否还有未解码的码字序列,如果有,则将t的值加1,并返回执行步骤S201。
解码是编码的逆运算,现有编码方法相对应的解码方法,必然存在解码比率高、效率低、工作量大的问题。上述与本发明实施例提供的变长解码方法相对应的变长解码方法,则相应解决了上述问题。
进一步的,步骤S202具体为:
利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1解码时的累积不均等性,Dt-1为所述码块t-1的高5位数据的瞬时不均等性,Mt-1为所述码块t-1低3位数据的码字的瞬时不均等性。其中,Mt-1仍由公式计算得到,此时,n为码块t-1低3位数据对应的码字的位数,bi为码块t-1低3位数据对应的码字中第i位数据。
进一步的,步骤S203具体包括:
判断是否满足条件:-3<Dt<+3;
或者,判断是否满足条件:Dt=+3,且Ht<+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=+3,且Ht≥+4,且所述码块t的低3位数据不完全相同,且首位为“1”;
或者,判断是否满足条件:Dt=-3,且Ht>+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=-3,且Ht≤-4,且所述码块t的低3位数据不完全相同,且首位为“0”;
如果是,则N=3,否则,
判断是否满足条件Dt=+5,且Ht≥+4;或者,判断是否满足条件Dt=-5,且Ht≤-4;
如果是,则N=5,否则N=4。
下面以71位码字序列“111110011 1111100011 101110100 01101001000001010 111010001 01100100 000000101”为例,对上述变长解码方法作进一步描述。
第1次循环(t=1):
S201:读取连续的5位码字“11111”作为码块1的高5位数据Bhigh;
S202:根据Bhigh计算得D1=+5,H1=0;
S203:由D1=+5,H1=0可确定N=4;
S204:由于N=4≠3,故进入步骤S206;
S206:从上述5位码字“11111”结束的位置开始,读取连续的N=4位码字“0011”,根据D1=+5,H1=0从表1中查找码字“0011”对应的数据为“111”,即码块1的低3位数据Blow为“111”;
S207:将Blow附加在Bhigh之后,得到码块1的8位数据[11111&111];
S208:由于还有未解码的码字序列,故将t的值加1,即t=t+1=2,并返回执行步骤S201。
第2次循环(t=2):
S201:从码字序列未解码部分的首位(即原71位码字序列的第10位)开始,读取连续的5位码字“11111”作为码块2的高5位数据Bhigh;
S202:根据Bhigh计算得D2=+5,H2=+5;
S203:由D2=+5,H2=+5可确定N=5;
S204:由于N=5≠3,故进入步骤S206;
S206:从上述5位码字“11111”结束的位置开始,读取连续的N=5位码字“00011”,根据D2=+5,H2=+5从表1中查找码字“00011”对应的数据为“111”,即码块2的低3位数据Blow为“111”;
S207:将Blow附加在Bhigh之后,得到码块2的8位数据[11111&111];
S208:由于还有未解码的码字序列,故将t的值加1,即t=t+1=3,并返回执行步骤S201。
第3次循环(t=3):
S201:从码字序列未解码部分的首位(即原71位码字序列的第20位)开始,读取连续的5位码字“10111”作为码块3的高5位数据Bhigh;
S202:根据Bhigh计算得D3=+3,H3=+5;
S203:由D3=+3,H3=+5可确定N=4;
S204:由于N=4≠3,故进入步骤S206;
S206:从上述5位码字“10111”结束的位置开始,读取连续的N=4位码字“0100”,根据D3=+3,H3=+5从表1中查找码字“0100”对应的数据为“010”,即码块2的低3位数据Blow为“010”;
S207:将Blow附加在Bhigh之后,得到码块2的8位数据[10111&010];
S208:由于还有未解码的码字序列,故将t的值加1,即t=t+1=4,并返回执行步骤S201。
与上述循环过程类似,第4次循环得到码块4为[01101&001],第5次循环得到码块5为[00000&100],第6次循环得到码块6为[11101&000],第7次循环得到码块7为[01100&100],第8此循环得到码块8为[00000&001],第8次循环结束后,71位码字序列已经全部被解码,故本次编码结束。
参照图3,本发明实施例还提供了一种变长编码装置,包括:
分块模块301、计算模块302、判断模块303、查找模块304、合成模块305、确定模块306和循环模块307;其中,
分块模块301,用于将需要传输的数据按一个字节为一个码块的原则进行分块,并将码块依次记为码块1、码块2、码块3……码块T;其中,T为正整数;
计算模块302,与分块模块301连接,用于读取码块t,计算码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;其中,t的取值范围为[1,T];
判断模块303,与计算模块302连接,用于根据上述码块t的低3位数据、Dt和Ht判断是否需要查询编码表;该编码表为当Dt和Ht取不同值时,数据与码字的对应关系表;
查找模块304,与判断模块303连接,用于当判断模块303的判断结果为需要查询编码表时,根据Dt和Ht在上述编码表中查找码块t的低3位数据对应的码字;
合成模块305,与查找模块304连接,用于将查找模块304查找得到的码字附加在所述码块t的高5位数据之后,构成码块t的码字;
确定模块306,与判断模块303连接,用于确定码块t的8位数据为码块t的码字;
循环模块307,分别与合成模块305、确定模块306和计算模块302连接,用于在合成模块305或确定模块306得到码块t的码字后,判断t是否等于T,如果否,则将t的值加1,并触发计算模块302。
由上述结构及工作原理可知,本发明实施例提供的变长编码装置仅仅对Dt和Ht符合一定条件的以字节为单位的码块的低3位数据通过查询编码表确定其码字,每个码块的高5位数据以及一部分码块的低3位数据的码字仍为其原数据,从而保留了本身直流平衡性很好的数据,大大减少了编码运算的工作量,降低了编码比率,提高了编码效率。
进一步的,计算模块302包括瞬时不均等性计算模块和累积不均等性计算模块;其中,
累积不均等性计算模块,用于利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1编码时的累积不均等性,Dt-1为码块t-1的高5位数据的瞬时不均等性,Mt-1为码块t-1低3位数据的码字的瞬时不均等性。
参见图4,本发明实施例还提供了一种变长解码装置,包括第一读码模块401、计算模块402、确定模块403、判断模块404、第二读码模块405、第三读码模块406、查找模块407、合成模块408和循环模块409;其中,
第一读码模块401,用于从码字序列未解码部分的首位开始,读取连续的5位码字作为码块t的高5位数据;其中,t为正整数;
计算模块402,与第一读码模块401连接,用于计算第一读码模块401读取到的码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;
确定模块403,与计算模块402连接,用于根据计算模块402计算得到的Dt和Ht确定码块t的低3位数据对应的码字的位数N;
判断模块404,与确定模块403连接,用于判断确定模块403确定的位数N是否等于3;
第二读码模块405,与判断模块404连接,用于当判断模块404的判断结果为N等于3时,从第一读码模块401读取结束的位置开始,读取连续的3位码字作为码块t的低3位数据;
第三读码模块406,与判断模块404连接,用于当判断模块404的判断结果为N不等于3时,从第一读码模块401读取结束的位置开始,读取连续的N位码字;
查找模块407,与第三读码模块406连接,用于根据计算模块402计算得到的Dt和Ht,从编码表中查找第三读码模块406读取到的N位码字对应的3位数据,将其作为码块t的低3位数据;
合成模块408,分别与第二读码模块405和查找模块407连接,用于将第二读码模块405或查找模块407得到的低3位数据附加在高5位数据之后,得到码块t的8位数据;
循环模块409,分别与合成模块408和第一读码模块401连接,用于在合成模块408得到码块t的8位数据后,判断是否还有未解码的码字序列,如果有,则将t的值加1,并触发第一读码模块401。
进一步的,上述实施例中的计算模块402具体包括瞬时不均等性计算模块和累积不均等性计算模块;其中,
累积不均等性计算模块,用于利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1解码时的累积不均等性,Dt-1为码块t-1的高5位数据的瞬时不均等性,Mt-1为码块t-1的低3位数据的码字的瞬时不均等性。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种变长编码方法,其特征在于,包括:
将需要传输的数据按一个字节为一个码块的原则进行分块,并将码块依次记为码块1、码块2、码块3……码块T;其中,T为正整数;
读取码块t,计算码块t高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;其中,t的取值范围为[1,T];
根据所述码块t的低3位数据、Dt和Ht判断是否需要查询编码表;所述编码表为当Dt和Ht取不同值时,数据与码字的对应关系表;
如果是,则根据Dt和Ht在所述编码表中查找所述码块t的低3位数据对应的码字,并将查找得到的码字附加在所述码块t的高5位数据之后,构成所述码块t的码字;否则,确定所述码块t的8位数据为所述码块t的码字;
判断t是否等于T,如果否,则将t的值加1,并返回执行所述读取码块t。
3.根据权利要求2所述的方法,其特征在于,所述计算当前的累积不均等性Ht具体为:
利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1编码时的累积不均等性,Dt-1为所述码块t-1的高5位数据的瞬时不均等性,Mt-1为所述码块t-1的低3位数据的码字的瞬时不均等性。
4.根据权利要求1所述的方法,其特征在于,所述根据所述码块t的低3位数据、Dt和Ht判断是否需要查询编码表具体包括:
判断是否满足条件:-3<Dt<+3;
或者,判断是否满足条件:Dt=+3,且Ht<+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=+3,且Ht≥+4,且所述码块t的低3位数据不完全相同,且首位为“1”;
或者,判断是否满足条件:Dt=-3,且Ht>+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=-3,且Ht≤-4,且所述码块t的低3位数据不完全相同,且首位为“0”;
如果是,则不需要查询编码表;否则需要查询编码表。
5.一种变长解码方法,其特征在于,用于对利用所述变长编码方法得到的码字序列进行解码,所述变长解码方法包括:
从码字序列未解码部分的首位开始,读取连续的5位码字作为码块t的高5位数据;其中,t为正整数;
计算所述码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;
根据Dt和Ht确定所述码块t的低3位数据对应的码字的位数N;
判断N是否等于3,如果是,则从所述连续的5位码字的结束位置开始,读取连续的3位码字作为所述码块t的低3位数据;否则,从所述连续的5位码字的结束位置开始,读取连续的N位码字,根据Dt和Ht,从编码表中查找所述N位码字对应的3位数据,将其作为所述码块t的低3位数据;
将所述低3位数据附加在所述高5位数据之后,得到所述码块t的8位数据;
判断是否还有未解码的码字序列,如果是,则将t的值加1,并返回执行所述从待解码的码字序列的首位开始,读取连续的5位码字作为码块t的高5位数据。
7.根据权利要求6所述的方法,其特征在于,所述计算当前的累积不均等性Ht具体为:
利用公式 计算当前的累积不均等性Ht;其中,a为调整系数,Ht-1为码块t-1解码时的累积不均等性,Dt-1为所述码块t-1的高5位数据的瞬时不均等性,Mt-1为所述码块t-1的低3位数据的码字的瞬时不均等性。
8.根据权利要求5所述的方法,其特征在于,所述根据Dt、Ht确定所述码块t的低3位数据对应的码字的位数N具体包括:
判断是否满足条件:-3<Dt<+3;
或者,判断是否满足条件:Dt=+3,且Ht<+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=+3,且Ht≥+4,且所述码块t的低3位数据不完全相同,且首位为“1”;
或者,判断是否满足条件:Dt=-3,且Ht>+4,且所述码块t的低3位数据不完全相同;
或者,判断是否满足条件:Dt=-3,且Ht≤-4,且所述码块t的低3位数据不完全相同,且首位为“0”;
如果是,则N=3,否则,
判断是否满足条件Dt=+5,且Ht≥+4;或者,判断是否满足条件Dt=-5,且Ht≤-4;
如果是,则N=5,否则N=4。
9.一种变长编码装置,其特征在于,包括:
分块模块,用于将需要传输的数据按一个字节为一个码块的原则进行分块,并将码块依次记为码块1、码块2、码块3……码块T;其中,T为正整数;
计算模块,用于读取码块t,计算所述码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;其中,t的取值范围为[1,T];
判断模块,用于根据所述码块t的低3位数据、Dt和Ht判断是否需要查询编码表;所述编码表为当Dt和Ht取不同值时,数据与码字的对应关系表;
查找模块,用于当所述判断模块的判断结果为需要查询编码表时,根据Dt和Ht在所述编码表中查找所述码块t的低3位数据对应的码字;
合成模块,用于将所述查找模块查找得到的码字附加在所述码块t的高5位数据之后,构成码块t的码字;
确定模块,用于确定所述码块t的8位数据为所述码块t的码字;
循环模块,用于在所述合成模块或确定模块得到所述码块t的码字后,判断t是否等于T,如果否,则将t的值加1,并触发所述计算模块。
11.一种变长解码装置,其特征在于,用于对利用所述变长编码装置得到的码字进行解码,所述变长解码装置包括:
第一读码模块,用于从码字序列未解码部分的首位开始,读取连续的5位码字作为码块t的高5位数据;其中,t为正整数;
计算模块,用于计算所述第一读码模块读取到的所述码块t的高5位数据的瞬时不均等性Dt和当前的累积不均等性Ht;
确定模块,用于根据所述计算模块计算得到的Dt和Ht确定所述码块t的低3位数据对应的码字的位数N;
判断模块,用于判断所述确定模块确定的位数N是否等于3;
第二读码模块,用于当所述判断模块的判断结果为N等于3时,从所述第一读码模块读取结束的位置开始,读取连续的3位码字作为所述码块t的低3位数据;
第三读码模块,用于当所述判断模块的判断结果为N不等于3时,从所述第一读码模块读取结束的位置开始,读取连续的N位码字;
查找模块,用于根据所述计算模块计算得到的Dt和Ht,从编码表中查找所述第三读码模块读取到的N位码字对应的3位数据,将其作为所述码块t的低3位数据;
合成模块,用于将所述第二读码模块或查找模块得到的所述低3位数据附加在所述高5位数据之后,得到所述码块t的8位数据;
循环模块,用于在所述合成模块得到所述码块t的8位数据后,判断是否还有未解码的码字序列,如果是,则将t的值加1,并触发所述第一读码模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210151574.XA CN102664636B (zh) | 2012-05-16 | 2012-05-16 | 一种变长编码、解码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210151574.XA CN102664636B (zh) | 2012-05-16 | 2012-05-16 | 一种变长编码、解码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102664636A true CN102664636A (zh) | 2012-09-12 |
CN102664636B CN102664636B (zh) | 2016-03-23 |
Family
ID=46774066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210151574.XA Expired - Fee Related CN102664636B (zh) | 2012-05-16 | 2012-05-16 | 一种变长编码、解码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102664636B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108761518A (zh) * | 2018-04-10 | 2018-11-06 | 成都理工大学 | 一种多道能谱数据序列化压缩与还原方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1658513A (zh) * | 2005-03-10 | 2005-08-24 | 复旦大学 | 通过查表实现的算术编解码方法 |
US20100295712A1 (en) * | 2009-05-19 | 2010-11-25 | Nokia Corporation | Method for coding and an apparatus |
CN101980464A (zh) * | 2010-09-30 | 2011-02-23 | 华为技术有限公司 | 数据编码方法、解码方法、编码器和解码器 |
-
2012
- 2012-05-16 CN CN201210151574.XA patent/CN102664636B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1658513A (zh) * | 2005-03-10 | 2005-08-24 | 复旦大学 | 通过查表实现的算术编解码方法 |
US20100295712A1 (en) * | 2009-05-19 | 2010-11-25 | Nokia Corporation | Method for coding and an apparatus |
CN101980464A (zh) * | 2010-09-30 | 2011-02-23 | 华为技术有限公司 | 数据编码方法、解码方法、编码器和解码器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108761518A (zh) * | 2018-04-10 | 2018-11-06 | 成都理工大学 | 一种多道能谱数据序列化压缩与还原方法 |
CN108761518B (zh) * | 2018-04-10 | 2021-12-17 | 成都理工大学 | 一种多道能谱数据序列化压缩与还原方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102664636B (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6079041A (en) | Digital modulation circuit and digital demodulation circuit | |
JP4468858B2 (ja) | データ符号化装置、データ符号化方法、プログラム | |
EP2462698A1 (en) | Encoder and decoder using arithmetic stage to compress code space that is not fully utilized | |
US20130346823A1 (en) | Encoding of data for transmission | |
WO2018082286A1 (zh) | 基于 SerDes 技术串行通信系统的编解码方法及装置 | |
KR101940464B1 (ko) | 스펙트럼의 피크 위치의 코딩 및 디코딩 | |
CA2604521A1 (en) | Lossless encoding of information with guaranteed maximum bitrate | |
WO2010085566A1 (en) | Method and apparatus for compression or decompression of digital signals | |
US6696992B1 (en) | Efficient data encoding and decoding processes | |
WO2003092286A1 (en) | Adaptive method and system for mapping parameter values to codeword indexes | |
CN102664636B (zh) | 一种变长编码、解码方法及装置 | |
KR20170002478A (ko) | 제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치 | |
US20140281367A1 (en) | Address calculation for received data | |
ES2390217T3 (es) | Compresión y expansión de datos de una señal de información digital | |
JP2001144625A (ja) | 耐ビットエラー算術符号化/復号化装置及びその方法、耐ビットエラー算術符号化/復号化プログラムを記録したコンピュータが読み取り可能な記録媒体 | |
CN101442313A (zh) | 编解码方法以及编码器、解码器、乘积项装置 | |
CN102780495B (zh) | 一种数据编码及解码方法 | |
CN102545910B (zh) | 一种jpeg霍夫曼解码电路及其解码方法 | |
CN103138769A (zh) | 一种具有不等错误保护的编码方法 | |
CN101304534A (zh) | 指数哥伦布编码方法 | |
WO2010133033A1 (zh) | 线路编码的方法及装置 | |
JP4559652B2 (ja) | 可変長復号化回路 | |
JP2015511443A5 (zh) | ||
JP6509916B2 (ja) | 連結されたrom−ramテーブルに基づいて算術コーディングを遂行する方法及び装置 | |
JPH11225341A (ja) | 画像符号化装置及び画像復号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160323 Termination date: 20190516 |