纠正同步与替代错误的级联码的迭代译码方法与流程

文档序号:14655204发布日期:2018-06-08 23:19阅读:239来源:国知局
纠正同步与替代错误的级联码的迭代译码方法与流程

本发明涉及数字通信差错控制编码领域,尤其涉及一种纠正同步与替代错误的级联码的迭代译码方法。



背景技术:

在数字通信与存储系统中,噪声会造成比特的翻转或者符号的错误,一般称为替代错误。针对只存在替代错误的信道,如加性高斯白噪声(Additive White Gaussian Noise,AWGN)信道下的错误,现有的高效编码技术,如Turbo码、低密度奇偶校验(Low Density Parity Check,LDPC)码等,能有效地纠正接收序列中由于加性噪声造成的替代错误,其性能已非常接近香农限。然而上述编码技术都假定发送端和接收端可做到理想的同步,但很多实际通信系统都存在定时偏差问题或者其他无法实现符号同步的问题,会造成接收序列中插入或者删掉了若干符号,一般称为插入错误或者删节错误,也可以统称为同步错误。同步错误在无线光通信的某些调制方式中存在,具有重要的应用价值。在存在同步错误的系统,针对替代错误的高效信道编码技术将不再适用。因此,有必要设计同时针对替代错误和同步错误的纠错编码方案,以纠正接收序列中的替代错误和同步错误。

针对上述问题,研究者们提出了多种可纠正同步错误与替代错误的编译码方案。其中应用广泛的就是级联码的方案。主要思想是利用内码获取序列的同步信息,再用外码纠正内码的错误同步和噪声造成的替代错误。学者Davey和MacKay提出了一种适用于二进制插入/删节信道的概率域级联码构造方法(下文称DM构造),内码采用水印码,外码为LDPC码。该方案可有效地纠正接收序列中随机的同步错误和替代错误,获得了优越的性能。该方案缺点是不能在获取同步信息的同时纠正序列中的替代错误,计算复杂度很高,并且改变了传统的编码方案,与仅针对替代错误的信道编码方案不一致。

另一种解决方案是采用卷积码同时纠正同步错误与替代错误。Gallager首先提出在卷积码编码器的输出端添加伪随机序列,并利用序列译码算法纠正同步错误。Swart等人提出并行互联维特比译码器构造。该方案可纠正某些特定位置的插入或删节错误,但不能同时纠正两者。Cheng等人提出双向维特比算法,该算法能够降低一定时间间隔内卷积码编码序列之间的强依赖性,适用于仅存在删节错误的信道。

在现有研究中,在不改变原有卷积码编码方案的前提下,有学者基于扩展网格图,设计了可纠正同步错误和替代错误的维特比译码算法和对数域最大后验概率译码算法。该方案的优点在于:1)不需要改变现有的针对替代错误的卷积码编码系统或者基于卷积码的级联编码系统;2)其译码复杂度可以根据信道的同步错误情况灵活改变,即对低插入/删节错误的信道,可采用低复杂度的译码算法,而对于高概率的插入/删节错误信道,可以通过增加网格图复杂度来提高性能。该方案的主要缺点是可以同时纠正同步错误和替代错误的前提是必须知道每个卷积码的块边界。

发明人在实现本发明的过程中,发现现有技术中至少存在以下的缺点和不足:

一方面,DM构造需要改变已有的编码方案,复杂度非常高;另一方面,可纠正同步错误与替代错误的卷积码译码算法的性能存在进一步提升空间。

因此,本发明设计一种可纠正同步错误与替代错误的RS码与卷积码的级联码的迭代译码方案,一方面能够降低网格图的复杂度,同时具有较为优越的性能。



技术实现要素:

本发明提供了一种纠正同步与替代错误的级联码的迭代译码方法,本发明提高了增益性能,详见下文描述:

一种纠正同步与替代错误的级联码的迭代译码方法,所述方法包括以下步骤:

