一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于RS码的Zipper码编译码方法

2022-05-18 10:42:56 来源:中国专利 TAG:

一种基于rs码的zipper码编译码方法
技术领域
1.本发明属于数据编码译码技术领域,具体涉及一种基于rs码的zipper码编译码方法。


背景技术:

2.zipper码是一种描述空间耦合乘积码的新框架,现在已有的zipper码使用的分量码是二进制bch码,是一类线性分组码,对于任意正整数m(m≥3)和t(t<2
m-1
),二进制bch码具有如下参数:分组长度为n=2
m-1,奇偶校验符号数为n-k≤mt,最小距离为d≥2t 1,显然,该码能够纠正t个或者少于t个错误。对于bch码的编码,可采用生成矩阵或生成多项式两种方法进行,对于bch码的译码算法主要采用bm译码算法。二进制bch码其抗大量随机错误和突发删除能力比较差,在信道比较差的情况下,其性能不太理想。


技术实现要素:

3.为了解决现有技术中存在的上述问题,本发明提供了一种基于rs码的zipper码编译码方法。本发明要解决的技术问题通过以下技术方案实现:
4.本发明提供了一种基于rs码的zipper码编码方法,包括:
5.步骤1:获取信源产生的符号,对信源产生的符号进行划分得到信息块;
6.步骤2:以chunk为单位进行zipper码编码,将所述信息块按行放入当前chunk的实部的信息位,其中,所述当前chunk不包括第一个chunk;
7.步骤3:将之前已编码的chunk的分量码的实部,按照映射关系φ-1
映射更新当前chunk的虚部;
8.步骤4:利用rs码编码器对更新虚部后的当前chunk的每一行分量码进行编码,得到对应的校验符号;
9.步骤5:将所述校验符号放入当前chunk对应分量码的校验位置;
10.步骤6:重复步骤2-步骤5完成当前chunk的编码。
11.在本发明的一个实施例中,若当前chunk为第一个chunk,编码过程包括:
12.步骤2’:将第一个chunk的实部和虚部初始化为全0,
13.步骤3’:将所述信息块按行放入第一个chunk的实部的信息位;
14.步骤4’:利用rs码编码器对第一个chunk的每一行分量码进行编码,得到对应的校验符号;
15.步骤5’:将所述校验符号放入第一个chunk对应分量码的校验位置。
16.在本发明的一个实施例中,所述信息块的长度为其中,n表示分量码的码长,r表示校验符号个数,mi表示第i行分量码的虚部大小,chunk表示一次编码的分量码个数。
17.在本发明的一个实施例中,所述映射关系φ-1
为φ(wq i,ws j)=(w(q-s-1) j,w
(l s) i)的逆映射,其中,码长为n的分量码,被划分为长为w的2l个块,每个分量码的实部和虚部等长,虚部和实部的长度均为wl,wq i表示chunk的行坐标,ws j表示chunk的列坐标,i,j∈[w],s∈[2l]。
[0018]
在本发明的一个实施例中,利用rs码编码器对chunk的每一行分量码进行编码之前,在chunk的每一行分量码的信息符号后添加3个0码。
[0019]
本发明提供了一种基于rs码的zipper码译码方法,包括:
[0020]
步骤1:获取当前待译码窗口的待译码信息;
[0021]
步骤2:根据berlekamp算法对所述待译码信息进行迭代译码,计算得到每一行分量码的错误位置和错误个数;
[0022]
步骤3:根据所述错误位置和错误个数,利用rs码译码器对每一行分量码进行分量码译码和纠错;
[0023]
步骤4:重复步骤2-步骤3,直到达到预设最大迭代次数,或者所述当前待译码窗口中每一行分量码的错误个数均为0;
[0024]
步骤5:依次滑动待译码窗口,得到所有所述待译码窗口的译码码字,将所有所述待译码窗口的译码码字排序后进行输出。
[0025]
在本发明的一个实施例中,所述步骤3包括:
[0026]
若当前行分量码的所述错误个数为0,或者所述错误个数超出rs码纠错能力,则进入下一行分量码的分量码译码和纠错;或者,
[0027]
若当前行分量码的所述错误个数不为0且不超出rs码纠错能力,则利用rs码译码器对该行分量码进行分量码译码,并将错误的码字纠正后得到纠错后的正确码字;同时,根据每一个错误位置,按照映射关系φ-1
找到该错误位置对应的实部或虚部,并对对应的实部或虚部进行正确码字的更新,之后进入下一行分量码的分量码译码和纠错。
[0028]
在本发明的一个实施例中,所述映射关系φ-1
为φ(wq i,ws j)=(w(q-s-1) j,w(l s) i)的逆映射,其中,码长为n的分量码,被划分为长为w的2l个块,每个分量码的实部和虚部等长,虚部和实部的长度均为wl,wq i表示当前chunk的行坐标,ws j表示当前chunk的列坐标,i,j∈[w],s∈[2l]。
[0029]
与现有技术相比,本发明的有益效果在于:
[0030]
本发明的基于rs码的zipper码编译码方法,使用rs码作为zipper码的分量码,由于rs码具有比二进制bch码更强的纠错能力,可以用于抗干扰能力强的通信系统中,并且在纠正随机符号错误和随机突发错误方面非常有效,采用rs码作为zipper码的分量码能达到比二进制bch码更好的纠错和纠删性能。
[0031]
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
[0032]
图1是本发明实施例提供的zipper码结构示意图;
[0033]
图2是本发明实施例提供的一种基于rs码的zipper码编码方法示意图;
[0034]
图3是本发明实施例提供的zipper码框架结构示意图;
[0035]
图4是本发明实施例提供的rs码的编码电路图;
[0036]
图5是本发明实施例提供的分量码为(127,113)rs码的zipper码在bsc信道下性能图;
[0037]
图6是本发明实施例提供的分量码为rs码的并行包删除信道性能图。
具体实施方式
[0038]
为了进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及具体实施方式,对依据本发明提出的一种基于rs码的zipper码编译码方法进行详细说明。
[0039]
有关本发明的前述及其他技术内容、特点及功效,在以下配合附图的具体实施方式详细说明中即可清楚地呈现。通过具体实施方式的说明,可对本发明为达成预定目的所采取的技术手段及功效进行更加深入且具体地了解,然而所附附图仅是提供参考与说明之用,并非用来对本发明的技术方案加以限制。
[0040]
实施例一
[0041]
zipper码是一种描述空间耦合乘积码的新框架,在zipper码中,缓冲器n-buffer是一个具有无穷多行和n列的二进制矩阵(i,j)表示n-buffer的第i行和第j列,该缓冲器中每一行都是分量码的一个合法码字。对缓冲器进行划分得到虚部a和实部b,(a,b)为一个zipper对,实部和虚部满足以下条件:(1)(2)对所有的j,j

