提高Turbo码译码速度的并行译码方法及译码装置的制作方法

文档序号:7509539阅读:124来源:国知局
专利名称:提高Turbo码译码速度的并行译码方法及译码装置的制作方法
技术领域
提高Turbo码译码速度的并行译码方法及译码装置属于Turbo码译码器技术领域。
背景技术
Turbo码是接近香农极限的一种信道编码,建立在卷积码的基础上,在编码长度较长的情况下能得到接近香农极限的纠错性能,而且译码的复杂性不是很高,如果译码器可以达到一定的速度,满足在3G以及未来的4G通信中对数据率以及速度越来越高的要求,则会具有更广泛的应用前景。
Turbo码编码本质上是并行级联卷积码,设其编码为(n,k),则编码效率是k/n,它是由两个子编码器和一个交织器组成的编码器。编码结构示意图如图1所示。以1/3码率为例,输入是1bit,输出是3bit,包括信息位X和校验位Y、Y’,两个校验位Y、Y’分别是不经过交织器和经过交织器编码后的输出。
一)一种没有读写冲突的交织器。
对于Turbo码并行译码方案来说,每个子译码块是单独同时译码的,如果采用随机交织的方案,那么在同一个时刻,可能会对同一个译码子块的不同位置进行读或者写操作,而对于一个存储结构RAM来说,相同的时刻只能进行一个位置的读或者写,这样就产生了读写冲突。因此,要实现并行译码,就要设计出一种没有这样的读写冲突的交织器。
根据相关文献调研,设计思想如下取块长度为W,N为码长,则P=N/W为并行度。根据P和W的不同情况采用不同的交织方案(要求P<=W),描述如下i.P为整数,且P与W互为素数,则将N写成P*W(P行W列)的矩阵,然后按照列的顺序读,每行为W个元素,还是P行。这样的交织表是没有冲突的,同一列的元素进行同时的读写操作,但属于不同的RAM,这样就避免了冲突。如N=28,W=7,P=4,交织表见表1所示。
ii.当P为整数,但P与W不互为素数时,设K为所述P与W的最大公约数,则把N写成P行W列的矩阵,将该矩阵以列的顺序的方式分成K块,在变换第0块时,同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵;在变换第I块时,将本块最后I个元素顺次提到本块首,然后按照同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵,其中I=1,…,K-1,由此得到一个交织表;由此得到一个交织表;如N=64,W=8,P=8,交织表见表2所示。
iii.P不为整数,将整个块分为两部分,然后两块分别按照上面的方法处理。因为我们可以采用尾部加0然后译码舍弃的方法总可以使得P为整数。


表1 N=28,W=7交织表

交织之前

表2 N=64,W=8交织表以上设计方法能够满足并行的读写没有冲突,但是随机性显然不够。相邻的码之间的相对关系比较固定,比如都间隔W,相邻以及相隔一定关系的码的随机性不够,译码性能不好。要使之能适用于Turbo码译码器,还需要进行随机化处理。随机化处理的方法有很多,比如进行行内交织、行间交织或者同时进行行内和行间交织都可以达到这样的效果。最终交织方案的确定,是要通过大量的仿真来实现的,我们最终采用先进行行内交织再进行行间交织的方式,这也是我们发明的一部分。
二)迭代译码方法Turbo译码是采用迭代译码的方法进行的,迭代原理示意图如图3所示。具体方法原理因为已经是成熟技术,在此不作详细描述。