(1)根据卷积码的生成多项式、译码时所考虑的最大符号漂移个数ρ、译码时所考虑的单位时刻最大的插入\删节错误比特数λ,生成可识别卷积码块边界和考虑同步错误的扩展网格图,并确定状态转移;

(2)基于扩展网格图,利用双向维特比译码算法,对接收到的每帧数据进行译码;

(3)将译码输出的比特序列转化为多进制符号序列,进行解交织,形成I个RS码字;

(4)对解交织后的I个RS码字分别进行RS译码;

(5)根据译码结果判断是否满足译码全部正确或者I个码字全部译码失败或者达到最大迭代次数,若满足上述终止条件,则终止并输出译码结果,否则执行步骤(6);

(6)使用译码正确的S个RS码符号初始化扩展网格图,对该数据帧进行维特比译码,返回步骤(3)。

上述步骤(1)具体为:

对于卷积码,对原始网格图中的每个状态,增加n-1个附加状态,用于描述同步错误造成的每个时刻译码起始位置的变化;

根据译码时所考虑的最大符号漂移个数,将每个状态扩展为2ρ+1个状态,生成扩展网格图;

根据译码时所考虑的单位时刻最大的插入\删节错误比特个数和卷积码的生成多项式,确定上述扩展网格图中的状态转移。

所述确定上述扩展网格图中的状态转移具体为:

若当前时刻发生一个插入错误,则对应状态转移的译码输入为n+1个比特,下一时刻译码输入的起始位置会向后漂移一比特;

若当前时刻发生一个删节错误,则对应状态转移的译码输入为n-1个比特,下一时刻译码输入的起始位置会向前漂移一比特;

并且,同一时刻的状态转移会导致译码输出多一个符号,跳跃时刻的状态转移会导致译码输出少一个符号。

上述步骤(2)具体为:

(2.1)采用前向维特比算法对个卷积码块进行译码,译码输出前个卷积码块对应的信息序列vfor,1,相应的累积度量Mfor,1,以及第个卷积码块对应译码输入序列的终止位置采用后向维特比算法对个卷积码块进行译码,译码输出第个卷积码块对应的信息序列vback,1,相应的累积度量Mback,1,以及第个卷积码块对应译码输入序列的起始位置其中K为接收序列包含的卷积码块数,表示向上取整函数;

(2.2)判断是否等于接收序列长度L,若合并两次译码结果,最终译码输出v={vfor,1,vback,1},否则执行步骤(2.3);

(2.3)采用前向维特比算法对个卷积码块进行译码,译码输出个卷积码块对应的信息序列vfor,2,以及相应的累积度量Mfor,2,采用后向维特比算法对个卷积码块进行译码,译码输出个卷积码块对应的信息序列vback,2,以及相应的累积度量Mback,2

(2.4)分别计算前向维特比累计度量和后向维特比累计度量,选取前向算法和后向算法中累积度量值较大的译码输出。

上述步骤(6)中的使用译码正确的S个RS码符号初始化扩展网格图具体为:

(6.1.1)根据交织方式确定上述S个RS码符号交织后位置;

(6.1.2)根据第G个RS码符号交织后的位置及符号值,确定对应于第τ个译码输出比特的状态寄存器值为Q,所有状态的寄存器值相同,满足τ=t+b,并且对应于译码输出的同一比特,这些状态均为“可能状态”,对应的累积度量保持不变;

(6.1.3)将译码网格图中的状态设定为“不可能状态”,对应的累积度量置为-∞。

上述步骤(6)中的对数据帧进行维特比译码具体为:

(6.2.1)对第i个卷积码,设定0时刻状态的累积度量M[r|v]0=0,0时刻其他状态的累积度量为-∞;

(6.2.2)对每个时刻t,计算每个状态转移的分支度量,保留累积度量值最大的作为目标状态的累积度量;

(6.2.3)比较N-ρ到N+ρ时刻所有可能终止状态的累积度量,累积度量最大的作为终止状态,从该状态开始路由回溯,译码输出第i个卷积码块对应的信息序列,该卷积码对应的累积度量Mi,同时根据该状态确定对应译码输入序列的终止位置;

