本发明属于通信技术中的纠错编码翻译技术领域,特别是涉及一种可用于卫星通信、深海、深井等单向通信场合的纠错编码调用方法。
背景技术:
前向纠错编码是在数据传输过程中控制错误编码的主要方法之一。前向纠错编码只需要通过信息发送方向接收方传输信息。由于其编码和编码过程不需要反向信道,因此在单向通信环境中得到了广泛的应用。
为了使前向纠错编码具有检错或纠错能力,发送人必须向原码字添加多余的码元,以扩大码字之间的差异,即将原码字按照一定的规则变成具有一定信息冗余的码字,以满足每个码字码元之间的限制关系。建立上述关系称为编码。码字到达接收方后,可根据编码规则确定是否有错误。当不能满足时,按照一定的规则确定错误的位置并进行纠正。修正和恢复原码字的过程称为译码。分组码是最著名的前向纠错码:输入信息按K单位(单位可为单个比特,数学为{0,1}集中点;或根据需要选择m比特,数学对应有限域GF(2m)上点)切成组进行编码输出。如果输出的数据(长度为n个单位)仅与输入数据(长度为k个单位)有关,则称此代码为分组码。
当网络协议和信道仅支持以数据包为基本传输单元时,整个数据包的错误(特别是整个数据包的丢失)构成了信息传输中最常见的错误情况。如果使用现有的纠错编码理论设备,人们需要将整个数据包装成基本信息传输单元(即编码元),然后纠正编码,见图1。
以数据包(长度为mN比特)为基本码元纠错编码时,码元可视为有限域GF(2mN)上面的元素,纠错编码的目的是kmN编成比特数据n(n≥k)个mN比特数据(称为码字)。由此产生的问题有两个:一是在新网络协议下使用纠错编码时,由于数据包的长度在变化,需要根据网络中传输数据包的大小重新设计相应的纠错编码方案。这个过程需要在计算机程序中手动完成或预制所有可能的编码方案,导致程序冗长或程序通用性差;第二,即使第一个问题可以满足,单个数据包的长度mN在较大的情况下,实现具体编码和翻译方案所涉及的相关编码操作也会非常复杂,导致编码和翻译效率低下。
因此,如果直接应用现有的纠错编码理论和技术,在单向通信环境中很难解决整个数据包丢失的特定错误类型。
技术实现要素:
针对单向通信环境中整个数据包错误的问题,本发明提供了一种通用性好、可扩展性好、简单高效的单向通信纠错编码调用方法。
本发明采用以下技术方案实现上述目的:
在单向通信中,面向整数据包错误的纠错编码调用方法包括以下步骤:
步骤1,设定单个数据包的长度为m×N比特将所有数据以每k个数据包为待编码数据包,从数据包的每个数据包中依次选Im拿N个比特m×k比特;
步骤2,提取Nm×k比特依次调用纠错编码模块EnC,因此,总共需要处理N次,得到N次m×n比特数据;
步骤3,将步骤2获得的N长成m×n比特的数据发送给接收端;
步骤4,接收端调用纠错译码模块DeC对N个长为m×n比特的数据逐个处理,所以总共需要处理N次,得到N次m×k比特数据;
第五步,根据第一步提取过程的逆过程,恢复k个数据包。
进一步,所述EnC每个待编码模块的输入数据长度为m×k比特,编码后的单个度为比特m×n比特;DeC每次模块的输入数据长度为m×n翻译后的数据长度为比特m×k比特。
进一步地,所述步骤1的具体实现过程为:
步骤101,以每k个数据包为待编码数据包;
步骤102将整数i从1增加到k,步骤103和104每次增加都执行;
第一步103,从数据包的每个数据包中依次抽取m比特,总共有k个数据包,所以提取得到m×k比特;
步骤104,提取步骤103m×k比特作为即将进入纠错编码模块EnC的第i个m×k提取完所有比特数据块后,获得N个m×k比特。
此外,步骤3后,还包括:接收端接收长度N×m×n比特数据后,将其分为N个m×n比特数据块。
与现有技术相比,本发明具有以下优点:
1.提高了整数据包纠错的技术通用性。
以往的技术每次在新的网络协议下使用纠错编码时,由于数据包的长度在变化,需要根据网络中传输的数据包的大小来确定码元大小,并设计相应的纠错编码方案。导致程序冗长或程序通用性差;本文提出的解决方案是通过调用现有纠错编码方案来解决数据包错误。因此,在编写程序时,我们只需要编写调用纠错编码模块的方法,具体的编码和编码模块可以直接使用现有的程序模块,大大提高了编码、编码程序和硬件设计的通用性。
2.有效提高了整数据包纠错的编码效率。
采用以往的技术,当单个数据包的长度较大时,实现具体编码和翻译方案所涉及的相关编码操作将非常复杂,巨大的实现成本将导致编码和翻译效率非常低。使用我们的调用方案可以将数据包纠错编码的问题转化为字节甚至比特的纠错编码,特别是在硬件实现时,因此该方案不会显著增加编码和解码的难度。
本发明设计的调用方案具有良好的可扩展性。
本发明对需要调用的分组码的具体形式没有限制,任何分组码都可以在本发明的框架内使用,因此可以兼容最先进的编码理论和技术成果,具有良好的可扩展性。
附图说明
为了更清楚地解释本发明实施例中的技术方案,以下将简要介绍现有技术和实施例中需要使用的附图。显然,下面描述的附图只是本发明的一些实施例。对于本领域的普通技术人员,其他附图也可以根据这些附图获得,而无需付出创造性劳动。
图1是以整数据包为基本码元编码的示意图;
图2是本发明的原理示意图。
具体实施方法
为便于理解,对本发明中出现的一些名词作以下解释:
单向通信:两个通信设备之间的数据只能以一个方向传输。在单向通信模式下,两个通信设备中的一个固定为发送设备,另一个固定为接收设备。它们之间有一个通信链路。典型的例子是卫星、深井和深海数据传输。
数据包:在包交换网络中,单个信息分为多个数据块作为传输的基本单位,称为数据包。
纠错编码:将信息源待发的信息序列(以比特单位为单位,或以字节和字节的整数倍为单位,一个基本单位称为代码元)按其单位的k组划分为消息组,然后将每个消息组独立转换成长n(n>k)的二进制数字组,称为码字。把消息组变换成码字的过程称为编码,其逆过程称为译码。
实施例1:本实施例为单向通信中的整个数据包错误提供了一种纠错编码调用方法。为方便表达,同意以下前提条件和符号:
(1)单个数据包的长度为m×N比特;
(2)供调用纠错编码模块EnC,EnC每个待编码模块的输入数据长度为m×k比特,编码后的单个度为比特m×n对应的纠错译码模块命名为比特;DeC,DeC模块实现的是EnC模块逆转,即每次待解码的输入数据长度为m×n翻译后的数据长度为比特m×k比特。
参见图2,该方法包括以下步骤:
步骤S101.以每k个数据包为待编码数据包,依次操作每个待编码数据包(即k个数据包);
步骤S102,整数i从1增加到k,每次增加均执行一次步骤S103和S104;
步骤S103依次从数据包个数据包中依次抽取第一个m比特,总共有k个数据包,所以提取得到m×k比特;
步骤S104,将步骤S103抽取的m×k即将进入纠错编码模块的比特EnC的第i个m×k比特数据块;
将步骤S102、S103和S104抽取过程称为数据包数据抽取。因为单个数据包的长度是m×N按步骤进行比特S101,总共有k个数据包,所以全部提取后,得到N个m×k比特。
步骤S105,提取Nm×k比特依次调用纠错编码模块EnC,调用完EnC模块完成后,总共需要处理N次,将N次长成m×n比特数据;
步骤S106,将步骤S105获得的N长为m×n将比特数据发送到接收端;
步骤S接收端接收长度为107N×m×n比特数据后,将其分为N个m×n比特数据块;
步骤S108,接收端调用纠错译码模块DeC对N个长为m×n比特的数据逐个处理,所以总共需要处理N次,得到N次m×k比特数据;
步骤S109,按照步骤S102、S103、S104抽取过程的逆过程,即获得k个数据包。
本发明对需要调用的分组码的具体形式没有限制,任何分组码都可以在本发明的框架内使用。
本发明结合两个具体实施例进一步详细描述:
实施例2:单个数据包长度为100字节,纠错编码为(7、4)系统汉明码。(7、4)系统汉明码是现有的纠错编码方案,输入4bit,输出为7bit,对应译码方案的输入为7bit,输出为4bit。
发方步骤:
步骤S201,首先连续4个数据包(因为每个数据包是100字节,所以有800比特)
p1=(p1,1,p1,2,…,p1,800),p2=(p2,1,p2,2,…,p2,800),p3=(p3,1,p3,2,…,p3,800),p4=(p4,1,p4,2,…,p4,800)
这里作为原始信息,pi,j表示第i个数据包pi第j比特;
步骤S202,I从1到800依次选择(p1,i,p2,i,p3,i,p4,i),执行(7,4)系统汉明码,获取7比特数据(p1,i,p2,i,p3,i,p4,i,p5,i,p6,i,p7,i),由于系统是汉明码执行的,7比特数据中的前4比特是原始输入的4比特,后3比为(7,4)汉明码生成的新的校验数据;
步骤S203,利用校验数据产生数据包
p5=(p5,1,p5,2,…,p5,800),p6=(p6,1,p6,2,…,p6,800),p7=(p7,1,p7,2,…,p7,800),再利用固有的网络协议将全部数据包(p1,p2,...,p7)发送给收方。
收方步骤:
步骤S204,在接收到数据时,首先根据数据包序号情况判断是否有数据包pi丢失。为表述方便,我们可假设此处p3丢失,收方正常收到了p1,p2,p4,p5,p6,p7;
步骤S205,强行假设p′3=(p′3,1,p′3,2,…,p′3,800)=(0,0,…,0);
步骤S206,对i:1→800,依次抽取出(p1,i,p2,i,p′3,i,p4,i,p5,i,p6,i,p7,i),执行(7,4)系统汉明码解码过程,记录译码所得到的(p1,i,p2,i,p3,i,p4,i);
步骤S207,收集全部译码结果,则如果错误类型为(p1,i,p2,i,p′3,i,p4,i,p5,i,p6,i,p7,i)数据包仅有一个丢失,并且其余数据包正确的情况下,
p1=(p1,1,p1,2,…,p1,800),p2=(p2,1,p2,2,…,p2,800),p3=(p3,1,p3,2,…,p3,800),p4=(p4,1,p4,2,…,p4,800)即为正确的数据包。
实施例三,单个数据包长度为100字节,使用纠错编码方式为GF(28)上的[15,11,3]系统码。GF(28)上的[15,11,3]系统码为现有的纠错编码方案,该纠错编码方案的输入为11字节,输出为15字节,对应译码方案的输入为15字节,输出为11字节。
发方步骤:
步骤S301,首先把连续的11个数据包
p1=(p1,1,p1,2,...,p1,100),p2=(p2,1,p2,2,...,p2,100),...,p11=(p11,1,p11,2,...,p11,100)作为原始信息,这里的pi,j表示第i个数据包pi的第j字节;
步骤S302,对i从1到100,依次选择(p1,i,p2,i,...,p11,i),执行GF(28)上的[15,11,3]系统码,得到15字节数据(p1,i,p2,i,...,p15,i);由于执行的是系统码,故得到的15字节数据中的前11字节就为原始输入的11字节,后4字节为GF(28)上的[15,11,3]系统码生成的新的校验数据;
步骤S303,根据步骤S302,构造新数据包
p12=(p12,1,p12,2,...,p12,100),p13=(p13,1,p13,2,...,p13,100),
p14=(p14,1,p14,2,...,p14,100),p15=(p15,1,p15,2,...,p15,100)
利用固有的网络协议将全部数据包(p1,p2,...,p15)发送给收方。
收方步骤:
步骤S304,在接收到数据时,首先判断是否有数据包丢失或出错。为表述方便,我们可假设此处p3出错,收方正常收到了p1,p2,p4,...,p15;
步骤S305,强行假设p′3=(p′3,1,p′3,2,...,p′3,100)=(0x0,0x0,...,0x0);0x为16进制符号;
步骤S306,对i:1→100,依次抽取出15个字节(p1,i,p2,i,p′3,i,p4,i,...,p15,i),执行GF(28)上的[15,11,3]系统码解码过程,记录译码所得到的(p1,i,p2,i,...,p11,i);
步骤S307,收集全部译码结果
p1=(p1,1,p1,2,...,p1,100),
p2=(p2,1,p2,2,...,p2,100),
...
p11=(p11,1,p11,2,...,p11,100)
则以上数据即为原始正确的数据包。
在实施例二和实施例三中,我们选择了特定的数据切分方式和特定的编码方式,需要指出,本发明不仅仅适用于样例中给出的特殊情形,对于可逆的数据切分方式和任意的系统分组纠错码都是适用的。区别仅在于切分、纠错编码、译码的实现难度和纠错性能之上。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来讲是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽范围。