发明内容
本发明的目的在于提供一种可以提高Turbo码译码器速度的方法及译码装置。
本发明的提高Turbo码译码器速度的并行译码方法的特征在于该方法是利用并行工作的P个单独的基于Turbo码迭代译码的小译码器和在并行译码时没有读写冲突的交织器来提高译码速度的,所述的译码方法依次含有以下步骤步骤1对所有存储器及控制器进行初始化;步骤2把P个小交织表存入P个存储器构成的小交织器,所述P个小交织表按照以下步骤得到当P为整数,且P与W互为素数,则将N写成P行W列的矩阵可,然后按照列的顺序读写,每行为W个元素,共P行,其中,块长度为W,N为码长,P=N/W,所述P代表并行度;由此,得到一个交织表;当P为整数,但P与W不互为素数时,设K为所述P与W的最大公约数,则把N写成P行W列的矩阵,将该矩阵以列的顺序的方式分成K块,在变换第0块时,同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵;在变换第I块时,将本块最后I个元素顺次提到本块首,然后按照同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵,其中I=1,…,K-1,由此得到一个交织表;当P不为整数时,把整个块分为两部分,把两块分别按前面方法处理。此时,也可以对译码数据尾部加0然后译码舍弃的方法使得P变为正数,由此得到一个交织表;再把所述交织表中的先进行行内交织、再进行行间交织,或者同时进行行内交织和行间交织,以此提高随机性,上述大交织表的每一行形成一个小的交织表,得到本发明所用于并行译码的读写部冲突的交织表;步骤3把帧待译码数据送入RAM读写控制器;步骤4迭代控制器向所属RAM读写控制器发送迭代信号,同时,迭代计数器开始计数;步骤5所述RAM读写控制器在迭代控制信号控制下,从所述接收信号存储器读出P块数据,并行地送入P个子译码器,同时从P个存储交织表的交织器中读取交织表,进行Turbo码分段递推式译码;步骤6所述每一个字译码器对输入的每一块数据先进行预推,已得到前向递推的状态似然值的初始值,然后在每一块内进行分段递推,此时,前向递推和反向递推同时进行,前向递推的同时进行似然比和外信息的计算;步骤7P个子译码器在每次迭代后读出接收信号和相应的外信息之后,再把外信息送往RAM读写控制器经过处理后写入外信息存储器,共所述P个子译码器读出用于下一次迭代;
步骤8所述迭代次数计数器迭代次数满之后发出迭代结束信号,所述P个子译码器发出硬判决信息。
本发明的提高Turbo码译码器速度的并行译码装置的特征在于RAM读写控制器,P个子译码器,P个接收信号存储器,P个外信息存储器,P个小交织器以及一个迭代控制其,迭代次数计数器,其中,P=N/W,N为帧待译码数据码长,W为块长,P为并行度,其中迭代控制器输出迭代控制信号;RAM读写控制器,设有迭代控制信号,作为帧待译码数据的接收信号以及外信息的输入端;P个接收信号存储器,该存储器的读写控制信号和写数据输入端与所述RAM读写控制器的相应信号输出端相连,该存储器的输出端与所述的RAM读写控制器的相应输入端相连;迭代次数计数器,该计数器的技术脉冲输出端与所述RAM读写控制器相应输入端相互连;P个外信息存储器,该存储器的外信息数据、地址信号输入端与所述的RAM读写控制器的相应输出端相连;P个子译码器,P个数据信号、地址信号输入端与所述RAM读写控制器的P个交织后的帧待译码数据及地址信号输出端相连;该P个子译码器硬判决信号输出端及外信息输出端与所述RAM读写控制器相应输入端相连;P个小交织器,都由存储器构成,所述P个小交织器以下属步骤构成存储了的交织表当P为整数,且P与W互为素数,则将N写成P行W列的矩阵可,然后按照列的顺序读写,每行为W个元素,共P行,其中,块长度为W,N为码长,P=N/W,所述P代表并行度;由此,得到一个交织表;当P为整数,但P与W不互为素数时,设K为所述P与W的最大公约数,则把N写成P行W列的矩阵,将该矩阵以列的顺序的方式分成K块,在变换第0块时,同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵;在变换第I块时,将本块最后I个元素顺次提到本块首,然后按照同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵,其中I=1,…,K-1,由此得到一个交织表;当P不为整数时,把整个块分为两部分,把两块分别按前面方法处理。此时,也可以对译码数据尾部加0然后译码舍弃的方法使得P变为正数,由此得到一个交织表;再把所述交织表中的先进行行内交织、再进行行间交织,或者同时进行行内交织和行间交织,以此提高随机性,上述大交织表的每一行形成一个小的交织表。对小交织表进行存储得到P个小交织器;本方法可在各种可编程逻辑器件中实施,一个具体实施是用Xilinx公司的Virtex2px2vp70 ff1704-5芯片来作Turbo码译码器,也可用专用集成电路实现。