(6.2.4)重复上述步骤对第i+1个卷积码块进行译码,直至完成K个卷积码块的译码,获取总的累积度量。

本发明提供的技术方案的有益效果是:

1、本发明可有效纠正接收序列中的同步错误与替代错误,与可纠正同步错误的卷积码或者RS码与卷积码的级联码的非迭代译码相比,具有明显性能增益;

2、与类似功能的水印码相比较,本发明不需要增加额外同步开销,从而更适用于某些已经采用卷积码与RS码级联码的通信系统,扩展纠正同步错误的能力。

附图说明

图1为纠正同步与替代错误的RS码与卷积码级联码的迭代译码流程图;

图2是生成扩展网格图的流程图;

图3是考虑比特漂移后增加n-1个附加状态的示意图;

图4是同时考虑比特漂移和符号漂移的完整扩展网格图;

图5是双向维特比算法的流程图;

图6是前向维特比算法和后向维特比算法的流程图;

图7是加权Levenshtein距离计算的流程图;

图8是可能终止状态的示意图;

图9是可能起始状态的示意图;

图10是扩展网格图初始化过程示意图;

图11是卷积码块边界已知时,RS码与卷积码的级联码的迭代译码的误比特率;

图12是一帧传输五个卷积码块时,RS码与卷积码的级联码的迭代译码的误比特率。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面对本发明实施方式作进一步地详细描述。

实施例1

为识别传输中同步错误,同时纠正序列中的同步错误和替代错误,本发明实施例提供了一种可纠正同步与替代错误的的级联码的迭代译码方法,参见图1至图10,进一步地详细描述。

本发明实施例将外码也就是RS码的译码输出的正确符号传递给内译码器也就是基于扩展网格图的维特比译码器,重新初始化考虑了同步错误的卷积码的扩展网格图,通过可能路径的有效剪辑,避免路由回溯时的不可能路径,从而获得迭代增益。整体流程见图1,详细过程描述如下:

101:根据卷积码的生成多项式、译码时所考虑的最大符号漂移个数ρ、译码时所考虑的单位时刻最大的插入或删节错误比特数λ,生成可识别卷积码块边界和考虑同步错误的扩展网格图,并确定状态转移;

102:基于扩展网格图,利用双向维特比译码算法,对接收到的每帧数据进行译码;

103:将译码输出的比特序列转化为多进制符号序列,进行解交织,形成I个RS码字;

104:对解交织后的I个RS码字分别进行RS译码;

105:根据译码结果判断是否满足译码全部正确、或者I个码字全部译码失败、或者达到最大迭代次数,若满足上述任一终止条件,则终止并输出译码结果,否则执行步骤106;

106:使用译码正确的S个RS码符号初始化扩展网格图,对该数据帧进行维特比译码,返回步骤103。

综上所述,本发明实施例不需要增加额外同步开销,从而更适用于某些已经采用卷积码与RS码级联码的通信系统,扩展纠正同步错误的能力。

实施例2

下面结合具体的附图、计算公式对实施例1中的方案进行进一步地介绍,详见下文描述:

一、实施例1中步骤101的具体操作如下:

(1.1)对于卷积码(n,k,m),对原始网格图中的每个状态Sj(0≤j≤2m-1),增加n-1个附加状态用于描述同步错误造成的每个时刻译码起始位置的变化,如图3增加n-1个附加状态的示意图;

(1.2)根据译码时所考虑的最大符号漂移个数ρ,将(1.1)中的每个附加状态扩展为2ρ+1个状态生成完整的扩展网格图;

其中,b表示同步错误造成译码输出符号的漂移,如图4为考虑了比特漂移和符号漂移的完整扩展网格图。

(1.3)根据译码时所考虑的单位时刻最大的插入\删节错误比特个数和卷积码的生成多项式,确定上述扩展网格图中的状态转移。