∈[n],如果(i,j)∈a,j

<j,则(i,j

)∈a。如图1所示,图2是本发明实施例提供的zipper码结构示意图,图中灰色部分为虚部,白色部分为实部,右边长为r的部分为校验位部分,假设第i行虚部的大小为mi,如果满足m
i v
=mv,v>0,则zipper对的周期为v,zipper码框架中的映射关系为φ:a

b。
[0042]
本实施例提供了一种基于rs码的zipper码编码方法,请参见图2,图2是本发明实施例提供的一种基于rs码的zipper码编码方法示意图,如图所示,本实施例的分量码采用rs码的zipper码编码方法,包括:
[0043]
步骤1:获取信源产生的符号,对信源产生的符号进行划分得到信息块;
[0044]
在本实施例中,将信源产生的符号划分为长度为的信息块,即u=(u0,u1,...,u
t
,...),其中u
t
=(u
t,0
,u
t,1
,...,u
t,l
)∈(0,1,...,gf(q-1)),n表示分量码的码长,r表示校验符号个数,mi表示第i行分量码的虚部大小,chunk表示一次编码的分量码个数。
[0045]
步骤2:以chunk为单位进行zipper码编码,将信息块按行放入当前chunk的实部的信息位;
[0046]
在本实施例中,chunk表示一次编码的分量码个数,需要说明的是,在本实施例中,当前chunk不包括第一个chunk。
[0047]
步骤3:将之前已编码的chunk的分量码的实部,按照映射关系φ-1
映射更新当前chunk的虚部;
[0048]
在本实施例中,映射关系φ-1
为φ(wq i,ws j)=(w(q-s-1) j,w(l s) i)的逆映
射。请结合参见图3,图3是本发明实施例提供的zipper码框架结构示意图,如图所示,设分量码码长为n,其被划分为长为w的2l个块,即n=2wl,图中l=3,每个分量码的实部和虚部等长,那么,虚部和实部的长度均为wl,chunk的行坐标为wq i,chunk的列坐标为ws j,其中i,j∈[w],s∈[2l]。
[0049]
如图所示,每行有2*w*l个符号每行按w个符号为单位进行划分,可以划分为2*l个,实部和虚部一行长均为w*l。列按w个符号划分,则每一个小块t表示为w*w个符号。q表示以t为一个单位的第q行,s表示以t为一个单位的第s列,i和j分别表示在t中的坐标,所以wq i表示在chunk中的行坐标,ws j表示在chunk中的列坐标。其中,按t为单位,第q行第s列的小码字块表示为,
[0050][0051]
式中,表示在这个小块t中的符号,(i,j)表示在这个t中的坐标,(q,s)表示该符号位于哪个小块中。
[0052]
步骤4:利用rs码编码器对更新虚部后的当前chunk的每一行分量码进行编码,得到对应的校验符号;
[0053]
rs码是一类多进制bch码,其具有较强的纠突发错误的能力。令α为gf(q)中的本原元,符号取自gf(q)、纠错能力为t的rs码,其生成多项式g(x)以α,α2,...,α
2t
为其全部的根,即g(x)=(x-α)(x-α2)