图1 Turbo码编码结构图。
图2 Turbo码的迭代译码示意图。
图3迭代译码原理示意图。
弯箭头代表译该位置码元时用到的相邻位置的前后状态似然值,直线箭头指交织前后的在相应的位置(或者说是序号)。
图4块内递推过程示意图。
横轴代表码元,按照顺序排列,每一格表示一个段,相同的数字编号表示同时的操作。
图5块内递推示意图。
图6译码过程流程图。
图7译码装置实现方框图。
具体实施例方式
现有的译码算法是非并行的,采用分段递推的方法,对待译码数据只能串行处理,速度慢,无法满足对译码器速度越来越高的要求。而本方法则能较大地提高译码速度,采用P并行度可以将速度大约提高P倍。当然,译码器的复杂度有所提高,但是并没有增加P倍,相对所得到的速度来说,这样的代价是可以承受的。
1.本发明所提出的方法的特征在于它是一种利用适用于并行译码的交织器和并行译码方法,P个译码子块可以同时独立地互不干扰地单独译码,相当于P个原无并行的译码器同时工作的译码方法。它所述的译码方法依次含有以下步骤1)译码开始,相应的计数控制器初始化。
2)将一帧待译码数据分成P块,作为P个子待译码数据,信息位信息和校验位信息分别存储在P个RAM中。在后面的译码过程中,外信息(包括交织的和不交织的)都要存储在相应的译码子块RAM里。
3)每个子块按照并行迭代的方法进行译码。对于每个子块采用分段递推的方法,将子块分成m个小的段,当对某一段进行前向递推计算状态似然值和似然比时,同时进行下一段的反向递推计算反向状态似然值。即在块内同时进行反向和前向的递推以提高吞吐量。在前向递推的过程中计算出似然比及外信息,并存储到相应的RAM中。具体迭代过程如下判断迭代过程是否结束,是结束,输出译码结果,转5),否则进行如下迭代译第一个码时,对于存储外信息以及校验位及信息位比特等存储器,读和写时直接用地址信号即可,而对于译第二个码,需要通过交织器(具体见4)),寻找交织之前、之后对应的地址关系从而对存储器进行正确的读写。块内递推过程如下对于每一个子块的第一段,先进行反向预推得到第一段反向递推初始值,然后对第一段进行反向递推得到反向递推状态似然值,同时进行下一段的反向预推;然后对一段进行前向递推计算前向递推状态似然值以及似然比和外信息,同时,对第二段进行反向递推得到反向递推状态似然值,依此递推。也就是说,每一个时刻,除了第一段刚开始,都会有两个反向递推(一个预推一个正式递推)和一个前向递推过程在进行。这一块的递推过程如附图4所示,横轴上标注的为分块表示,序号1、2、3表示执行步骤,相同的标注为同时进行的操作。对于每一子块中,第一段前向递推的状态似然值初始值的确定由前一块的最后一段的前向递推到最后一位的似然值记录得到,最后一段反向递推的状态似然值初始值由后一子块第一段的反向递推的最后一位似然值记录得到,其原理示意及过程如图5所示。
4)适用于并行译码器的交织器。这种交织器必须能保证在迭代过程中对同时执行操作的并行的P个存储外信息RAM读写的时候没有冲突,即必须能保证对每次对P个RAM分别有一个数据的读写,随机的交织器是不能满足这样的要求的。
5)经过几次迭代后,判断迭代译码过程结束,将并行的译码结果转化为串行的数据,输出。
译码器主要关键技术方法如下设一帧数据长度为N,译码并行度为P,即将一帧接收到的数据分成P个子块,每块同时进行译码操作,则单位块长度,即块大小为W=N/P。让P和W都为整数,如果不能满足,可在译码数据后面添0,译码结束后不将其输出即可。因为每块可以单独互不影响译码,则在一个译码周期里我们可以同时完成P个译码。
对于每块数据的译码,采用原方案的分段递推方法,前向递推计算状态似然值和反向递推计算状态似然值同时进行,在前向递推的过程中同时计算似然比和外信息。
记α为前向递推状态似然值,β为反向递推状态似然值,块内译码过程如图4所示,具体描述如下将一个块分为几个段,各个段之间采用“滑动块”的方法,即先从第二个段做反向预推β,得到第一个段的β较为精确的初始值,然后做第一个段的反向递推β,同时做第二个段的反向预推β得到初始值,接着做第一个段的正向递推α,同时计算似然比,同时做第二个段的反向递推β,第三个段的反向预推β得到初始值……如此进行下去。则每个周期,完成两个反向递推,一个正向递推同时计算似然值。这样分段做可以减小存储量,而两段并行,同时第三段预推的方法则可以提高吞吐量。
图4中,横向为码长,分为P块,假设每一段长度与预推长度相同,都为32,而①、②、③表示时间的先后,相同的标识为同时进行的操作。
下面我们来看一个具体例子的实现。设一帧数据长度即码长为4096,并行度P为16,则每个子块长度为W=4096/16=256。要求每一块能同时而且独立互不影响地译码。将一块数据分成8段来译码,则块内的每一段数据长度为256/8=32。
由于前向递推计算状态似然值时,第一段的α的初始值应该来自于前一块的最后一段,而反向递推计算状态似然值时,最后一段的β的初始值应该来自于后一块的第一段。也就是说本块的初始值来自于别的块,因此必须先进行预推得到这些初始值作为另一块的输入。具体预推方案为每一次迭代开始时,先对最后一段(长度为32)进行α的预推,得到最后一个bit的α值,作为下一块前向递推第一段α的初始预置值。而每一块的第一段的反向递推完成时记下块首的β作为前一块的最后一段的反向递推的β的初始值。初始值的递推关系示意图如图5所示。
并行译码的实现还有一个关键技术就是适用于这种译码结构的交织器的设计与实现。按照背景技术中介绍的没有冲突的交织器的设计的基本方法,再进行随机化处理先进行行内交织再进行行间交织。
下面以码长为64,单位块长度为8来说明交织器的实现。
N=64,P=8,W=8,W与P的最大公约数为8,则对行写列读的交织表根据背景技术中介绍的规则要进行8个循环变换。在此基础上得到的交织表如表2所示。因为随机性不够,因此还要做随机化处理,即在此基础上再作行内和行间交织,当然,为了保证读写的没有冲突,交织要保证同列元素属于同一列的不变性。下面根据这个码长给出一个随机化处理的方法先进行行内交织,对于每一行所采用的交织方式是一样的,比如

