Turbo码译码方法及装置
技术领域
本发明涉及通信领域,特别涉及一种Turbo码译码方法及装置。
背景技术
Turbo码将两个分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个SISO(Soft-Input Soft-Output,软输入软输出)译码器之间进行多次迭代实现伪随机译码。目前主流的译码方式采用子块并行译码,并在子块内部采用滑窗处理的方法提高译码吞吐率。具体地,可以计算出Turbo码的软值APP值,并对软值作硬判决和解交织,即可得到译码输出。计算软值时,首先根据解调得到的LLR(Loglikelihood Ratio,对数似然比)和预设的外信息计算分支度量值γ,再根据γ分别计算前向度量值α和后向度量值β,最后根据γ、α和β计算APP。
现有技术中,参见图1所示的Turbo码译码的流程示意图,可以将待译码数据块划分为n个子数据块,每个子数据块划分为j个数据窗口。当对子数据块m的第i窗数据进行译码时,首先获取第i+1窗数据中最后比特的第一后向度量值,根据第i+1窗数据中最后比特的第一后向度量值训练第i窗数据,得到第i窗数据中最后比特的第二后向度量值;对第i窗数据训练结束后,获取所述第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算对应比特的前向度量值;计算出第i窗数据中最后比特的前向度量值后,根据反向计算的第i窗数据中当前比特的第二分支度量值,和,根据第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的第二后向度量值,反向计算当前比特的第二后向度量值;根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,预存的当前比特的前向度量值对当前比特进行译码。其中,m、j、n和i均为自然数,且m≤n-1,i≤j-1。
现有技术中,对第i窗数据进行训练需1窗时延,对第i窗数据进行前向度量值计算需要1窗时延,因此,从第一个输入比特读入到第一个译码结果输出需要2窗延时,其一次迭代处理时延约等于子数据块长度加上2窗延时,译码的准备时延过长。并且,上述滑窗控制流程中,同一时刻需要对3个数据窗口中的数据进行处理,因此,需要3套分支度量值缓存、3套前向度量值缓存和3套外信息缓存分别存储分值度量值、前向度量值和外信息,占用了大量资源。
发明内容
解决了训练第i窗数据之后计算第i窗数据的前向度量值引起的译码准备时延过长,以及分别存储3个数据窗口中数据的分支度量值、前向度量值和后向度量值造成的占用大量资源的问题本发明实施例提供了一种Turbo码译码方法及装置。所述技术方案如下:
第一方面,本发明实施例提供了一种Turbo码译码方法,所述方法包括:
获取待译码的数据块,将所述数据块划分为n个子数据块,每个子数据块划分为j个数据窗口;
当对子数据块m的第i窗数据进行译码时,获取第i+1窗数据中最后比特的第一后向度量值,根据所述第i+1窗数据中最后比特的第一后向度量值训练所述第i窗数据,得到所述第i窗数据中最后比特的第二后向度量值,并获取所述第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据所述第i窗数据中每一比特的所述第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值;
根据反向计算得到的所述第i窗数据中当前比特的第二分支度量值,和,根据所述第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的所述第二后向度量值,反向计算当前比特的所述第二后向度量值;
根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值,对当前比特进行译码;
其中,m、j、n和i均为自然数,且m<n,i<j-1。
在第一方面的第一种可能的实现方式中,所述获取第i+1窗数据中最后比特的第一后向度量值,包括:
如果i<j-2,则确定第i+2窗数据中初始比特的后向度量值为所述第一后向度量值;或者,
如果i=j-2且m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为所述第一后向度量值;或者,
如果i=j-2且m=n-1,则确定预设的初始值为所述第一后向度量值。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述获取所述第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,包括:
如果i=0,则获取所述第i窗数据中每一比特的外信息和对数似然比LLR,根据所述外信息和所述LLR前向生成所述第i窗数据中每一比特的所述第一分支度量值;或者,
如果i>0,则获取预存的所述第i窗数据中每一比特的所述第一分支度量值。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述获取所述第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,包括:
如果i=0且m=0,则确定预设的初始值为前一比特的所述前向度量值;或者,
如果i=0且m>0,则确定子数据块m-1的第j-1窗数据中最后比特的前向度量值为前一比特的所述前向度量值;或者,
如果i>0,则确定第i-1窗数据中最后比特的前向度量值为前一比特的所述前向度量值。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值,对当前比特进行译码,包括:
根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值,计算当前比特的软值;
如果当前比特的所述软值的计算次数超过指定次数,根据当前比特的最后一个软值确定当前比特的译码结果。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值,计算当前比特的软值之后,还包括:
根据所述第i窗数据中当前比特的所述软值计算并更新当前比特的外信息。
结合第一方面或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式或第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述方法还包括:
当i=j-1时,获取所述第i窗数据中每一比特的所述第一分支度量值,和,对应比特的前一比特的所述前向度量值,根据所述第i窗数据中每一比特的所述第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值;
获取所述第i窗数据中最后比特的所述第二后向度量值,根据反向计算得到的所述第i窗数据中当前比特的所述第二分支度量值,和,根据所述第i窗数据中最后比特的所述第二后向度量值反向计算得到的后一比特的所述第二后向度量值反向计算当前比特的所述第二后向度量值;
根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值,对当前比特进行译码。
结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述获取所述第i窗数据中最后比特的所述第二后向度量值,包括:
如果m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为所述第i窗数据中最后比特的所述第二后向度量值;或者,
如果m=n-1,则确定预设的初始值为所述第i窗数据中最后比特的所述第二后向度量值。
第二方面,本发明实施例提供了一种Turbo码译码装置,所述装置包括:
划分模块,用于获取待译码的数据块,将所述数据块划分为n个子数据块,每个子数据块划分为j个数据窗口;
前向计算模块,用于当对子数据块m的第i窗数据进行译码时,获取第i+1窗数据中最后比特的第一后向度量值,根据所述第i+1窗数据中最后比特的第一后向度量值训练所述第i窗数据,得到所述第i窗数据中最后比特的第二后向度量值,并获取所述第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据所述第i窗数据中每一比特的所述第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值;
反向计算模块,用于根据反向计算得到的所述第i窗数据中当前比特的第二分支度量值,和,根据所述前向计算模块计算的所述第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的所述第二后向度量值反向计算当前比特的所述第二后向度量值;
译码模块,用于根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值,对当前比特进行译码;
其中,m、j、n和i均为自然数,且m<n,i<j-1。
在第二方面的第一种可能的实现方式中,所述前向计算模块,包括:
确定单元,用于如果i<j-2,则确定第i+2窗数据中初始比特的后向度量值为所述第一后向度量值;或者,如果i=j-2且m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为所述第一后向度量值;或者,如果i=j-2且m=n-1,则确定预设的初始值为所述第一后向度量值。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述前向计算模块包括:
获取单元,用于如果i=0,则获取所述第i窗数据中每一比特的外信息和对数似然比LLR,根据所述外信息和所述LLR前向生成所述第i窗数据中每一比特的所述第一分支度量值;或者,如果i>0,则获取预存的所述第i窗数据中每一比特的所述第一分支度量值。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述确定单元,还用于如果i=0且m=0,则确定预设的初始值为前一比特的所述前向度量值;或者,如果i=0且m>0,则确定子数据块m-1的第j-1窗数据中最后比特的前向度量值为前一比特的所述前向度量值;或者,如果i>0,则确定第i-1窗数据中最后比特的前向度量值为前一比特的所述前向度量值。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述译码模块包括:
计算单元,用于根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值,计算当前比特的软值;
译码单元,用于如果所述计算单元计算的当前比特的所述软值的计算次数超过指定次数,根据当前比特的最后一个软值确定当前比特的译码结果。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述译码模块还包括:
更新单元,用于所述计算单元根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值计算当前比特的软值之后,根据所述第i窗数据中当前比特的所述软值计算并更新当前比特的外信息。
结合第二方面或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式或第二方面的第四种可能的实现方式或第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述前向计算模块,还用于当i=j-1时,获取所述第i窗数据中每一比特的所述第一分支度量值,和,对应比特的前一比特的所述前向度量值,根据所述第i窗数据中每一比特的所述第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值;
所述反向计算模块,还用于获取所述第i窗数据中最后比特的所述第二后向度量值,根据反向计算得到的所述第i窗数据中当前比特的所述第二分支度量值,和,根据所述第i窗数据中最后比特的所述第二后向度量值反向计算得到的后一比特的所述第二后向度量值,反向计算当前比特的所述第二后向度量值;
所述译码模块,还用于根据所述第i窗数据中当前比特的所述第二分支度量值、当前比特的所述第二后向度量值,和,当前比特的所述前向度量值,对当前比特进行译码。
结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述反向计算模块,还用于如果m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为所述第i窗数据中最后比特的所述第二后向度量值;或者,如果m=n-1,则确定预设的初始值为所述第i窗数据中最后比特的所述第二后向度量值。
本发明实施例提供的技术方案带来的有益效果是:
通过根据所述第i+1窗数据中最后比特的第一后向度量值训练所述第i窗数据,得到所述第i窗数据中最后比特的第二后向度量值,并根据所述第i窗数据中每一比特的所述第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值,解决了训练第i窗数据之后计算第i窗数据的前向度量值引起的译码准备时延过长,以及分别存储3个数据窗口中数据的分支度量值、前向度量值和后向度量值造成的占用大量资源的问题,译码时延由现有的子块长度加3窗时延减为子块长度加2窗时延,且仅需2套分支度量值缓存、2套前向度量值缓存和2套外信息缓存分别存储分值度量值、前向度量值和外信息,达到了减少译码的准备时延,节省资源的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术提供的Turbo码译码的流程示意图;
图2是本发明实施例一提供的Turbo码译码方法流程图;
图3是本发明实施例二提供的Turbo码译码方法流程图;
图4是本发明实施例二提供的Turbo码译码的流程示意图;
图5是本发明实施例三提供的Turbo码译码装置的结构示意图;
图6是本发明实施例四提供的Turbo码译码装置的结构示意图;
图7是本发明实施例五提供的Turbo码译码装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例中,译码器可以将数据块划分为n个子数据块,每个子数据块划分为j个数据窗口,则可以并行的对数据窗中的每一比特进行译码。具体地,译码器需要计算每一比特的软值,并对计算得到的软值进行硬判决和解交织,以得到对应比特的译码结果。具体地,每一比特的软值APP的计算公式为:
其中,n为比特位,Rs 00、Rs 01、Rs 10和Rs 11表示编码输入为00、01、10和11的分支。
其中,n为比特位,Rp 00、Rp 01、Rp 10和Rp 11表示编码输出为00、01、10和11的分支。
(1)
根据上述(1)式可知,在计算每一比特的软值之前,需要分别计算该比特的分支度量值γ、前向度量值α和后向度量值β。具体地,该比特的分支度量值γ的计算公式为:
其中,LLR为解调后输入到译码器的该比特的数值,L为该比特的外信息。
该比特的前向度量值α的计算公式为:
该比特的后向度量值β的计算公式为:
上述计算公式可直接应用于下文中每一比特的软值APP、分支度量值γ、前向度量值α和后向度量值β的计算,下文不再特别声明。
实施例一
请参考图2,其示出了本发明实施例一提供的Turbo码译码方法的方法流程图,该Turbo码译码方法包括:
步骤202:获取待译码的数据块,将该数据块划分为n个子数据块,每个子数据块划分为j个数据窗口;
步骤204:当对子数据块m的第i窗数据进行译码时,获取第i+1窗数据中最后比特的第一后向度量值,根据第i+1窗数据中最后比特的第一后向度量值训练第i窗数据,得到第i窗数据中最后比特的第二后向度量值,并获取第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据获取的第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值前向计算对应比特的前向度量值;
步骤206:根据反向计算得到的第i窗数据中当前比特的第二分支度量值,和,根据第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的第二后向度量值反向计算当前比特的第二后向度量值;
步骤208:根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,对当前比特进行译码。
其中,m、j、n和i均为自然数,且m<n,i<j-1。
本实施例提供的上述方法,通过根据所述第i+1窗数据中最后比特的第一后向度量值训练所述第i窗数据,得到所述第i窗数据中最后比特的第二后向度量值,并根据获取的所述第i窗数据中每一比特的第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值,解决了训练第i窗数据之后计算第i窗数据的前向度量值引起的译码准备时延过长,以及分别存储3个数据窗口中数据的分支度量值、前向度量值和后向度量值造成的占用大量资源的问题,译码时延由现有的子块长度加3窗时延减为子块长度加2窗时延,且仅需2套分支度量值缓存、2套前向度量值缓存和2套外信息缓存分别存储分值度量值、前向度量值和外信息,达到了减少译码的准备时延,节省资源的效果。
实施例二
请参考图3,其示出了本发明实施例二提供的Turbo码译码方法的方法流程图,该Turbo码译码方法包括:
步骤302:获取待译码的数据块,将该数据块划分为n个子数据块,每个子数据块划分为j个数据窗口;
请参考图4,其示出了Turbo码译码的流程示意图。译码器将获取的数据块划分为n个子数据块,使得n个处理器可以同时对n个子数据块进行并行译码,以提高译码效率。
进一步地,译码器采用滑窗的方法对每一个子数据块进行译码。具体地,可以预先设置一个窗长L,则第一窗数据为该子数据块的[0,L-1]比特的数据,第2窗数据为该子数据块的[L,2L-1]比特的数据,依此类推,对该子数据块的数据进行窗口划分,由此将该子数据块划分为j个数据窗口,且L和j均为自然数。其中,最后一窗数据的长度可能小于L。
步骤304:当对子数据块m的第i窗数据进行译码时,获取第i+1窗数据中最后比特的第一后向度量值,根据第i+1窗数据中最后比特的第一后向度量值训练第i窗数据,得到第i窗数据中最后比特的第二后向度量值;
译码器需要对第i窗数据进行训练,以提高第i窗数据中最后比特的第二后向度量值的可靠性,进而提高Turbo译码的性能。其中,m和i均为自然数。
具体地,获取第i+1窗数据中最后比特的第一后向度量值,可以包括:
如果i<j-2,则确定第i+2窗数据中初始比特的后向度量值为第一后向度量值;或者,
如果i=j-2且m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为第一后向度量值;或者,
如果i=j-2且m=n-1,则确定预设的初始值为第一后向度量值。
具体地,如果i<j-2,获取第i+2窗数据中初始比特的后向度量值,若第i+2窗数据还未进行译码,则对第i+2窗数据中初始比特的后向度量值设置一个假设值,将该后向度量值作为第一后向度量值;若第i+2窗数据已进行译码,则获取第i+2窗数据中初始比特的第一后向度量值,并根据该第一后向度量值反向计算第i窗数据中最后比特的第二后向度量值。或者,
如果i=j-2且m<n-1,则获取子数据块m+1的第1窗数据中初始比特的后向度量值,若子数据块m+1的第1窗数据还未进行译码,则对子数据块m+1的第1窗数据中初始比特的后向度量值设置一个假设值,并将该后向度量值作为第一后向度量值;若子数据块m+1的第1窗数据已进行译码,则获取子数据块m+1的第1窗数据中初始比特的第一后向度量值,并根据该第一后向度量值反向计算第i窗数据中最后比特的第二后向度量值。或者,
如果i=j-2且m=n-1,则获取第i+1窗数据中最后比特的第一后向度量值,并根据该第一后向度量值反向计算第i窗数据中最后比特的第二后向度量值。此时的第一后向度量值是预设的初始值,是一个真实可靠的数值。
进一步地,译码器可以根据第i+1窗数据中最后比特的第一后向度量值和获取的分支度量值计算前一比特的第一后向度量值,并根据该前一比特的第一后向度量值和对应比特的分支度量值计算前一比特的前一比特的第一后向度量值,依此类推,直至计算出第i+1窗数据中初始比特的第一后向度量值,将第一度量值作为第i窗数据中最后比特的第二后向度量值。
优选地,译码器还可以将对第i窗数据作训练过程中获取的分支度量值进行存储,以便后续计算第i+1窗数据的前向度量值时可以直接读取。
步骤306:获取所述第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算对应比特的前向度量值;
对当前比特进行译码时,当前比特的前向度量值是根据当前比特的第一分支度量值和前一比特的前向度量值计算得到的,因此,需要获取当前比特的第一分支度量值和前一比特的前向度量值。
具体地,获取第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,可以包括:
如果i=0,则获取第i窗数据中每一比特的外信息和LLR,根据外信息和LLR前向生成第i窗数据中每一比特的第一分支度量值;或者,
如果i>0,则获取预存的第i窗数据中每一比特的第一分支度量值。
具体地,当i=0时,如果首次计算当前比特的第一分支度量值,则可以预先设置当前比特的外信息,比如,将当前比特的外信息设置为0,根据预设的外信息,和,解调获得的当前比特的LLR,计算出当前比特的第一分支度量值;如果非首次计算当前比特的第一分支度量值,则可以根据上次迭代译码时计算所得的当前比特的软值计算出当前比特的外信息,并根据当前比特的外信息,和,解调获得的当前比特的LLR,计算出当前比特的第一分支度量值。当i>0时,由于对第i-1窗数据进行训练时已生成并存储当前比特的分支度量值,因此,可以直接读取预存的当前比特的分支度量值。
另外,获取第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,可以包括:
如果i=0且m=0,则确定预设的初始值为前一比特的前向度量值;或者,
如果i=0且m>0,则确定子数据块m-1的第j-1窗数据中最后比特的前向度量值为前一比特的前向度量值;或者,
如果i>0,则确定第i-1窗数据中最后比特的前向度量值为前一比特的前向度量值。
具体地,如果i=0且m=0,获取预设的初始值,将该初始值作为前一比特的前向度量值,并根据每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算第i窗数据中对应比特的前向度量值。或者,
如果i=0且m>0,获取子数据块m-1的第j-1窗数据中最后比特的前向度量值,若子数据块m-1的第j-1窗数据还未进行译码,则对子数据块m-1的第j-1窗数据中最后比特的前向度量值设置一个假设值,将该前向度量值作为前一比特的前向度量值;若子数据块m-1的第j-1窗数据已进行译码,则获取子数据块m-1的第j-1窗数据中最后比特的前向度量值,并根据每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算第i窗数据中对应比特的前向度量值。或者,
如果i>0,获取第i-1窗数据中最后比特的前向度量值作为前一比特的前向度量值,并根据每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算第i窗数据中对应比特的前向度量值。
进一步地,还可以对上述计算的第i窗数据中每一比特的前向度量值进行存储,以便后续计算对应比特的软值时可以直接读取。
优选地,步骤306与步骤304可以同时执行,以减少译码产生的时延,提高译码效率。并且,本实施例中的滑窗控制流程同时对2窗的数据进行处理,可以减少1套分支度量值缓存、1套前向度量值缓存和1套外信息缓存分别存储分值度量值、前向度量值和外信息,节省了大量存储空间。
步骤308:计算出第i窗数据中最后比特的前向度量值后,根据反向计算得到的第i窗数据中当前比特的第二分支度量值,和,根据第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的第二后向度量值,反向计算当前比特的第二后向度量值;
本实施例中,由于第二后向度量值是第i窗数据中最后比特的后向度量值,因此,为了与第二后向度量值对应,第二分支度量值是通过外信息和LLR反向计算生成。具体地,获取第i窗数据中最后比特的外信息和LLR,根据该外信息和LLR计算最后比特的第二分支度量值,根据该第二分支度量值,和,最后比特的第二后向度量值,生成前一比特的第二后向度量值;根据获取的前一比特的外信息和LLR计算前一比特的第二分支度量值,根据该第二分支度量值,和,前一比特的第二后向度量值,生成前一比特的前一比特的第二后向度量值,依次类推,直至计算出第i窗数据中初始比特的第二后向度量值。
步骤310:根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,对当前比特进行译码。
本实施例中,可以根据第i窗数据中每一比特的前向度量值、对应比特的第二分支度量值,和,对应比特的第二后向度量值,计算对应特的软值,并对计算所得的软值作硬判决和解交织,即可得到对应比特的译码结果。
具体地,根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,对当前比特进行译码,可以包括:
根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,计算当前比特的软值;
如果当前比特的软值的计算次数超过指定次数,根据当前比特的最后一个软值确定当前比特的译码结果。
还可以根据通信业务的需求设置Turbo码的迭代次数,当译码过程中的迭代次数超过指定次数时,结束Turbo码译码流程,并对此次输出的软值进行硬判决和解交织,以得到译码结果。
优选地,还可以根据计算得到的软值更新外信息,以优化译码结果。具体地,根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,计算当前比特的软值之后,还可以包括:根据第i窗数据中当前比特的软值计算并更新当前比特的外信息。
需要补充说明的是,当i=j-1时,不存在第i+1窗数据,因此,不需要对第i窗数据进行训练,即根据计算得到的第i窗数据中每一比特的前向度量值、对应比特的第二分支度量值和对应比特的第二后向度量值计算当前比特的软值,以完成译码,因此,所述方法还可以包括:
当i=j-1时,获取第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算对应比特的前向度量值;
获取第i窗数据中最后比特的第二后向度量值,根据反向计算得到的第i窗数据中当前比特的第二分支度量值,和,根据第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的第二后向度量值反向计算当前比特的第二后向度量值;
根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,对当前比特进行译码。
其中,上述步骤中的计算方法与步骤306-308中的计算方法相同,此处不赘述。
当i=j-1时,获取所述第i窗数据中最后比特的所述第二后向度量值,可以包括:
如果m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为第i窗数据中最后比特的第二后向度量值;或者,
如果m=n-1,则确定预设的初始值为第i窗数据中最后比特的第二后向度量值。
本实施例提供的上述方法,通过根据所述第i+1窗数据中最后比特的第一后向度量值训练所述第i窗数据,得到所述第i窗数据中最后比特的第二后向度量值,并根据获取的所述第i窗数据中每一比特的第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值,解决了训练第i窗数据之后计算第i窗数据的前向度量值引起的译码准备时延过长,以及分别存储3个数据窗口中数据的分支度量值、前向度量值和后向度量值造成的占用大量资源的问题,译码时延由现有的子块长度加3窗时延减为子块长度加2窗时延,且仅需2套分支度量值缓存、2套前向度量值缓存和2套外信息缓存分别存储分值度量值、前向度量值和外信息,达到了减少译码的准备时延,节省资源的效果。另外,通过i>0,获取预存的第i窗数据中每一比特的第一分支度量值,解决了不能同时训练第i窗数据和计算第i窗数据的前向度量值的问题,达到了减少译码的准备时延,节省资源的效果。
实施例三
请参考图5,其示出了本发明实施例三提供的Turbo码译码装置的结构方框图,该Turbo码译码装置包括:
划分模块510,用于获取待译码的数据块,将数据块划分为n个子数据块,每个子数据块划分为j个数据窗口;
前向计算模块520,用于当对子数据块m的第i窗数据进行译码时,获取第i+1窗数据中最后比特的第一后向度量值,根据第i+1窗数据中最后比特的第一后向度量值训练第i窗数据,得到第i窗数据中最后比特的第二后向度量值,并获取第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算对应比特的前向度量值;
反向计算模块530,用于根据反向计算得到的第i窗数据中当前比特的第二分支度量值,和,根据前向计算模块计算的第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的第二后向度量值反向计算当前比特的第二后向度量值;
译码模块540,用于根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,对当前比特进行译码;
其中,m、j、n和i均为自然数,且m<n,i<j-1。
本实施例提供的上述装置,通过根据所述第i+1窗数据中最后比特的第一后向度量值训练所述第i窗数据,得到所述第i窗数据中最后比特的第二后向度量值,并根据获取的所述第i窗数据中每一比特的第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值,解决了训练第i窗数据之后计算第i窗数据的前向度量值引起的译码准备时延过长,以及分别存储3个数据窗口中数据的分支度量值、前向度量值和后向度量值造成的占用大量资源的问题,译码时延由现有的子块长度加3窗时延减为子块长度加2窗时延,且仅需2套分支度量值缓存、2套前向度量值缓存和2套外信息缓存分别存储分值度量值、前向度量值和外信息,达到了减少译码的准备时延,节省资源的效果。
实施例四
请参考图6,其示出了本发明实施例四提供的Turbo码译码装置的结构方框图,该Turbo码译码装置包括:划分模块510、前向计算模块520、后向计算模块530和译码模块540。
进一步地,前向计算模块520可以包括:
确定单元521,用于如果i<j-2,则确定第i+2窗数据中初始比特的后向度量值为第一后向度量值;或者,如果i=j-2且m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为第一后向度量值;或者,如果i=j-2且m=n-1,则确定预设的初始值为第一后向度量值。
进一步地,前向计算模块520可以包括:
获取单元522,用于如果i=0,则获取第i窗数据中每一比特的外信息和对数似然比LLR,根据外信息和LLR前向生成第i窗数据中每一比特的第一分支度量值;或者,如果i>0,则获取预存的第i窗数据中每一比特的第一分支度量值。
进一步地,确定单元521,还用于如果i=0且m=0,则确定预设的初始值为前一比特的前向度量值;或者,如果i=0且m>0,则确定子数据块m-1的第j-1窗数据中最后比特的前向度量值为前一比特的前向度量值;或者,如果i>0,则确定第i-1窗数据中最后比特的前向度量值为前一比特的前向度量值。
进一步地,译码模块540可以包括:
计算单元541,用于根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,计算当前比特的软值;
译码单元542,用于如果计算单元541计算的当前比特的软值的计算次数超过指定次数,根据当前比特的最后一个软值确定当前比特的译码结果。
进一步地,译码模块540还可以包括:
更新单元543,用于计算单元541根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,计算当前比特的软值之后,根据第i窗数据中当前比特的软值计算并更新当前比特的外信息。
进一步地,前向计算模块520,还用于当i=j-1时,获取第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值前向计算对应比特的前向度量值;
反向计算模块530,还用于获取第i窗数据中最后比特的第二后向度量值,根据反向计算得到的第i窗数据中当前比特的第二分支度量值,和,根据第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的第二后向度量值,反向计算当前比特的第二后向度量值;
译码模块540,还用于根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,对当前比特进行译码。
进一步地,反向计算模块530,还用于如果m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为第i窗数据中最后比特的第二后向度量值;或者,如果m=n-1,则确定预设的初始值为第i窗数据中最后比特的第二后向度量值。
本实施例提供的上述装置,通过根据所述第i+1窗数据中最后比特的第一后向度量值训练所述第i窗数据,得到所述第i窗数据中最后比特的第二后向度量值,并根据获取的所述第i窗数据中每一比特的第一分支度量值,和,所述对应比特的前一比特的所述前向度量值,前向计算对应比特的所述前向度量值,解决了训练第i窗数据之后计算第i窗数据的前向度量值引起的译码准备时延过长,以及分别存储3个数据窗口中数据的分支度量值、前向度量值和后向度量值造成的占用大量资源的问题,译码时延由现有的子块长度加3窗时延减为子块长度加2窗时延,且仅需2套分支度量值缓存、2套前向度量值缓存和2套外信息缓存分别存储分值度量值、前向度量值和外信息,达到了减少译码的准备时延,节省资源的效果。另外,通过i>0,获取预存的第i窗数据中每一比特的第一分支度量值,解决了不能同时训练第i窗数据和计算第i窗数据的前向度量值的问题,达到了减少译码的准备时延,节省资源的效果。
实施例五
请参考图7,其示出了本发明实施例五提供的Turbo码译码装置的结构方框图,该Turbo码译码装置包括:
处理器710,用于获取待译码的数据块,将数据块划分为n个子数据块,每个子数据块划分为j个数据窗口;
第一存储器720,用于对处理器710划分后的数据窗口进行存储;
处理器710,还用于当对第一存储器720中存储的子数据块m的第i窗数据进行译码时,获取第i+1窗数据中最后比特的第一后向度量值,根据第i+1窗数据中最后比特的第一后向度量值训练第i窗数据,得到第i窗数据中最后比特的第二后向度量值,并获取第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算对应比特的前向度量值;
第二存储器730,用于对第i窗数据中最后比特的第二后向度量值,和,第i窗数据中每一比特的前向度量值进行存储;
处理器710,还用于根据反向计算得到的第i窗数据中当前比特的第二分支度量值,和,根据第二存储器730中存储的第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的第二后向度量值,反向计算当前比特的第二后向度量值;根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,第二存储器730中存储的当前比特的前向度量值,对当前比特进行译码;其中,m、j、n和i均为自然数,且m<n,i<j-1。
进一步地,处理器710,还用于如果i<j-2,则确定第i+2窗数据中初始比特的后向度量值为第一后向度量值;或者,如果i=j-2且m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为第一后向度量值;或者,如果i=j-2且m=n-1,则确定预设的初始值为第一后向度量值。
进一步地,处理器710,还用于如果i=0,则获取第i窗数据中每一比特的外信息和对数似然比LLR,根据外信息和LLR前向生成第i窗数据中每一比特的第一分支度量值;或者,如果i>0,则获取第二存储器730中预存的第i窗数据中每一比特的第一分支度量值。
进一步地,处理器710,还用于如果i=0且m=0,则确定预设的初始值为前一比特的前向度量值;或者,如果i=0且m>0,则确定子数据块m-1的第j-1窗数据中最后比特的前向度量值为前一比特的前向度量值;或者,如果i>0,则确定第i-1窗数据中最后比特的前向度量值为前一比特的前向度量值。
进一步地,处理器710,具体用于根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,计算当前比特的软值;如果当前比特的软值的计算次数超过指定次数,根据当前比特的最后一个软值确定当前比特的译码结果。
进一步地,处理器710,还用于根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,当前比特的前向度量值,计算当前比特的软值之后,根据第i窗数据中当前比特的软值计算并更新当前比特的外信息。
进一步地,处理器710,还用于当i=j-1时,获取第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,根据第i窗数据中每一比特的第一分支度量值,和,对应比特的前一比特的前向度量值,前向计算对应比特的前向度量值;
第二存储器730,还用于对第i窗数据中每一比特的前向度量值进行存储;
处理器710,还用于获取第i窗数据中最后比特的第二后向度量值,根据反向计算得到的第i窗数据中当前比特的第二分支度量值,和,根据第i窗数据中最后比特的第二后向度量值反向计算得到的后一比特的第二后向度量值,反向计算当前比特的第二后向度量值;根据第i窗数据中当前比特的第二分支度量值、当前比特的第二后向度量值,和,第二存储器730中存储的当前比特的前向度量值对当前比特进行译码。
进一步地,处理器710,还用于如果m<n-1,则确定子数据块m+1的第1窗数据中初始比特的后向度量值为第i窗数据中最后比特的第二后向度量值;或者,如果m=n-1,则确定预设的初始值为第i窗数据中最后比特的第二后向度量值。
本实施例提供的上述装置,通过根据所述第i+1窗数据中最后比特的第一后向度量值训练所述第i窗数据,得到所述第i窗数据中最后比特的第二后向度量值,并根据所述第i窗数据中每一比特的所述第一分支度量值,和,所述对应比特的前一比特的前向度量值,前向计算对应比特的所述前向度量值,解决了训练第i窗数据之后计算第i窗数据的前向度量值引起的译码准备时延过长,以及分别存储3个数据窗口中数据的分支度量值、前向度量值和后向度量值造成的占用大量资源的问题,译码时延由现有的子块长度加3窗时延减为子块长度加2窗时延,且仅需2套分支度量值缓存、2套前向度量值缓存和2套外信息缓存分别存储分值度量值、前向度量值和外信息,达到了减少译码的准备时延,节省资源的效果。另外,通过i>0,获取预存的第i窗数据中每一比特的第一分支度量值,解决了不能同时训练第i窗数据和计算第i窗数据的前向度量值的问题,达到了减少译码的准备时延,节省资源的效果。
需要说明的是:上述实施例提供的Turbo码译码装置在译码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将Turbo码译码装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的Turbo码译码装置与Turbo码译码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。