若当前时刻发生一个插入错误,则对应状态转移的译码输入为n+1个比特,下一时刻译码输入的起始位置会向后漂移一比特;若当前时刻发生一个删节错误,则对应状态转移的译码输入为n-1个比特,下一时刻译码输入的起始位置会向前漂移一比特;并且,同一时刻的状态转移会导致译码输出多一个符号,跳跃时刻的状态转移会导致译码输出少一个符号。

具体地,需要根据源状态和目标状态确定对应的译码输入,如图4所示的状态转移为状态对应的译码输入的起始位置以及状态对应译码输入起始位置。上述两个状态间转移对应译码输入为rt={0,1,0,0}。

二、实施例1中步骤102的具体操作如下:

(2.1)采用前向维特比算法对个卷积码块进行译码,译码输出前个卷积码块对应的信息序列vfor,1,相应的累积度量Mfor,1,以及第个卷积码块对应译码输入序列的终止位置采用后向维特比算法对个卷积码块进行译码,译码输出第卷积码块对应的信息序列vback,1,相应的累积度量Mback,1,以及第个卷积码块对应译码输入序列的起始位置其中K为接收序列包含的卷积码块数。

其中,该步骤流程见图6,具体为:

(2.1.1)初始化:前向维特比算法中,对第个卷积码,设定0时刻状态的累积度量M[r|v]0=0,0时刻其他状态的累积度量为-∞,若为第一个卷积码,则设定译码输入序列的起始位置为0,否则设定译码输入序列的起始位置为li-1+1,后向维特比算法中,若编码时有冲洗比特,则对第个卷积码,设定N时刻状态的累积度量M[r|v]N=0,N时刻其他状态的累积度量为-∞,否则设定N时刻状态的累积度量M[r|v]N=-mlog2,N时刻其他状态的累积度量为-∞,若为第K个卷积码,则设定译码输入序列的终止位置为L,否则设定译码输入序列的终止位置为si+1-1;

(2.1.2)递归:对每个时刻t(0≤t≤N+ρ),计算每个状态转移的分支度量WLD(rt,vt),保留累积度量值最大的作为目标状态的累积度量,

即[M(r|v)]t=max([M(r|v)]t-1+WLD(rt,vt))

其中,N表示每个卷积码块的符号长度,WLD为加权Levenshtein距离。

(2.1.3)路由回溯:对于前向算法比较N-ρ到N+ρ时刻所有可能终止状态的累积度量,累积度量最大的作为终止状态,从该状态开始路由回溯,译码输出第i1个卷积码该卷积码对应的累积度量为同时根据该状态确定对应译码输入序列的终止位置对于后向算法,比较-ρ到ρ时刻所有可能起始状态的累积度量,累积度量最大的作为起始状态,从该状态开始路由回溯,译码输出第i2个卷积码该卷积码对应的累积度量为同时根据该状态确定对应译码输入序列的起始位置

(2.1.4)重复步骤(2.1.1)至(2.1.3)对第i+1个卷积码块进行前向维特比译码,直至完成前个卷积码块的译码,个卷积码块的译码输出为:

总的累积度量为对第i-1个卷积码块进行译码,直至完成个卷积码块的译码,个卷积码的译码块输出

为总的累积度量为

(2.2)判断是否等于接收序列长度L,若合并两次译码结果,最终译码输出v={vfor,1,vback,1},否则执行步骤(2.3);

(2.3)采用前向维特比算法对个卷积码译码,译码输出个卷积码vfor,2,对应累积度量Mfor,2,采用后向维特比算法对个卷积码译码,译码输出个卷积码vback,2,对应累积度量Mback,2,具体为:

