信道纠错编码C语言,一种信道编码纠错方法

一种信道编码纠错方法

【技术领域】

[0001]本发明属于信道编码技术领域,具体涉及无线数据远距离传输的数据移位纠错解决方法。

【背景技术】

[0002]目前,无人机、无人飞艇等装备已经在目标识别、目标监测和跟踪、灾情探测与防治等各个领域广泛应用。与传统有线数据传输相比,无线数据传输经常会出现数据误码与丢帧,其可靠性较差。特别是远距离传输时,数据移位现象会导致数据接收端接收的数据完全错误。如果依赖机上存储设备进行事后回放,则不能满足实时观测需求,故需要一种简便、快捷的方法解决无线传输产生的数据移位问题。

[0003]目前在数据传输中,主要有三种误码控制方法,即自动请求重发(ARQ)、前向纠错(FEC)和混合纠错(HEC)。第一种方法中接收端要求发送端重发其检测到的错误信息,故实时性较差;第二种方法是在发送端给待传输信息按一定的算法附加一些监督码元,然后接收端对收到的码字进行译码,从而发现误码并予以纠正,通常所用编码算法(如BCH码、RS码)较为复杂;混合纠错(HEC)是前两种方式的结合。

【发明内容】

[0004]为了克服现有技术的不足,本发明提供一种信道编码纠错方法,只需在已有系统基础上以软件的形式来实现,能解决无线传输产生的数据移位问题。

[0005]本发明解决其技术问题所采用的技术方案包括以下步骤:

[0006]步骤1:数据发送端将待发送的原始数据块划分为若干个数据包,每个数据包的长度为2000字节,若最后一个数据包的长度不足2000字节,则无需补齐;

[0007]步骤2:在每个数据包的包首位置插入包所属原始数据块编号、原始数据块分割的包数和当前包编号;

[0008]步骤3:将每个数据包的所有字节按照无符号字节累加后取低字节,作为校验码插入数据包包尾;

[0009]步骤4:对数据包按下述方法进行协议转换:给数据包添加新的包头0XFFFF00与包尾0X00FFFF ;将数据包中除包头、包尾外与OXFF相同的数据用字符OXDBDC代替,与字符OXDB相同的数据用字符OXDBDD代替;

[0010]步骤5:将协议转换后的数据包依次发送,当无数据发送时,发送空闲数据帧OXAA ;

[0011]步骤6:数据接收端将接收到的数据帧放入缓存,然后逐帧从帧头开始以三个字节大小为移动窗口,逐位对数据帧进行滑动移位,若移动窗内数据为0XFFFF00或0X00FFFF则找到该帧数据偏移量,再按此数据偏移量对整帧数据进行反向移位纠偏;

[0012]步骤7:若反向移位纠偏后的数据全为OXAA则不处理,否则将反向移位纠偏后的数据存入缓存进行拼包处理,若出现以0XFFFF00开始、以0X00FFFF结束的一段数据则提取出一个数据包;

[0013]步骤8:移除包头与包尾,并将其中连续两个字节OXDBDC替换为0XFF,将连续两个字节OXDBDD替换为OXDB ;

[0014]步骤9:按照数据包中的包所属原始数据块编号、原始数据块分割的包数、当前包编号信息拼接出完整的原始数据块。

[0015]本发明的有益效果是:通过对数据进行分包后协议转换、查找偏移量并进行反向移位等一系列处理后,在无线数据传输系统最高8Mb/s的传输速率下,仍能及时处理得到机上下传的最大分辨率为16384X16384的图像数据。这表明该方法能兼顾数据处理效率与效果两方面的要求。

[0016]此外,本方法将数据划分为若干较小数据包后发送,若传输中出现误码或丢帧,可要求数据发送端仅将出错的数据包进行重传,避免直接将原始数据下传时若数据出错,则整个数据需要全部重发的不足,可节省传输时间并减轻数据收、发双方的处理压力。

[0017]综上所述,本方法能使所用系统具有一定的检错与纠错能力,可较好地解决无线传输中的数据移位现象,提高数据传输的可靠性;

[0018]另一方面,本方法编解码效率高,且实现过程较为简单,能够完全满足处理高速数据对实时性的要求,并已在工程应用中取得了良好效果。

【附图说明】

[0019]图1是本方法实现信道编码纠错原理图。

[0020]图2是本方法滑动窗查找数据偏移量示意图。

【具体实施方式】

[0021]下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。

[0022]本发明包括以下步骤:

[0023]步骤1:数据发送端不直接将原始数据块送至无线数据传输系统进行发送,而是在发送前先对原始数据块进行分割,将其划分为长度2000字节的若干个数据包(若末尾数据包长不足2000,无需补齐);

[0024]步骤2:在每个数据包的包首位置插入唯一包编号(0-65535内循环递增,用于数据重传)、包所属原始数据块编号、原始数据块分割的包数、当前包编号;

[0025]步骤3:将数据包的所有字节按照无符号字节累加后取低字节,将其作为校验码插入数据包包尾;

[0026]步骤4:对数据包按下述方法进行协议转换,完成数据发送前的处理工作:

[0027]步骤4.(I):给数据包添加新的包头0XFFFF00与包尾0X00FFFF ;步骤4.(2):将数据包中除包头包尾外,与OXFF相同的数据用字符OXDBDC代替,与字符OXDB相同的数据用字符OXDBDD代替。

[0028][注1:如果确定包头、包尾均为0XFF,若包内两相邻数据00000111,11111000经过整体偏移5位操作后也可得到0XFF,此时包头、包尾不具备唯一性。如果包头、包尾为0XFFFF,则端字符转义后的包内数据偏移操作后绝不可能出现0XFFFF,只可能出现若干不连续的OXFF,这就保证了包头、包尾的唯一性。]

[0029][注2:数据发送端下传的数据包通过无线数据传输系统传输时有可能被分割到两帧或者更多帧进行下传,此时数据接收端需对反向移位运算后的数据帧进行拼接后,才能得到一个完整数据包。即数据拼接时需明确区分包头与包尾,故将数据包头确定为0XFFFF00,包尾确定为 0X00FFFF。]

[0030][注3:包头0XFFFF00、包尾0X00FFFF和空闲字符OXAA不可替换,但端字符OXFF的转义字符以及转义字符的转义可使用其他字符。]

[0031]步骤5:将处理后的数据包依次送至无线数据传输系统进行发送;另外,需预先指定无线数据传输系统发送的空闲数据为0ΧΑΑ,因为无线数据传输系统的特性是当无数据发送时,仍会持续向接收端发送空闲数据帧(内容可设置);

[0032][注4:因为数据OXAA无论偏移几位,只可能出现OXAA(10101010)或0X55(01010101)两种情况,不会出现端字符0XFF,保证了其唯一性,且若一帧数据全为0ΧΑΑ,则数据接收端直接丢弃。]

[0033]步骤6

你可能感兴趣的:(信道纠错编码C语言)