CN102523006A - 一种级联编码器及实现方法 - Google Patents
一种级联编码器及实现方法 Download PDFInfo
- Publication number
- CN102523006A CN102523006A CN2011104582351A CN201110458235A CN102523006A CN 102523006 A CN102523006 A CN 102523006A CN 2011104582351 A CN2011104582351 A CN 2011104582351A CN 201110458235 A CN201110458235 A CN 201110458235A CN 102523006 A CN102523006 A CN 102523006A
- Authority
- CN
- China
- Prior art keywords
- register
- encoder
- data
- address location
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明涉及一种级联编码器及实现方法,其特征在于所述的级联编码器是由编码器和解码器通过交织器连接而成,所述的编码器依次由RS编码器、外交织器、卷积编码器和内交织器连接构成;所述的解码器则依次由内解交织器、卷积解码器、外解交织器和RS译码器连接构成;实现方法是按照先做RS编码,接着做卷积编码,再做卷积解码,最后是做RS译码的顺序实现的。级联编码器引入OFDM系统,使其性能显著提高。
Description
技术领域
本发明涉及一种级联编码器及实现方法,特别是涉及信道编码部分的一种级联编码器及实现方法。属于通信领域。
背景技术
RS码,即里所码,是一种前向纠错的信道编码。它被广泛的应用于各种商业用途,最显著的是在CD、DVD和蓝光光盘上的使用;在数据传输中,它也被用于DSL和WiMAX;广播系统中DVB和ATSC也闪现着它的身影;在计算机科学里,它是第六层标准RAID的重要成员。
RS编码是一种定义在伽罗华域GF(2m)上的运算。(n=255,k=239)RS码可由GF(28)导出。k表示待编码的信息个数,n表示编码后的数据个数,n-k=16就是添加的冗余个数。(255,239)RS码能够检测16、纠正8个错误。
因为RS码是循环码,所以它的监督码元的生成由生成多项式决定。生成多项式的幂为监督码元数,可取本原元α的连续n-k=16次幂作为生成多项式的根。因此可以得到(255,239)RS码的生成多项式是:
g(X)=(X-α)(X-α2)…(X-α15)(X-α16) (1)
将g(X)整理成关于X的升幂排列的格式,整理为:
g(X)=g0+g1X+g2X2+…+g15X15+g16X16=α136+α240X+…+α121X15+X16 (2)
由于RS码为循环码字,按照循环码的系统编码方法,可得到RS编码。信息多项式为m(X);监督多项式为p(X);商多项式为q(X);那么
Xn-km(X)=q(X)g(X)+p(X) (3)
可表示为
p(X)=Xn-km(X)modg(X), (4)
最终码子多项式U(X),表示为:
U(X)=p(X)+Xn-km(X)。 (5)
卷积码是1955年由Elias等人提出的,是一种非常有前途的编码方法。卷积码和分组码的根本区别在于,它不是把信息序列分组后再进行单独编码,而是由连续输入的信息序列得到连续输出的已编码序列。同样,在卷积码译码过程中,不仅从此时刻收到的码组中提取译码信息,而且还要利用以前或以后各时刻收到的码组中提取有关信息。而且卷积码的纠错能力随约束长度的增加而增强,差错率则随着约束长度增加而呈指数下降。
卷积码是一种常用的差错控制编码,对于卷积码(n0,k0,m),表示该卷积码编码器将k0比特信息段编成n0比特的码组,即每一时刻送至卷积编码器的输入信息元为k0个,相应地卷积编码器输出n0个码元,并且输出的n0比特码组不仅与当前k0比特信息段有关,还与之前输入的(m-1)个信息段有关联,其中,m为大于1的整数,m(又称约束长度)等于移位寄存器的个数加1,卷积码用生成序列来表示输入与输出间的关系,其中,表示第K个移位寄存器的输入端到第j个模2加法器输入端的连接线情况,若有连线,则若无连线,则如图5所示为卷积编码(2,1,7)对应的卷积编码器,1个比特输入对应有2比特输出,约束长度为7,移位寄存器个数为6个,根据各个移位寄存器的输入输出端与各个模2加法器输入端的连接线关系,其生成序列g1=(1111001)2,和g2=(1011011)2,因此,该卷积编码器生成的多项式为(171,133)8。
维特比(Viterbi)算法是目前运用得最广泛的卷积编码的译码算法,Viterbi译码方法主要从2m-1种(m为卷积编码器约束长度)可能状态中更新最佳状态和传输的最可能位序列,其将接收到的编码信号与内建的参考值做运算,找出最可能的路径,并依此路径还原正确的数据,以完成译码流程。
对于(2,1,7)卷积编码,编码过程存在27-1(64)种可能状态,如图5的卷积编码器,若当前时刻寄存器1-6中的值为000000时,表明当前状态为S0,若此处输入1,则寄存器1-6中的值变为100000时,当前状态从S0转变为S1,以此类推,当寄存器1-6中的值为111111时,表明当前状态为S63。由此,各状态转移图可由类似蝴蝶形状的蝶形图表示,其中,Si和Si+32构成一对蝶形图,根据不同的输入,蝶形图的两个目的状态分别对应于S2i和S(2i+1),其中,i为0到31的任一整数。图7所示为i为0的一个蝶形对,如图所示,若当前状态为S0,则当输入0时,状态S0经由状态转移方向转移至状态S0,输出XY为00,当输入1时,状态S0经由状态转移方向转移至状态S1,输出XY为11;若当前状态为S32,则当输入0时,状态S32经由状态转移方向转移至状态S0,输出XY为11,当输入1时,状态S32经由状态转移方向转移至状态S1,输出XY为00。Viterbi译码即为上述卷积编码的逆过程。
由此可见,RS码具有较强的抗突发错误能力,而卷积编码具有很好的抗随机干扰性能,因此,为了充分利用他们二者各自的优点,本发明拟将RS码和卷积编码同时应用于一个通信系统之中。基于这方面考虑,构成本发明提供一种级联编码器及实现方法的构思。
发明内容
本发明的目的在于提供一种级联编码器及实现方法,也即本发明是将RS编码器与卷积编码器通过交织器连接,设计了一种级联编码器及实现方法,并将其应用于OFDM通信系统之中。重点是RS编码器和卷积译码器的设计实现。
具体技术方案是本发明提供的一种级联编码器,其特征在于所述的级联编码器是由编码器和解码器通过交织器连接而成,所述的编码器依次由RS编码器、外交织器、卷积编码器和内交织器连接构成;所述的解码器则依次由内解交织器、卷积解码器、外解交织器和RS译码器连接构成;
其中,(1)RS编码器选用LFSR移位结构,即(n-k)阶移位寄存器的系统编码;
(2)RS译码器采用与RS编码器相同的本原多项式,参数与编码器相同;
(3)卷积编码器采用(2,1,7)卷积编码器,其x、y状态转移多项式为(171,133,);
(4)卷积译码器是基于Viterbi算法设计的Viterbi译码器;
(5)交织器为简单的行列交织器,以抵抗OFDM系统中信道的突发成片错误,把一组的成片错误分散到不同的分组中。
级联编码器、解码器的实现框图如下图1所示,
1.1RS编码器
对RS编码器的实现,选用比较容易实现的LFSR移位结构,即(n-k)阶移位寄存器的系统编码,如图2所示。
图2为(255,239)RS编码的16阶位寄存器的系统编码器实现框图,图2所示的寄存器的每个状态具有8bit的码元。系数g0,g1,g2,…,g14,g15是生成多项式的系数。
图2结构的一个实现难点就是生成多项式的系数与输入信息的伽罗华域乘法运算。本发明对于伽罗华域的乘法器的实现是通过如下的方法转化为两组数据的异或操作实现,使复杂的乘法运算简化为易于硬件实现的简单的异或操作。
因此,
又因为,
因此,整理多项式并比较相同项的系数可以得到:
c0=d0+e0+e4+e5+e6 c1=d1+e2+e5+e6
c2=d2+e0+e2+e4+e5 c3=d3+e0+e1+e3+e4
c4=d4+e0+e1+e2+e6 c5=d5+e1+e2+e3
c6=d6+e2+e3+e4 c7=d7+e3+e4+e5
所以,在RS编码器乘法模块中,首先使用两个8位的寄存器,一个存储生成多项式的系数RA,另外一个存储待乘的输入数据RB。另外,还需要一个15位的寄存器用来存放相乘运算的中间变量RAxRB,首先,根据系数相同的规则,可以通过简单的异或操作得到d0,d1,......,d7,e0,e1,......,e6的数值,然后,根据上述的系数对应规则,同样可以通过异或操作得到c0,c1,......,c7的数值,最终把数据的15位表达式转化为8位的乘法结果RC,实现了对乘法运算的简化操作。
1.2RS译码器
RS译码器采用与RS编码器相同的本原多项式,参数也与编码器相同,具体实现框图如图3所示。
由图3可见,RS解码主要分为错误检测(Error Detection)和错误纠正(Error Correction)两个过程。具体可分为如下三个步骤:
1),伴随多项式的计算;
伴随多项式的计算是整个RS译码过程中的第一步,也是最重要的一步。其设计的难点在于接收到的数据的流水操作以及送入伴随多项式计算模块的数据的乘法操作。
伴随多项式的计算拟采用如图4所示的结构实现。
图4中所示的r0,r1,……,r254对应255个伽罗华域的数据,依次送入伴随多项式的实现结构,做伽罗华域的乘法运算即可实现对伴随多项式的计算,最终可以得到16个校验信息S0,S1,……,S15。(详见实施例2)
2),确定错误位置多项式和错误估值函数;
伴随式S(x)的计算就是用来求解关键方程
S(x)σ(x)=ω(x)modx2t
的,求解关键方程,可以得到错误位置多项式
σ(x)=σtxt+σt-1xt-1+…+σ0
和错误值多项式
ω(x)=ωt-1xt-1+…+ω1x+ω0。
3),求解错误位置数和错误数值,并进行纠正。
这一过程的处理方法主要有两类,一个是Forney提出的计算方法,另外一类是是由Berlekamp在Forney的基础之上稍作修改提出的方法。在此不做详细的介绍。
2.1卷积编码器
本发明采用(2,1,7)卷积编码器,其X、Y状态转移多项式为(171,133)。每个时钟周期输入1个bit信息,输出2个bit信息。所述卷积编码器结构如图5所示。
卷积编码器的设计与译码器相比较为简单。只需要按照生成多项式对输入的数据逐位的异或即可。例如,本发明使用的卷积编码器,其生成序列g1=(1111001)2和g2=(1011011)2,因此,对应1位的输入信息,输出信息X和Y分别由输入信息按照g1和g2的规则相异或得到。
2.2卷积译码器
所述的额卷积译码器是基于Viterbi算法设计Viterbi译码器。Viterbi译码器的框图如图6所示。
由图6可见,译码器主要由三个单元构成:
1),分支度量计算(bmg)单元;
分支度量值计算单元,用于接收输入的两路数据,并根据状态转移蝶形对的状态转移规则,对接收到的两路数据进行计算,得到各状态的分支度量值;
2),加比选计算(acs)单元;
加比选单元,用于利用上述分支度量值计算单元计算得到的分支度量值,对各状态前一时刻的路径度量值进行加比选ACS处理,其中,上述加比选单元由8个并行执行的加比选模块组成,其中,每个加比选模块处理的4个状态转移蝶形对的相应分支具有相同的输入输出特性;
3),回溯输出译码结果(trace back)单元。
回溯输出译码结果单元涉及三个部分的设计:存储单元、最大值搜索单元和回溯输出单元。
存储单元,用于存储经上述加比选单元处理后得到的各状态的路径度量值及上述路径度量值的状态转移关系标记;
最大值搜索单元,用于对上述存储单元存储的各状态的路径度量值进行比较,搜索出最大的路径度量值;
回溯输出单元,用于根据上述存储单元存储的状态转移关系标记,对上述最大的路径度量值进行回溯,并输出译码结果。
3交织器
OFDM系统中交织器的主要作用是抵抗信道的突发成片错误。交织器的设计目的就是把一组的成片错误分散到不同的分组之中。在这里我们选用实现较为简单的行列交织器。系统设计的时候,发射端,RS编码输出的数据按列写入交织器,CC编码器(即卷积编码器)按行读取交织器内的数据;接收端,CC译码器按行向交织器写入译码后数据,RS译码器按列读取待译码数据。
示意图1中的外交织器和内交织器分别如图9和图10所示。因为解交织器的操作与交织器的操作类似,因此,只需要给出外交织器和内交织器示意图即可。
图9中的数字表示寄存器的地址值。由图可以看出,整个寄存器的大小为0到2879总共2880个地址空间。在数据输入的时候,我们从A端口按照地址递增45的顺序写入,即:第一次写入第0地址位置,第二次写入第45地址位置,第三次写入第90地址位置,……,直至从第0地址位置写到第2879地址位置,把寄存器写满。然后,读取数据的时候,我们使用端口A和B同时读取。端口A读取寄存器上半部分地址空间内存储的数据,端口B读取寄存器下半部分地址空间内存储的数据。读取的时候,按行顺序读取,即从第0地址位置读取到第44地址位置,从第45地址位置读取到第89地址位置,从第90地址位置读取到第134地址位置,……,直至把寄存器读空为止。
图10中的数字表示寄存器的地址值。由图可以看出,整个寄存器的大小为0到1471总共1472个地址空间。对于寄存器的写操作,我们使用端口A和端口B同时进行。端口A写寄存器的上半部分,端口B写寄存器的下半部分。从图中可以看出,寄存器上半部分的地址空间为0到735总共736个地址值,下半部分地址空间为736到1471总共也是736个地址值。端口A的写地址按照23的值递增,即:第一次写入第0地址位置,第二次写入第23地址位置,第三次写入第46地址位置,……,直至从第0地址位置写到第735地址位置,把寄存器上半部分写满。端口B的写地址只需将每个端口A的写地址加上736即可。读寄存器只通过端口A读取。读取寄存器的时候,按行顺序读取,即从第0地址位置读取到第22地址位置,从第23地址位置读取到第45地址位置,从第46地址位置读取到第68地址位置,……,直至把寄存器读空为止。
总之,本发明所述的级联编码器的实现方式是按照先做RS编码,接着做卷积编码,再做卷积解码,最后是做RS译码的顺序实现的。
本发明通过计算机matlab仿真与具体硬件实现结果同时验证,可以得到同样的系统参数条件下,不同的编码方法的增益值具有较大的差异。其中级联编码器具有最好的性能。在中低误码率条件下,级联编码器比RS编码器和卷积编码器单独编码有大约2dB编码增益,最大值可达4dB左右。在中高误码率条件下,卷积码器与级联码器性能相接近。因此,本发明的级联编码器的引入,使得OFDM系统性能具有显著的提高。
附图说明
图1:级联编码器、解码器示意框图;
图2:(255,239)RS码的LFSR编码图;
图3:RS解码器结构;
图4:伴随多项式的实现结构;
图5:1卷积编码器(状态从右向左看入);
图6:Viterbi译码框图;
图7:状态转移蝶形对的示意图;
图8:Viterbi解码器实施流程示意图;
图9:外交织器示意图;
图10:内交织器示意图。
具体实施方式
通过下面实施例的描述,进一步说明本发明的实质性特点和显著的进步,但本发明决非仅局限于实施例。
实施例1:如图2结构的编码器的具体实现时,采用16个上述的基于异或操作的乘法器并行计算,可以快速流水实现RS编码器。
具体的(255,239)RS码的16阶位寄存器的系统编码形成系统码字的实现步骤如下:
a),开关1在开始的k个时钟周期内合上,使消息码元进入移位寄存器的(n-k)级。对于(255,239)RS码,k取239,(n-k)取255-239=16。
这一步可以分解为三个过程执行:
第一个过程:输入待编码的数据;总共需要输入239个位宽为8的数据。
第二个过程:对输入的数据做伽罗华域的乘法运算;对每一个输入的数据,进行一次伽罗华域的乘法运算。
第三个过程:用第三步得到的乘法结果更新寄存器的内容;将乘法得到的结果,与寄存器原来存储的数据相加,用得到的新的结果替换原先的寄存器值,存入寄存器之中。
b),开关2在开始的k个时钟周期内处于下面的位置,使得消息码元同时直接传输到一个输出寄存器中。等第k个消息码元传输到输出寄存器,开关1断开,开关2移到上面位置。随后的(n-k)个时钟周期用于清除移位寄存器中的监督码元,这可以通过将其移到输出寄存器而完成。当(n-k)个寄存器的值全部输出以后,我们就完成了一次编码,得到了需要的码字。
全部的时钟周期数等于n,输出寄存器存储的内容就是码字多项式
p(X)+Xn-km(X),
p(X)和m(X)分别表示监督码元和消息码元多项式形式。
实施例2:图4中D单元存储的是临时的数据,由上到下分别为定义为S′0,S′1,……,S′15,S′0,S′1,……,S′15初始值为0,将S′0与α1相乘,得到结果temp1=S′0×α1,将S′1与α2相乘,得到结果temp2=S′1×α2,……,将S′15与α16相乘,得到结果temp16=S′15×α16。输入r0的时候,由上到下分别更新S′0,S′1,……,S′15为S′0=r0+temp1,S′1=r0+temp2,……,S′15=r0+temp16。得到新的S′0,S′1,……,S′15以后,继续使用上边的方法更新temp1,temp2,……,temp16,将新得到的S′0与α1相乘,得到结果temp1=S′0×α1,将新得到的S′1与α2相乘,得到结果temp2=S′1×α2,……,将新得到的S′15与α16相乘,得到结果temp16=S′15×α16。接着,输入r1的时候,由上到下分别更新S′0,S′1,……,S′15为S′0=r1+temp1,S′1=r1+temp2,……,S′15=r1+temp16。得到新的S′0,S′1,……,S′15以后,继续使用上边的方法更新temp1,temp2,……,temp16,将新得到的S′0与α1相乘,得到结果temp1=S′0×α1,将新得到的S′1与α2相乘,得到结果temp2=S′1×α2,……,将新得到的S′15与α16相乘,得到结果temp16=S′15×α16。如此重复,直至r0,r1,……,r254按顺序全部输入图4的结构以后,D单元存储的内容即为我们需要的16个校验信息S0,S1,……,S15。
同样,对于本结构中的乘法运算同样适用编码器中设计的乘法器的实现方法。
实施例3:卷积解码器的实施流程(图8)
2201、接收输入的两路数据;
原始数据是通过卷积编码后会被分成并行的两路数据(包含信道软信息,即编码后数据和信道噪声的叠加)后通过信道传输到维特比译码器中进行解码。
2202、对接收到的两路数据进行计算,得到各状态的分支度量值;
根据状态转移蝶形对的状态转移规则,对接收到的两路数据进行计算,得到各状态的分支度量值。
由于原始数据在(2,1,7)卷积编码器处理的过程中,有64种可能状态出现,因此,维特比译码过程需要针对64种可能的状态(对应于32个状态转移蝶形对)进行计算并搜索出最大概率路径,以还原出原始的数据。
维特比在接收到输入的两路数据后,对两路数据进行计算,以求得各状态的分支度量值。
通过观察状态转移蝶形对发现,每条分支对应的两个软判决符号只存在四种组合:00,01,11,10。假设输入的两路数据为X1Y1,则相应的分支度量值的计算以下存在四种结果:
BM11=X1+Y1;
BM10=X1-Y1;
BM01=-X1+Y1=-(X1-Y1)=-BM10;
BM00=-X1-Y1=-(X1+Y1)=-BM11;
可见,通过计算两路数据的和与差,便可计算得到所有分支的分支度量值。
因此,本发明实施例中优化了分支度量值的计算方法,进一步提高了分支度量值的计算速度,其具体实现方法如下:
根据状态转移蝶形对的状态转移规则,得到每个状态的两条分支的软判决符号d1d2;
若某分支的d1d2为11,则将接收的两路数据相加,并将得到的值作为该分支分支度量值;
若某分支的d1d2为10,则将接收的两路数据相减,并将得到的值作为该分支分支度量值;
若某分支的d1d2为00,则将接收的两路数据相加后取反,并将得到的值作为该分支分支度量值;
若某分支的d1d2为01,则将接收的两路数据相减后取反,并将得到的值作为该分支分支度量值。
通过上述方法可更快地完成各状态的分支度量值的计算。
2203、根据各状态的转移关系进行ACS处理;
通过采用分时复用的方式,每个周期完成8个状态转移蝶形对的ACS处理,经过4个周期完成所有32个状态转移蝶形对的ACS处理。
在实际应用中,维特比译码器的ACS处理过程可由8个加比选模块并行完成,通过预先设置每个加比选模块所要处理的状态转移蝶形对,使每个加比选模块每个周期处理一个状态转移蝶形对,利用分时复用实现8个加比选模块的并行执行,缩短ACS处理时长,提高整体的译码速度。
单个加比选模块中的ACS处理过程如下:
假设该加比选模块当前处理的状态转移蝶形对为如图7所示的状态转移蝶形对。则加比选模块首先将步骤2202得到的状态S0、S1的分支度量值(每个状态包含两条分支,即存在两个分支度量值),与状态S0、S1前一时刻的路径度量值相加,得到状态S0、S1当前时刻的路径度量值;状态S0比较其两条分支的路径度量值,选择较大的路径度量值保留,同样的,状态S1比较其两条分支的路径度量值,选择较大的路径度量值保留,完成该状态转移蝶形对的ACS处理。
由图5的编码器可看出,移位寄存器的第4位对编码的结果没有影响,即状态Si和S(i+8)、S(i+16)和S(i+16+8)、S(i+32)和S(i+32+8)以及S(i+48)和S(i+48+8)(i<8)是等效的。在此规律的基础上,本发明实施例对传统的加比选单元进行的改进,采用8个加比选模块并行计算的方式实施,其中,采用分时复用的方式实现8个加比选模块的并行运作,每个周期由8个加比选模块共同完成8个状态转移蝶形对(16个状态)的ACS处理。其中,每个加比选模块处理4个状态转移蝶形对,且4个状态转移蝶形对的相应分支具有相同的输入输出特性。
假设一个状态转移蝶形对采用起始状态中较低的状态进行标记,如将图7所示的状态转移蝶形对标记为B0,则32个状态转移蝶形对可对应标记为B0,B1,B2,….,B31。则加比选模块对应处理的状态转移蝶形的设置可如表1:
表1
加比选模块 | 状态转移蝶形对 |
ACS0 | B0,B8,B19,B27 |
ACS1 | B1,B9,B18,B26 |
ACS2 | B2,B10,B17,B25 |
ACS3 | B3,B11,B16,B24 |
ACS4 | B4,B12,B23,B31 |
ACS5 | B5,B13,B22,B30 |
ACS6 | B6,B14,B21,B29 |
ACS7 | B7,B15,B20,B28 |
上述8个加比选单元并行构成的加比选单元经过4个周期可完成所有32个状态转移蝶形对的ACS处理,缩短ACS处理时长,从而提高了整体的译码速度。
2204、存储各状态的路径度量值及各路径度量值的状态转移关系标记;
存储经步骤2203处理后得到的各状态的路径度量值,即上述保留的各状态的较大的路径度量值,并且,对该路径度量值的状态转移关系标记进行存储,以便最后可利用该状态转移关系标记进行回溯。
如在步骤2203中,经过一个周期完成8个状态转移蝶形对的ACS处理,则将经ACS处理后得到的16个状态的路径度量值进行存储,同时存储相应路径度量值的状态转移关系标记。
由于每个周期各加比选模块需要读取相应状态的路径度量值进行“加”操作,同时将“选”后的相应状态的路径度量值进行存储,为了避免在进行加比选处理时,先处理的状态转移蝶形对运算修改了后处理的状态转移蝶形对初始状态的路径度量值,本发明实施例利用两个路径度量值存储单元(两组寄存器),分别对前一时刻经上述ACS处理后得到的各状态的路径度量值,和当前时刻经上述ACS处理后得到的各状态的路径度量值进行交替存储(即乒乓存储)。如,假设两组寄存器命名为REGA,REGB,则在加比选模块进行ACS处理时,第i个周期内,可从REGA中读出相应状态前一时刻的路径度量值,同时将经ACS处理后得到的该状态当前时刻的路径度量值N存入REGB中,在第i+1个周期,从REGB中读出相应状态前一时刻的路径度量值N,同时将经ACS处理后得到的该状态当前时刻的路径度量值存入REGA中,以此类推。
2205、比较上述存储的各状态的路径度量值,搜索出最大的路径度量值;
对步骤2204经ACS处理后得到的各状态的路径度量值进行比较,搜索出最大的路径度量值。
在实际应用中,可在每个周期,对ACS处理得到的16个状态的路径度量值进行两两比较,得到该周期中的最大的路径度量值,在4个周期之后,对得到的4个最大的路径度量(对应于4个周期)再进行两两比较,得到1个最大的路径度量值。进一步的,本发明实施例的译码方法还可判断比较得出的路径度量值是否超过预置的门限值,若超过,则将存储的所有路径度量值同时减去相同的数值,如可将存储的所有路径度量值同时减去2048,以避免用于存储的寄存器溢出。
可理解,由于编码过程中状态转移是由低状态向高状态转移,基于该规律下,当在最大值搜索过程中,通过比较得到两个或两个以上相等的最大路径度量值,则选择较低状态的路径度量值作为此次最大值搜索的结果。
2206、回溯输出译码结果;
根据步骤2205中搜索出的最大的路径度量值,可从寄存器中找出相应的状态转移关系标记,通过该状态转移关系标记进行回溯,则可得到相应的原始数据,即译码结果。
在实际应用中,每次可以8比特大小为回溯单位进行回溯,即每次回溯输出8比特的译码结果(即1个字节),并在最后一次回溯时输出全部译码结果。可根据实际情况设定回溯次数,如对于736bit的编码数据块,则回溯的次数为(736-48)/8+1=87次。
需要说明的是,本发明实施例的译码方法基于(2,7,1)卷积编码,可实现对(2,7,1)卷积编码输出的编码数据块的译码。
由上可见,本发明实施例中,利用各个状态转移蝶形对的状态转移规则,采用分时复用的方式,在同一周期对8个状态转移蝶形的加比选操作进行并行处理,在保证维特比算法译码效果的前提下,极大的提高了译码速度。
Claims (10)
1.一种级联编码器,其特征在于所述的级联编码器是由编码器和解码器通过交织器连接而成,所述的编码器依次由RS编码器、外交织器、卷积编码器和内交织器连接构成;所述的解码器则依次由内解交织器、卷积解码器、外解交织器和RS译码器连接构成;
其中,(1)RS编码器选用LFSR移位结构,即(n-k)阶移位寄存器的系统编码;
(2)RS译码器采用与RS编码器相同的本原多项式,参数与编码器相同;
(3)卷积编码器采用(2,1,7)卷积编码器,其x、y状态转移多项式为(171,133,);
(4)卷积解码器是基于Viterbi算法设计的Viterbi译码器;
(5)交织器为简单的行列交织器,以抵抗OFDM系统中信道的突发成片错误,把一组的成片错误分散到不同的分组中。
2.按权利要求1所述的级联编码器,其特征在于(1)中所述的系统编码器为所示(225,239)RS码的16阶位寄存器,所述的寄存器的每个状态具有8bit的码元,系数g0,g1,g2……g14,g15是生成多项式的系数。
3.按权利要求2所述的级联编码器,其特征在于生成多项式的系数与输入信息的伽罗华域乘法运算是通过转化为两组数据的异或操作实现的,将复杂的乘法运算简化为易于硬件实现的简单的异域操作。
4.按权利要求1所述的级联编码器,其特征在于(2)中的RS译码器的译码分为错误检测和错误纠正两个过程,具体分为以下三步:
a)伴随多项式的计算:最终得到16个校验信息;
b)确定错误位置多项式和错误估算函数;
c)求解错误位置和错误数值,并进行纠正。
5.按权利要求1所述的级联编码器,其特征在于(3)中所述的卷积编码器中每个时钟周期输入1个bit信息,输出2bit信息;只需按照生成多项式对输入的数值逐位的异或即可。
6.按权利要求1所述的级联编码器,其特征在于(4)中所述的解码器由分支度量计算单元、加比选计算单元和回溯输出译码结果单元组成;
其中回溯输出译码结果单元涉及存储单元、最大值搜索单元和回溯输出单元。
7.按权利要求1所述的级联编码器,其特征在于(5)中所述的交织器的发射端,RS编码输出的数据按列写入外交织器,卷积编码器按行读取外交织器内的数据;接收端,卷积解码器按行向内交织器写入译码后数据,RS译码器按列读取待译码数据。
8.按权利要求7所述的级联编码器,其特征在于:
(1)整个外交织器的大小为0到2879总共2880个地址空间;在数据输入的时候,从A端口按照地址递增45的顺序写入,即:第一次写入第0地址位置,第二次写入第45地址位置,第三次写入第90地址位置,……,直至从第0地址位置写到第2879地址位置,把交织器写满;然后,读取数据的时候,使用端口A和B同时读取;端口A读取寄存器上半部分地址空间内存储的数据,端口B读取寄存器下半部分地址空间内存储的数据;读取的时候,按行顺序读取,即从第0地址位置读取到第44地址位置,从第45地址位置读取到第89地址位置,从第90地址位置读取到第134地址位置,……,直至把寄存器读空为止;
(2)整个内交织器的大小为0到1471总共1472个地址空间;对于寄存器的写操作,使用端口A和端口B同时进行;端口A写寄存器的上半部分,端口B写寄存器的下半部分;内交织器上半部分的地址空间为0到735总共736个地址值,下半部分地址空间为736到1471总共也是736个地址值;端口A的写地址按照23的值递增,即:第一次写入第0地址位置,第二次写入第23地址位置,第三次写入第46地址位置,……,直至从第0地址位置写到第735地址位置,把寄存器上半部分写满;端口B的写地址只需将每个端口A的写地址加上736即可;读寄存器只通过端口A读取;读取寄存器的时候,按行顺序读取,即从第0地址位置读取到第22地址位置,从第23地址位置读取到第45地址位置,从第46地址位置读取到第68地址位置,……,直至把寄存器读空为止。
9.实现由权利要求1-7中任一项所述的级联编码器的方法,其特征在于按照先做RS编码,接着做卷积编码,再做卷积解码,最后是做RS译码的顺序实现的。
10.按权利要求9所述的实现方法,其特征在于:
A.卷积解码器的实施流程为:
(a)接收输入的两路数据;
(b)对接收的两路数据进行计算,得到各状态的分支度量值;
(c)根据各状态的转移关系进行加比选处理;
(d)存储各状态的路径度量值及各路径度量值的状态转移关系标记;
(e)比较上述存储的各状态的路径度量值,搜索出最大的路径度量值;
(f)回溯输出译码结果;
B.RS编码的实现步骤
a),开关(1)在开始的k个时钟周期内合上,使消息码元进入移位寄存器的(n-k)级。对于(255,239)RS码,k取239,(n-k)取255-239=16;这一步又可分解为三个过程执行:
第一个过程:输入待编码的数据;总共需要输入239个位宽为8的数据;
第二个过程:对输入的数据做伽罗华域的乘法运算;对每一个输入的数据,进行一次伽罗华域的乘法运算;
第三个过程:用第三步得到的乘法结果更新寄存器的内容;将乘法得到的结果,与寄存器原来存储的数据相加,用得到的新的结果替换原先的寄存器值,存入寄存器之中;
b),开关(2)在开始的k个时钟周期内处于下面的位置,使得消息码元同时直接传输到一个输出寄存器中,等第k个消息码元传输到输出寄存器,开关1断开,开关(2)移到上面位置;随后的(n-k)个时钟周期用于清除移位寄存器中的监督码元,通过将其移到输出寄存器而完成;当(n-k)个寄存器的值全部输出以后,完成了一次编码,得到了需要的码字;
其中,时钟周期数等于n,输出寄存器存储的内容就是码字多项式
p(X)+Xn-km(X).
p(X)和m(X)分别表示监督码元和消息码元多项式形式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104582351A CN102523006A (zh) | 2011-12-31 | 2011-12-31 | 一种级联编码器及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104582351A CN102523006A (zh) | 2011-12-31 | 2011-12-31 | 一种级联编码器及实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102523006A true CN102523006A (zh) | 2012-06-27 |
Family
ID=46293820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104582351A Pending CN102523006A (zh) | 2011-12-31 | 2011-12-31 | 一种级联编码器及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102523006A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104753843A (zh) * | 2014-10-20 | 2015-07-01 | 西北工业大学 | 一种基于h12qam调制的非二进制通信系统及通信方法 |
CN105451026A (zh) * | 2014-09-19 | 2016-03-30 | 想象技术有限公司 | 数据压缩 |
CN105610550A (zh) * | 2016-02-05 | 2016-05-25 | 南京飞腾电子科技有限公司 | 一种用于电力线载波通信的Viterbi译码方法 |
CN107181568A (zh) * | 2017-05-16 | 2017-09-19 | 中山大学花都产业科技研究院 | 一种低功耗广域网扩频通信系统信道编码系统和方法 |
CN108011640A (zh) * | 2016-11-01 | 2018-05-08 | 中国科学院沈阳自动化研究所 | 一种用于(2,1,n)卷积编码的通用方法 |
CN108073471A (zh) * | 2016-11-15 | 2018-05-25 | 西部数据技术公司 | 链接的存储系统和主机系统错误校正码 |
CN108471315A (zh) * | 2017-02-23 | 2018-08-31 | 杭州海康威视数字技术股份有限公司 | 一种纠删译码方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1599262A (zh) * | 2004-08-06 | 2005-03-23 | 南京邮电学院 | 宽带无线接入系统中里德索洛门卷积级联码的实现方法 |
-
2011
- 2011-12-31 CN CN2011104582351A patent/CN102523006A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1599262A (zh) * | 2004-08-06 | 2005-03-23 | 南京邮电学院 | 宽带无线接入系统中里德索洛门卷积级联码的实现方法 |
Non-Patent Citations (2)
Title |
---|
《现代电子技术》 20110901 徐志广 等 "级联编码在OFDM系统中性能分析" 第116-118页 1-10 第34卷, 第17期 * |
徐志广 等: ""级联编码在OFDM系统中性能分析"", 《现代电子技术》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105451026A (zh) * | 2014-09-19 | 2016-03-30 | 想象技术有限公司 | 数据压缩 |
CN105451026B (zh) * | 2014-09-19 | 2019-07-30 | 想象技术有限公司 | 数据压缩 |
CN104753843A (zh) * | 2014-10-20 | 2015-07-01 | 西北工业大学 | 一种基于h12qam调制的非二进制通信系统及通信方法 |
CN105610550A (zh) * | 2016-02-05 | 2016-05-25 | 南京飞腾电子科技有限公司 | 一种用于电力线载波通信的Viterbi译码方法 |
CN105610550B (zh) * | 2016-02-05 | 2016-11-30 | 南京飞腾电子科技有限公司 | 一种用于电力线载波通信的Viterbi译码方法 |
CN108011640A (zh) * | 2016-11-01 | 2018-05-08 | 中国科学院沈阳自动化研究所 | 一种用于(2,1,n)卷积编码的通用方法 |
CN108073471A (zh) * | 2016-11-15 | 2018-05-25 | 西部数据技术公司 | 链接的存储系统和主机系统错误校正码 |
CN108073471B (zh) * | 2016-11-15 | 2021-06-25 | 西部数据技术公司 | 链接的存储系统和主机系统错误校正码 |
CN108471315A (zh) * | 2017-02-23 | 2018-08-31 | 杭州海康威视数字技术股份有限公司 | 一种纠删译码方法及装置 |
CN108471315B (zh) * | 2017-02-23 | 2021-08-20 | 杭州海康威视数字技术股份有限公司 | 一种纠删译码方法及装置 |
CN107181568A (zh) * | 2017-05-16 | 2017-09-19 | 中山大学花都产业科技研究院 | 一种低功耗广域网扩频通信系统信道编码系统和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102523006A (zh) | 一种级联编码器及实现方法 | |
CN102122964B (zh) | 一种基于fpga的高速rs编译码器实现方法 | |
US8495453B1 (en) | Circulant processing scheduler for layered LDPC decoder | |
CN101777926B (zh) | 一种Turbo乘积码的通用译码器及其方法 | |
CN100592639C (zh) | 低密度奇偶校验编码方法、装置及奇偶校验矩阵生成方法 | |
CN105322973B (zh) | 一种rs码编码器及编码方法 | |
CN102684709B (zh) | 一种译码方法及其译码装置 | |
CN105553485A (zh) | 基于fpga的bch编解码装置及其编解码方法 | |
CN105634508A (zh) | 一种低复杂度近性能限的Turbo译码器的实现方法 | |
CN101834617B (zh) | 一种rs纠错码解码器 | |
CN102340320A (zh) | 卷积Turbo码双向并行译码方法 | |
CN1636324A (zh) | 纠错解码器的钱搜索单元 | |
Parvathi et al. | FPGA based design and implementation of Reed-Solomon encoder & decoder for error detection and correction | |
CN101969358B (zh) | 一种用于空间通信的高速并行rs译码方法 | |
CN101442313B (zh) | 数字通信过程中的编解码方法以及编码器、解码器 | |
CN101834615B (zh) | 里德-索罗蒙编码器实现方法 | |
CN102820892A (zh) | 一种用于并行bch编码的电路、编码器及方法 | |
CN101686104A (zh) | 一种前向纠错的编解码的方法、装置和系统 | |
CN101488762A (zh) | 一种面积紧凑且快速的bch并行译码方法 | |
CN102045073B (zh) | 一种bch码译码方法和装置 | |
CN102142849B (zh) | 一种维特比译码方法及维特比译码器 | |
US6735737B2 (en) | Error correction structures and methods | |
CN106656216A (zh) | 一种针对Turbo乘积码的修正的软入软出译码方法 | |
CN101873143B (zh) | 一种rs纠错码解码器中的伴随式计算电路及其计算方法 | |
CN100417031C (zh) | 宽带无线接入系统中里德索洛门卷积级联码的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120627 |