(2.3.1)前向维特比算法初始化:对第个卷积码,设定0时刻状态的累积度量M[r|v]0=0,0时刻其他状态的累积度量为-∞,设定译码输入序列的起始位置为后向维特比算法初始化:若编码时有冲洗比特,则对第个卷积码,设定N时刻状态的累积度量M[r|v]N=0,N时刻其他状态的累积度量为-∞,否则设定N时刻状态0≤j≤2m-1的累积度量M[r|v]N=-mlog2,N时刻其他状态的累积度量为-∞,若为第K个卷积码,则设定译码输入序列的终止位置为L,否则设定译码输入序列的终止位置为

(2.3.2)递归:对每个时刻t(0≤t≤N+ρ),计算每个状态转移的分支度量WLD(rt,vt),保留累积度量值最大的作为目标状态的累积度量;

即[M(r|v)]t=max([M(r|v)]t-1+WLD(rt,vt))

(2.3.3)路由回溯:对于前向算法,若所译为第K个卷积码,则根据第K个卷积码的长度确定终止状态,否则比较N-ρ到N+ρ时刻所有可能终止状态的累积度量,累积度量最大的作为终止状态,从该状态开始路由回溯,译码输出第i1个卷积码该卷积码对应的累积度量为同时根据该状态确定对应译码输入序列的结束位置对于后向算法,若所译码卷积码为第一个卷积码,则根据第一个卷积码序列的长度确定起始状态,否则比较-ρ到ρ时刻所有可能起始状态的累积度量,累积度量最大的作为起始状态,从该状态开始路由回溯,得第i2个卷积码译码输出该卷积码对应的累积度量为同时根据该状态确定对应译码输入序列的起始位置

(2.3.4)重复步骤(2.3.1)至(2.3.3),对第i1+1个卷积码块进行前向维特比译码,直至完成个卷积码块的译码,个卷积码块的译码输出为总的累积度量为对第i2-1个卷积码块进行译码,直至完成个卷积码块的译码,个卷积码块的译码输出为总的累积度量为

(2.4)选取前向算法和后向算法累积度量值较大的为译码输出,具体为:

(2.4.1)计算前向维特比算法总的累积度量Mfor=Mfor,1+Mfor,2

(2.4.2)计算后向维特比算法总的累积度量Mback=Mback,1+Mback,2

(2.4.3)若Mfor>Mback,则v={vfor,1,vfor,2};若Mfor<Mback,则v={vback,2,vback,1};否则v={vfor,1,vback,1}。

三、实施例1中步骤103和步骤104属于现有技术中的已知技术,本发明实施例对此不做赘述。

四、实施例1中步骤106的具体操作如下:

(6.1)根据RS码译码后纠正的S个RS码符号初始化网格图,具体为,

(6.1.1)根据交织方式确定上述S个RS码符号交织后位置;

(6.1.2)根据第G个RS码符号交织后的位置及符号值,可确定对应于第τ个译码输出比特的状态寄存器值为Q(0≤j≤2m-1),所有状态(0≤l≤n-1,0≤j≤2m-1,-ρ≤b≤ρ)的寄存器值相同(均为j),满足τ=t+b(-ρ≤b≤ρ),并且对应于译码输出的同一比特,这些状态均为“可能状态”,对应的累积度量保持不变,其中t为当前时刻;

(6.1.3)将译码网格图中的状态(0≤l≤n-1,j≠Q,0≤j≤2m-1,-ρ≤b≤ρ)设定为“不可能状态”,对应的累积度量置为-∞;

(6.2)基于初始化后译码网格图,对该数据帧进行维特比译码,具体为,

(6.2.1)初始化:对第i(1≤i≤K)个卷积码,设定0时刻状态的累积度量M[r|v]0=0,0时刻其他状态的累积度量为-∞;

(6.2.2)递归:对每个时刻t(0≤t≤N+ρ),计算每个状态转移的分支度量WLD(rt,vt),保留累积度量值最大的作为目标状态的累积度量,

即[M(r|v)]t=max([M(r|v)]t-1+WLD(rt,vt));

(6.2.3)路由回溯:比较N-ρ到N+ρ时刻所有可能终止状态的累积度量,累积度量最大的作为终止状态,从该状态开始路由回溯,译码输出第i个卷积码vi,该卷积码对应的累积度量为Mi,同时根据该状态确定对应译码输入序列的终止位置li