那么通过行内交织之后,交织表变为

表3 行内交织之后的交织表再对得到的交织表进行行间交织,采用模4的方式,也就是列数除以4同余的为同一种交织模式。
例如可以采用下面的行间交织方案余数为03 0 5 2 7 1 4 6余数为15 1 7 3 0 6 4 2余数为21 4 0 7 5 2 6 3余数为32 7 4 0 1 5 3 6
则经过行间交织之后得到的交织表如表4所示

表4 行间交织之后的交织表当然,对于不同的码长,行内行间交织的模式会有所不同,要通过大量的仿真来确定。以上是以码长64为例来说明交织器的设计过程。
综上所述,译码过程如下所述1)设计并适合于并行译码的交织器。
2)译码开始,对所有的状态存储器以及相关的控制器初始化。
3)将一帧数据分成P个子块,对接收数据进行分块处理、存储。
4)每一块先进行预推,以得到前向和反向递推的状态似然值的初始值。
5)每一块内进行分段递推,前向递推和反向递推同时进行,前向递推的同时计算似然比和外信息。
6)迭代译码,迭代结束时,输出硬判信息。
并行度为16的并行译码方案,在不考虑工作时钟的条件下,吞吐量比原先方案提高了16倍,而占用的资源并没有无法忍受的提高,因此,这样的代价是可以接受的。
以下对译码装置进行说明译码装置即Turbo码译码器包括并行处理的P个子译码器(包括内部递推状态似然值存储器、适用于并行译码的存储小交织表的存储器等)、接收信号存储器、外信息存储器、RAM读写控制器、迭代控制器。
子译码器是同时进行独立译码的装置,根据接收到的待译码数据以及上迭代的计算结果更新每个符号的外信息,包括内部迭代控制器以及存储小交织表和状态似然值的存储器等。P个子译码器并行处理数据,每个时钟周期内并行处理P个元素。
接收信号存储器用于存储接收信号,包括2*P个RAM,分别用于存储信息位和校验位。每接收一个信号,按照其在帧中的位置,选择并存入RAM。
外信息存储器用于存储外信息,包括P个RAM。第一次迭代时外信息为初始值0(不读外信息),每次迭代时读出接收信号和相应的外信息,经过处理后把更新的外信息写入用于下一次迭代。因为每次所读的外信息的位置和接收信号的位置相同,所以外信息RAM的组织方式和接收信号RAM的相同。
RAM读写控制器,主要是产生RAM的读写控制信号以及地址信号等。
迭代控制器,主要是控制迭代过程的。
P个小交织表,是按照上述的交织原则设计的,存储在存储器中。
权利要求
1.提高Turbo码译码速度的并行译码方法,其特征在于,该方法是利用并行工作的P个单独的基于Turbo码迭代译码的小译码器和在并行译码时没有读写冲突的交织器来提高译码速度的,所述的译码方法依次含有以下步骤步骤1对所有存储器及控制器进行初始化;步骤2把P个小交织表存入P个存储器构成的小交织器,所述P个小交织表按照以下步骤得到当P为整数,且P与W互为素数,则将N写成P行W列的矩阵可,然后按照列的顺序读写,每行为W个元素,共P行,其中,块长度为W,N为码长,P=N/W,所述P代表并行度;由此,得到一个交织表;当P为整数,但P与W不互为素数时,设K为所述P与W的最大公约数,则把N写成P行W列的矩阵,将该矩阵以列的顺序的方式分成K块,在变换第0块时,同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵;在变换第I块时,将本块最后I个元素顺次提到本块首,然后按照同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵,其中I=1,…,K-1,由此得到一个交织表;当P不为整数时,把整个块分为两部分,把两块分别按前面方法处理;此时,也可以对译码数据尾部加0然后译码舍弃的方法使得P变为整数,由此得到一个交织表;再把所述交织表先进行行内交织、再进行行间交织,或者同时进行行内交织和行间交织,以此提高随机性,得到大交织表,上述大交织表的每一行形成一个小的交织表,得到本发明所用于并行译码的读写不冲突的大交织表;步骤3把帧待译码数据送入RAM读写控制器;步骤4迭代控制器向所属RAM读写控制器发送迭代信号,同时,迭代次数计数器开始计数;步骤5所述RAM读写控制器在迭代控制信号控制下,从所述接收信号存储器读出P块数据,并行地送入P个子译码器,同时从P个存储交织表的交织器中读取交织表,进行Turbo码分段递推式译码;步骤6所述每一个子译码器对输入的每一块数据先进行预推,以得到前向递推的状态似然值的初始值,然后在每一块内进行分段递推,此时,前向递推和反向递推同时进行,前向递推的同时进行似然比和外信息的计算;步骤7P个子译码器在每次迭代后读出接收信号和相应的外信息之后,经过迭代译码计算将外信息送往RAM读写控制器写入外信息存储器,供所述P个子译码器读出用于下一次迭代;步骤8所述迭代次数计数器迭代次数满之后向迭代控制其发出迭代结束信号,所述P个子译码器发出硬判决信息。
2.提高Turbo码译码速度的译码装置,其特征主要在于RAM读写控制器,P个子译码器,P个接收信号存储器,P个外信息存储器,P个小交织器、一个迭代控制器以及迭代次数计数器,其中,P=N/W,N为帧待译码数据码长,W为块长,P为并行度,其中迭代控制器,输出迭代控制信号;RAM读写控制器,设有迭代控制信号输入端,帧待译码数据的接收信号的以及外信息的输入端;P个接收信号存储器,该存储器的读写控制信号的和写数据的输入端与所述RAM读写控制器相应的信号输出端相连,该存储器的输出端与所述的RAM读写控制器的相应输入端相连;迭代次数计数器,该计数器的计数脉冲输出端与所述RAM读写控制器相应输入端相连;P个外信息存储器,该存储器的外信息数据、地址信号输入端与所述的RAM读写控制器的相应输出端相连;P个子译码器,采用可编程逻辑器件,该译码装置的P个数据、地址信号输入端与所述RAM读写控制器的P个交织后的帧待译码数据的输出端及地址信号输出端相连;该P个子译码器的硬判决信号输出端及外信息输出端与所述RAM读写控制器相应输入端相连;P个小交织器,都由存储器构成,所述P个小交织器以下述步骤构成并存储交织表当P为整数,且P与W互为素数,则将N写成P行W列的矩阵可,然后按照列的顺序读写,每行为W个元素,共P行,其中,块长度为W,N为码长,P=N/W,所述P代表并行度;由此,得到一个交织表;当P为整数,但P与W不互为素数时,设K为所述P与W的最大公约数,则把N写成P行W列的矩阵,将该矩阵以列的顺序的方式分成K块,在变换第0块时,同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵;在变换第I块时,将本块最后I个元素顺次提到本块首,然后按照同前一种情况正常列读的顺序将该块读成每一行有W个元素的矩阵,其中I=1,…,K-1,由此得到一个交织表;当P不为整数时,把整个块分为两部分,把两块分别按前面方法处理。此时,也可以对译码数据尾部加0然后译码舍弃的方法使得P变为正数,由此得到一个交织表;再把所述交织表中的先进行行内交织、再进行行间交织,或者同时进行行内交织和行间交织,以此提高随机性,上述大交织表的每一行形成一个小的交织表。对小交织表进行存储得到P个小交织器;
3.根据权利要求2所述的提高Turbo码译码速度的译码装置,其特征在于所述Turbo码译码装置采用了xilinx公司的Virtex2p x2vp70 ff1704-5芯片。
全文摘要
提高Turbo码译码器速度的并行译码方法及译码装置属于Turbo码译码器技术领域,其特征在于它是在已有的迭代译码的基础上,利用并行工作的P个单独的小译码器实现P并行度的译码从而提高译码器速度的装置。相应地提出了适用于这种并行译码结构的交织器的设计方法及装置、小译码器以及外信息存储器、接收信号存储器、状态控制器等装置。利用这样的方法及装置,译码速度大约可以提高P倍,而总的存储量并没有增加,占用的资源也并没有增加P倍,因而以较小的代价换取了译码速度的显著提高,从而使得高速译码得以实现。
文档编号H03M13/00GK1758543SQ20051011577
公开日2006年4月12日 申请日期2005年11月11日 优先权日2005年11月11日
发明者郑银香, 张秀军, 周世东, 许希斌, 粟欣, 肖立民, 赵明, 王京 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1