(x-α
2t
),展开后可得g(x)=g0 g1x g2x2 ... g
2t-1
x
2t-1
x
2t
,其中gi∈gf(q),0≤i≤2t。根据g(x)可以生成奇偶校验符号为2t个,长度为n=q-1的q进制循环码,该码的最小距离恰好是2t 1。符号取自gf(q)、纠错能力为t的rs码具有如表1所示的参数。
[0054]
表1.rs码的参数
[0055]
参数取值码字长度n=q-1奇偶校验符号数n-k=2t维数k=q-1=2t最小距离d=2t 1
[0056]
rs码具有两个重要的特点:(1)码的长度比码字母表少1;(2)最小距离比奇偶校验符号数多1,满足特点(2)的编码称为极大距离可分(maximum distance separable,mds)码,因此rs码是一类mds码。
[0057]
在本实施例中,rs的编码可以通过如图4所示的除法电路来完成,图4是本发明实施例提供的rs码的编码电路图。信息位依次进入除法电路中,当信息位全部进入该电路中,寄存器中的内容即为奇偶校验符号。
[0058]
步骤5:将校验符号放入当前chunk对应分量码的校验位置;
[0059]
步骤6:重复步骤2-步骤5完成当前chunk的编码。
[0060]
进一步地,若当前chunk为第一个chunk,编码过程包括:
[0061]
步骤2’:将第一个chunk的实部和虚部初始化为全0,
[0062]
步骤3’:将信息块按行放入第一个chunk的实部的信息位;
[0063]
步骤4’:利用rs码编码器对第一个chunk的每一行分量码进行编码,得到对应的校验符号;
[0064]
步骤5’:将校验符号放入第一个chunk对应分量码的校验位置。
[0065]
需要说明的是,因为zipper码一行的信息符号只有110个,而rs码的信息符号需要113个,因此,在利用rs码编码器对chunk的每一行分量码进行编码之前,需要在chunk的每一行分量码的信息符号后添加3个0码。
[0066]
进一步地,按照上述编码方法,对所有信息块编码结束后,将实部送入信道进行传输。
[0067]
本实施例还提供了一种基于rs码的zipper码的译码方法,具体地,包括:
[0068]
步骤1:获取当前待译码窗口的待译码信息;
[0069]
步骤2:根据berlekamp译码算法对待译码信息进行迭代译码,计算得到每一行分量码的错误位置和错误个数;
[0070]
具体地,berlekamp算法具体步骤如下:
[0071]
步骤(1):计算校正子(s1,s2,...,s
2t
);
[0072]
步骤(2):定错误位置多项式σ(x);
[0073]
其中,在步骤(2)中,求解错误位置多项式需要利用berlekamp算法。
[0074]
步骤(3):确定错误估值函数z0(x);
[0075]
在步骤(3)中,错误位置多项式z0(x)为校正子多项式s(x)和错误位置多项式σ(x)的乘积,即z0(x)=s(x)σ(x)modx
2t

[0076]
步骤(4):求解错误位置数βk和错误数值δk,并进行纠错。
[0077]
在步骤(4)中,错误位置数βk为错误位置多项式σ(x)的根的倒数,其可以利用chien搜索来得到,错误数值δk可以利用forney定理来计算,其公式为分母中σ

(x)为多项式σ(x)的导数。
[0078]
步骤3:根据错误位置和错误个数,利用rs码译码器对每一行分量码进行分量码译码和纠错;
[0079]
具体地,步骤3包括:
[0080]
若当前行分量码的错误个数为0,或者错误个数超出rs码纠错能力,则进入下一行分量码的分量码译码和纠错;或者,
[0081]
若当前行分量码的错误个数不为0且不超出rs码纠错能力,则利用rs码译码器对该行分量码进行分量码译码,并将错误的码字纠正后得到纠错后的正确码字;同时,根据每一个错误位置,按照映射关系φ-1
找到该错误位置对应的实部或虚部,并对对应的实部或虚部进行正确码字的更新,之后进入下一行分量码的分量码译码和纠错。
[0082]
在本实施例中,映射关系φ-1
为φ(wq i,ws j)=(w(q-s-1) j,w(l s) i)的逆映射,其中,码长为n的分量码,被划分为长为w的2l个块,每个分量码的实部和虚部等长,虚部和实部的长度均为wl,wq i表示当前chunk的行坐标,ws j表示当前chunk的列坐标,i,j∈[w],s∈[2l]。
[0083]
步骤4:重复步骤2-步骤3,直到达到预设最大迭代次数,或者当前待译码窗口中每
一行分量码错误个数均为0;
[0084]
步骤5:依次滑动待译码窗口,得到所有待译码窗口的译码码字,将所有待译码窗口的译码码字排序后进行输出。
[0085]
需要说明的是,纠t个错误的q进制bch码或rs码可以用来纠正v个符号错误和e个符号删除,只要不等式v 2e≤t成立。当不存在符号错误时,即v=0,可以纠正的删除符号数最多为e=2t,即对于(n,k)rs码,当删除符号数不超过n-k=2t时,经过译码均可以对删除过程进行恢复。本实施例正是利用这样的性质对原有以bch码为分量码的zpper码进行改进,采用多元rs码作为分量码,使其纠错和纠删能力大幅提升。
[0086]
值得注意的是,对于只存在删除错误的情况,需对上述rs纠错译码做如下修正:
[0087]
(1)由于删除位置已知,在计算校正子时需对接收多项式进行修正,将删除位置的符号替换为0,利用修正的接收多项式计算校正子,进而得到校正子多项式s(x)。
[0088]
(2)错误位置多项式由删除位置决定,即
[0089]
需要说明的是,本实施例不仅对分量码进行改进,还改变了信道模型和包删除方式,使得本实施例的方法在包删除信道下的性能更优。
[0090]
本实施例采用并行rs结构,在zipper码采用上述编码结束后,一个chunk内的每一列对应符号打包成一个包,假设chunk包含μ行n列,则一个chunk可分为n个包,每个包内的符号数即为一个chunk内包含的行数。当删除的包的数量为e时,对于每个rs码而言,相当于删除的符号个数为e,因此当删除的包的数量小于rs码的纠删能力时,通过译码即可以对删除的包进行恢复。
[0091]
本实施例的基于rs码的zipper码编译码方法,使用rs码作为zipper码的分量码,由于rs码具有比二进制bch码更强的纠错能力,可以用于抗干扰能力强的通信系统中,并且在纠正随机符号错误和随机突发错误方面非常有效,采用rs码作为zipper码的分量码能达到比二进制bch码更好的纠错和纠删性能。
[0092]
实施例二
[0093]
本实施例通过bsc信道的仿真实验对实施例一的基于rs码的zipper码的编译码方法的效果进行说明。
[0094]
仿真1
[0095]
仿真条件:采用(127,113)rs码,纠错能力t=7,分量码码率为0.89。zipper码结构中一个chunk大小为62,码长n=124,周期v=1,虚部m=62,校验符号有14个,码率为0.77。译码窗口大小m=620,滑窗大小为μ=chunk=62,窗口内最大迭代次数i
max
=10。接收端从信道接收到10个码字块后开始译码。
[0096]
具体地,编码过程如下:
[0097]
将信息比特划分为大小为符号的信息块。t=0时,对第一个信息块进行编码,将信息块u
l
按行放入chunk实部信息符号位置(图1中白色区域),该chunk的虚部(图1中灰色区域)全部初始化为0(译码器已知)。然后按行送入rs码编码器中进行编码,但因为zipper码一行的信息符号只有110个,而rs码的信息符号需要113个,所以对每行分量码来说,在信息符号后面补3个0码,编译码器均已知在此
不再赘述,分量编码得到14个校验符号以后,放入chunk的校验位(图1中右边长为r的部分),对chunk的每一行进行分量编码以后,完成第一个信息块的编码。之后的信息块编码与上述类似,区别在于从第二个chunk以后,其虚部全部都由之前已编码的chunk实部根据映射关系φ-1
得到。
[0098]
具体地,译码过程如下:
[0099]
首先做译码准备工作,将接收到的码字块按顺序放入对应chunk实部中,其虚部设置为全0,然后按照映射关系φ-1
对虚部进行更新。开始迭代译码,从当前待译码窗口的最后一行进行迭代译码,计算当前待译码窗口内每一行分量码的错误位置,得到错误个数。如果错误个数大于0,表示该行分量码有错,则利用rs码译码器进行分量码译码。如果译码失败,则返回flag为false,并且将错误个数置0;如果译码成功,更新flag为true,返回正确分量码码字,根据每一个错误位置按照映射关系φ-1
找到其对应实部或虚部位置,并对对应的实部或虚部位置进行正确码字的更新。从窗口的最后一行开始译码到窗口的第一行,算一次迭代过程,重复上述过程,直到达到预设迭代最大次数10或者当前待译码窗口内每一个分量码错误个数均为0,窗口往下滑动μ大小。接收端从信道中接收到一个新的码字块,放入当前窗口的最后一个chunk实部,该chunk虚部由映射关系φ-1
从之前实部得到,进行迭代译码,达到条件后,窗口继续向下滑动μ大小。以此类推,窗口不断滑动,依次输出后面的码字块。
[0100]
请参见图5,图5是本发明实施例提供的分量码为(127,113)rs码在bsc信道下性能图,从图中可以看出bsc信道下,使用(127,113)rs码在错误概率p=0.09附近,误码率才到10-4

[0101]
仿真2
[0102]
仿真条件:采用分量码为(255,199)的rs码,纠删能力为56个符号,码率为0.78。一个chunk包含125行125列,编码按照上述编码过程进行编码,在包删除信道下,用一个删除矩阵对删除符号进行标记,删除则为1,未删除为0。译码端将接收码字和删除矩阵逐行送入译码器进行译码,如果未超过纠错能力,表示可以纠正,返回更新后该行的删除矩阵和译码后码字,根据映射关系,得到删除位置对应的实部或虚部位置,对该位置的删除矩阵和符号进行更新。直到达到预设最大迭代次数或者该chunk内没有错误符号后停止译码。
[0103]
请参见图6,图6是本发明实施例提供的分量码为rs码的并行包删除信道性能图,为了比较做了串行分包方式的对比,从图中可以看出,使用并行分包方式比串行分包方式性能有所提升。包删除信道下,采用并行分包方式,在包删除概率为0.28附近,误符号率能达到10-5

[0104]
应当说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
[0105]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在
不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献