CN102780495A - 一种数据编码及解码方法 - Google Patents
一种数据编码及解码方法 Download PDFInfo
- Publication number
- CN102780495A CN102780495A CN201210302430XA CN201210302430A CN102780495A CN 102780495 A CN102780495 A CN 102780495A CN 201210302430X A CN201210302430X A CN 201210302430XA CN 201210302430 A CN201210302430 A CN 201210302430A CN 102780495 A CN102780495 A CN 102780495A
- Authority
- CN
- China
- Prior art keywords
- code
- word
- code block
- clock
- block
- 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
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例公开了一种数据编码、解码方法。该编码方法为:计算码块t的不均等值Rd[t]及其之前已编码数据的不均等值Rp[t];根据Rd[t]和Rp[t]的大小,通过直接对应、取反运算、奇位取反运算等方式获取各个码块对应的码字。相应的,该解码方法为:计算码字串中已解码部分的不均等值Rp[t];若|Rp[t]|≤2,则从所述码字串中未解码部分的高位到低位连续读取9位码字;若|Rp[t]|>2,则从所述码字串中未解码部分的高位到低位连续读取10位码字;通过直接对应、取反运算、奇位取反运算等方式获取读取到的码字对应的码块。本发明实施例提供的数据编码、解码方法通过直接对应或简单运算完成,不需查询编码表,节约了编码表存储所占用的空间,提高了编码效率。
Description
技术领域
本发明涉及数字通信技术领域,尤其涉及一种数据编码及解码方法。
背景技术
随着数字通信业务的增长,数据传输的速率不断提高,信号恶化问题也更加严重。直流平衡技术,为一种通过对数据进行编码,使数据流中的1与0的个数相等的技术,可以很好的解决信号恶化的问题,减少数据传输过程中的数据失真与错误,提高数据传输的可靠性。
现有实现直流平衡技术的编码方法多种多样,如8B/10B编码、9B/10B编码、6B/8B编码、7B/8B编码等,统称mB/nB编码,即将m位的二进制码块,通过查询编码表,转变为n位二进制的码字。以8B/10B编码为例,编码过程具体为:将连续的8位数据分为两组,其中,高3位为第一组,进行3B/4B编码,即通过查找编码表得到对应的4位码字;低5位为第二组,进行5B/6B编码,即通过查找编码表得到对应的6位码字;将上述6位码字附加在4位码字后面,组成一组10位的码字,即原8位数据对应的用于传输的码字为10位。
上述所有编码方法都有一个缺点:所有待传输的数据都要通过查编码表编为固定长度的代码。不仅需要占用一定的空间存储该编码表,而且查表过程会占用大量的时间,降低编码效率。
发明内容
有鉴于此,本发明提供了一种数据编码、解码方法,以解决现有编码方法存在的效率低的问题。
为实现上述目的,本发明提供如下技术方案:
一种快速编码方法,包括:
将需要传输的数据以字节为单位分块,并依次记为码块1、码块2、……、码块T;其中,T为正整数;
读取码块t,计算码块t前已编码数据的不均等值Rp[t]及码块t的不均等值Rd[t];其中,t∈{1,2,……,T};
当|Rp[t]|≤2时,采用直流平衡法获取码块t的码字;当|Rp[t]|>2时,采用校正法获取码块t的码字;其中,
所述当|Rp[t]|≤2时,采用直流平衡法获取码块t的码字,包括:
当|Rp[t]|≤2且Rd[t]=0或2时,在码块t前添加“0”,作为码块t的码字;
当|Rp[t]|≤2且Rd[t]=-2时,在码块t前添加“1”,作为码块t的码字;
当|Rp[t]|≤2且Rd[t]=±4时,根据F[t]的值确定码块t的码字;
当|Rp[t]|≤2且Rd[t]=±6时,使用移位累加运算得到码块t的码字;
当|Rp[t]|≤2且Rd[t]=±8时,对码块t进行奇位取反运算,在所述运算结果前添加“1”,作为码块t的码字;
所述当|Rp[t]|>2时,采用校正法获取码块t的码字,包括:
当Rp[t]>2且Rd[t]=0,或者,Rp[t]<-2且Rd[t]=4或6时,在码块t前添加“00”,作为码块t的码字;
当Rp[t]<-2且Rd[t]=0,或者,Rp[t]>2且Rd[t]=-4或-6时,在码块t前添加“11”,作为码块t的码字;
当Rp[t]<-2且Rd[t]=2,或者,Rp[t]>2且Rd[t]=-2时,在码块t前添加“01”,作为码块t的10位码字;
当Rp[t]<-2且Rd[t]=-2或-4,或者,Rp[t]>2且Rd[t]=2或4时,对码块t取反,在所述取反结果前添加“10”,作为码块t的码字;
当Rp[t]<-2且Rd[t]=-6,或者,Rp[t]>2且Rd[t]=6时,先进行移位与取反运算,再在码块t前添加“01”,作为码块t的10位码字;
当|Rp[t]|>2且Rd[t]=±8时,在预设的8位数据串前添加“01”,作为码块t的码字;其中,所述预设的8位数据串包括:
当Rp[t]<-2且Rd[t]=8时,所述预设的8位数据串为“11011011”;
当Rp[t]<-2且Rd[t]=-8时,所述预设的8位数据串为“10110111”;
当Rp[t]>2且Rd[t]=8时,所述预设的8位数据串为“00100100”;
当Rp[t]>2且Rd[t]=-8时,所述预设的8位数据串为“01001000”。
一种数据解码方法,包括:
计算码字串中已解码部分的不均等值Rp[t];t为正整数;
若|Rp[t]|≤2,则从所述码字串中未解码部分的高位到低位连续读取9位码字,对所述9位码字进行解码,得到解码结果,记为码块t;若|Rp[t]|>2,则从所述码字串中未解码部分的高位到低位连续读取10位码字,对所述10位码字进行解码,得到解码结果,记为码块t;其中,
所述对所述9位码字进行解码,得到解码结果,记为码块t,包括:
若所述9位码字的首位为“0”,则将所述9位码字的后8位码字作为码块t;
若所述9位码字的首位为“1”,后8位码字的不均等值Rm[t]=-2,则将所述后8位码字作为码块t;
若所述9位码字的首位为“1”,后8位码字的不均等值Rm[t]=0,则根据所述后8位码字的奇偶分布值F[t]解码,并将解码结果作为码块t;其中,
所述根据F[t]解码,包括:若F[t]≠0,则对所述后8位码字进行奇位取反,将所述奇位取反结果作为码块t;
所述对所述10位码字进行解码,得到解码结果,记为码块t,包括:
当所述10位码字的前两位为“00”或“11”时,将所述10位码字的后8位码字作为码块t;
当所述10位码字的前两位为“10”时,对所述10位码字的后8位码字取反,将所述取反结果作为码块t;
当所述10位码字的前两位为“01”,后8位码字的不均等值Rm[t]=±2时,将所述后8位码字作为码块t;
当所述10位码字的前两位为“01”时,若所述后8位码字为“10110111”或“01001000”,则将数据串“00000000”作为码块t;若所述后8位码字为“11011011”或“01001000”,则将数据串“11111111”作为码块t。
从上述的技术方案可以看出,本发明首先对待编码的数据以字节为单位分为若干码块,编码时,每读取一个码块t,即计算一次所有已编码数据的不均等值Rp[t],根据Rp[t]的大小对该码块进行初步分类:|Rp[t]|≤2,说明码块t之前的已编码数据的直流平衡性较好,将码块t编为9位的码字即可满足数据的直流平衡性;|Rp[t]|>2,说明码块t之前的已编码数据的直流平衡性较差,将码块t编为10位的码字才能满足数据的直流平衡性。初步分类后,即可结合码块t的不均等值Rd[t]的大小,确定是直接在码块t前添加相应位数的二进制数得到码字,还是,先对码块t进行奇位取反或取反运算,再添加二进制数得到码字。所添加的二进制数的具体值也根据码块t的不均等值Rd[t]确定,保证了码块t的码字的直流平衡性。可见,本发明对数据进行编码的过程中,同时考虑了已编码数据的整体直流平衡性和当前待编码的码块的直流平衡性,既能提高码字传输时的可靠性,又能尽量减少码字的位数,节省传输时间,提高传输效率;同时,本发明还通过直接对应或简单的取反、奇位取反运算,得到各个码块的码字,既节约了编码表存储所占用的空间,又免去了查表操作,大大减少了编码时间,提高了编码效率。因此,本发明实施例解决了现有编码方法存在的编码效率低的问题。
附图说明
图1为本发明实施例提供的编码方法的流程图;
图2为本发明另一实施例提供的编码方法的流程图;
图3为本发明实施例提供的解码方法的流程图;
图4为本发明另一实施例提供的解码方法的流程图;
图5为本发明又一实施例提供的编码方法的流程图;
图6为本发明又一实施例提供的解码方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种数据编码、解码方法,以解决现有编码方法存在的编码效率低的问题。
参照图1,本发明实施例提供的数据编码方法,包括如下步骤:
S101:将需要传输的数据以字节为单位分块,并依次记为码块1、码块2、……、码块T;
S102:逐个读取码块t,计算码块t前已编码数据的不均等值Rp[t]及码块t的不均等值Rd[t];
T为正整数,用于标记分块后所得码块的总个数;t作为本方法的循环变量,在{1,2,……,T}中由小到大依次取值,当取至t=T时,说明此时的码块t为最后一个码块,对其编码完毕后,对整个数据串的编码即完成。
一段数据的不均等值R是指该段数据中逻辑1和逻辑0的数量之差,若R>0,则“1”比“0”多R个;R<0,则“0”比“1”多-R个;R=0,则“1”与“0”的个数相等。R的计算公式为其中,n为该段数据串的总位数,bi为该段数据串的第i位数据值。
因此,令n为8,bi为D[t]的第i位数据时,可计算得到D[t]的不均等值
进一步的,计算时,亦可令n为D[t]前已编码数据的总位数,bi为其中的第i位,利用R的计算公式计算得到Rp[t];但为提高计算效率,当已编码数据较多时,可采用累加法计算Rp[t],即Rp[t]=Rp[t-1]+Rm[t-1],其中,Rm[t-1]为D[t]的码字M[t]的不均等值。
S103:判断|Rp[t]|是否小于等于2;
通过|Rp[t]|对码块t进行分类:
若|Rp[t]|≤2,则执行步骤S104~S106,即码块t之前的已编码数据的直流平衡性较好时,采用直流平衡法对码块t进行编码,得到9位的码字即可保证码块t传输时的直流平衡性;
若|Rp[t]|>2,则执行步骤S107~S111,即码块t之前的已编码数据的直流平衡性较差时,采用校正法对码块t进行编码,得到10位的码字,用较多位数的码字来保证码块t传输时的直流平衡性。
S104:当|Rp[t]|≤2且Rd[t]=0或2时,直接在码块t前添加“0”,作为码块t的码字;
S105:当|Rp[t]|≤2且Rd[t]=-2时,直接在码块t前添加“1”,作为码块t的码字;
S106:当|Rp[t]|≤2且Rd[t]=±8时,首先对码块t进行奇位取反运算,再在所述运算结果前添加“1”,作为码块t的码字;
S107:当Rp[t]>2且Rd[t]=0,或者,Rp[t]<-2且Rd[t]=4或6时,直接在码块t前添加“00”,作为码块t的码字;
S108:当Rp[t]<-2且Rd[t]=0,或者,Rp[t]>2且Rd[t]=-4或-6时,直接在码块t前添加“11”,作为码块t的码字;
S109:当Rp[t]<-2且Rd[t]=2,或者,Rp[t]>2且Rd[t]=-2时,直接在码块t前添加“01”,作为码块t的10位码字;
S110:当Rp[t]<-2且Rd[t]=-2或-4,或者,Rp[t]>2且Rd[t]=2或4时,首先对码块t取反,再在该取反结果前添加“10”,作为码块t的码字;
S111:当|Rp[t]|>2且Rd[t]=±8时,在预设的8位数据串前添加“01”,作为码块t的码字。
由上述技术方案可知,本发明实施例首先对待编码的数据以字节为单位分为若干码块,编码时,每读取一个码块t,即计算一次所有已编码数据的不均等值Rp[t],根据Rp[t]的大小对该码块进行初步分类:|Rp[t]|≤2,说明码块t之前的已编码数据的直流平衡性较好,将码块t编为9位的码字即可满足数据的直流平衡性;|Rp[t]|>2,说明码块t之前的已编码数据的直流平衡性较差,将码块t编为10位的码字才能满足数据的直流平衡性。初步分类后,即可结合码块t的不均等值Rd[t]的大小,确定是直接在码块t前添加相应位数的二进制数得到码字,还是,先对码块t进行奇位取反或取反运算,再添加二进制数得到码字。所添加的二进制数的具体值也根据码块t的不均等值Rd[t]确定,保证了码块t的码字的直流平衡性。可见,本发明实施例对数据进行编码的过程中,同时考虑了已编码数据的整体直流平衡性和当前待编码的码块的直流平衡性,既能提高码字传输时的可靠性,又能尽量减少码字的位数,节省传输时间,提高传输效率;同时,本发明实施例还通过直接对应或简单的取反、奇位取反运算,得到各个码块的码字,既节约了编码表存储所占用的空间,又免去了查表操作,大大减少了编码时间,提高了编码速度。因此,本发明实施例解决了现有编码方法存在的编码效率低的问题。
进一步的,当|Rp[t]|>2时,需要通过码块t的码字对已编码数据进行校正,因此,上述实施例中预设的8位数据串包括如下4种:
当Rp[t]<-2且Rd[t]=8时,说明已编码数据中“0”的个数较多,码块t的各位均为“1”,故校正折中后,以“11011011”为该预设的8位数据串;
当Rp[t]<-2且Rd[t]=-8时,说明已编码数据中“0”的个数较多,码块t的各位均为“0”,故校正折中后,以“10110111”为该预设的8位数据串;
当Rp[t]>2且Rd[t]=8时,说明已编码数据中“1”的个数较多,码块t的各位均为“1”,故校正折中后,以“00100100”为该预设的8位数据串;
当Rp[t]>2且Rd[t]=-8时,说明已编码数据中“1”的个数较多,码块t的各位均为“0”,故校正折中后,以“01001000”为该预设的8位数据串。
参照图2,本发明另一实施例提供的数据编码方法的步骤为:
S201:将需要传输的数据以字节为单位分块,并依次记为码块1、码块2、……、码块T;其中,T为正整数,
S202:逐个读取码块t,计算码块t前已编码数据的不均等值Rp[t]及码块t的不均等值Rd[t];其中,t∈{1,2,……,T};
为方便叙述,本实施例以D[t]表示码块t,以M[t]表示码块t对应的码字。
S203:判断|Rp[t]|是否小于等于2,若|Rp[t]|≤2,则执行步骤S204~S211,否则执行步骤S212~S217,
S204:当|Rp[t]|≤2且Rd[t]=0或2时,直接在D[t]前添加“0”,作为D[t]的码字M[t],即M[t]=0*28+D[t];
S205:当|Rp[t]|≤2且Rd[t]=-2时,直接在D[t]前添加“1”,作为D[t]的码字M[t],即M[t]=1*28+D[t];
S206:当|Rp[t]|≤2且Rd[t]=±8时,首先对D[t]进行奇位取反运算,再在运算结果前添加“1”,作为D[t]的码字M[t];
所谓“奇位取反”,即将数据串奇数位上的“1”置为“0”、“0”置为“1”。例如,对“00000000”进行奇位取反,得到“10101010”;对“11111111”进行奇位取反,得到“01010101”。
S207:当0≤Rp[t]≤2且Rd[t]=-6时,对D[t]进行一次右移3位累加运算,在该累加运算结果前添加“1”作为D[t]的码字M[t];
本申请中涉及的移位运算均为循环移位。所谓“右移累加运算”,即循环右移的结果与原数据按位进行逻辑或。假设上述对D[t]进行一次右移3位累加运算的结果为M0[t],则M0[t]=D[t]∨(D[t]>>3),故M[t]=1*28+M0[t]。
S208:当-2≤Rp[t]<0且Rd[t]=-6时,对D[t]进行两次右移3位累加运算,并对该累加运算结果取反,在取反结果前添加“1”作为D[t]的码字M[t];
假设上述对D[t]进行两次右移3位累加运算的结果为M0[t],则M0[t]=D[t]∨(D[t]>>3)∨(D[t]>>6),故
S209:当0≤Rp[t]≤2且Rd[t]=6时,对D[t]取反,对取反结果进行一次右移2位累加运算,在该累加结果前添加“1”作为D[t]的码字;
S210:当-2≤Rp[t]<0且Rd[t]=6时,对D[t]取反,对取反结果进行两次右移2位累加运算,对该累加结果取反,在第二次取反运算结果前添加“1”作为D[t]的码字;
S211:当|Rp[t]|≤2且Rd[t]=±4时,计算D[t]的奇偶分布值F[t],根据F[t]计算码块t的预编码字,在该预编码字前添加“1”,作为D[t]的码字;
所谓奇偶分布值,即数据串中偶数位上“1”的个数与奇数位上“1”的个数之差。利用计算机计算D[t]的奇偶分布值时,仍取预置码S=“01010101”,分别计算数据串D[t]∧S和的不均等值R(D[t]∧S)和D[t]的奇偶分布值
为叙述方便,首先进行如下定义:对原数据进行第一运算,即判断原数据的低4位数据和高4位数据是否相同,若相同,则将原数据的高4位右移1位、低4位左移1位,并与原数据累加;若不同,则对原数据进行右移1位累加运算。
上述根据F[t]计算码块t的预编码字M0[t]的具体实施方式为:
当F[t]=0时,对D[t]进行奇位取反得到D[t]的预编码字M0[t];
当F[t]≠0且Rd[t]=-4时,以D[t]为原数据进行第一运算得到D[t]的预编码字M0[t];当F[t]≠0且Rd[t]=4时,对D[t]取反,以该取反结果为原数据进行第一运算,并对运算结果进行奇位取反,得到D[t]的预编码字M0[t];
例如,D[t]=[11011101],满足F[t]≠0且Rd[t]=4,计算其码字的过程如下:
先对取反得“00100010”;
再对以“00100010”为原数据进行第一运算,由于该数据串高4位“0010”与低4为“0010”相同,故将其高4位右移1位、低4位左移1位得到“00010100”,与原数据“00100010”累加得第一运算结果“00110110”;
最后对运算结果进行奇位取反,得M0[t]=[10011100]。
S212:当Rp[t]>2且Rd[t]=0,或者,Rp[t]<-2且Rd[t]=4或6时,在D[t]前添加“00”,作为D[t]的码字M[t];
即此时D[t]的码字M[t]=0*29+D[t]。
S213:当Rp[t]<-2且Rd[t]=0,或者,Rp[t]>2且Rd[t]=-4或-6时,在D[t]前添加“11”,作为D[t]的码字M[t];
即此时D[t]的码字M[t]=1*29+1*28+D[t]。
S214:当Rp[t]<-2且Rd[t]=2,或者,Rp[t]>2且Rd[t]=-2时,在D[t]前添加“01”,作为D[t]的10位码字M[t];
即此时D[t]的码字M[t]=0*29+1*28+D[t]。
S215:当Rp[t]<-2且Rd[t]=-2或-4,或者,Rp[t]>2且Rd[t]=2或4时,对D[t]取反,在所述取反结果前添加“10”,作为D[t]的码字M[t];
即此时D[t]的码字
S216:当|Rp[t]|>2且Rd[t]=±8时,在预设的8位数据串前添加“01”,作为D[t]的码字M[t];
具体的,Rp[t]<-2且Rd[t]=8时,预设的8位数据串为“11011011”,即M[t]=[0111011011];
Rp[t]<-2且Rd[t]=-8时,预设的8位数据串为“10110111”,即M[t]=[0110110111];
Rp[t]>2且Rd[t]=8时,预设的8位数据串为“00100100”,即M[t]=[0100100100];
Rp[t]>2且Rd[t]=-8时,预设的8位数据串为“01001000”,即M[t]=[0101001000]。
S217:当Rp[t]<-2且Rd[t]=-6,或者,Rp[t]>2且Rd[t]=6时,对D[t]取反,将该取反结果进行右移2位累加运算,在运算结果前添加“01”,作为D[t]的码字M[t]。
上述编码方法中,根据Rp[t]和Rd[t]的多种数值组合,列出了多种不同的计算码字M[t]的方法,但其执行的概率是不同的。实际应用中,不需对D[t]进行处理即可直接得到码字M[t]的执行概率约为71.1%,如步骤S204~S205、S212~S214、S216,只需进行取反或奇位取反就可得到M[t]的概率为13.3%,如步骤S206、S215,其余要进行多步运算才能得到M[t]的概率只有15.6%,如步骤S207~S211、S217,因此小概率的多步运算不会对编码效率产生太大影响。而整个编码过程都避免了查询编码表,节约了编码表存储所占用的空间,减少了编码时间,提高了编码速度。
参照图5,本发明另一实施例提供的数据编码方法的步骤为:
S51:将需要传输的数据以字节为单位分块,并依次记为D[1]、D[2]、...…、D[T];其中,T为正整数,
S52:读取码块D[t],计算D[t]前已编码数据的不均等值Rp[t]及D[t]的不均等值Rd[t];t∈{1,2,……,T};
S53:判断|Rp[t]|是否小于等于2;如果是,执行步骤S54,否则执行S55;
S54:判断Rd[t]的大小,并选择执行S541~S546中的一个步骤;
S541:|Rp[t]|≤2,Rd[t]=0或2时,D[t]的8位预编码字M0[t]=D[t];
S5411:在M0[t]前添加一位二进制数“0”,得到对应于D[t]的9位码字M[t]=0*28+M0[t],再执行步骤S56;
S542:|Rp[t]|≤2,Rd[t]=-2时,D[t]的8位预编码字M0[t]=D[t];
S5421:在M0[t]前添加一位二进制数“1”,得到对应于D[t]的9位码字M[t]=1*28+M0[t],再执行步骤S56;
S543:|Rp[t]|≤2,Rd[t]=±4时,计算D[t]的奇偶分布值F[t];
S5431:判断F[t]是否等于0;
S5432:F[t]=0时,对D[t]进行奇位取反得到M0[t],再执行S5421;
S5433:F[t]≠0时,判断Rd[t]的大小;
S5434:Rd[t]=-4时,若D[t]的高4位与低4位不同,则对D[t]进行1次右移1位累加运算得到M0[t],再执行S5421;若D[t]的高4位与低4位相同,则将D[t]的高4位右移1位、低4位左移1位得到M1[t],并与D[t]累加得到M0[t],再执行S5421;
S5435:Rd[t]=4时,先对D[t]取反得到若M2[t]的高4位与低4位不同,则对M2[t]进行1次右移1位累加运算得到M1[t];若M2[t]的高4位与低4位相同,则将M2[t]的高4位右移1位、低4位左移1位,并与D[t]累加得到M1[t];对M1[t]进行奇位取反得到再执行S5421;
S544:|Rp[t]|≤2,Rd[t]=-6时,判断Rp[t]是否大于等于0;
S5441:Rp[t]≥0,对D[t]进行1次右移3位累加运算得到M0[t],再执行S5421;
S5442:Rp[t]<0,对D[t]进行2次右移3位累加运算得到M1[t],对M1[t]取反得到M0[t],再执行S5421;
S545:|Rp[t]|≤2,Rd[t]=6时,判断Rp[t]是否大于等于0;
S5451:Rp[t]≥0,对D[t]取反后进行1次右移2位累加运算得到M0[t];再执行S5421;
S5452:Rp[t]<0,对D[t]取反后进行2次右移2位累加运算得到M1[t],对M1[t]取反得到M0[t];再执行S5421;
S546:|Rp[t]|≤2,Rd[t]=±8时,对D[t]进行奇位取反运算得到M0[t];再执行S5421;
S55:判断Rd[t]和Rp[t]的大小,并选择执行S551~S556中的一个步骤;
S551:若Rp[t]>2且Rd[t]=0,或者,Rp[t]<-2且Rd[t]=4或6,则D[t]的8位预编码字M0[t]=D[t];
S5511:在M0[t]前添加两位二进制数“00”,得到对应于D[t]的10位码字M[t]=0*29+M0[t],再执行步骤S56;
S552:若Rp[t]<-2且Rd[t]=0,或者,Rp[t]>2且Rd[t]=-4或-6,则D[t]的8位预编码字M0[t]=D[t];
S5521:在M0[t]前添加两位二进制数“11”,得到对应于D[t]的10位码字M[t]=1*29+1*28+M0[t],再执行步骤S56;
S553:若Rp[t]<-2且Rd[t]=-2或-4,或者,Rp[t]>2且Rd[t]=2或4,则对D[t]取反得到M0[t];
S5531:在M0[t]前添加两位二进制数“10”,得到对应于D[t]的10位码字M[t]=1*29+M0[t],再执行步骤S56;
S554:若Rp[t]<-2且Rd[t]=2,或者,Rp[t]>2且Rd[t]=-2,则D[t]的8位预编码字M0[t]=D[t];
S5541:在M0[t]前添加两位二进制数“01”,得到对应于D[t]的10位码字M[t]=0*29+1*28+M0[t],再执行步骤S56;
S555:若Rp[t]<-2且Rd[t]=-6,或者,Rp[t]>2且Rd[t]=6,则对D[t]取反后进行右移2位与运算,得到M0[t],再执行S5541;
S556:若Rd[t]=±8,则采用直接对应法得到码块t的8位预编码字,再执行S5541。
具体的,Rp[t]<-2且Rd[t]=8时,则D[t]的8位预编码字M0[t]对应“11011011”;
Rp[t]<-2且Rd[t]=-8时,则D[t]的8位预编码字M0[t]对应“10110111”;
Rp[t]>2且Rd[t]=8时,则D[t]的8位预编码字M0[t]对应“00100100”;
Rp[t]>2且Rd[t]=-8时,则D[t]的8位预编码字M0[t]对应“01001000”。
S56:将码块t的码字M[t]置于码块t-1的码字M[t-1]之后,组成码字串;
S57:判断t是否等于T,如果否,则将t的值加1,返回步骤S52。
本发明上述实施例通过自动循环的方式完成多个(T>1)码块的编码,即首先t=1,读取第一个码块D[1],按照图1或2所示的步骤得到其对应的码字M[1],由于此时无已编码数据,故M[1]前无数据,M[1]作为当前码字串;由于t≠T,故将t的值加1后为2,即继续读取第二个码块D[2],重复执行图1或2所示的步骤,得到D[2]对应的码字M[2],将M[2]置于M[1]之后,组成当前码字串;若t仍不等于T,继续读取第三个码块D[3]……如此循环,直至t=T,编码完成,M[1]~M[T]组成的码字串即为最终编码结果。
下面结合图5所示的编码方法,以待传输数据串“11111111 1001100100100100 11011101 11110101 11111110 11111110 00000000 11101101”为例进行编码,以对本发明实施例作进一步描述。
首先,如步骤S51所述,对数据串以字节为单位分块,得到:
D[1]=[11111111],D[2]=[10011001],D[3]=[00100100],D[4]=[11011101],D[5]=[11110101],D[6]=[11111110],D[7]=[11111110],D[8]=[00000000],D[9]=[11101101]。即T=9。
然后,如步骤S52所述,读取码块D[t],计算D[t]前已编码数据的不均等值Rp[t]及D[t]的不均等值Rd[t]。
第1次循环(t=1):
读取第1个码块D[1]=[11111111],由于D[1]前没有已编码的数据,故Rp[1]=0,不均等值
经判断,|Rp[t]|=0≤2,且Rd[1]=8,故执行步骤S546,对D[1]进行奇位取反运算得到M0[1]=[01010101],在M0[1]前添加“1”得到D[1]对应的码字M[1]=1*28+M0[1]=[101010101]。
继续执行步骤S56,由于不存在M[0],故M[1]前无数据,由于t=1<T=9,故执行S57,t的值加1,返回步骤S52,进入第2次循环。
第2次循环(t=2):
读取第2个码块D[2]=[10011001],
由于|Rp[2]|=1≤2,Rd[1]=0,故执行步骤S541,M0[2]=D[2]=[10011001],进而执行步骤S5411,M[2]=0*28+M0[2]=[010011001]。
继续执行步骤S56,将M[2]置于M[1]之后,由于t=2<T=9,故执行S57,t的值加1,返回步骤S53,进入第3次循环。
第3次循环(t=3):
由于|Rp[3]|=0≤2,Rd[3]=-4,故执行步骤S543,计算D[3]的奇偶分布值F[3],由于D[3]奇数位和偶数位上各有一个“1”,故F[3]=0,故执行步骤S5432,对D[3]进行奇位取反运算得到M0[3]=[10001110],进而执行步骤S5421,M[3]=1*28+M0[3]=[110001110]。
继续执行步骤S56,将M[3]置于M[2]之后,由于t=3<T=9,故执行S57,t的值加1,返回步骤S52,进入第4次循环。
第4次循环(t=4):
读取第4个码块D[4]=[11011101],Rm[3]=2*5=1,Rp[4]=Rp[3]+Rm[3]=0+1=1,Rd[4]=2*6-8=4。
由于|Rp[4]|=1≤2,Rd[4]=4,故执行步骤S543,计算D[4]的奇偶分布值F[4]=2≠0,故执行步骤S5433,Rd[4]=4,故执行步骤S5435,对D[4]取反得M2[4]=[00100010];M2[4]的低4位与高4位相同,故对M2[4]高4位右移1位、低4位左移1位得[00010100],再与M2[4]累加得M1[4]=[00110110];对M1[4]奇位取反得到M0[4]=[10011100],执行步骤S5421,得到M[4]=1*28+M0[4]=[110011100]。
继续执行步骤S56,将M[4]置于M[3]之后,由于t=4<T=9,故执行S57,t的值加1,返回步骤S52,进入第5次循环。
第5次循环(t=5):
读取第5个码块D[5]=[11110101],Rm[4]=2*5-9=1,Rp[5]=Rp[4]+Rm[4]=1+1=2,Rd[5]=2*6-8=4。
由于|Rp[5]|=2≤2,Rd[5]=4,故执行步骤S543,计算D[5]的奇偶分布值F[5]=2≠0,故执行步骤S5433,Rd[5]=4,故执行步骤S5435,对D[5]取反得M2[5]=[00001010];M2[5]的低4位与高4位不同,故对M2[5]进行右移1位累加运算得M1[5]=[00001111];对M1[5]奇位取反得M0[5]=[10100101],执行步骤S5421,M[5]=1*28+M0[5]=[110100101]。
继续执行步骤S56,将M[5]置于M[4]之后,由于t=5<T=9,故执行S57,t的值加1,返回步骤S52,进入第6次循环。
第6次循环(t=6):
读取第6个码块D[6]=[11111110],Rm[5]=2*5-9=1,Rp[6]=Rp[5]+Rm[5]=2+1=3,Rd[6]=2*7-8=6。
由于|Rp[6]|=3>2,Rd[6]=6,故执行步骤S555,对D[6]取反后得M1[6]=[00000001],对M1[6]进行右移2位累加运算得到M0[6]=[01000001],再执行步骤S5541得M[6]=0*29+1*28+M0[6]=[0101000001]。
继续执行步骤S56,将M[6]置于M[5]之后,由于t=6<T=9,故执行S57,t的值加1,返回步骤S52,进入第7次循环。
第7次循环(t=7):
读取第7个码块D[7]=[11111110],Rm[6]=2*3-10=-4,Rp[7]=Rp[6]+Rm[6]=3+(-4)=-1,Rd[7]=2*7-8=6。
由于Rd[6]=6,故执行步骤S545,又-2≤Rp[7]=-1<0,故执行步骤S5452,对D[7]取反后得M1[7]=[00000001],对M1[7]进行2次右移2位累加运算再取反得M0[7]=[10101110],再执行步骤S5421得M[7]=1*28+M0[7]=[110101110]。
继续执行步骤S56,将M[7]置于M[6]之后,由于t=7<T=9,故执行S57,t的值加1,返回步骤S52,进入第8次循环。
第8次循环(t=8):
读取第8个码块D[8]=[00000000],Rm[7]=2*6-9=3,Rp[8]=Rp[7]+Rm[7]=-1+3=2,Rd[8]=-8,故执行步骤S546,对D[8]进行奇位取反运算得到M0[8]=[10101010],再执行步骤S5421,在M0[8]前添加“1”得到D[8]对应的码字M[8]=1*28+M0[8]=[110101010]。
继续执行步骤S56,将M[8]置于M[7]之后,由于t=8<T=9,故执行S57,t的值加1,返回步骤S52,进入第9次循环。
第9次循环(t=9):
读取第9个码块D[9]=[11101101],Rm[8]=2*5-9=1,Rp[9]=Rp[8]+Rm[8]=2+1=3,Rd[9]=2*6-8=4。
由于Rp[8]>2,Rd[9]=4,故执行步骤S215,对D[9]取反得M0[9]=[00010010],在M0[9]前添加“10”得到D[9]对应的码字M[9]=[1000010010]。
继续执行步骤S56,将M[9]置于M[8]之后,由于t=9=T,故编码结束。
上述9个字节的数据串编码后得到83位的码字串“101010101#010011001#110001110#110011100#110100101#0101000001#110101110#110101010#1000010010”,该码字串的不均等值Rp=Rp[9]+Rm[9]=3+(2*3-10)=-1,即|Rp|≤2,达到了直流平衡的目的,保证了数据传输的可靠性。
为充分说明本发明实施例所述的方法,上述数据串的9个字节中,有6个字节属于上文所述执行概率为15.6%的情况,故编码过程计算较多,但实际应用中,此情况极少。
对应于图1所示的数据编码方法,本发明实施例还提供了一种数据解码方法,可在不查询编码表的情况下,完成对采用图1所示的编码方法得到的码字串的解码。
参见图3,该数据解码方法包括:
S31:计算码字串中已解码部分的不均等值Rp[t];t为正整数;
S32:判断|Rp[t]|是否小于等于2;当|Rp[t]|≤2时,执行步骤S33;当|Rp|>2时,执行步骤S34;
S33:当|Rp[t]|≤2时,从码字串中未解码部分的高位到低位连续读取9位码字,根据步骤S3301~S3303中的条件选择执行其中之一,完成对读取到的9位码字的解码;
S3301:若读取到的9位码字的首位为“0”,则将该9位码字的后8位码字作为码块t;
S3302:若读取到的9位码字的首位为“1”,后8位码字的不均等值Rm[t]=-2,则将后8位码字作为码块t;
S3303:若读取到的9位码字的首位为“1”,后8位码字的不均等值Rm[t]=0,则根据后8位码字的奇偶分布值F[t]解码,并将解码结果作为码块t;
具体的,根据F[t]解码包括:若F[t]≠0,则对后8位码字进行奇位取反,将奇位取反结果作为码块t;
S34:当|Rp|>2时,从码字串中未解码部分的高位到低位连续读取10位码字,根据步骤S3401~S3404中的条件选择执行其中之一,完成对读取到的10位码字的解码;
S3401:当读取到的10位码字的前两位为“00”或“11”时,直接将该10位码字的后8位码字作为码块t;
S3402:当读取到的10位码字的前两位为“10”时,对该10位码字的后8位码字取反,将取反结果作为码块t;
S3403:当读取到的10位码字的前两位为“01”,后8位码字的不均等值Rm[t]=±2时,直接将上述后8位码字作为码块t;
S3404:当读取到的10位码字的前两位为“01”时,若其后8位码字为“10110111”或“01001000”,则将数据串“00000000”作为码块t;若其后8位码字为“11011011”或“01001000”,则将数据串“11111111”作为码块t。
上述解码方法与图1所示的编码方法互为逆运算,数据传输之前,通过图1所示方法进行编码,码字传输完成后,再通过上述解码方法进行解码,得到原数据。编码解码过程均不需查询编码表,仅仅通过直接对应或简单的计算即可完成,节约了编码表存储所占用的空间,减少了编码解码时间,提高了编码解码速度。
对应于图2所示的编码方法,本发明另一实施例提供了一种数据解码方法,可在不查询编码表的情况下,完成对采用图2所示的编码方法得到的码字串的解码。
参见图4,该数据解码方法包括如下步骤:
S41:计算码字串中已解码部分的不均等值Rp[t];t为正整数;
S42:判断|Rp[t]|是否小于等于2;当|Rp[t]|≤2时,执行步骤S43;当|Rp|>2时,执行步骤S44;
S43:当|Rp[t]|≤2时,从码字串中未解码部分的高位到低位连续读取9位码字,根据步骤S4301~S4303中的条件选择执行其中之一,完成对读取到的9位码字的解码;
S4301:若读取到的9位码字的首位为“0”,则将该9位码字的后8位码字M[t]作为码块t;
为方便叙述,本实施例中,以M[t]表示读取到的码字中的后8位码字,D[t]表示解码得到的原始数据的码块t。即本步骤解码得到的原始数据的码块D[t]=M[t]。
S4302:若读取到的9位码字的首位为“1”,后8位码字M[t]的不均等值Rm[t]=-2,则将M[t]作为码块t;
即,D[t]=M[t]。
S4303:若读取到的9位码字的首位为“1”,后8位码字M[t]的不均等值Rm[t]=0,则根据后8位码字M[t]的奇偶分布值F[t]解码,并将解码结果作为码块t;
具体的,根据F[t]解码包括:
若F[t]≠0,则对后8位码字M[t]进行奇位取反,将奇位取反结果作为码块t;
若F[t]=0,则对后8位码字M[t]进行1后置0运算得到数据块D1[t];
当D1[t]的不均等值Rd1[t]=-4且D1[t]中的两个“1”的位置之差Ed1[t]=3时,将D1[t]中的后一个“1”右移一位,将该移位结果作为码块t;当Rd1[t]=-2且Ed1[t]≠3且Ed1[t]≠5时,将D1[t]作为码块t;
当Rd1[t]≠-4或Ed1[t]=5时,对后8位码字M[t]先进行奇位取反运算,再进行1后置0运算得到数据块D2[t];当D2[t]中的两个“1”的位置之差Ed2[t]=3时,将D2[t]中的后一个“1”右移一位,并对该移位结果取反,将取反结果作为码块t;当Ed2[t]≠3且Ed1[t]≠5时,对D2[t]取反,将取反结果作为码块t。
例如,读取到9位码字“110011100”,首位为“1”,后8位码字M[t]的不均等值Rm[t]=2*4-8=0,奇偶分布值F[t]=0,对M[t]进行1后置0运算,得到D1[t]=[10010100],D1[t]的不均等值Rd1[t]=2*3-8=-2≠-4,故对M[t]进行奇位取反运算得到“00110110”,再进行1后置0运算得到D2[t]=[00100100],D2[t]中的两个“1”的位置之差Ed2[t]=3,故将其后一个“1”右移一位得到“00100010”,再取反得到原始数据的码块D[t]=[11011101]。
S4304:若读取到的9位码字的首位为“1”,后8位码字M[t]的不均等值Rm[t]=2,则在后8位码字M[t]中循环查找码字串“01010”或“0110110”:若查找到码字串“01010”,则将M[t]中码字串“01010”的首位所在的位置置0,M[t]的其余7位置1,作为码块t;若查找到码字串“0110110”,则将M[t]中码字串“0110110”的首位所在的位置置1,M[t]的其余7位置0,作为码块t;
所谓循环查找,即若在8位数据串S[t]中循环查找数据串S,当在S[t]中未查找到时,继续在S[t]+S[t]*28构成的16位数据串中查找S。
例如,读取到9位码字“110101110”,首位为“1”,后8为码字M[t]的不均等值Rm[t]=2*5-8=2,在M[t]中循环查找码字串“01010”或“0110110”,在M[t]+M[t]*28构成的16位数据串“1010111010101110”的第8~12位(即M[t]的第8位及第1~4位)查找到了“01010”,则将“01010”的首位所在的位置(即M[t]的第8位)置0,M[t]的其余7位(即M[t]的第1~7位)置1,得到该9位码字对应的原始数据码块D[t]=[11111110]。
S4305:若读取到的9位码字的首位为“1”,后8位码字M[t]的不均等值Rm[t]=-4,则在后8位码字M[t]中循环查找码字串“101”或“1001”:若查找到码字串“101”,则将M[t]中码字串“101”的首位所在的位置置1,M[t]的其余7位置0,作为码块t;若查找到码字串“1001”,则将M[t]中码字串“1001”的首位所在的位置置0,M[t]的其余7位置1,作为码块t;
S44:当|Rp|>2时,从码字串中未解码部分的高位到低位连续读取10位码字,根据步骤S4401~S4404中的条件选择执行其中之一,完成对读取到的10位码字的解码;
S4401:当读取到的10位码字的前两位为“00”或“11”时,直接将该10位码字的后8位码字M[t]作为码块t;
即,D[t]=M[t]。
S4402:当读取到的10位码字的前两位为“10”时,对该10位码字的后8位码字M[t]取反,将取反结果作为码块t;
即,
S4403:当读取到的10位码字的前两位为“01”,后8位码字M[t]的不均等值Rm[t]=±2时,直接将上述后8位码字M[t]作为码块t;
即,D[t]=M[t]。
S4404:当读取到的10位码字的前两位为“01”时,若其后8位码字M[t]为“10110111”或“01001000”,则将数据串“00000000”作为码块t;若其后8位码字M[t]为“11011011”或“01001000”,则将数据串“11111111”作为码块t;
S4405:若读取到的10位码字的前两位为“01”,则计算该10位码字的后8位码字M[t]的不均等值Rm[t];
当Rm[t]=4时,若在后8位码字M[t]中循环查找到数据串“010”,则将M[t]中码字串“010”的首位所在的位置置1,其余7位置0,作为码块t;
当Rm[t]=-4时,若在后8位码字M[t]中循环查找到数据串“101”,则将M[t]中码字串“101”的首位所在的位置置0,其余7位置1,作为码块t。
上述解码方法与图2所示的编码方法互为逆运算,针对图2所示的编码方法中可能执行的所有编码步骤进行解码,还原其原始数据,保证了由图2编码得到的码字在整个编码解码过程都不需要编码表,且准确无误地得到原始数据,节约了编码表存储所占用的空间,减少了编码、解码时间,提高了编码、解码速度。
相应于图5所示的编码方法,本发明又一实施例提供了一种解码方法,参见图6,包括步骤:
S601:计算码字串中已解码部分的不均等值Rp[t],若|Rp[t]|≤2,则执行步骤S602,否则执行步骤S662;
S602:从码字串中未解码部分的高位到低位连续读取9位码字M0[t],当M0[t]的首位是“0”时执行步骤S603,否则执行步骤S613;
S603:直接将M0[t]的后8位码字M[t]作为码块D[t],执行步骤S604;
S613:计算并判断M0[t]的后8位码字M[t]的不均等值Rm[t],若Rm[t]=-2,则执行S603,若Rm[t]=0,则执行S614,若Rm[t]=2或-4,则执行S654;
S614:计算后8位码字的奇偶分布值F[t],若F[t]≠0,则执行步骤S615,否则执行步骤S625;
S615:对后8位码字M[t]做奇位取反运算得码块D[t],执行步骤S604;
S625:先对M[t]进行“1”后置“0”运算得到D1[t];
S626:计算D1[t]的Rd1[t],当Rd1[t]=-2时计算D1[t]中两个1的位置之差Ed1[t];判断是否满足Rd1[t]=-2且Ed1[t]≠5,若不满足,则执行步骤S645;若满足上述条件,则当Ed1[t]≠3时,执行步骤S627,当Ed1[t]=3时,执行步骤S637;
S627:将D1[t]作为码块D0[t],进入步骤S648;
S637:将D1[t]后一位“1”后移1位得码块D0[t],进入步骤S648;
S645:先对M[t]进行奇位取反运算得到D2[t],再对D2[t]进行“1”后置“0”运算得到D1[t],再次进入步骤S626;
S648:判断是否执行了步骤S645,若是,则对D0[t]取反得到D[t],否则直接将D0[t]作为D[t];执行步骤S604;
S654:在后8位码字M[t]中循环查找到码字串,根据查找到的码字串串值,将码字串的首位所在的位置和其余7位分别置“0”或“1”;
具体的,当Rm[t]=2时,若在后8位码字M[t]中循环查找到码字串“01010”,则将M[t]中码字串的首位所在的位置置“0”,其余7位置“1”,得到8位码块D[t];若在后8位码字M[t]中循环查找到码字串“0110110”,则将M[t]中码字串的首位所在的位置置“1”,其余7位置“0”,得到8位码块D[t];
当Rm[t]=-4时,若在后8位码字M[t]中循环查找到码字串“101”,则将M[t]中码字串的首位所在的位置置“1”,其余7位置“0”,得到8位码块D[t];若在后8位码字M[t]中循环查找到码字串“1001”,则将M[t]中码字串的首位所在的位置置“0”,其余7位置“1”,得到D[t]。
S662:从码字串中未解码部分的高位到低位连续读取10位码字,当前两位码字是“00”或“11”时,执行S663;当前两位码字是“10”时,执行S673;当前两位码字是“01”时,计算并判断后8位码字M[t]的不均等值Rm[t],当Rm[t]=±2时,执行S673,当Rm[t]=4时,执行S683,当Rm[t]=-4时,执行S693;
S663:直接将后8位码字M[t]作为码块D[t];
S673:对后8位码字M[t]取反得到码块D[t];
S683:在后8位码字M[t]中循环查找码字串“010”,若找到,则执行步骤S684;若未找到,则执行步骤S685;
S684:将M[t]中码字串“010”的首位所在的位置置“1”,其余7位置“0”,得到8位码块D[t];
S693:在后8位码字M[t]中循环查找码字串“101”,若找到,则执行步骤S694;若未找到,则执行步骤S685;
S694:将M[t]中码字串“101”的首位所在的位置置“0”,其余7位置“1”,得到8位码块D[t];
S685:根据后8位码字M[t]的值,对应获取码块D[t];
具体的,当后8位码字M[t]为“10110111”时,码块D[t]对应为“00000000”;
当后8位码字M[t]为“11011011”时,码块D[t]对应为“11111111”;
当后8位码字M[t]为“01001000”时,码块D[t]对应为“00000000”;
当后8位码字M[t]为“00100100”时,码块D[t]对应为“11111111”。
S604:将码块t置于码块t-1之后,即将D[t]置于D[t-1]之后,组成原始数据串;
S605:判断是否还有未解码的码字串,如果是,则将t的值加1,返回步骤S601,进入下一个循环。
本发明上述实施例实现了解码步骤的自动循环,可自动完成对任意长度的码字串的解码。
下面结合图6所示解码方法,以上文所述的编码过程得到的83位码字串“10101010101001100111000111011001110011010010101010000011101011101101010101000010010”为例进行解码,以对本发明实施例作进一步描述。
第1次循环(t=1):
如步骤S601所述,码字串中已解码部分的不均等值,由于此时码字串中没有已解码部分,故Rp[1]=0。
由于|Rp[1]|≤2,故执行步骤S602,从码字串中未解码部分的高位到低位连续读取9位码字M0[1]=[101010101]进行解码。由于M0[1]的首位为“1”,故执行步骤S613,计算后8位码字M[1]的不均等值Rm[1]=2*4-8=0,进而执行步骤S614,计算后8位码字M[1]的奇偶分布值F[1]。由于F[1]=4≠0,故执行步骤S615,对M[1]进行奇位取反,得到原始数据的第1个码块D[1]=[11111111]。
继续执行步骤S604,由于不存在D[0],故D[1]前无数据,由于仍有未解码码字,故执行步骤S605,t的值加1,返回步骤S601,进入第2次循环解码。
第2次循环(t=2):
M0[1]的不均等值R0[1]=2*5-9=1,故码字串中已解码部分的不均等值Rp[2]=Rp[1]+R0[1]=1。
由于|Rp[2]|=1≤2,故执行步骤S602,从码字串中未解码部分的高位到低位连续读取9位码字M0[2]=[010011001],由于M0[2]的首位为“0”,故执行步骤S603,直接将后8位码字作为原始数据的第2个码块,即D[2]=M[2]=[10011001]。
继续执行步骤S604,将D[2]置于D[1]之后,由于仍有未解码码字,故执行步骤S605,t的值加1,返回步骤S601,进入第3次循环解码。
第3次循环(t=3):
M0[2]的不均等值R0[2]=2*4-9=-1,故码字串中已解码部分的不均等值Rp[3]=Rp[2]+R0[2]=1-1=0。
由于|Rp[3]|=0≤2,故执行步骤S602,从码字串中未解码部分的高位到低位连续读取9位码字M0[3]=[110001110],由于M0[3]的首位为“1”,故执行步骤S613,计算后8位码字M[3]的不均等值Rm[3]=2*4-8=0,进而执行步骤S614,计算后8位码字M[3]的奇偶分布值F[3]。由于F[3]=-2≠0,故执行步骤S615,对M[1]进行奇位取反,得到原始数据的第3个码块D[3]=[00100100]。
继续执行步骤S604,将D[3]置于D[2]之后,由于仍有未解码码字,故执行步骤S605,t的值加1,返回步骤S601,进入第4次循环解码。
第4次循环(t=4):
M0[3]的不均等值R0[3]=2*5-9=1,故码字串中已解码部分的不均等值Rp[4]=Rp[3]+R0[3]=0+1=1。
由于|Rp[4]|=1≤2,故执行步骤S602,从码字串中未解码部分的高位到低位连续读取9位码字M0[4]=[110011100],由于M0[4]的首位为“1”,故执行步骤S613,计算后8位码字M[4]的不均等值Rm[4]=2*4-8=0,进而执行步骤S614,计算后8位码字M[4]的奇偶分布值F[4]。由于F[4]=0,故执行步骤S625~S626,对M[4]进行1后置0运算得到数据块D1[4]=[10010100],并计算D1[4]的不均等值Rd1[4]=2*3-8=-2≠-4,故执行步骤S645,对M[4]先进行奇位取反运算得到D2[4]=[00110110],再对D2[4]进行1后置0运算得到数据块D1[4]=[00100100]。由于D1[4]的不均等值Rd1[4]=-4,D1[4]中的两个“1”的位置之差Ed1[4]=3,故执行步骤S637,将D1[4]中的后一个“1”右移1位得到D0[4]=[00100010],并执行步骤S648,由于执行了S645,对D0[4]取反得到原始数据的第4个码块D[4]=[11011101]。
继续执行步骤S604,将D[4]置于D[3]之后,由于仍有未解码码字,故执行步骤S605,t的值加1,返回步骤S601,进入第5次循环解码。
第5次循环(t=5):
M0[4]的不均等值R0[4]=2*5-9=1,故码字串中已解码部分的不均等值Rp[5]=Rp[4]+R0[4]=1+1=2。
由于|Rp[5]|=2≤2,故执行步骤S602,从码字串中未解码部分的高位到低位连续读取9位码字M0[5]=[110100101],由于M0[5]的首位为“1”,故执行步骤S613,计算后8位码字M[5]的不均等值Rm[5]=2*4-8=0,进而执行步骤S614,计算后8位码字M[5]的奇偶分布值F[5]。由于F[5]=0,故执行步骤S625~S626,对M[5]进行1后置0运算得到数据块D1[5]=[00100101],计算D1[5]的不均等值Rd1[5]=2*3-8=-2≠-4,故执行步骤S645,对M[5]先进行奇位取反运算得到D2[5]=[00001111],再对D2[5]进行1后置0运算得到数据块D1[5]=[00001010],继续执行步骤S626,计算D1[5]的不均等值Rd1[5]=-4,且D1[5]中的两个“1”的位置之差Ed1[5]=2≠3且Ed1[5]≠5,故执行步骤S627,将D1[5]作为D0[5],并执行步骤S648.由于执行了S645,故需对D0[5]取反得到原始数据的第5个码块D[5]=[1110101]。
继续执行步骤S604,将D[5]置于D[4]之后,由于仍有未解码码字,故执行步骤S605,t的值加1,返回步骤S601,进入第6次循环解码。
第6次循环(t=6):
M0[5]的不均等值R0[5]=2*5-9=1,故码字串中已解码部分的不均等值Rp[6]=Rp[5]+R0[5]=2+1=3。
由于|Rp[6]|=3>2,故执行步骤S662,从码字串中未解码部分的高位到低位连续读取10位码字M0[6]=[0101000001]。由于M0[6]的前两位为“01”,且后8位码字M[6]的不均等值Rm[6]=2*2-8=-4,故执行步骤S693,在M[6]中循环查找码字串“101”。在M[6]的第8~2位上查找到该码字串,故执行步骤S694,将M[6]的第8位置0,其余7位置1,得到原始数据的第6个码块D[6]=[11111110]。
继续执行步骤S604,将D[6]置于D[5]之后,由于仍有未解码码字,故执行步骤S605,t的值加1,返回步骤S601,进入第7次循环解码。
第7次循环(t=7):
M0[6]的不均等值R0[6]=2*3-10=-4,故码字串中已解码部分的不均等值Rp[7]=Rp[6]+R0[6]=3-4=-1。
由于|Rp[7]|=1≤2,故执行步骤S602,从码字串中未解码部分的高位到低位连续读取9位码字M0[7]=[110101110]。由于M0[7]的首位为“1”,故执行步骤S613,计算后8位M[7]的不均等值Rm[7]=2*5-8=2,进而执行步骤S654~S655,在M[7]中循环查找码字串“01010”或“0110110”。在M[7]的第8~4位查找到了“01010”,则将M[7]的第8位置0,其余7位置1,得到原始数据的第7个码块D[7]=[11111110]。
继续执行步骤S604,将D[7]置于D[6]之后,由于仍有未解码码字,故执行步骤S605,t的值加1,返回步骤S601,进入第8次循环解码。
第8次循环(t=8):
M0[7]的不均等值R0[7]=2*6-9=3,故码字串中已解码部分的不均等值Rp[8]=Rp[7]+R0[7]=-1+3=2。
由于|Rp[8]|=2≤2,故执行步骤S602,从码字串中未解码部分的高位到低位连续读取9位码字M0[8]=[110101010]。由于M0[7]的首位为“1”,故执行步骤S613,计算后8位M[7]的不均等值Rm[7]=2*4-8=0,进而执行步骤S614,计算后8位码字M[8]的奇偶分布值F[8]。由于F[8]=-4≠0,故执行步骤S615,对M[8]进行奇位取反,得到原始数据的第8个码块D[8]=[00000000]。
继续执行步骤S604,将D[8]置于D[7]之后,由于仍有未解码码字,故执行步骤S605,t的值加1,返回步骤S601,进入第9次循环解码。
第9次循环(t=9):
M0[8]的不均等值R0[8]=2*5-9=1,故码字串中已解码部分的不均等值Rp[9]=Rp[8]+R0[8]=2+1=3。
由于|Rp[9]|=3>2,故执行步骤S662,从码字串中未解码部分的高位到低位连续读取10位码字M0[9]=[1000010010]。由于M0[9]的前两位为“10”,故执行步骤S663,对M0[9]的后8位取反得到原始数据的第9个码块D[9]=[11101101]。
继续执行步骤S604,将D[9]置于D[8]之后,由于没有未解码码字,故解码结束。
上述解码过程共得到9个字节的原始数据[11111111]、[10011001]、[00100100]、[11011101]、[11110101]、[11111110]、[11111110]、[00000000]、[11101101]。与上文编码前的数据串一致,故解码准确无误,且完全不需要编码表,仅仅通过直接对应或简单计算即完成,充分说明了本发明所述的编码解码方法能节约编码表存储所占用的空间,减少编码、解码时间,提高编码、解码速度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件完成,所述的程序可存储于各类计算机的可读取存储介质中,所述程序在执行时,可包括如上述各方法的实施例流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种快速编码方法,其特征在于,包括:
将需要传输的数据以字节为单位分块,并依次记为码块1、码块2、……、码块T;其中,T为正整数;
读取码块t,计算码块t前已编码数据的不均等值Rp[t]及码块t的不均等值Rd[t];其中,t∈{1,2,……,T};
当|Rp[t]|≤2时,采用直流平衡法获取码块t的码字;当|Rp[t]|>2时,采用校正法获取码块t的码字;其中,
所述当|Rp[t]|≤2时,采用直流平衡法获取码块t的码字,包括:
当|Rp[t]|≤2且Rd[t]=0或2时,在码块t前添加“0”,作为码块t的码字;
当|Rp[t]|≤2且Rd[t]=-2时,在码块t前添加“1”,作为码块t的码字;
当|Rp[t]|≤2且Rd[t]=±8时,对码块t进行奇位取反运算,在所述运算结果前添加“1”,作为码块t的码字;
所述当|Rp[t]|>2时,采用校正法获取码块t的码字,包括:
当Rp[t]>2且Rd[t]=0,或者,Rp[t]<-2且Rd[t]=4或6时,在码块t前添加“00”,作为码块t的码字;
当Rp[t]<-2且Rd[t]=0,或者,Rp[t]>2且Rd[t]=-4或-6时,在码块t前添加“11”,作为码块t的码字;
当Rp[t]<-2且Rd[t]=2,或者,Rp[t]>2且Rd[t]=-2时,在码块t前添加“01”,作为码块t的10位码字;
当Rp[t]<-2且Rd[t]=-2或-4,或者,Rp[t]>2且Rd[t]=2或4时,对码块t取反,在所述取反结果前添加“10”,作为码块t的码字;
当|Rp[t]|>2且Rd[t]=±8时,在预设的8位数据串前添加“01”,作为码块t的码字;其中,所述预设的8位数据串包括:
当Rp[t]<-2且Rd[t]=8时,所述预设的8位数据串为“11011011”;
当Rp[t]<-2且Rd[t]=-8时,所述预设的8位数据串为“10110111”;
当Rp[t]>2且Rd[t]=8时,所述预设的8位数据串为“00100100”;
当Rp[t]>2且Rd[t]=-8时,所述预设的8位数据串为“01001000”。
2.根据权利要求1所述的编码方法,其特征在于,所述当|Rp[t]|≤2时,采用直流平衡法获取码块t的码字,还包括:
当0≤Rp[t]≤2且Rd[t]=-6时,对码块t进行一次右移3位累加运算,在所述累加运算结果前添加“1”作为码块t的码字;
当-2≤Rp[t]<0且Rd[t]=-6时,对码块t进行两次右移3位累加运算,并对所述累加运算结果取反,在所述取反结果前添加“1”作为码块t的码字;
当0≤Rp[t]≤2且Rd[t]=6时,对码块t取反,对所述取反结果进行一次右移2位累加运算,在所述累加结果前添加“1”作为码块t的码字;
当-2≤Rp[t]<0且Rd[t]=6时,对码块t取反,对所述取反结果进行两次右移2位累加运算,对所述累加结果取反,在第二次取反运算结果前添加“1”作为码块t的码字;
当|Rp[t]|≤2且Rd[t]=±4时,利用公式计算码块t的奇偶分布值F[t],根据F[t]计算码块t的预编码字,在所述预编码字前添加“1”,作为码块t的码字;其中,预置码S为“01010101”,D[t]为码块t,R(D[t]∧S)为数据串D[t]∧S的不均等值,为数据串的不均等值;
所述根据F[t]计算码块t的预编码字的具体方法包括:
当F[t]=0时,对码块t进行奇位取反得到码块t的预编码字;
当F[t]≠0且Rd[t]=-4时,以码块t为原数据进行第一运算得到码块t的预编码字;
当F[t]≠0且Rd[t]=4时,对码块t取反,以所述取反结果为原数据进行所述第一运算,并对运算结果进行奇位取反,得到码块t的预编码字;
所述第一运算具体为:判断所述原数据的低4位数据和高4位数据是否相同,若相同,则将所述原数据的高4位右移1位、低4位左移1位,并与所述原数据累加;若不同,则对所述原数据进行右移1位累加运算。
3.根据权利要求1所述的编码方法,其特征在于,所述当|Rp[t]|>2时,采用校正法获取码块t的码字,还包括:
当Rp[t]<-2且Rd[t]=-6,或者,Rp[t]>2且Rd[t]=6时,对码块t取反,将所述取反结果进行右移2位累加运算,在所述运算结果前添加“01”,作为码块t的码字。
4.根据权利要求1~3任一项所述的编码方法,其特征在于,在得到码块t的码字后,还包括:
将码块t的码字置于码块t-1的码字之后,组成码字串;
判断t是否等于T,如果否,则将t的值加1,返回执行所述读取码块t。
6.一种数据解码方法,其特征在于,基于一种数据编码方法;
所述数据编码方法包括:
将需要传输的数据以字节为单位分块,并依次记为码块1、码块2、……、码块T;其中,T为正整数;
读取码块t,计算码块t前已编码数据的不均等值Rp[t]及码块t的不均等值Rd[t];其中,t∈{1,2,……,T};
当|Rp[t]|≤2时,采用直流平衡法获取码块t的码字;当|Rp[t]|>2时,采用校正法获取码块t的码字;其中,
所述当|Rp[t]|≤2时,采用直流平衡法获取码块t的码字,包括:
当|Rp[t]|≤2且Rd[t]=0或2时,在码块t前添加“0”,作为码块t的码字;
当|Rp[t]|≤2且Rd[t]=-2时,在码块t前添加“1”,作为码块t的码字;
当|Rp[t]|≤2且Rd[t]=±8时,对码块t进行奇位取反运算,在所述运算结果前添加“1”,作为码块t的码字;
所述当|Rp[t]|>2时,采用校正法获取码块t的码字,包括:
当Rp[t]>2且Rd[t]=0,或者,Rp[t]<-2且Rd[t]=4或6时,在码块t前添加“00”,作为码块t的码字;
当Rp[t]<-2且Rd[t]=0,或者,Rp[t]>2且Rd[t]=-4或-6时,在码块t前添加“11”,作为码块t的码字;
当Rp[t]<-2且Rd[t]=2,或者,Rp[t]>2且Rd[t]=-2时,在码块t前添加“01”,作为码块t的10位码字;
当Rp[t]<-2且Rd[t]=-2或-4,或者,Rp[t]>2且Rd[t]=2或4时,对码块t取反,在所述取反结果前添加“10”,作为码块t的码字;
当|Rp[t]|>2且Rd[t]=±8时,在预设的8位数据串前添加“01”,作为码块t的码字;其中,当Rp[t]<-2且Rd[t]=8时,所述预设的8位数据串为“11011011”;当Rp[t]<-2且Rd[t]=-8时,所述预设的8位数据串为“10110111”;当Rp[t]>2且Rd[t]=8时,所述预设的8位数据串为“00100100”;当Rp[t]>2且Rd[t]=-8时,所述预设的8位数据串为“01001000”;
所述数据解码方法包括:
计算码字串中已解码部分的不均等值Rp[t];t为正整数;
若|Rp[t]|≤2,则从所述码字串中未解码部分的高位到低位连续读取9位码字,对所述9位码字进行解码,得到解码结果,记为码块t;若|Rp[t]|>2,则从所述码字串中未解码部分的高位到低位连续读取10位码字,对所述10位码字进行解码,得到解码结果,记为码块t;其中,
所述对所述9位码字进行解码,得到解码结果,记为码块t,包括:
若所述9位码字的首位为“0”,则将所述9位码字的后8位码字作为码块t;
若所述9位码字的首位为“1”,后8位码字的不均等值Rm[t]=-2,则将所述后8位码字作为码块t;
若所述9位码字的首位为“1”,后8位码字的不均等值Rm[t]=0,则根据所述后8位码字的奇偶分布值F[t]解码,并将解码结果作为码块t;其中,
所述根据F[t]解码,包括:若F[t]≠0,则对所述后8位码字进行奇位取反,将所述奇位取反结果作为码块t;
所述对所述10位码字进行解码,得到解码结果,记为码块t,包括:
当所述10位码字的前两位为“00”或“11”时,将所述10位码字的后8位码字作为码块t;
当所述10位码字的前两位为“10”时,对所述10位码字的后8位码字取反,将所述取反结果作为码块t;
当所述10位码字的前两位为“01”,后8位码字的不均等值Rm[t]=±2时,将所述后8位码字作为码块t;
当所述10位码字的前两位为“01”时,若所述后8位码字为“10110111”或“01001000”,则将数据串“00000000”作为码块t;若所述后8位码字为“11011011”或“01001000”,则将数据串“11111111”作为码块t。
7.根据权利要求6所述的解码方法,其特征在于,所述编码方法还包括:
当|Rp[t]|≤2且Rd[t]=±4时,计算码块t的奇偶分布值F[t],根据F[t]计算码块t的预编码字,在所述预编码字前添加“1”,作为码块t的码字;其中,
所述根据F[t]计算码块t的预编码字的具体方法为:
当F[t]=0时,对码块t进行奇位取反得到码块t的预编码字;
当F[t]≠0且Rd[t]=-4时,以码块t为原数据进行第一运算得到码块t的预编码字;
当F[t]≠0且Rd[t]=4时,对码块t取反,以所述取反结果为原数据进行所述第一运算,并对运算结果进行奇位取反,得到码块t的预编码字;
所述第一运算具体为:判断所述原数据的低4位数据和高4位数据是否相同,若相同,则将所述原数据的高4位右移1位、低4位左移1位,并与所述原数据累加;若不同,则对所述原数据进行右移1位累加运算;
所述编码方法中,所述计算所述后8位码字的奇偶分布值F[t]具体为:利用公式计算F[t];其中,S为预置码“01010101”,M[t]为所述后8位码字,R(M[t]∧S)为数据串M[t]∧S的不均等值,为数据串的不均等值;
所述根据F[t]解码还包括:
若F[t]=0,则对所述后8位码字进行1后置0运算得到数据块D1[t];
当D1[t]的不均等值Rd1[t]=-4且D1[t]中的两个“1”的位置之差Ed1[t]=3时,将D1[t]中的后一个“1”右移一位,将所述移位结果作为码块t;当Rd1[t]=-2且Ed1[t]≠3且Ed1[t]≠5时,将D1[t]作为码块t;
当Rd1[t]≠-4或Ed1[t]=5时,对所述后8位码字先进行奇位取反运算,再进行1后置0运算得到数据块D2[t];当D2[t]中的两个“1”的位置之差Ed2[t]=3时,将D2[t]中的后一个“1”右移一位,并对所述移位结果取反,将所述取反结果作为码块t;当Ed2[t]≠3且Ed1[t]≠5时,对D2[t]取反,将所述取反结果作为码块t。
8.根据权利要求6所述的解码方法,其特征在于,所述编码方法还包括:
当0≤Rp[t]≤2且Rd[t]=-6时,对码块t进行两次右移3位累加运算,在所述累加结果前添加“1”作为码块t的码字;
当-2≤Rp[t]<0且Rd[t]=-6时,对码块t进行两次右移3位累加运算,对所述累加结果取反,在所述取反结果前添加“1”作为码块t的码字;
当0≤Rp[t]≤2且Rd[t]=6时,对码块t取反,对所述取反结果进行一次右移2位累加运算,在所述累加结果前添加“1”作为码块t的码字;
当-2≤Rp[t]<0且Rd[t]=6时,对码块t取反,对所述取反结果进行两次右移2位累加运算,对所述累加结果取反,在第二次取反运算结果前添加“1”作为码块t的码字;
当Rp[t]<-2且Rd[t]=-6,或者,Rp[t]>2且Rd[t]=6时,对码块t取反,将所述取反结果进行右移2位累加运算,在所述运算结果前添加“01”,作为码块t的码字;
所述解码方法中,对所述9位码字进行解码,得到解码结果,记为码块t,还包括:
若所述9位码字的首位为“1”,后8位码字的不均等值Rm[t]=2,则在所述后8位码字中循环查找码字串“01010”或“0110110”:若查找到码字串“01010”,则将所述后8位码字中码字串“01010”的首位所在的位置置0,所述后8位码字的其余7位置1,作为码块t;若查找到码字串“0110110”,则将码字串“0110110”的首位所在的位置置1,所述后8位码字的其余7位置0,作为码块t;
若所述9位码字的首位为“1”,后8位码字的不均等值Rm[t]=-4,则在所述后8位码字中循环查找码字串“101”或“1001”:若查找到码字串“101”,则将码字串“101”的首位所在的位置置1,所述后8位码字的其余7位置0,作为码块t;若查找到码字串“1001”,则将码字串“1001”的首位所在的位置置0,所述后8位码字的其余7位置1,作为码块t;
对所述10位码字进行解码,得到解码结果,记为码块t,还包括:
若所述10位码字的前两位为“01”,则计算所述10位码字的后8位码字的不均等值Rm[t];
当Rm[t]=4时,若在所述后8位码字中循环查找到数据串“010”,则将所述后8位码字中码字串“010”的首位所在的位置置1,其余7位置0,作为码块t;
当Rm[t]=-4时,若在所述后8位码字中循环查找到数据串“101”,则将所述后8位码字中码字串“101”的首位所在的位置置0,其余7位置1,作为码块t。
9.根据权利要求6~8任一项所述的解码方法,其特征在于,在得到所述码块t之后还包括:
将所述码块t置于码块t-1之后,组成原始数据串;
判断是否还有未解码的码字串,如果是,则将t的值加1,返回执行所述计算码字串中已解码部分的不均等值Rp[t]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210302430.XA CN102780495B (zh) | 2012-08-23 | 2012-08-23 | 一种数据编码及解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210302430.XA CN102780495B (zh) | 2012-08-23 | 2012-08-23 | 一种数据编码及解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102780495A true CN102780495A (zh) | 2012-11-14 |
CN102780495B CN102780495B (zh) | 2015-02-04 |
Family
ID=47125272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210302430.XA Active CN102780495B (zh) | 2012-08-23 | 2012-08-23 | 一种数据编码及解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102780495B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731241A (zh) * | 2014-01-22 | 2014-04-16 | 四川大学 | 提高通信系统频谱效率的编码系统及方法 |
CN104679448A (zh) * | 2015-02-05 | 2015-06-03 | 深圳市硅格半导体有限公司 | 数据比特流转换的方法和装置 |
CN109936379A (zh) * | 2019-01-24 | 2019-06-25 | 南京大学 | 一种多码率ldpc码的构造方法及其解码装置 |
CN113949388A (zh) * | 2021-12-21 | 2022-01-18 | 浙江芯昇电子技术有限公司 | 用于串行器/解串器系统的编解码器与编解码方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100315424B1 (ko) * | 1999-12-24 | 2001-11-28 | 오길록 | 고속의 데이터 송신을 위한 개선된 8비트/10비트 인코더 |
CN101176262A (zh) * | 2005-05-31 | 2008-05-07 | 国际商业机器公司 | 使用不同等性无关和不同等性相关的已编码向量的nb/mb编码装置和方法 |
-
2012
- 2012-08-23 CN CN201210302430.XA patent/CN102780495B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100315424B1 (ko) * | 1999-12-24 | 2001-11-28 | 오길록 | 고속의 데이터 송신을 위한 개선된 8비트/10비트 인코더 |
CN101176262A (zh) * | 2005-05-31 | 2008-05-07 | 国际商业机器公司 | 使用不同等性无关和不同等性相关的已编码向量的nb/mb编码装置和方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731241A (zh) * | 2014-01-22 | 2014-04-16 | 四川大学 | 提高通信系统频谱效率的编码系统及方法 |
CN103731241B (zh) * | 2014-01-22 | 2017-02-08 | 四川大学 | 提高通信系统频谱效率的编码系统及方法 |
CN104679448A (zh) * | 2015-02-05 | 2015-06-03 | 深圳市硅格半导体有限公司 | 数据比特流转换的方法和装置 |
CN104679448B (zh) * | 2015-02-05 | 2017-10-03 | 深圳市硅格半导体有限公司 | 数据比特流转换的方法和装置 |
CN109936379A (zh) * | 2019-01-24 | 2019-06-25 | 南京大学 | 一种多码率ldpc码的构造方法及其解码装置 |
CN109936379B (zh) * | 2019-01-24 | 2021-07-09 | 南京大学 | 一种多码率ldpc码的构造方法及其解码装置 |
CN113949388A (zh) * | 2021-12-21 | 2022-01-18 | 浙江芯昇电子技术有限公司 | 用于串行器/解串器系统的编解码器与编解码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102780495B (zh) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102780495A (zh) | 一种数据编码及解码方法 | |
CN102823141B (zh) | 用于固态存储器件的两级bch码 | |
US4547890A (en) | Apparatus and method for forming d.c. free codes | |
JPH0584099B2 (zh) | ||
EP0127984A2 (en) | Improvements to apparatus for decoding error-correcting codes | |
CN110932736B (zh) | 一种基于Raptor码及四进制RS码的DNA信息存储方法 | |
CN100517984C (zh) | 用于移动通信系统的维特比/涡轮联合译码器 | |
JP2013524609A5 (zh) | ||
GB2538218A (en) | System and method for compressing data using asymmetric numeral systems with probability distributions | |
EP1756824A1 (en) | Encoding and decoding apparatus and corresponding methods | |
US5021782A (en) | Variable length encoding method and variable length decoding method, encoding device and decoridng device for the implementation of this method | |
CN116594572A (zh) | 浮点数流式数据压缩方法、装置、计算机设备及介质 | |
CN111858507A (zh) | 基于dna的数据存储方法、解码方法、系统和装置 | |
EP1197967A3 (en) | Data modulation and correction methods | |
CN100456640C (zh) | 调制和解调方法与装置、信息传输方法和装置 | |
CN102077470B (zh) | 采用线性分组码的编码方法、装置及线性分组码生成方法、装置 | |
KR19980042111A (ko) | 디 시 프리 시퀀스를 디코딩 및 검출하는 방법 | |
GB2522960A (en) | Data encoding in solid-state storage apparatus | |
CN107317844B (zh) | 基于锯齿可解码的最小存储开销的分布式存储方法及系统 | |
EP0353274A1 (en) | SYNCHRONIZATION FOR STORED DATA. | |
CN101266795A (zh) | 一种格矢量量化编解码的实现方法及装置 | |
CN108988988B (zh) | 一种基于准循环矩阵两级查找表的rcm编码器和编码方法 | |
US4573155A (en) | Maximum likelihood sequence decoder for linear cyclic codes | |
EP0345986A2 (en) | Improved data demodulation system | |
US7546516B2 (en) | System and method for forward error correction |
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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160729 Address after: 215555 south side of Xinyang Road, Xinzhuang Town, Suzhou, Jiangsu, Changshou City Patentee after: Suzhou British Mdt InfoTech Ltd Address before: 215123 Suzhou Industrial Park, Jiangsu Road, No. 199 Patentee before: Soochow University |