(6.2.4)重复步骤(6.2.1)至(6.2.3)对第i+1个卷积码译码,直至完成K个卷积码的译码,1~K个卷积码的译码输出为v={v1,v2,...,vK},总的累积度量为

步骤(2.1.2)、(2.2.2)、(2.4.2)、(2.5.2)、(6.2.2)中计算分支度量WLD(rt,vt)流程如图7,具体为:

1)根据信道的插入错误概率、删节错误概率和替代错误概率分别计算WLD的权重Wi=log(Pi),

其中,信道的替代错误概率为Pe,插入错误概率为Pi和删节错误概率为Pd,信道的发送概率为Pt=1-Pi-Pd

2)初始化:

3)递归:

其中,和分别表示rt和vt的前i个比特,m和n分别表示rt和vt的比特长度;

4)终止:

步骤(2.1.3)、(2.4.3)中所有可能终止状态如图8所示,以(3,1,2)卷积码为例,加入冲洗比特的可能终止状态为(0≤j<n-1,-ρ≤q≤ρ),该状态确定的对应译码输入序列的终止位置为:

例如,第一个卷积码译码时状态对应的译码输入序列终止位置为(N+1)n=Nn+n=L+n。

步骤(2.2.3)、(2.5.3)中所有可能起始状态描述如图9,以(3,1,2)卷积码为例,可能起始状态为(0≤j<n,-ρ≤q≤ρ),该状态确定的对应译码输入序列的起始位置为:

例如,第K个卷积码译码时状态对应的译码输入序列起始位置为LK-(L-n)+1=(K-1)L+n+1。

以(3,1,2)卷积码为例,考虑的最大符号漂移ρ=1,在扩展网格图中确定“可能状态”和“不可能状态”见图10,假设纠正的RS符号可得到第τ个输出比特的状态为S3,则当τ=t-1,b=1;τ=t,b=0和τ=t+1,b=-1时,S3(0)、S3(1)和S3(2)为“可能状态”,而τ=t-1,b=1;τ=t,b=0和τ=t+1,b=-1时的其他状态为“不可能状态”。

综上所述,本发明实施例不需要增加额外同步开销,从而更适用于某些已经采用卷积码与RS码级联码的通信系统,扩展纠正同步错误的能力。

实施例3

下面给出具体的实施例,说明本发明实施例给出的纠正同步错误的RS码级联卷积码的迭代译码方法的可行性。

本发明实施例以(255,223)RS码为外码,生成多项式为117,127,155的(3,1,6)卷积码为内码作为一个特例。步骤(2)中采用分组交织方式,交织深度为24,编码后的卷积码块长度为594bits。译码时考虑的最大符号漂移ρ=5,最大迭代次数为2。

图11给出在没有替代错误的情况下,每帧传输一个卷积码块和每帧传输五个卷积码块的误比特率。图12给出替代概率pe=0.01的情况下,每帧传输一个卷积码块和每帧传输五个卷积码块的误比特率。仿真结果显示,在块边界已知的情况下,本方法与可纠正同步错误的卷积码相比有明显的性能增益,而在块边界未知的情况下,在较低的同步错误概率下具有明显的性能增益。并且在同时存在替代错误和同步错误的情况下,仍具有明显的性能增益。

综上所述,本发明实施例基于卷积码可纠正同步错误的扩展网格图,设计了一种可改善同步错误纠错能力的RS码与卷积码的级联码的迭代译码方法。本发明的方法与可纠正同步错误的卷积码或者RS码与卷积码的级联码相比较,均具有明显性能增益;本发明实施例不需要额外增加同步的开销,特别适用于已经采用卷积码与RS码级联码的通信系统增强在存在同步错误下的性能。

本发明实施例对各器件的型号除做特殊说明的以外,其他器件的型号不做限制,只要能完成上述功能的器件均可。

本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1