CN107453761B - Turbo码译码方法及Turbo码译码器 - Google Patents
Turbo码译码方法及Turbo码译码器 Download PDFInfo
- Publication number
- CN107453761B CN107453761B CN201610378388.8A CN201610378388A CN107453761B CN 107453761 B CN107453761 B CN 107453761B CN 201610378388 A CN201610378388 A CN 201610378388A CN 107453761 B CN107453761 B CN 107453761B
- Authority
- CN
- China
- Prior art keywords
- sliding window
- processors
- state metric
- state value
- backward
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
一种Turbo码译码方法及Turbo码译码器,所述译码方法包括:接收待译码数据;将所述待译码数据划分成N个数据块并分别分配至N个处理器,每个处理器包括M个滑窗;控制所述N个处理器并行对所述待译码数据进行译码处理,N≥2,M≥2。上述方案可以减少Turbo码译码器在译码过程中所占用的内存空间,提高译码速度。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种Turbo码译码方法及Turbo码译码器。
背景技术
Turbo码是一种级联码,基本原理是编码器通过交织器把两个分量编码器进行并行级联,两个分量编码器分别输出相应的校验位比特;译码器在两个分量译码器之间进行迭代译码,分量译码器之间传递去掉正反馈的外信息。Turbo码具有较优的纠错性能,性能接近香农极限。
传统的Turbo码的译码器为反馈串行译码器,两个子译码器交互交替工作,对接收到的软比特依次顺序进行译码。对于每一个子译码器,其译码均有先验信息输入、信源信息输入和校验信息输入。通过对接收到软比特依次顺序进行译码,随着迭代过程的不断进行,先验信息的置信度不断提高,并最终达到收敛极限。
然而,现有的Turbo码译码器在对接收到的软比特依次进行译码时所占用的内存空间较大,速度较慢。
发明内容
本发明解决的技术问题是如何减少Turbo码译码器在译码过程中所占用的内存空间,提高译码速度。
为解决上述技术问题,本发明实施例提供一种Turbo码译码方法,包括:接收待译码数据;将所述待译码数据划分成N个数据块并分别分配至N个处理器,每个处理器包括M个滑窗;控制所述N个处理器并行对所述待译码数据进行译码处理,N≥2,M≥2。
可选的,所述将当前滑窗的前向状态度量前向传递至后一滑窗,包括:所述第一组处理器在第2k次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;所述将当前滑窗的后向状态度量后向传递至前一滑窗,包括:所述第二组处理器在第2k+1次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;其中,k为自然数,0<j<M。
可选的,所述将上一次迭代处理时滑窗的前向状态度量前向传递至当前次迭代处理时的滑窗,包括:在第2k次迭代处理时,控制所述第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理时,控制所述第一组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;所述将上一次迭代处理时滑窗的后向状态度量后向传递至当前次迭代处理时的滑窗,包括:在第2k次迭代处理时,控制所述第一组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;在第2k+1次迭代处理时,控制所述第二组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;其中,k为自然数,0<j<M。
可选的,所述将前一处理器中的滑窗的相同次迭代处理的前向状态度量前向传递至当前处理器的滑窗,包括:在第2k次迭代处理中,获取所述第一组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成相邻的下一个所述第二组处理器对应的第一个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理中,获取所述第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量值,并将其设置成相邻的下一个所述第一组处理器对应的第一个滑窗的前向状态度量的初始状态值;所述将后一处理器中的滑窗的相同次迭代处理的后向状态度量后向传递至当前处理器的滑窗,包括:在第2k+1次迭代处理中,获取所述第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个所述第二组处理器对应的最后一个滑窗的后向状态度量的初始状态值;在第2k次迭代处理中,获取所述第二组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个所述第一组处理器对应的最后一个滑窗的后向状态度量的初始状态值;其中,k为自然数,所述第一组处理器与所述第二组处理器间隔分布。
可选的,所述Turbo码译码方法还包括:在所述第一组处理器的第2k次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;在所述第二组处理器的第2k+1次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;其中,k为自然数,0<j<M。
可选的,所述Turbo码译码方法还包括:在第2k+1次迭代处理时,控制所述第一组处理器中的任一处理器,获取所述第2k次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值;控制所述第二组处理器中的任一处理器,获取所述第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值;在第2k次迭代处理时,控制所述第一组处理器中的任一处理器,获取所述第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值;控制所述第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值;其中,k为自然数,0≤j<M。
可选的,所述Turbo码译码方法还包括:在第2k次迭代处理中,获取所述第一组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+2次迭代处理中第二个滑窗的前向状态度量训练的初始状态值;在第2k次迭代处理中,获取所述第二组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+2次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值;在第2k+1次处理中,获取所述第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+2次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+3次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值;在第2k+1次迭代处理中,获取所述第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+2次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+3次迭代处理中第二个滑窗的前向状态度量训练的初始状态值;其中,任意相邻的处理器属于不同组。
为解决上述问题,本发明实施例还提供了一种Turbo码译码器,包括:接收单元,用于接收待译码数据;分配单元,用于将所述待译码数据划分成N个数据块并分别分配至N个处理器,每个处理器包括M个滑窗;译码单元,用于控制所述N个处理器并行对所述待译码数据进行译码处理,N≥2,M≥2。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在接收到待译码数据后,将待译码数据划分成N个数据块并分配至N个处理器,通过采用N个处理器并行地对待译码数据进行处理,可以提高译码速度。在每一个处理器中包括M个滑窗,在进行译码处理时,依次对M个滑窗中的数据进行译码时,只需要缓存一个滑窗的数据长度即可,而无需缓存整个处理器的数据长度,从而可以节省内存空间。
进一步,在同一处理器的相同次迭代处理时,通过将当前滑窗的前向状态度量前向传递至后一滑窗,作为后一滑窗的前向状态度量的初始状态值;或将当前滑窗的后向状态度量后向状态度量后向传递至前一滑窗,作为前一滑窗的后向状态度量的初始状态值,无需再重新设定前一滑窗或后一滑窗的初始值,因此可以提高译码性能。
进一步,在同一处理器的相邻次迭代处理中,通过将上一次迭代处理时滑窗的前向状态度量前向传递至当前次迭代处理时的滑窗,或者将上一次迭代处理时滑窗的后向状态度量后向传递至当前次迭代处理时的滑窗,因此无需再重新设定当前次迭代处理时的滑窗的初始值,故可以提高译码性能。
进一步,在相邻处理器中,将前一处理器中的滑窗的相同次迭代处理的前向状态度量前向传递至当前处理器的滑窗,或将后一处理器中的滑窗的相同次迭代处理的后向状态度量后向传递至当前处理器的滑窗,无需再重新设定当前处理器的滑窗的初始值,因此可以提高译码系能。
此外,通过计算迭代处理中前向状态度量的训练以及后向状态度量的训练,也可以提高译码性能。
附图说明
图1是本发明实施例中的一种Turbo码译码方法的流程图;
图2是本发明实施例中的一种处理器进行并行计算的时序图;
图3是本发明实施例中的另一种处理器进行并行计算的时序图;
图4是本发明实施例中的一种Turbo码译码器的结构示意图。
具体实施方式
传统的Turbo码的译码器为反馈串行译码器,两个子译码器交互交替工作,对接收到的软比特依次顺序进行译码。对于每一个子译码器,其译码均有先验信息输入、信源信息输入和校验信息输入。通过对接收到软比特依次顺序进行译码,随着迭代过程的不断进行,先验信息的置信度不断提高,并最终达到收敛极限。然而,现有的Turbo码译码器在对接收到的软比特依次进行译码时所占用的内存空间较大,速度较慢。
在本发明实施例中,在接收到待译码数据后,将待译码数据划分成N个数据块并分配至N个处理器,通过采用N个处理器并行地对待译码数据进行处理,可以提高译码速度。在每一个处理器中包括M个滑窗,在进行译码处理时,依次对M个滑窗中的数据进行译码时,只需要缓存一个滑窗的数据长度即可,而无需缓存整个处理器的数据长度,从而可以节省内存空间。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
本发明实施例提供了一种Turbo码译码方法,参照图1,以下通过具体步骤进行详细说明。
步骤S101,接收待译码数据。
在具体实施中,可以由Turbo码译码器接收待译码数据,并在接收到待译码数据后,执行下述操作。
步骤S102,将所述待译码数据划分成N个数据块并分别分配至N个处理器。
在具体实施中,Turbo码译码器中可以包括N个处理器,N≥2。在接收到待译码数据后,Turbo码译码器可以将待译码数据划分成N个数据块,并将N个数据块分别发送至N个处理器。每一个处理器接收一个数据块,且每一个数据块中的数据长度可以均相等,也即Turbo码译码器将待译码数据等分成N份;N个数据块中的数据长度也可以并不完全相同,例如,待译码数据无法被N整除时,N个数据块中的数据长度并不完全相同。
在本发明实施例中,N的取值可以为2,也可以为4、6、8、16中的任一个。可以根据实际的译码场景来选择N的取值,此处不做赘述。
以现有的LTE协议中规定最大译码块长度为6144比特为例,也即待译码数据长度为6144比特。当N=16时,Turbo码译码器将6144比特等分成16个数据块,每一个数据块中的数据长度为384比特。Turbo码译码器将16个数据长度均为384比特的数据块分别发送至16个处理器,每一个处理器对应的数据块的长度为384比特。
可以理解的是,在实际应用中,N的取值也可以为1。此时,Turbo码译码器可以采用现有的译码方法对待译码数据进行译码,无需采用本发明实施例所提供的译码方法。
在具体实施中,N个处理器的结构可以相同。在每一个处理器中,均可以包括M个滑窗,且每一个处理器均可以采用滑窗对数据块进行处理。也即在不同的时刻内,每一个处理器采用其中的一个或两个滑窗对数据块进行处理。在M个滑窗中,可以包括M-1个长度相同的滑窗以及1个残窗。
需要说明的是,在本发明实施例中所涉及到的时刻并不是指一个时间点,而是包括一段时间周期。在本发明实施例中,将一个时刻定义为:一个滑窗的译码时间周期。
以滑窗长度为72bit为例,采用radix-2译码方法时,一个滑窗的译码时间周期为72个时钟周期,也即一个时刻的时间长度为72个时钟周期。采用radix-4译码方法时,一个滑窗的译码时间周期为36个时钟周期,也即一个时刻的时间长度为36个时钟周期。采用radix-8译码方法时,一个滑窗的译码时间周期为24个时钟周期,也即一个时刻的时间长度为24个时钟周期。
每一个处理器中,M-1个长度相同的滑窗的长度可以是预先根据固定的窗长度设定的。相应地,残窗的长度是除M-1个长度相同的滑窗所对应的数据总长度外的剩余数据的长度。当Turbo码译码器采用radix-8译码算法时,由于radix-8译码算法每次对3个比特进行处理,因此M-1个长度相同的滑窗的长度可以为3的整数倍。
例如,每一个处理器所分配的数据块的长度为384比特,预设的固定窗长为72比特,则每一个处理器包括6个滑窗,其中,前5个滑窗的长度均为72比特,最后一个滑窗称之为残窗,且残窗的长度为384-72×5=24比特。
步骤S103,控制所述N个处理器并行对所述待译码数据进行译码处理。
在具体实施中,在译码过程中,Turbo码译码器可以控制N个处理器并行地对待译码数据进行处理,也即:N个处理器并行地对各自所分配到的数据块进行译码处理。
由此可见,将待译码数据划分成N个数据块并分配至N个处理器,通过采用N个处理器并行地对待译码数据进行处理,可以提高译码速度。在每一个处理器中包括M个滑窗,在进行译码处理时,依次对M个滑窗中的数据进行译码时,只需要缓存一个滑窗的数据长度即可,而无需缓存整个处理器的数据长度,从而可以节省内存空间。
在本发明实施例中,可以先将N个处理器换分成两组,分别为第一组处理器以及第二组处理器。第一组处理器与第二组处理器的并集为N个处理器,且第一组处理器与第二组处理器并无交集。第一组处理器与第二组处理器可以间隔分布。
在实际应用中,可以存在多种方式对N个处理器进行分组。在本发明实施例中,可以根据N个处理器各自对应的标识号对N个处理器进行分组,将标识号为偶数的处理器划分成第一组处理器,将标识号为奇数的处理器划分成第二组处理器。
例如,将16个处理器分别进行标识,标识号依次为0~15,则将标识号为0、2、4、6、8、10、12、14的处理器划分成第一组处理器,将标识为1、3、5、7、9、11、13、15的处理器划分成第二组处理器。
在本发明实施例中,在译码处理过程中可以包括多次迭代处理。例如,译码处理过程中包括16次迭代处理。每一次迭代处理在时间轴上可以划分成多个时刻,在每一个时刻,不同处理器中的不同滑窗分别执行对应的运算操作。
在每一次迭代处理中,需要依次对M个滑窗进行计算,在每一个时刻,控制其中的一个滑窗或者两个滑窗进行计算。每一次迭代处理在时间轴上所划分的时刻数可以与滑窗数相关,每一次迭代处理的时刻数可以为M+1。例如,每个处理器包括6个滑窗,则每一次迭代处理的时刻数为7。又如,每个处理器包括3个滑窗,则每一次迭代处理的时刻数为4。
在本发明实施例中,在进行译码处理时,在相同时刻,第一组处理器中的处理器所执行的操作与第二组处理器中的处理器所执行的操作不同。由本发明上述实施例中可知,译码处理可以包括多次迭代处理,设定第0次迭代处理的标识为Iter0,设定第1次迭代处理的标识为Iter1,以此类推,设定第15次迭代处理的标识为Iter15。
在迭代处理的标识为偶数时,也即在第2k次迭代处理过程中,在第i时刻,可以控制第一组处理器中的各处理器分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量以及第i-1个滑窗的对数似然比(Likelihood Rate,LLR);在第2k次迭代处理过程中,对应于第二组处理器,在第i时刻,可以控制第二组处理器中的各处理器分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量以及第M-i个滑窗的LLR。
在迭代处理的标识为奇数时,也即在第2k+1次迭代处理过程中,在第i时刻,可以控制第一组处理器中的各处理器分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量以及第M-i个滑窗的LLR;可以控制第二组处理器中的各处理器分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量以及第i-1个滑窗的LLR;其中,k为自然数,0≤i<M。也即在一次迭代处理的一个时刻中,控制第一组处理器以及第二组处理器并行地进行各自对应的运算。
下面结合图2,对具体的译码处理过程进行详细说明。
参照图2,给出了本发明实施例中的一种处理器执行并行计算的时序图。图2中,两组处理器分别为第一组处理器201以及第二组处理器202,第一组处理器201与第二组处理器202中均包括3个滑窗。
第一组处理器201中的3个滑窗的顺序标识为0~2,依次为:SW0_1、SW1_1以及SW2_1,其中,SW0_1、SW1_1的长度相同,SW2_1为残窗。第二组处理器202中的3个滑窗的顺序标识为0~2,依次为:SW0_2、SW1_2以及SW2_2,其中,SW1_2、SW2_2的长度相同,SW0_2为残窗。
相应地,每一次迭代处理包括4个时刻,Iter0为第0次迭代处理,Iter0包括c0、c1、c2、c3四个时刻,Iter1为第1次迭代处理,Iter1包括d0、d1、d2、d3四个时刻。
当k=0时,第2k次迭代处理为Iter0次迭代处理。
当i=0时,在第一组处理器201中,SW0_1为顺序标识为第i个的滑窗,顺序标识为第-1个的滑窗不存在。在Iter0次迭代处理的第0时刻,也即在时刻c0,控制第一组处理器201中的各处理器,分别计算SW0_1的前向状态度量;在第二组处理器202中,顺序标识为第3个的滑窗不存在,SW2_2为顺序标识为第M-i-1个滑窗,因此,在时刻c0,控制第二组处理器202中的各处理器,分别计算SW2_2的后向状态度量。
当i=1时,在第一组处理器201中,SW1_1为顺序标识为第i个的滑窗,SW0_1为顺序标识为第0个的滑窗。在Iter0次迭代处理的第1时刻,也即在时刻c1,控制第一组处理器201中的各处理器,分别计算SW1_1的前向状态度量、SW0_1的后向状态度量以及SW0_1对应的LLR;在第二组处理器202中,SW2_2为顺序标识为第M-i个的滑窗,SW1_2为顺序标识为第M-i-1个滑窗,因此,在时刻c1,控制第二组处理器202中的各处理器,分别计算SW2_2的前向状态度量、SW1_2的后向状态度量以及SW2_2对应的LLR。
相应地,当i=2时,控制第一组处理器201中的各处理器,分别计算SW2_1的前向状态度量、SW1_1的后向状态度量以及SW1_1对应的LLR;控制第二组处理器202中的各处理器,分别计算SW0_2的后向状态度量、SW1_2的前向状态度量以及SW1_2对应的LLR。
当i=3时,控制第一组处理器201中的各处理器,分别计算SW2_1的后向状态度量以及SW2_1对应的LLR;控制第二组处理器202中的各处理器,分别计算SW0_2的前向状态度量以及SW0_2对应的LLR。
可以理解的是,当k为其他正整数时,第2k次迭代处理均与k=0时的迭代处理相同。
当k=0时,第2k+1次迭代处理为Iter1次迭代处理。
当i=0时,在Iter1次迭代处理的第0时刻,也即在时刻d0,控制第一组处理器201中的各处理器,分别计算SW2_1的后向状态度量;控制第二组处理器202中的各处理器,分别计算SW0_2的前向状态度量。
当i=1时,在Iter1次迭代处理的第1时刻,也即在时刻d1,控制第一组处理器201中的各处理器,分别计算SW2_1的前向状态度量、SW1_1的后向状态度量以及SW2_1对应的LLR;控制第二组处理器202中的各处理器,分别计算SW1_2的前向状态度量、SW0_2的后向状态度量以及SW0_2对应的LLR。
当i=2时,在Iter1次迭代处理的第2时刻,也即在时刻d2,控制第一组处理器201中的各处理器,分别计算SW1_1的前向状态度量、SW0_1的后向状态度量以及SW1_1对应的LLR;控制第二组处理器202中的各处理器,分别计算SW1_2的后向状态度量、SW2_2的前向状态度量以及SW1_2对应的LLR。
当i=3时,在Iter1次迭代处理的第3时刻,也即在时刻d3,控制第一组处理器201中的各处理器,分别计算SW0_1的前向状态度量以及SW0_1对应的LLR;控制第二组处理器202中的各处理器,分别计算SW2_2的后向状态度量以及SW2_2对应的LLR。
可以理解的是,当k为其他正整数时,第2k+1次迭代处理均与k=0时的迭代处理相同。需要说明的是,在图2中只示出了滑窗数M=3的场景。在实际应用中,滑窗数M还可以为其他大于或等于2的整数值。
在本发明实施例中,在每一次迭代处理中,针对每一个时刻,每一个处理器中的每一个滑窗均按照本发明上述实施例中提供的方法进行计算。
在实际应用中,在一次迭代处理中的某一个时刻,其中的一个滑窗在计算前向状态度量或者后向状态度量时,需要在所述时刻的起始位置设置预设的初始值,以此来计算所述滑窗在所述时刻内的前向状态度量或者后向状态度量。例如,在Iter1次迭代的时刻d1,在第一组处理器中,在计算SW1_1的后向状态度量时,需要在时刻d1的起始位置设置SW1_1的初始值,根据设置的初始值来计算SW1_1的后向状态度量。
对应于第一组处理器以及第二组处理器,在整个译码处理的过程中,需要分别多次设置各个滑窗的初始值,导致Turbo码译码器的译码性能较差。
在具体实施中,为提高译码性能,可以将当前滑窗的前向状态度量前向传递,将当前滑窗的前向状态度量的结束状态值设置成被传递的滑窗的前向状态度量的初始状态值;或者,将当前滑窗的后向状态度量后向传递,将当前滑窗的后向状态度量的结束状态值设置成被传递的滑窗的后向状态度量的初始状态值,这样就无需为被传递的滑窗预先设置初始值,因此可以提高译码性能。
在本发明实施例中,可以在同一处理器对应的相同次迭代处理中进行传递,将当前滑窗的前向状态度量传递至后一滑窗,或者将当前滑窗的后向状态度量后向传递至前一滑窗。也可以在同一处理器对应的相邻次迭代处理中进行传递,将上一次迭代处理时滑窗的前向状态度量前向传递至当前次迭代处理时的滑窗,或者将上一次迭代处理时滑窗的后向状态度量后向传递至当前次迭代处理时的滑窗。还可以在相邻处理器之间进行传递,将前一处理器中的滑窗的相同次迭代处理的前向状态度量前向传递至当前处理器的滑窗,或者将后一处理器中的滑窗的相同次迭代处理的后向状态度量后向传递至当前处理器的滑窗。需要说明的是,任意相邻的处理器属于不同组,即当前处理器属于第一组处理器时,相邻的处理器均为第二组处理器,反之亦然。
在同一处理器的相同次迭代中,针对第一组处理器,在第2k次迭代处理中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值。
相应地,针对第二组处理器,在第2k次迭代处理中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;在第2k+1次迭代处理中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值,其中,0<j<M。
下面结合图2,对同一处理器中,相同次迭代处理的前向状态度量以及后向状态度量的传递进行举例说明。
当k=0时,第2k次迭代处理为Iter0次迭代处理。
对应于第一组处理器201中的各处理器,在Iter0次迭代处理中,将SW0_1的前向状态度量的结束状态值设置成SW1_1的前向状态度量的初始状态值,将SW1_1的前向状态度量的结束状态值设置成SW2_1的前向状态度量的初始状态值,也即:SW1_1的前向状态度量的初始状态值是由SW0_1的前向状态度量的结束状态值传递过来的,SW2_1的前向状态度量的初始状态值是由SW1_1的前向状态度量的结束状态值传递过来的。
对应于第二组处理器202中的各处理器,在Iter0次迭代处理中,将SW2_2的后向状态度量的结束状态值设置成SW1_2的后向状态度量的初始状态值,将SW1_2的后向状态度量的结束状态值设置成SW0_2的后向状态度量的初始状态值,也即:SW1_2的后向状态度量的初始状态值是由SW2_2的后向状态度量的结束状态值传递过来的,SW0_2的后向状态度量的初始状态值是由SW1_2的后向状态度量的结束状态值传递过来的。
当k=0时,第2k+1次迭代处理为Iter1次迭代处理。
对应于第一组处理器201中的各处理器,在Iter1次迭代处理中,将SW2_1的后向状态度量的结束状态值设置成SW1_1的后向状态度量的初始状态值,将SW1_2的后向状态度量的结束状态值设置成SW0_1的后向状态度量的初始状态值。
对应于第二组处理器202中的各处理器,在Iter1次迭代处理中,将SW0_2的前向状态度量的结束状态值设置成SW1_2的前向状态度量的初始状态值,将SW1_2的前向状态度量的结束状态值设置成SW2_2的前向状态度量的初始状态值。
可以理解的是,当k为其他整数值时,第一组处理器中的各处理器以及第二组处理器中的各处理器所执行的操作均可以参照k=0时的操作,此处不做赘述。
在同一处理器的相邻次迭代处理中,对应于第一组处理器,在第2k次迭代处理时,控制第一组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;在第2k+1次迭代处理时,控制第一组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值。
对应于第二组处理器,在第2k次迭代处理时,控制第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理时,控制第二组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值。
下面结合图2,对同一处理器的相邻次迭代处理中的前向状态度量以及后向状态度量的传递进行举例说明。
当k=1时,第2k次迭代处理为Iter2次迭代处理,第2k-1次迭代处理为Iter1次迭代处理。
控制第一组处理器201中的各处理器,在Iter2次迭代处理中,获取Iter1次迭代处理时的SW2_2的后向状态度量的结束状态值,并将其设置成Iter2次迭代处理时的SW1_1的后向状态度量的初始状态值(参见图2中曲线L4);获取Iter1次迭代处理时的SW1_1的后向状态度量的结束状态值,并将其设置成Iter2次迭代处理时的SW0_1的后向状态度量的初始状态值(参见图2中曲线L3),也即:Iter2次迭代处理时的SW1_1的后向状态度量的初始状态值,是由Iter1次迭代处理时的SW2_1的后向状态度量的结束状态值传递过来的;Iter2次迭代处理时SW0_1的后向状态度量的初始状态值,是由Iter1次迭代处理时的SW1_1的后向状态度量的初始状态值传递过来的。
控制第二组处理器202中的各处理器,在Iter2次迭代处理中,获取Iter1次迭代处理时的SW0_2的前向状态度量的结束状态值,并将其设置成Iter2次迭代处理时的SW1_2的前向状态度量的初始状态值,如图2中曲线L9所示,也即将Iter1次迭代处理器时SW0_2的前向状态度量的结束状态值传递至Iter2次迭代的SW1_2;获取Iter1次迭代处理时的SW1_2的前向状态度量的结束状态值,并将其设置成Iter2次迭代处理时的SW2_2的前向状态度量的初始状态值,如图2中曲线L10所述,也即将Iter1次迭代处理时SW1_2的前向状态度量的结束状态值传递至Iter2次迭代处理时的SW2_2。
当k=0时,第2k+1次迭代处理为Iter1次迭代处理,第2k次迭代处理为Iter0次迭代处理。
控制第一组处理器201中的各处理器,在Iter1次迭代处理中,获取Iter0次迭代处理时的SW0_1的前向状态度量的结束状态值,并将其设置成Iter1次迭代处理时SW1_1的前向状态度量的初始状态值,如图2中曲线L1所示,也即将Iter0次迭代处理时SW0_1的前向状态度量的结束状态值传递至Iter1次迭代处理的SW1_1;获取Iter0次迭代处理时的SW1_1的前向状态度量的结束状态值,并将其设置成Iter1次迭代处理时SW2_1的前向状态度量的初始状态值,如图2中曲线L2所述,也即将Iter0次迭代处理时SW1_1的前向状态度量的结束状态值传递至Iter1次迭代处理的SW2_1。
控制第二组处理器202中的各处理器,在Iter1次迭代处理中,获取Iter0次迭代处理时的SW2_2的后向状态度量的结束状态值,并将其设置成Iter1次迭代处理时SW1_2的后向状态度量的初始状态值,如图2中曲线L8所示,也即将Iter0次迭代处理时的SW2_2的后向状态度量的结束状态值传递至Iter1次迭代处理的SW1_2;获取Iter0次迭代处理时的SW1_2的后向状态度量的结束状态值,并将其设置成Iter1次迭代处理时SW0_2的后向状态度量的初始状态值,如图2中曲线L7所示,也即将Iter0次迭代处理时的SW1_2的后向状态度量的结束状态值传递至Iter1次迭代处理的SW0_2。
可以理解的是,当k为其他整数值时,第一组处理器中的各处理器以及第二组处理器中的各处理器所执行的操作均可以参照k=0以及k=1时的操作,此处不做赘述。
在本发明实施例中,前向状态度量或后向状态度量也可以在相邻的处理器中进行传递。
控制第一组处理器中的任一处理器,在第2k次迭代处理中,获取各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成相邻的下一个第二组处理器对应的第一个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理中,获取各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个第二组处理器对应的最后一个滑窗的后向状态度量的初始状态值。
控制第二组处理器中的任一处理器,在第2k次迭代处理时,获取各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个第一组处理器对应的最后一个滑窗的后向状态度量的初始状态值;在第2k+1次迭代时,获取各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成相邻的后一个第一组处理器对应的第一个滑窗的前向状态度量的初始状态值。
需要说明的是,第一组处理器与第二组处理器间隔分布,也即与第一组处理器相邻的两个处理器均属于第二组处理器,相应地,与第二组处理器相邻的两个处理器均属于第一组处理器。
下面结合图2,对相邻处理器间的前向状态度量以及后向状态度量的传递进行举例说明。
当k=0时,第2k次迭代处理为Iter0次迭代处理,第2k+1次迭代处理为Iter1次迭代处理;第一组处理器中的第一个滑窗为SW0_1,最后一个滑窗为SW2_1;第二组处理器中的第一个滑窗为SW0_2,最后一个滑窗为SW2_2。
控制第一组处理器中的任一处理器,在Iter0次迭代处理时,获取SW2_1的前向状态度量的结束状态值,并将其设置成相邻的下一个第二组处理器中的SW0_2的前向状态度量的初始状态值,如图2中曲线L5所示,也即将第一组处理器中的Iter0次迭代处理时SW2_1的前向状态度量的结束状态值,传递至第二组处理器中的Iter0次迭代处理的SW0_2;在Iter1次迭代处理时,获取SW0_1的后向状态度量的结束状态值,并将其设置成相邻的前一个第二组处理器中的SW2_2的后向状态度量的初始状态值。
控制第二组处理器中的任一处理器,在Iter0次迭代处理时,获取SW0_2的后向状态度量的结束状态值,并将其设置成相邻的前一个第一组处理器中的SW2_1的后向状态度量的初始状态值,如图2中曲线L6所示,也即将第二组处理器中的Iter0次迭代处理时SW0_2的后向状态度量的结束状态值,传递至第一组处理器中的Iter0次迭代处理时的SW2_1;在Iter1次迭代处理时,获取SW2_2的前向状态度量的结束状态值,并将其设置成相邻的后一个第一组处理器中的SW0_1的前向状态度量的初始状态值。由此,可以实现前向状态度量的传递以及后向状态度量的传递。
在具体实施中,在控制N个处理器并行对所述待译码数据进行译码处理时,还可以分别计算迭代处理过程中的前向状态度量的训练以及后向状态度量的训练,可以有效提高Turbo码译码器的性能。
下面对增加了前向状态度量的训练以及后向状态度量的训练之后的译码处理过程进行说明。
在本发明实施例中,在第2k次迭代处理过程中,在第i时刻,可以控制第一组处理器中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量、第i-1个滑窗的LLR以及第i个滑窗对应的后向状态度量训练;可以控制第二组处理器中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量、第M-i个滑窗的LLR以及顺序标识为第M-i-1个滑窗对应的前向状态度量训练。
在第2k+1次迭代处理过程中,在第i时刻,可以控制第一组处理器中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量、第M-i个滑窗的LLR以及顺序标识为第M-i-1个滑窗对应的前向状态度量训练;可以控制第二组处理器中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量、第i-1个滑窗的LLR以及顺序标识为第i个滑窗对应的后向状态度量训练。
需要说明的是,顺序标识为第i个滑窗对应的后向状态度量训练是由第i+1个滑窗计算得到的。相应地,顺序标识为第M-i-1个滑窗对应的前向状态度量训练是由第M-i-2个滑窗计算得到的。第一组处理器与第二组处理器的分类可以参照本发明上述实施例中提供的分类方式,此处不做赘述。
下面结合图3,对具体的译码处理过程进行详细说明。参照图3,给出了本发明实施例中的一种处理器并行计算的时序图。与图2相类似,在图3中,两组处理器依次为第一组处理器301以及第二组处理器302,第一组处理器301与第二组处理器302中均包括3个滑窗。
第一组处理器301中包括M=3个滑窗,三个滑窗的顺序标识为0~2,依次为:SW0_1、SW1_1以及SW2_1,其中,SW0_1、SW1_1的长度相同,SW2_1为残窗。第二组处理器302中的三个滑窗的顺序标识为0~2,依次为:SW0_2、SW1_2以及SW2_2,其中,SW1_2、SW2_2的长度相同,SW0_2为残窗。相应地,每一次迭代处理包括4个时刻,Iter0为第0次迭代处理,Iter0包括c0、c1、c2、c3四个时刻,Iter1为第1次迭代处理,Iter1包括d0、d1、d2、d3四个时刻。
当k=0时,第2k次迭代处理为Iter0次迭代处理。
当i=0时,在第一组处理器301中,SW0_1为顺序标识为第i个的滑窗,顺序标识为第-1个的滑窗不存在。在Iter0次迭代处理的第0个时刻,也即在时刻c0,控制第一组处理器301中的各处理器,分别计算SW0_1的前向状态度量以及SW0_1对应的后向状态度量训练。在第二组处理器302中,顺序标识为第3个的滑窗不存在,SW2_2为顺序标识第M-i-1个滑窗,因此,在时刻c0,控制第二组处理器302中的各处理器,分别计算SW2_2的后向状态度量以及SW2_2对应的前向状态度量训练。
相应地,当i=1时,在第一组处理器301中,SW1_1为顺序标识为第i个的滑窗。在Iter0次迭代处理的第1时刻,也即在时刻c1,控制第一组处理器301中的各处理器,分别计算SW1_1的前向状态度量、SW0_1的后向状态度量、SW0_1对应的LLR以及SW1_1对应的后向状态度量训练;控制第二组处理器302中的各处理器,分别计算SW2_2的前向状态度量、SW1_2的后向状态度量、SW2_2对应的LLR以及SW1_2对应的前向状态度量训练。
当i=2时,控制第一组处理器301中的各处理器,分别计算SW2_1的前向状态度量、SW1_1的后向状态度量、SW1_1对应的LLR;控制第二组处理器302中的各处理器,分别计算SW0_2的后向状态度量、SW1_2的前向状态度量以及SW1_2对应的LLR。
当i=3时,控制第一组处理器301中的各处理器,分别计算SW2_1的后向状态度量以及SW2_1对应的LLR;控制第二组处理器302中的各处理器,分别计算SW0_2的前向状态度量以及SW0_2对应的LLR。
可以理解的是,当k为其他正整数时,第2k次迭代处理均与k=0时的迭代处理相同。
当k=0时,第2k+1次迭代处理为Iter1次迭代处理。
当i=0时,在Iter1次迭代处理的第0时刻,也即在时刻d0,控制第一组处理器301中的各处理器,分别计算SW2_1的后向状态度量以及SW2_1对应的前向状态度量训练;控制第二组处理器302中的各处理器,分别计算SW0_2的前向状态度量以及SW0_2的后向状态度量训练。
当i=1时,在Iter1次迭代处理的第1时刻,也即在时刻d1,控制第一组处理器301中的各处理器,分别计算SW2_1的前向状态度量、SW1_1的后向状态度量、SW2_1对应的LLR以及SW1_1对应的前向状态度量训练;控制第二组处理器302中的各处理器,分别计算SW1_2的前向状态度量、SW0_2的后向状态度量、SW0_2对应的LLR以及SW1_2的后向状态度量训练。
当i=2时,在Iter1次迭代处理的第2时刻,也即在时刻d2,控制第一组处理器301中的各处理器,分别计算SW1_1的前向状态度量、SW0_1的后向状态度量以及SW1_1对应的LLR;控制第二组处理器302中的各处理器,分别计算SW1_2的后向状态度量、SW2_2的前向状态度量以及SW1_2对应的LLR。
当i=3时,在Iter1次迭代处理的第3时刻,也即在时刻d3,控制第一组处理器301中的各处理器,分别计算SW0_1的前向状态度量以及SW0_1对应的LLR;控制第二组处理器302中的各处理器,分别计算SW2_2的后向状态度量以及SW2_2对应的LLR。
可以理解的是,当k为其他正整数时,第2k+1次迭代处理均与k=0时的迭代处理相同。需要说明的是,在图3中只示出了滑窗数M=3的场景。在实际应用中,滑窗数M还可以为其他大于或等于2的整数值。
在本发明实施例中,在每一次迭代处理中,针对每一个时刻,每一个处理器中的每一个滑窗均按照本发明上述实施例中提供的方法进行计算。
在实际应用中,在一次迭代处理中的某一个时刻,其中的一个滑窗在计算前向状态度量或者后向状态度量时,需要在所述时刻的起始位置设置预设的初始值,以此来计算所述滑窗在所述时刻内的前向状态度量或者后向状态度量。此外,在每一次计算前向状态度量训练或者后向状态度量训练时,也需要为训练设置预设的初始值。
例如,在Iter1次迭代的时刻d1,在第一组处理器中,在计算SW1_1的后向状态度量时,需要在时刻d1的起始位置设置SW1_1的初始值,根据设置的初始值来计算SW1_1的后向状态度量。在第一组处理器中,在计算SW1_1对应的前向状态度量训练时,需要在时刻d0的起始位置设置训练的初始值。
对应于第一组处理器以及第二组处理器,在整个译码处理的过程中,需要分别多次设置各个滑窗的初始值以及训练的初始值,导致Turbo码译码器的译码性能较差。
在具体实施中,为提高译码性能,可以将当前滑窗的前向状态度量前向传递,将当前滑窗的前向状态度量的结束状态值设置成被传递的滑窗的前向状态度量的初始状态值;或者将当前滑窗的后向状态度量后向传递,将当前滑窗的后向状态度量的结束状态值设置成被传递的滑窗的后向状态度量的初始状态值,这样就无需为被传递的滑窗预先设置初始值,因此可以提高译码性能。此外,可以将当前滑窗的前向状态度量前向传递,设置成所述当前处理器的滑窗的前向状态度量训练初始状态值;或者将当前滑窗的后向状态度量后向传递,设置成所述当前处理器的滑窗的后向状态度量训练初始状态值。
在本发明实施例中,在同一处理器的相同次迭代中,针对第一组处理器,在第2k次迭代处理中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值。
相应地,针对第二组处理器,在第2k次迭代处理中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;在第2k+1次迭代处理中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值,其中,0<j<M。
下面结合图3,对同一处理器中,相同次迭代处理的前向状态度量以及后向状态度量的传递进行举例说明。
当k=0时,第2k次迭代处理为Iter0次迭代处理。
对应于第一组处理器301中的各处理器,在Iter0次迭代处理中,将SW0_1的前向状态度量的结束状态值设置成SW1_1的前向状态度量的初始状态值,将SW1_1的前向状态度量的结束状态值设置成SW2_1的前向状态度量的初始状态值,也即:SW1_1的前向状态度量的初始状态值是由SW0_1的前向状态度量的结束状态值传递过来的,SW2_1的前向状态度量的初始状态值是由SW1_1的前向状态度量的结束状态值传递过来的。
此外,在Iter0次迭代处理中,在c0时刻由SW1_1计算得到SW0_1的后向状态度量训练。在c1时刻的起始位置,在计算SW0_1的后向状态度量时,将c0时刻计算得到的SW0_1的后向状态度量训练的结束状态值设置成SW0_1的后向状态度量的初始状态值,根据SW0_1的后向状态度量训练的结束状态值计算SW0_1的后向状态度量。
在Iter0次迭代处理中,在c1时刻由SW2_1计算得到SW1_1的后向状态度量训练。在c2时刻的起始位置,在计算SW1_1的后向状态度量时,将c1时刻计算得到的SW1_1的后向状态度量训练的结束状态值设置成SW1_1的后向状态度量的初始状态值,根据SW1_1的后向状态度量训练的结束状态值计算SW1_1的后向状态度量。
对应于第二组处理器302中的各处理器,在Iter0次迭代处理中,将SW2_2的后向状态度量的结束状态值设置成SW1_2的后向状态度量的初始状态值,将SW1_2的后向状态度量的结束状态值设置成SW0_2的后向状态度量的初始状态值,也即:SW1_2的后向状态度量的初始状态值是由SW2_2的后向状态度量的结束状态值传递过来的,SW0_2的后向状态度量的初始状态值是由SW1_2的后向状态度量的结束状态值传递过来的。
此外,在Iter0次迭代处理中,在c0时刻由SW1_2计算得到SW2_2的前向状态度量训练。在c1时刻的起始位置,在计算SW2_2的前向状态度量时,将c0时刻计算得到的SW2_2的前向状态度量训练的结束状态值设置成SW2_2的前向状态度量的初始状态值,根据SW2_2的前向状态度量训练的结束状态值计算SW2_2的前向状态度量。
在Iter0次迭代处理中,在c1时刻由SW0_2计算得到SW1_2的前向状态度量训练。在c2时刻的起始位置,在计算SW1_2的前向状态度量时,将c1时刻计算得到的SW1_2的前向状态度量训练的结束状态值设置成SW1_2的前向状态度量的初始状态值,根据SW1_2的前向状态度量训练的结束状态值计算SW1_2的前向状态度量。
当k=0时,第2k+1次迭代处理为Iter1次迭代处理。
对应于第一组处理器301中的各处理器,在Iter1次迭代处理中,将SW2_1的后向状态度量的结束状态值设置成SW1_1的后向状态度量的初始状态值,将SW1_2的后向状态度量的结束状态值设置成SW0_1的后向状态度量的初始状态值。
在Iter1次迭代处理中,在d0时刻由SW1_1计算得到SW2_1的前向状态度量训练。在d1时刻的起始位置,在计算SW2_1的前向状态度量时,将d0时刻计算得到的SW2_1的前向状态度量训练的结束状态值设置成SW2_1的前向状态度量的初始状态值,根据SW2_1的前向状态度量训练的结束状态值计算SW2_1的前向状态度量。
在Iter1次迭代处理中,在d1时刻由SW0_1计算得到SW1_1的前向状态度量训练。在d2时刻的起始位置,在计算SW1_1的前向状态度量时,将d1时刻计算得到的SW1_1的前向状态度量训练的结束状态值设置成SW1_1的前向状态度量的初始状态值,根据SW1_1的前向状态度量训练的结束状态值计算SW1_1的前向状态度量。
对应于第二组处理器302中的各处理器,在Iter1次迭代处理中,将SW0_2的前向状态度量的结束状态值设置成SW1_2的前向状态度量的初始状态值,将SW1_2的前向状态度量的结束状态值设置成SW2_2的前向状态度量的初始状态值。
在Iter0次迭代处理中,在d0时刻由SW1_2计算得到SW0_2的后向状态度量训练。在d1时刻的起始位置,在计算SW0_2的后向状态度量时,将d0时刻计算得到的SW0_2的后向状态度量训练的结束状态值设置成SW0_2的后向状态度量的初始状态值,根据SW0_2的后向状态度量训练的结束状态值计算SW0_2的后向状态度量。
在Iter0次迭代处理中,在d1时刻由SW2_2计算得到SW1_2的后向状态度量训练。在d2时刻的起始位置,在计算SW1_2的后向状态度量时,将d1时刻计算得到的SW1_2的后向状态度量训练的结束状态值设置成SW1_2的后向状态度量的初始状态值,根据SW1_2的后向状态度量训练的结束状态值计算SW1_2的后向状态度量。
可以理解的是,当k为其他整数值时,第一组处理器301中的各处理器以及第二组处理器302中的各处理器所执行的操作均可以参照k=0时的操作,此处不做赘述。
在同一处理器的相邻次迭代中,也可以将上一次迭代处理计算得到的前向状态度量的结束状态值传递至当前次迭代处理,设置成当前次迭代处理的前向状态度量训练的初始状态值;或者将上一次迭代处理计算得到的后向状态度量的结束状态值传递至当前次迭代处理,设置成当前次迭代处理的后向状态度量的初始状态值。
在本发明实施例中,在第2k次迭代处理时,控制第一组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值。同时,控制第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值。
在第2k+1次迭代处理时,控制第一组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j+2个滑窗的前向状态度量的初始状态值。同时,控制第二组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值。
下面结合图3对相邻次迭代的状态传递进行举例说明。
当k=1时,第2k次迭代处理为Iter2次迭代处理,第2k-1次迭代处理为Iter1次迭代处理。
控制第一组处理器301中的各处理器,在Iter2次迭代处理中,获取Iter1次迭代处理时的SW2_1对应比特位置的后向状态度量的结束状态值,并将其设置成Iter2次迭代处理时的SW0_1的后向状态度量训练的初始状态值。之后,根据SW0_1的后向状态度量训练的初始状态值,计算Iter2次迭代处理时SW0_2的后向状态度量。
控制第二组处理器302中的各处理器,在Iter2次迭代处理中,获取Iter1次迭代处理时的SW0_2的前向状态度量的结束状态值,并将其设置成Iter2次迭代处理时的SW2_2的前向状态度量训练的初始状态值。之后,根据SW2_2的前向状态度量训练的初始状态值,计算Iter2次迭代处理时SW0_2的前向状态度量。
当k=0时,第2k+1次迭代处理为Iter1次迭代处理,第2k次迭代处理为Iter0次迭代处理。
控制第一组处理器301中的各处理器,在Iter1次迭代处理中,获取Iter0次迭代处理时的SW0_1的前向状态度量的结束状态值,并将其设置成Iter1次迭代处理时SW2_1的前向状态度量训练的初始状态值。
控制第二组处理器302中的各处理器,在Iter1次迭代处理中,获取Iter0次迭代处理时的SW2_2的后向状态度量的结束状态值,并将其设置成Iter1次迭代处理时SW0_2的后向状态度量训练的初始状态值。
可以理解的是,当k为其他整数值时,第一组处理器301中的各处理器以及第二组处理器302中的各处理器所执行的操作均可以参照k=0以及k=1时的操作,此处不做赘述。
在本发明实施例中,在相邻处理器之间,也可以将当前处理器的滑窗的前向状态度量前向传递至下一处理器,或者将当前处理器的滑窗的后向状态度量后向传递至前一处理器。
在第2k次迭代处理中,控制第一组处理器中的各处理器,获取对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+2次迭代处理中第二个滑窗的前向状态度量训练的初始状态值。
控制第二组处理器中的各处理器,获取对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第M-2个滑窗的后向状态度量训练的初始状态值。
在第2k+1次迭代处理中,控制第一组处理器中的各处理器,获取第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+2次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+3次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值。
控制第二组处理器中的各处理器,获取第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+2次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+3次迭代处理中第二个滑窗的前向状态度量训练的初始状态值。
需要说明的是,任意相邻的处理器属于不同组,即当前处理器属于第一组处理器时,相邻的处理器均为第二组处理器,反之亦然。
下面结合图3进行举例说明。
当k=0时,第2k次迭代处理为Iter0次迭代处理,第2k+1次迭代处理为Iter1次迭代处理;第一组处理器中的第一个滑窗为SW0_1,最后一个滑窗为SW2_1;第二组处理器中的第一个滑窗为SW0_2,最后一个滑窗为SW2_2。
控制第一组处理器301中的任一处理器,在Iter0次迭代处理时,获取SW2_1的前向状态度量的结束状态值,并将其设置成:相邻的下一个第二组处理器302中的Iter0次迭代处理中的SW0_2的前向状态度量的初始状态值、Iter1次迭代处理中的SW0_2的前向状态度量的初始状态值以及Iter2次迭代处理中的SW1_2的前向状态度量训练的初始状态值。
在Iter1次迭代处理时,获取SW0_1的后向状态度量的结束状态值,并将其设置成:相邻的前一个第二组处理器302中的Iter1次迭代处理时SW2_2的后向状态度量的初始状态值、Iter2次迭代处理时SW2_2的后向状态度量的初始状态值以及Iter3次迭代处理时SW1_2的后向状态度量训练的初始状态值。
控制第二组处理器302中的任一处理器,在Iter0次迭代处理时,获取SW0_2的后向状态度量的结束状态值,并将其设置成:相邻的前一个第一组处理器301中的Iter0次迭代处理时SW2_1的后向状态度量的初始状态值、Iter1次迭代处理时SW2_1的后向状态度量的初始状态值以及Iter2次迭代处理时SW1_1的后向状态度量训练的初始状态值。
在Iter1次迭代处理时,获取SW2_2的前向状态度量的结束状态值,并将其设置成:相邻的下一个第一组处理器301中的Iter1次迭代处理中的SW0_1的前向状态度量的初始状态值、Iter2次迭代处理中的SW0_1的前向状态度量的初始状态值以及Iter3次迭代处理中SW1_1的前向状态度量训练的初始状态值。
在具体实施中,在对待译码数据进行译码时,可以控制N个处理器并行地采用radix-8译码方法对待译码数据进行译码,也可以控制N个处理器并行地采用radix-4译码方法对待译码数据进行译码。可以理解的是,还可以采用其他的译码方法对待译码数据进行译码,此处不做赘述。
在本发明一实施例中,控制N个处理器并行地采用radix-8译码方法对待译码数据进行译码。在实际应用中可知,在采用radix-8译码方法执行译码操作时,radix-8译码方法每次同时对3个bit进行解码。从本发明上述实施例中可知,N个处理器中的每一个处理中均包括M个滑窗,其中的一个滑窗为残窗,且残窗的长度可能无法被3整除,此时,无法采用radix-8译码方法对残窗进行译码操作。
为解决无法采用radix-8译码方法对残窗进行译码操作的问题,在本发明实施例中,可以先获取残窗的长度对3求余的结果。
当残窗的长度对3求余的结果为0时,表明残窗的长度可以被3整除,此时,可以直接采用radix-8译码方法对残窗进行译码操作。
当残窗的长度对3求余的结果为1时,在计算残窗的前向状态度量时,将前(L-1)bit采用radix-8译码方法进行计算,最后1bit采用radix-2译码方法进行计算;在计算残窗的后向状态度量时,将后(L-1)bit采用radix-8译码方法进行计算,前1比特采用radix-2译码方法进行计算。
当残窗的长度对3求余的结果为2时,在计算残窗的前向状态度量时,将前(L-2)bit采用radix-8译码方法进行计算,最后2bit采用radix-4译码方法进行计算;在计算残窗的后向状态度量时,将后(L-2)bit采用radix-8译码方法进行计算,前2比特采用radix-2译码方法进行计算。
例如,残窗的长度L=64,则获知64对3取余得到的结果为1。在计算残窗的前向状态度量时,将前63比特采用radix-8译码方法进行计算,最后1比特采用radix-2译码方法进行计算。在计算残窗的后向状态度量时,将后63比特采用radix-8译码方法进行计算,第1个bit采用radix-2译码方法进行计算。
以现有的LTE协议中规定的最大译码块长度为6144,现有的译码方法通常为radix-2译码方法。在计算前向状态度量或者后向状态度量时,需要存储6144个bit,占用的内存空间为1×6144×8×9=442368bits。
采用本发明实施例中的译码方法,将6144个比特分配给16个并行的处理器,每一个处理器分配到的数据长度为6144÷16=384bit。每一个处理器中包括6个滑窗,其中5个滑窗的长度为72bit,剩余一个滑窗为残窗,残窗的长度为24比特。在计算前向状态度量或者后向状态度量时,只需要存储1×24×8×16×9=27648bits。
由此可见,本发明实施例中提供的译码方法能够减少译码过程中所占用的内存空间。
以主频为360MHz,16次迭代为例,本发明实施例中,在采用radix-8译码方法时,每一个时钟周期译码输出3×16=48bit,吞吐率为360×48/16=1080Mbps。而在现有技术中,每一个时钟周期译码输出16bit,吞吐率为360×16/16=360Mbps。由此可见,本发明实施例中提供的译码方法能够提高Turbo码译码器的吞吐率。
参照图4,给出了本发明实施例中的一种Turbo码译码器40,包括:接收单元401、分配单元402以及译码单元403,其中:
接收单元401,用于接收待译码数据;分配单元402,用于将所述待译码数据划分成N个数据块并分别分配至N个处理器,每个处理器包括M个滑窗;译码单元403,用于控制所述N个处理器并行对所述待译码数据进行译码处理,N≥2,M≥2。
在具体实施中,所述译码单元403,可以用于:在第2k次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量以及第i-1个滑窗的对数似然比;控制第二组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量以及第M-i个滑窗的对数似然比;在第2k+1次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量以及第M-i个滑窗的对数似然比;控制第二组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量以及第i-1个滑窗的对数似然比;其中,所述第一组中的处理器与所述第二组中的处理器的并集为所述N个处理器,且所述第一组中的处理器与所述第二组中的处理器没有交集;k为自然数,0≤i<M。
在具体实施中,所述译码单元403,还可以用于执行以下任一种操作:在同一处理器对应的相同次迭代处理中,将当前滑窗的前向状态度量前向传递至后一滑窗,或将当前滑窗的后向状态度量后向传递至前一滑窗;在同一处理器对应的相邻次迭代处理中,将上一次迭代处理时滑窗的前向状态度量前向传递至当前次迭代处理时的滑窗,或将上一次迭代处理时滑窗的后向状态度量后向传递至当前次迭代处理时的滑窗;在相邻处理器中,将前一处理器中的滑窗的相同次迭代处理的前向状态度量前向传递至当前处理器的滑窗,或将后一处理器中的滑窗的相同次迭代处理的后向状态度量后向传递至当前处理器的滑窗,任意相邻的处理器属于不同组。
在具体实施中,所述译码单元403,可以用于:在所述第一组处理器在第2k次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;在所述第二组处理器在第2k+1次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;其中,k为自然数,0<j<M。
在具体实施中,所述译码单元403,可以用于:在第2k次迭代处理时,控制所述第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;控制所述第一组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;在第2k+1次迭代处理时,控制所述第一组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;控制所述第二组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;其中,k为自然数,0<j<M。
在具体实施中,所述译码单元403,可以用于:在第2k次迭代处理中,获取所述第一组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成相邻的下一个所述第二组处理器对应的第一个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理中,获取所述第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量值,并将其设置成相邻的下一个所述第一组处理器对应的第一个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理中,获取所述第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个所述第二组处理器对应的最后一个滑窗的后向状态度量的初始状态值;在第2k次迭代处理中,获取所述第二组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个所述第一组处理器对应的最后一个滑窗的后向状态度量的初始状态值;其中,k为自然数,所述第一组处理器与所述第二组处理器间隔分布。
在具体实施中,所述译码单元403,还可以用于分别计算迭代处理中前向状态度量的训练以及后向状态度量的训练。
在具体实施中,所述译码单元403,可以用于:在第2k次迭代处理中的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量、第i-1个滑窗的对数似然比以及顺序标识为第i个滑窗对应的后向状态度量训练;控制第二组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量、第M-i个滑窗的对数似然比以及顺序标识为第M-i-1个滑窗对应的前向状态度量训练;在第2k+1次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量、第M-i个滑窗的对数似然比以及顺序标识为第M-i-1个滑窗对应的前向状态度量训练;控制第二组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量、第i-1个滑窗的对数似然比以及顺序标识为第i个滑窗对应的后向状态度量训练;其中,所述第一组中的处理器与所述第二组中的处理器的并集为所述N个处理器,且所述第一组中的处理器与所述第二组中的处理器没有交集;k为自然数,0≤i<M。
在具体实施中,所述译码单元403,可以用于在计算顺序标识为第i-1个滑窗的后向状态度量时,将所述顺序标识为第i个滑窗对应的后向状态度量训练的结束状态值设置成所述顺序标识为第i-1个滑窗的后向状态度量的初始状态值;以及在计算顺序标识为第M-i-1个滑窗的前向状态度量时,将所述顺序标识为第M-i-1个滑窗对应的前向状态度量的结束状态值设置成所述顺序标识为第M-i-1个滑窗的前向状态度量的初始状态值,并进行计算。
在具体实施中,所述译码单元403,还可以用于:在所述第一组处理器在第2k次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;在所述第二组处理器在第2k+1次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;其中,k为自然数,0<j<M。
在具体实施中,所述译码单元403,还可以用于:在第2k+1次迭代处理时,控制所述第一组处理器中的任一处理器,获取所述第2k次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值;控制所述第二组处理器中的任一处理器,获取所述第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值;在第2k次迭代处理时,控制所述第一组处理器中的任一处理器,获取所述第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值;控制所述第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值;其中,k为自然数,0≤j<M。
在具体实施中,所述译码单元403,还可以用于:在第2k次迭代处理中,获取所述第一组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+2次迭代处理中第二个滑窗的前向状态度量训练的初始状态值;在第2k次迭代处理中,获取所述第二组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+2次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值;在第2k+1次处理中,获取所述第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+2次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+3次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值;在第2k+1次迭代处理中,获取所述第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+2次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+3次迭代处理中第二个滑窗的前向状态度量训练的初始状态值;其中,任意相邻的处理器属于不同组。
在具体实施中,所述译码单元403,可以用于控制N个处理器并行采用radix-8译码方法或radix-4译码方法对所述待译码数据进行译码处理。
在具体实施中,所述M个滑窗中包括M-1个长度相同的滑窗以及1个残窗。
在具体实施中,所述译码单元403,可以用于:控制所述N个处理器采用radix-8译码方法对所述待译码数据进行译码处理;当所述残窗的长度对3求余结果为0时,采用radix-8译码方法对所述残窗进行计算;当所述残窗的长度对3求余结果为1时,在计算所述残窗的前向状态度量时,将前(L-1)bit采用radix-8译码方法进行计算,最后1bit采用radix-2译码方法进行计算;在计算所述残窗的后向状态度量时,将后(L-1)bit采用radix-8译码方法进行计算,前1bit采用radix-2译码方法进行计算;当所述残窗的长度对3求余结果为2时,在计算所述残窗的前向状态度量时,将前(L-2)bit采用radix-8译码方法进行计算,最后2bit采用radix-4译码方法进行计算;在计算所述残窗的后向状态度量时,将后(L-2)bit采用radix-8译码方法进行计算,前2bit采用radix-4译码方法进行计算;其中,L为所述残窗的长度。
在具体实施中,N的取值可以为2、4、6、8、16等任意值。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (30)
1.一种Turbo码译码方法,其特征在于,包括:
接收待译码数据;
将所述待译码数据划分成N个数据块并分别分配至N个处理器,每个处理器包括M个滑窗;
控制所述N个处理器并行对所述待译码数据进行译码处理,N≥2,M≥2;
所述控制N个处理器并行对所述待译码数据进行译码处理包括:在第2k次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量以及第i-1个滑窗的对数似然比;控制第二组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量以及第M-i个滑窗的对数似然比;在第2k+1次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量以及第M-i个滑窗的对数似然比;控制第二组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量以及第i-1个滑窗的对数似然比;其中,所述第一组中的处理器与所述第二组中的处理器的并集为所述N个处理器,且所述第一组中的处理器与所述第二组中的处理器没有交集;k为自然数,0≤i<M。
2.如权利要求1所述的Turbo码译码方法,其特征在于,还包括以下至少一种:
在同一处理器对应的相同次迭代处理中,将当前滑窗的前向状态度量前向传递至后一滑窗,或将当前滑窗的后向状态度量后向传递至前一滑窗;
在同一处理器对应的相邻次迭代处理中,将上一次迭代处理时滑窗的前向状态度量前向传递至当前次迭代处理时的滑窗,或将上一次迭代处理时滑窗的后向状态度量后向传递至当前次迭代处理时的滑窗;
在相邻处理器中,将前一处理器中的滑窗的相同次迭代处理的前向状态度量前向传递至当前处理器的滑窗,或将后一处理器中的滑窗的相同次迭代处理的后向状态度量后向传递至当前处理器的滑窗,任意相邻的处理器属于不同组。
3.如权利要求2所述的Turbo码译码方法,其特征在于,所述将当前滑窗的前向状态度量前向传递至后一滑窗,包括:
所述第一组处理器在第2k次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;
在第2k+1次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
所述将当前滑窗的后向状态度量后向传递至前一滑窗,包括:
所述第二组处理器在第2k+1次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;
在第2k次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
其中,k为自然数,0<j<M。
4.如权利要求2所述的Turbo码译码方法,其特征在于,所述将上一次迭代处理时滑窗的前向状态度量前向传递至当前次迭代处理时的滑窗,包括:
在第2k次迭代处理时,控制所述第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;
在第2k+1次迭代处理时,控制所述第一组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;
所述将上一次迭代处理时滑窗的后向状态度量后向传递至当前次迭代处理时的滑窗,包括:
在第2k次迭代处理时,控制所述第一组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
在第2k+1次迭代处理时,控制所述第二组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
其中,k为自然数,0<j<M。
5.如权利要求2所述的Turbo码译码方法,其特征在于,所述将前一处理器中的滑窗的相同次迭代处理的前向状态度量前向传递至当前处理器的滑窗,包括:
在第2k次迭代处理中,获取所述第一组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成相邻的下一个所述第二组处理器对应的第一个滑窗的前向状态度量的初始状态值;
在第2k+1次迭代处理中,获取所述第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量值,并将其设置成相邻的下一个所述第一组处理器对应的第一个滑窗的前向状态度量的初始状态值;
所述将后一处理器中的滑窗的相同次迭代处理的后向状态度量后向传递至当前处理器的滑窗,包括:
在第2k+1次迭代处理中,获取所述第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个所述第二组处理器对应的最后一个滑窗的后向状态度量的初始状态值;
在第2k次迭代处理中,获取所述第二组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个所述第一组处理器对应的最后一个滑窗的后向状态度量的初始状态值;
其中,k为自然数,所述第一组处理器与所述第二组处理器间隔分布。
6.如权利要求1所述的Turbo码译码方法,其特征在于,所述控制所述N个处理器并行对所述待译码数据进行译码处理,还包括:分别计算迭代处理中前向状态度量的训练以及后向状态度量的训练。
7.如权利要求6所述的Turbo码译码方法,其特征在于,所述分别计算迭代处理中前向状态度量的训练以及后向状态度量的训练,包括:
在第2k次迭代处理中的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量、第i-1个滑窗的对数似然比以及顺序标识为第i个滑窗对应的后向状态度量训练;控制第二组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量、第M-i个滑窗的对数似然比以及顺序标识为第M-i-1个滑窗对应的前向状态度量训练;
在第2k+1次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量、第M-i个滑窗的对数似然比以及顺序标识为第M-i-1个滑窗对应的前向状态度量训练;控制第二组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量、第i-1个滑窗的对数似然比以及顺序标识为第i个滑窗对应的后向状态度量训练;
其中,所述第一组中的处理器与所述第二组中的处理器的并集为所述N个处理器,且所述第一组中的处理器与所述第二组中的处理器没有交集;k为自然数,0≤i<M。
8.如权利要求7所述的Turbo码译码方法,其特征在于,所述计算顺序标识为第i-1个滑窗的后向状态度量,包括:将所述顺序标识为第i个滑窗对应的后向状态度量训练的结束状态值设置成所述顺序标识为第i-1个滑窗的后向状态度量的初始状态值,并进行计算;
所述计算顺序标识为第M-i-1个滑窗的前向状态度量,包括:将所述顺序标识为第M-i-1个滑窗对应的前向状态度量的结束状态值设置成所述顺序标识为第M-i-1个滑窗的前向状态度量的初始状态值,并进行计算。
9.如权利要求8所述的Turbo码译码方法,其特征在于,还包括:
在所述第一组处理器的第2k次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
在所述第二组处理器的第2k+1次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
其中,k为自然数,0<j<M。
10.如权利要求8所述的Turbo码译码方法,其特征在于,还包括:
在第2k+1次迭代处理时,控制所述第一组处理器中的任一处理器,获取所述第2k次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值;
控制所述第二组处理器中的任一处理器,获取所述第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值;
在第2k次迭代处理时,控制所述第一组处理器中的任一处理器,获取所述第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值;
控制所述第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值;
其中,k为自然数,0≤j<M。
11.如权利要求8所述的Turbo码译码方法,其特征在于,还包括:
在第2k次迭代处理中,获取所述第一组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+2次迭代处理中第二个滑窗的前向状态度量训练的初始状态值;
在第2k次迭代处理中,获取所述第二组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+2次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值;
在第2k+1次处理中,获取所述第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+2次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+3次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值;
在第2k+1次迭代处理中,获取所述第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+2次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+3次迭代处理中第二个滑窗的前向状态度量训练的初始状态值;
其中,任意相邻的处理器属于不同组。
12.如权利要求1所述的Turbo码译码方法,其特征在于,所述控制N个处理器并行对所述待译码数据进行译码处理包括:
控制N个处理器并行采用radix-8译码方法或radix-4译码方法对所述待译码数据进行译码处理。
13.如权利要求12所述的Turbo码译码方法,其特征在于,所述M个滑窗中包括M-1个长度相同的滑窗以及1个残窗。
14.如权利要求13所述的Turbo码译码方法,其特征在于,所述控制N个处理器并行采用radix-8译码方法或radix-4译码方法对所述待译码数据进行译码处理,包括:
控制所述N个处理器采用radix-8译码方法对所述待译码数据进行译码处理;当所述残窗的长度对3求余结果为0时,采用radix-8译码方法对所述残窗进行计算;
当所述残窗的长度对3求余结果为1时,在计算所述残窗的前向状态度量时,将前(L-1)bit采用radix-8译码方法进行计算,最后1bit采用radix-2译码方法进行计算;在计算所述残窗的后向状态度量时,将后(L-1)bit采用radix-8译码方法进行计算,前1bit采用radix-2译码方法进行计算;
当所述残窗的长度对3求余结果为2时,在计算所述残窗的前向状态度量时,将前(L-2)bit采用radix-8译码方法进行计算,最后2bit采用radix-4译码方法进行计算;在计算所述残窗的后向状态度量时,将后(L-2)bit采用radix-8译码方法进行计算,前2bit采用radix-4译码方法进行计算;
其中,L为所述残窗的长度。
15.如权利要求1所述的Turbo码译码方法,其特征在于,N的取值为以下任一个:2、4、6、8、16。
16.一种Turbo码译码器,其特征在于,包括:
接收单元,用于接收待译码数据;
分配单元,用于将所述待译码数据划分成N个数据块并分别分配至N个处理器,每个处理器包括M个滑窗;
译码单元,用于控制所述N个处理器并行对所述待译码数据进行译码处理,N≥2,M≥2;
所述译码单元,用于:在第2k次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量以及第i-1个滑窗的对数似然比;控制第二组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量以及第M-i个滑窗的对数似然比;在第2k+1次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量以及第M-i个滑窗的对数似然比;控制第二组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量以及第i-1个滑窗的对数似然比;其中,所述第一组中的处理器与所述第二组中的处理器的并集为所述N个处理器,且所述第一组中的处理器与所述第二组中的处理器没有交集;k为自然数,0≤i<M。
17.如权利要求16所述的Turbo码译码器,其特征在于,所述译码单元,还用于执行以下任一种操作:
在同一处理器对应的相同次迭代处理中,将当前滑窗的前向状态度量前向传递至后一滑窗,或将当前滑窗的后向状态度量后向传递至前一滑窗;
在同一处理器对应的相邻次迭代处理中,将上一次迭代处理时滑窗的前向状态度量前向传递至当前次迭代处理时的滑窗,或将上一次迭代处理时滑窗的后向状态度量后向传递至当前次迭代处理时的滑窗;
在相邻处理器中,将前一处理器中的滑窗的相同次迭代处理的前向状态度量前向传递至当前处理器的滑窗,或将后一处理器中的滑窗的相同次迭代处理的后向状态度量后向传递至当前处理器的滑窗,任意相邻的处理器属于不同组。
18.如权利要求17所述的Turbo码译码器,其特征在于,所述译码单元,用于:
在所述第一组处理器在第2k次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;
在第2k+1次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
在所述第二组处理器在第2k+1次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;
在第2k次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
其中,k为自然数,0<j<M。
19.如权利要求17所述的Turbo码译码器,其特征在于,所述译码单元,用于:
在第2k次迭代处理时,控制所述第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;控制所述第一组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
在第2k+1次迭代处理时,控制所述第一组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第j-1个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j个滑窗的前向状态度量的初始状态值;控制所述第二组处理器中的任一处理器,获取第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
其中,k为自然数,0<j<M。
20.如权利要求17所述的Turbo码译码器,其特征在于,所述译码单元,用于:
在第2k次迭代处理中,获取所述第一组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成相邻的下一个所述第二组处理器对应的第一个滑窗的前向状态度量的初始状态值;
在第2k+1次迭代处理中,获取所述第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量值,并将其设置成相邻的下一个所述第一组处理器对应的第一个滑窗的前向状态度量的初始状态值;
在第2k+1次迭代处理中,获取所述第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个所述第二组处理器对应的最后一个滑窗的后向状态度量的初始状态值;
在第2k次迭代处理中,获取所述第二组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成相邻的前一个所述第一组处理器对应的最后一个滑窗的后向状态度量的初始状态值;
其中,k为自然数,所述第一组处理器与所述第二组处理器间隔分布。
21.如权利要求16所述的Turbo码译码器,其特征在于,所述译码单元,还用于分别计算迭代处理中前向状态度量的训练以及后向状态度量的训练。
22.如权利要求21所述的Turbo码译码器,其特征在于,所述译码单元,用于:
在第2k次迭代处理中的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量、第i-1个滑窗的对数似然比以及顺序标识为第i个滑窗对应的后向状态度量训练;控制第二组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量、第M-i个滑窗的对数似然比以及顺序标识为第M-i-1个滑窗对应的前向状态度量训练;
在第2k+1次迭代处理的第i时刻,控制第一组中的各处理器,分别计算顺序标识为第M-i个滑窗的前向状态度量、顺序标识为第M-i-1个滑窗的后向状态度量、第M-i个滑窗的对数似然比以及顺序标识为第M-i-1个滑窗对应的前向状态度量训练;控制第二组中的各处理器,分别计算顺序标识为第i个滑窗的前向状态度量、顺序标识为第i-1个滑窗的后向状态度量、第i-1个滑窗的对数似然比以及顺序标识为第i个滑窗对应的后向状态度量训练;
其中,所述第一组中的处理器与所述第二组中的处理器的并集为所述N个处理器,且所述第一组中的处理器与所述第二组中的处理器没有交集;k为自然数,0≤i<M。
23.如权利要求22所述的Turbo码译码器,其特征在于,所述译码单元,用于在计算顺序标识为第i-1个滑窗的后向状态度量时,将所述顺序标识为第i个滑窗对应的后向状态度量训练的结束状态值设置成所述顺序标识为第i-1个滑窗的后向状态度量的初始状态值;以及在计算顺序标识为第M-i-1个滑窗的前向状态度量时,将所述顺序标识为第M-i-1个滑窗对应的前向状态度量的结束状态值设置成所述顺序标识为第M-i-1个滑窗的前向状态度量的初始状态值,并进行计算。
24.如权利要求23所述的Turbo码译码器,其特征在于,所述译码单元,还用于:
在所述第一组处理器在第2k次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k+1次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
在所述第二组处理器在第2k+1次迭代处理的M个滑窗中,将顺序标识为第j-1个滑窗的前向状态度量的结束状态值设置成顺序标识为第j个滑窗的前向状态度量的初始状态值;在第2k次迭代处理的M个滑窗中,将顺序标识为第M-j个滑窗的后向状态度量的结束状态值设置成顺序标识为第M-j-1个滑窗的后向状态度量的初始状态值;
其中,k为自然数,0<j<M。
25.如权利要求23所述的Turbo码译码器,其特征在于,所述译码单元,还用于:
在第2k+1次迭代处理时,控制所述第一组处理器中的任一处理器,获取所述第2k次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值;
控制所述第二组处理器中的任一处理器,获取所述第2k次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k+1次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值;
在第2k次迭代处理时,控制所述第一组处理器中的任一处理器,获取所述第2k-1次迭代处理时顺序标识为第M-j个滑窗对应比特位置的后向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第M-j-2个滑窗的后向状态度量训练的初始状态值;
控制所述第二组处理器中的任一处理器,获取第2k-1次迭代处理时顺序标识为第j个滑窗对应比特位置的前向状态度量的结束状态值,并将其设置成第2k次迭代处理时顺序标识为第j+2个滑窗的前向状态度量训练的初始状态值;
其中,k为自然数,0≤j<M。
26.如权利要求23所述的Turbo码译码器,其特征在于,所述译码单元,还用于:
在第2k次迭代处理中,获取所述第一组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+2次迭代处理中第二个滑窗的前向状态度量训练的初始状态值;
在第2k次迭代处理中,获取所述第二组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+2次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值;
在第2k+1次处理中,获取所述第一组处理器中的各处理器对应的第一个滑窗的后向状态度量的结束状态值,并将其设置成:相邻的前一个处理器对应的第2k+1次迭代处理中最后一个滑窗的后向状态度量的初始状态值、第2k+2次迭代处理中最后一个滑窗的后向状态度量的初始状态值以及第2k+3次迭代处理中顺序标识为第M-2个滑窗的后向状态度量训练的初始状态值;
在第2k+1次迭代处理中,获取所述第二组处理器中的各处理器对应的最后一个滑窗的前向状态度量的结束状态值,并将其设置成:相邻的下一个处理器对应的第2k+1次迭代处理中第一个滑窗的前向状态度量的初始状态值、第2k+2次迭代处理中第一个滑窗的前向状态度量的初始状态值以及第2k+3次迭代处理中第二个滑窗的前向状态度量训练的初始状态值;
其中,任意相邻的处理器属于不同组。
27.如权利要求16所述的Turbo码译码器,其特征在于,所述译码单元,用于控制N个处理器并行采用radix-8译码方法或radix-4译码方法对所述待译码数据进行译码处理。
28.如权利要求27所述的Turbo码译码器,其特征在于,所述M个滑窗中包括M-1个长度相同的滑窗以及1个残窗。
29.如权利要求28所述的Turbo码译码器,其特征在于,所述译码单元,用于:
控制所述N个处理器采用radix-8译码方法对所述待译码数据进行译码处理;
当所述残窗的长度对3求余结果为0时,采用radix-8译码方法对所述残窗进行计算;
当所述残窗的长度对3求余结果为1时,在计算所述残窗的前向状态度量时,将前(L-1)bit采用radix-8译码方法进行计算,最后1bit采用radix-2译码方法进行计算;在计算所述残窗的后向状态度量时,将后(L-1)bit采用radix-8译码方法进行计算,前1bit采用radix-2译码方法进行计算;
当所述残窗的长度对3求余结果为2时,在计算所述残窗的前向状态度量时,将前(L-2)bit采用radix-8译码方法进行计算,最后2bit采用radix-4译码方法进行计算;在计算所述残窗的后向状态度量时,将后(L-2)bit采用radix-8译码方法进行计算,前2bit采用radix-4译码方法进行计算;
其中,L为所述残窗的长度。
30.如权利要求16所述的Turbo码译码器,其特征在于,N的取值为以下任一个:2、4、6、8、16。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610378388.8A CN107453761B (zh) | 2016-05-31 | 2016-05-31 | Turbo码译码方法及Turbo码译码器 |
CN202110155006.6A CN112968709B (zh) | 2016-05-31 | 2016-05-31 | Turbo码译码方法及Turbo码译码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610378388.8A CN107453761B (zh) | 2016-05-31 | 2016-05-31 | Turbo码译码方法及Turbo码译码器 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110155006.6A Division CN112968709B (zh) | 2016-05-31 | 2016-05-31 | Turbo码译码方法及Turbo码译码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107453761A CN107453761A (zh) | 2017-12-08 |
CN107453761B true CN107453761B (zh) | 2021-04-06 |
Family
ID=60485096
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610378388.8A Active CN107453761B (zh) | 2016-05-31 | 2016-05-31 | Turbo码译码方法及Turbo码译码器 |
CN202110155006.6A Active CN112968709B (zh) | 2016-05-31 | 2016-05-31 | Turbo码译码方法及Turbo码译码器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110155006.6A Active CN112968709B (zh) | 2016-05-31 | 2016-05-31 | Turbo码译码方法及Turbo码译码器 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN107453761B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753152A (zh) * | 2008-12-02 | 2010-06-23 | 大唐移动通信设备有限公司 | 一种Turbo码译码器及译码方法 |
CN101951266A (zh) * | 2010-08-24 | 2011-01-19 | 中国科学院计算技术研究所 | Turbo并行译码的方法及译码器 |
CN103873073A (zh) * | 2014-03-20 | 2014-06-18 | 北京遥测技术研究所 | 一种基于并行与加窗结构的Turbo码高速译码实现方法 |
CN104639181A (zh) * | 2009-06-17 | 2015-05-20 | 相干逻辑公司 | 基于格式结构方法的并行执行 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1157883C (zh) * | 2001-07-11 | 2004-07-14 | 信息产业部电信传输研究所 | 实现并行滑动窗最大后验概率算法的高速Turbo码译码器 |
CN102396158A (zh) * | 2009-06-18 | 2012-03-28 | 中兴通讯股份有限公司 | 一种lte中并行turbo译码的方法及装置 |
CN101707510B (zh) * | 2009-11-18 | 2013-06-26 | 华为终端有限公司 | 一种高速Turbo译码方法和装置 |
CN102111162B (zh) * | 2009-12-28 | 2015-02-04 | 重庆重邮信科通信技术有限公司 | Turbo 分量译码方法、分量译码器、支路计算器及Turbo 译码器 |
CN102571107B (zh) * | 2010-12-15 | 2014-09-17 | 展讯通信(上海)有限公司 | LTE系统中高速并行Turbo码的解码系统及方法 |
CN102420671B (zh) * | 2011-01-24 | 2014-04-02 | 展讯通信(上海)有限公司 | 一种自适应的Turbo译码迭代次数选择方法 |
CN103916141B (zh) * | 2012-12-31 | 2017-04-05 | 华为技术有限公司 | Turbo码译码方法及装置 |
US9281846B2 (en) * | 2013-07-31 | 2016-03-08 | Globalfoundries Inc | Turbo encoding on a parallel processor |
CN104168032A (zh) * | 2014-08-16 | 2014-11-26 | 复旦大学 | 兼容LTE和WiMAX的4并行度、基-16高性能Turbo译码器 |
-
2016
- 2016-05-31 CN CN201610378388.8A patent/CN107453761B/zh active Active
- 2016-05-31 CN CN202110155006.6A patent/CN112968709B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753152A (zh) * | 2008-12-02 | 2010-06-23 | 大唐移动通信设备有限公司 | 一种Turbo码译码器及译码方法 |
CN104639181A (zh) * | 2009-06-17 | 2015-05-20 | 相干逻辑公司 | 基于格式结构方法的并行执行 |
CN101951266A (zh) * | 2010-08-24 | 2011-01-19 | 中国科学院计算技术研究所 | Turbo并行译码的方法及译码器 |
CN103873073A (zh) * | 2014-03-20 | 2014-06-18 | 北京遥测技术研究所 | 一种基于并行与加窗结构的Turbo码高速译码实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112968709A (zh) | 2021-06-15 |
CN112968709B (zh) | 2022-08-19 |
CN107453761A (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105637767B (zh) | 编码的速率匹配处理方法和装置 | |
CN1168221C (zh) | Map译码器的分割型去交织器存储器 | |
EP2429085B1 (en) | Method and apparatus for parallel turbo decoding in long term evolution system (lte) | |
US10425107B2 (en) | Partial sum computation for polar code decoding | |
KR20120090856A (ko) | 반복적 디코더 및 반복적 디코딩 방법 | |
US20070266303A1 (en) | Viterbi decoding apparatus and techniques | |
JP4227481B2 (ja) | 復号装置および復号方法 | |
CN1645751A (zh) | 加速译码装置及其方法 | |
CN110022188B (zh) | 基于冻结比特对的极化码编码方法及极化码串行抵消译码方法和电路 | |
KR101178976B1 (ko) | 포워드 및 백워드 순환 계산을 위한 시스템 및 방법 | |
US20130007568A1 (en) | Error correcting code decoding device, error correcting code decoding method and error correcting code decoding program | |
CN107347000B (zh) | 一种基于arm的数字喷泉码的编译码实现方法 | |
CN102340320A (zh) | 卷积Turbo码双向并行译码方法 | |
CN107453761B (zh) | Turbo码译码方法及Turbo码译码器 | |
CN109245846B (zh) | 一种阶梯码解码方法和阶梯码解码装置 | |
US6477681B1 (en) | Methods for decoding data in digital communication systems | |
CN106712778B (zh) | 一种turbo译码装置及方法 | |
CN112332868B (zh) | 一种基于DVB-RCS2的turbo并行译码方法 | |
CN109245847B (zh) | 一种阶梯码解码方法和阶梯码解码装置 | |
JP4191053B2 (ja) | トレリス・デコーダ用のメモリ管理アルゴリズム | |
CN109245777B (zh) | 一种阶梯码解码方法和阶梯码解码装置 | |
CN109245848B (zh) | 一种阶梯码解码方法和阶梯码解码装置 | |
CN113765622B (zh) | 分支度量初始化方法、装置、设备及存储介质 | |
WO2011144170A1 (zh) | 一种低密度奇偶校验码的译码方法和装置 | |
CN118041374A (zh) | 一种基于改进滑窗的turbo码译码方法和译码器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |