遁一码是一种新型数据传输编码,可以用做信道编码,也以用做纠错控制码。将源数据通过分组,使用遁一方程组,编码产生修复符号,把源符号与修复符号格式为编码单元,每一个编码单元都是独立的传输块,源数据的编码单元构成源向量,修复数据单元构成修复向量。数据传输时,发送源数据向量与修复数据向量,在未收到应答的情况下,重复发送修复向量,接收端收到数据并解码,如果能成功解出源数据,那么就发送应答,如果不能解出源数据就继续接收数据,直到可以解出数据为止。发送、接收中无单独的参数传递,丢失或错掉一些编码单元,通过遁一方程组可以解码出源数据,遁一码编码解码和信号的物理参数无关,因此是一种优秀的信道编码。
1.遁一码是一种向前纠错码,用于保护数据传输的编码,包括编码方法与解码方法及传输格式,其特征在于,
定义一个异或方程组,第一个方程式缺第一个变量X0,第二个方程式缺第二个变量X1,依次类推到第n‑2个方程式缺第n‑2个变量,最后一个方程式有全部变量。因此该方程组叫遁一方程组,除去最后一行,每行遁去与自身序号对应的变量。
方阵前n‑1行和最后一行,均只有一个变量不同,因此遁一方阵很容易化为单位阵。将最后一行和前n‑1行异或,前n‑1行的对角线行异或到最后一行,整个方阵化为了单位矩阵,所以遁一方程组有且仅有唯一解。遁一方程组的解为,
步骤1:根据传输数据长短,设置4套编码方案,方案内容包括,符号位长,单元序号长度,CRC校验位长(8位,16位,32位),元素总个数,
步骤2:在收发端同步编码方案(可以在出厂设置预设,也可以用默认编码方案进行同步),
步骤3:数据发送端,根据数据大小选择适合的编码方案,将源数据分成一组N个元素构成的源向量,源向量N个元素对应遁一方程组的N个变量,将这N个数据代入遁一方程组计算出N个修复符号,这N个修复符号组成修复向量,将2N个元素从0开始编成序号,一直到N‑1,
步骤4:对源向量元素与修复向量元素进行单元编码,每一个元素封包为一个独立的编码传输单元,
步骤5:发送源向量,再不断发送修复向量,直到接收到应答为止。注意源向量只发送一
步骤1:对接收的单元进行校验,如果数据正确,放入解码队列,当解码队列的元素个数大于等于N个时,将元素与遁一方程组的变量对应,求解出未知元素,进行解码得到源数据,如果接收的全部是X0到Xn‑1的单元符号,那么不需要解方程,直接得到源数据。根据遁一方程组的特性,当接收元素大于等于N个时,一定能解码,如果收到重复相同单元则抛弃。
编码方案序号+应答标识+单元序号+源数据+CRC构成的bit序列,一个编码单元也是一个最简原始独立的传输单元。
2.如1所述,这种编码方法可以有效的解决传输丢包,多次应答的通信问题,适合应用在计算机通信,无线通信领域。是很好解决潜艇通信、飞行器通信、卫星通信的编码方案。
[0001]适用于无线通信和有线通信。包括卫星通信、计算机通信、手机与基站通信、飞行设备间通信、潜艇通信、海面船只通信、车辆间通信、无线设备通信等。
[0002]无论有线通信还是无线通信,在数据传输过程难免会出现错误,如何发现数据错误,如何通过不重传数据校正数据,如何减少可靠传输的数据应答次数,如何适应在各种通信场景均可以使用,通过多年的探索,我们研究出遁一码编码算法来解决这些问题。通过定义一个异或方程组叫遁一方程组,遁一方程组的每个变量系数为0或1,将源数据分组成方程组对应的变量,代入方程组计算出一组修复数据。源数据通过格式处理成源数据单元,多个源数据单元组成一个源数据向量,将修复数据通过格式处理成修复数据单元,多个修复单元组成修复向量。将源向量和修复向量发送出去,如果在发送后没有收到应答,则继续发送修复向量。接收端收到数据,解码并对发送端做出应答,如果接收端收到的数据无法解码,只需继续接收数据,直到可以解码时才对发送端做出应答。整个收发过程始终只做一次应答。这样既保证了数据的可靠传输,也减少往返应答。在通信故障或数据大量丢失的情况下,这种传输处理方式也可以保证双方能正确连接通信,因为,发送端只要没有收到应答,会继续发送修复数据,接收端只要收到足够的修复数据与源数据就可以解码出完整的源数据的序列,并做应答,如果应答丢失,发送端在继续发送相同数据,接收端解码数据继续应答,直到两端通信正常,所以不需要额外数据及机制就可以实现可靠传输。编码单元(源数据单元与修复数据单元)作为传输数据块的原子单元,整个数据传输无需额外数据,避免关键数据错误导致整个发送序列无法解码的情况发生,因此简单可靠。
[0005]序号:N个源数据经过遁一矩阵编码后得到N个修复数据,构成2N个数据,每个数据位置就是数据序号,从0开始到2N‑1结束。
[0006]编码方案:发送端和接收端设置好的一组参数。包括,序号位长K,数据位长L。编码方案长度为2bit,可以设置4套方案,兼顾不同大小的发送数据。发送数据序列越大,对应索引位长越大,数据位长也越大,冗余比越低,越接近香农定理的理论传输。方案在初始时双方必须使用默认预设值,然后可以通过动态协商改变。
[0007]源符号:由编码方案+应答标识+序号+源数据+CRC构成的bit序列,一个源符号也是一个最简原始独立数据传输单元,如图2所示。
[0008] 修复符号:由编码方案+应答标识+序号+修复数据+CRC校验数据构成的bit序列,一个修复符号也是一个最简原始独立数据传输单元,如图2所示。
特点是:第一个方程式缺第一个变量X0,第二个方程式缺第二个变量X1 ,依次类推到第n‑2个方程式缺第n‑2个变量,最后一个方程式有全部变量。因此该方程组叫遁一方程组,除去最后一行,每行遁去与自身序号对应的变量,第一行遁去X0,第二行遁去X1 ,第n‑1行遁去Xn‑2。根据方程组的特点可以轻松得出方程的解,
方阵前n‑1行和最后一行,均只有一个变量不同,因此遁一方阵很容易化为单位阵。将最后一行和前n‑1行异或,前n‑1行的对角线行异或到最后一行,整个方阵化为了单位矩阵,所以遁一方程组有且仅有唯一解。
将N(N2)个相同长度为K的bit,组成一个源数据向量Vs(X1 ,X2. . .Xn) ,将向量Vs按遁一矩阵排列,每一行通过异或运算得出对应行的修复数据,N行计算结果组成的向量叫修复向量Vr。
根据N的大小与K的大小,将向量Vs的每一个元素编码成一个源单元,源单元格式见图2,将修复向量Vr的每一个元素编码成一个修复单元,修复单元格式见图2。编码后源单元为N个,修复单元为N个。
编码是N个源数据加N个修复数据构成,根据遁一矩阵有唯一解的特性,我们在解码时有三种情形处理,
[0016] 二、源数据全部出错或丢失,通过修复向量求解,那么源数据可以通过遁一方程组通解求出,
[0017] 三、源数据收到部分,修复数据收到部分,这种情形比较复杂,假设源数据由i个,修复数据有j个,如果i+j,N那么通过代入源数据到遁一方程组,利用异或方程式的左右交换方程式不变特性,可以求解除降解方程组的解,得到完整源数据。如果i+jN,则无法解除完整源数据,需要继续接收修复向量。
编码流程如附图3所示,从数据发送缓冲区读取发送数据,根据发送数据大小选取适合的编码方案,根据编码方案将源数据分组,通过遁一方程组计算修复数据,把源数据与修复数据整理成编码单元格式,计算CRC校验值。编码单元格式构成为,编码方案号(2bit)+应答标识(1bit)+序号(由编码方案确定)+数据+CRC校验值。组包源向量,组包修复向量,发送源向量,发送修复向量,如果收到应答终止发送,一次传输成功完成,如果没有收到应答,那么继续发送修复向量,知道收到应答为止。
解码流程如附图4所示,收到数据判断前2位值是否大于4,如果大于等于4,数据有误抛弃,接着判断下2位,如果小于4那么查找对应方案编号,获得分组总数N,序号长度H,符号长度L,根据N+H+L+3得到CRC校验值,对编码单元部分做CRC计算,判断CRC是否相等,如果相等则成功接收一个编码单元,如果不等,那么抛弃这2位,继续从夫前面步骤。接收一个编码单元后,放入编码单元向量,并判端接收向量是否可以解码,如果可以解码,解码数据,放入数据缓冲区,通知上层应用,并同时对发送端做出应答,如果不能解码,则继续从接收缓冲读取数据,进行解码处理。
在上面我们详细讲了编解码的数学原理及编码格式以及编码流程,接着我们详细描述在无线点对点设备应用流程。无线设备点对点通信是很多组网通信的基础,因此这种通信方案可以应用于无线组网设备的点对点之间。无线设备点对点通信流程如附图5所示。
从发送缓冲队列的数据取出编码,将编码后的的源向量与修复向量送入调制,发送出去,在没有接收到应答之前,会一直重复发送修复向量。接收单元解调数据后送入解码单元,如果能成功解码则做出应答,并把解码数据送入接收缓冲区,通知上层应用或设备读取,如果不能成功解码,继续从解调数据解码处理。
在计算机通信中,遁一码可以用着典型传输控制纠错码,如图6所示。遁一码传输控制介于应用层与系统协议层之间,这样可以避免网络驱动开发。遁一码在应用层协议之下,在常见的websocket或http或tcp或udp之上。应用层协议数据通过遁一码编码处理,再通过websocket或http或tcp或udp发送到网络,接收端通过websocket或http或tcp或udp接收数据解码处理,并做应答,将解码数据通知到应用层。
在舰船通信中,遁一码可以作为信道传输控制编码,从而解决长波通信传输困难问题,遁一码只需一次应答实现可靠通信,因此可以自适应恶劣的通信条件下的数据传输。也可以用遁一码实现动态组网,如图7所示。
在卫星通信中,遁一码可以作为地面与卫星之间,卫星与卫星之间的信道传输控制编码,解决传统数据通信的问题。可以像图8那样组成空间地面一体网络。
在飞行设备通信中,遁一码可以作为信道传输控制编码,自适应恶劣条件下通信,实现动态组网如图9所示。
[0025] 图1是源数据分组,源数据分组,每组k位,总共分成N组,这样得到X0到Xn‑1的源数据。
[0026] 图2是编码单元组成格式。前2位是方案编号,接着是应答标识,0表示传输数据, 1标识是应答,后面跟着K位长的序号,接着是L位长的符号(可以是源符号,也可以是修复符号) ,最后是CRC校验值。
[0027] 图3是遁一码编码流程图。详细描述请见[0018]编码流程。
[0028] 图4是遁一码解码流程图。详细描述请见[0019]解码流程。
[0029] 图5是遁一码在无线设备点对点收发流程图。详细描述请见[0020]无线设备点对点收发。
[0030] 图6是遁一码在计算机通信中的应用场景之一。详细描述请见[0021]计算机通信应用。
[0031 ] 图7是遁一码在舰船通信中的应用场景之一。详细描述请见[0022]舰船通信应用。
[0032] 图8是遁一码在微信通信中的应用场景之一。详细描述请见[0023]卫星通信应用。
[0033] 图9是遁一码在飞行设备通信中的应用场景之一。详细描述请见[0024]飞行设备通信应用。