本发明属于无线通信技术领域,更进一步涉及信道编码技术领域中的基于简化双二元turbo码度量值的译码方法。本发明可用于双二元turbo码译码。
背景技术:
turbo码作为一种优秀的信道编码方案,性能接近香农限,自其提出以来就备受关注,但是由于turbo码译码过程复杂,硬件实现难度较大,所以经过二十余年的研究,才被广泛的应用到各种通信标准之中。双二元turbo码在经典turbo码基础上发展而来,它具有更高的编码效率,更好的纠错性能,而且误码平层不明显,国际数字视频广播回传信道dvb-rcs(digitalvideobroadcasting-returnchannelviasatellite)和全球微波互联接入wimax(worldwideinteroperabilityformicrowaveaccess)等标准采用了二元turbo码作为信道编码方案。
广州杰赛科技股份有限公司在其申请的专利文献“双二元卷积turbo码译码方法和装置”(申请日:2009年11月02日,申请号:200910193580.x,公开号:cn101697492a)中公开了一种双二元卷积turbo码译码方法。该方法在增强的max-log-map算法特有步骤处,并列地包括了常数log-map算法相应的特有步骤,使得用户可以根据译码算法模式编号选择对应的译码算法。该方法存在的不足之处是,前向度量中间值和后向度量中间值只进行了计算,却没有对计算结果加以利用,造成了不必要的运算,从而增加了译码复杂度。
李江鹏等人在其发表的论文“wimax系统双二进制turbo码的译码算法及vlsi实现”([j].微电子学与计算机,2011,(03):43-47)中公开了一种双二元turbo码译码方法。该译码方法在增加少量复杂度的基础上,对经典max-log-map译码算法进行了改进,提高了译码性能。但是,该方法仍然存在的不足之处是,在分支度量的计算过程中,存在重复的运算,由此增加了运算量,造成了资源的浪费。
技术实现要素:
本发明的目的在于克服上述现有技术的不足,提出一种基于简化双二元turbo码度量值的译码方法。本发明可实现对双二元turbo码译码,有效的降低了增强的max-log-map算法译码过程中度量值的计算复杂度。
实现本发明目的的具体步骤包括如下:
(1)接收数据:
(1a)依据双二元turbo码交织器的交织深度,按照时序,接收两路系统位软信息,每路系统位软信息的长度与交织深度相等;按照时序,接收两路第一校验位软信息和第二校验位软信息,每路验位软信息的长度与交织深度相等;
(1b)利用双二元turbo码交织器,对两路的系统位软信息进行交织,得到两路交织后的系统位软信息;
(2)初始化:
(2a)将前半轮迭代的先验信息初始化为0;
(2b)将前向度量和后向度量初始化为
(3)设置译码迭代次数:
设置译码最大迭代次数为m,m∈{1,2,...,10},∈表示属于操作;将当前迭代次数初始化为1;
(4)计算前半轮迭代的后向度量值:
(4a)合并接收的两路系统位软信息和两路第一校验位软信息,得到两个合并后的系统位软信息和两个合并后的校验位软信息;
(4b)由合并后的系统位软信息和合并后的校验位软信息,得到8个信道观测值;
(4c)由信道观测值和前半轮迭代的先验信息,计算16个分支度量值;
(4d)将起始状态相同且结束状态不同的所有后向度量中间值,以四个中间值为一组,划分成多个后向度量中间值小组;
(4e)利用下式,在每个后向度量中间值小组中,分别计算后向度量差值和分支度量差值:
x=b1-c1
p=c2-b2
其中,x表示后向度量差值;b1表示带有对应于码字(0,1)的先验信息的后向度量中间值中的后向度量;c1表示带有对应于码字(1,0)的先验信息的后向度量中间值中的后向度量;p表示分支度量差值;c2表示带有对应于码字(1,0)的先验信息的后向度量中间值中的分支度量;b2表示带有对应于码字(0,1)的先验信息的后向度量中间值中的分支度量;
(4f)判断后向度量差值x是否大于分支度量差值p,若是,则将带有对应于码字(0,1)的先验信息的后向度量中间值作为第一个待选前向度量中间值,否则,将带有对应于码字(1,0)的先验信息的后向度量中间值作为第一个待选后向度量中间值;
(4g)使用与步骤(4e)和步骤(4f)中相同的方法,由带有对应于码字(0,0)的先验信息的后向度量中间值和带有对应于码字(1,1)的先验信息的后向度量中间值,获得第二个待选后向度量中间值;
(4h)取每个后向度量中间值小组中两个待选后向度量中间值中最大的一个,作为该后向度量中间值小组选取的后向度量;
(5)计算前半轮迭代的后验信息和前半轮迭代的外信息:
(5a)将结束状态相同且起始状态不同的所有前向度量中间值,以四个中间值为一组,划分成多个前向度量中间值小组;
(5b)利用下式,在每个前向度量中间值小组中,分别计算前向度量差值和分支度量差值:
y=a1-d1
q=d2-a2
其中,y表示前向度量差值;a1表示带有对应于码字(0,0)的先验信息的前向度量中间值中的前向度量;d1表示带有对应于码字(1,1)的先验信息的前向度量中间值中的前向度量;q表示分支度量差值;d2表示带有对应于码字(1,1)的先验信息的前向度量中间值中的分支度量;a2表示带有对应于码字(0,0)的先验信息的前向度量中间值中的分支度量;
(5c)判断前向度量差值y是否大于分支度量差值q,若是,则将带有对应于码字(0,0)的先验信息的前向度量的中间值作为第一个待选前向度量中间值,否则,将带有对应于码字(1,1)的先验信息的前向度量中间值作为第一个待选前向度量中间值;
(5d)使用与步骤(5b)和步骤(5c)中相同的方法,由带有对应于码字(0,1)的先验信息的前向度量中间值和带有对应于码字(1,0)的先验信息的前向度量中间值,获得第二个待选前向度量中间值;
(5e)取每个前向度量中间值小组中两个待选前向度量中间值中最大的一个,作为该前向度量中间值小组选取的前向度量;
(5f)利用后验信息公式,计算前半轮迭代的后验信息;
(5g)利用外信息公式,计算前半轮迭代的外信息;
(6)获得后半轮迭代的先验信息:
利用双二元turbo码交织器对前半轮迭代的外信息进行交织,获得后半轮迭代的先验信息;
(7)计算后半轮迭代的后向度量值:
(7a)合并两路交织后的系统位软信息和两路第二校验位软信息,得到两个合并后的系统位软信息和两个合并后的校验位软信息;
(7b)由合并后的系统位软信息和合并后的校验位软信息,合并得到8个信道观测值;
(7c)由信道观测值和先验信息,计算得到16个分支度量值;
(7d)将起始状态相同且结束状态不同的所有后向度量中间值,以四个中间值为一组,划分成多个后向度量中间值小组;
(7e)利用下式,在每个后向度量中间值小组中,分别计算后向度量差值和分支度量差值:
x=b1-c1
p=c2-b2
其中,x表示后向度量差值;b1表示带有对应于码字(0,1)的先验信息的后向度量中间值中的后向度量;c1表示带有对应于码字(1,0)的先验信息的后向度量中间值中的后向度量;p表示分支度量差值;c2表示带有对应于码字(1,0)的先验信息的后向度量中间值中的分支度量;b2表示带有对应于码字(0,1)的先验信息的后向度量中间值中的分支度量;
(7f)判断后向度量差值x是否大于分支度量差值p,若是,则将带有对应于码字(0,1)的先验信息的后向度量中间值作为第一个待选前向度量中间值,否则,将带有对应于码字(1,0)的先验信息的后向度量中间值作为第一个待选后向度量中间值;
(7g)使用与步骤(7e)和步骤(7f)中相同的方法,由带有对应于码字(0,0)的先验信息的后向度量中间值和带有对应于码字(1,1)的先验信息的后向度量中间值,获得第二个待选后向度量中间值;
(7h)取每个后向度量中间值小组中两个待选后向度量中间值中最大的一个,作为该后向度量中间值小组选取的后向度量;
(8)计算后半轮迭代的后验信息和后半轮迭代的外信息:
(8a)将结束状态相同且起始状态不同的所有前向度量中间值,以四个中间值为一组,划分成多个前向度量中间值小组;
(8b)利用下式,在每个前向度量中间值小组中,分别计算前向度量差值和分支度量差值:
y=a1-d1
q=d2-a2
其中,y表示前向度量差值;a1表示带有对应于码字(0,0)的先验信息的前向度量中间值中的前向度量;d1表示带有对应于码字(1,1)的先验信息的前向度量中间值中的前向度量;q表示分支度量差值;d2表示带有对应于码字(1,1)的先验信息的前向度量中间值中的分支度量;a2表示带有对应于码字(0,0)的先验信息的前向度量中间值中的分支度量;
(8c)判断前向度量差值y是否大于分支度量差值q,若是,则将带有对应于码字(0,0)的先验信息的前向度量的中间值作为第一个待选前向度量中间值,否则,将带有对应于码字(1,1)的先验信息的前向度量中间值作为第一个待选前向度量中间值;
(8d)使用与步骤(8b)和步骤(8c)中相同的方法,由带有对应于码字(0,1)的先验信息的前向度量中间值和带有对应于码字(1,0)的先验信息的前向度量中间值,获得第二个待选前向度量中间值;
(8e)取每个前向度量中间值小组中两个待选前向度量中间值中最大的一个,作为该前向度量中间值小组选取的前向度量;
(8f)利用后验信息公式,计算后半轮迭代的后验信息;
(8g)利用外信息公式,计算后半轮迭代的外信息;
(9)获得前半轮迭代的先验信息:
利用双二元turbo码解交织器,对后半轮迭代的外信息进行解交织,获得前半轮迭代的先验信息;
(10)判断当前迭代次数是否达到最大迭代次数,若是,则执行步骤(11),否则,将当前迭代次数加1后执行步骤(4);
(11)判决对数似然比信息:
(11a)使用双二元turbo码解交织器,对后半轮迭代的后验信息进行解交织,得到对数似然比;
(11b)使用双二元turbo码的符号判决规则,对对数似然比进行硬判决,译码结束。
本发明与现有技术相比具有以下优点:
第一,由于本发明在双二元turbo译码的分支度量计算过程中,对不同分支度量表达式之间的相同部分只进行了一次计算,从而克服了现有技术在双二元turbo译码的分支度量的计算过程中存在重复运算的缺点,使得本发明具有减少双二元turbo译码计算量,提高译码效率的优点。
第二,由于本发明使用的后向度量计算方法和前向度量计算方法,利用了译码过程中不同前向度量中间值和后向度量中间值的共性,对在双二元turbo码的前向度量中间值和后向度量中间值先比较再求解,从而克服了现有技术在译码过程中获得后向度量和前向度量时计算量过大的缺点,使得本发明具有降低译码复杂度的优点。
附图说明
图1是本发明的流程图;
图2是本发明的仿真图。
具体实施方式
下面结合附图对本发明做进一步的描述。
参照图1,本发明实现的具体步骤如下:
步骤1,接收数据。
依据双二元turbo码交织器的交织深度,按照时序,接收两路系统位软信息,每路系统位软信息的长度与交织深度相等;按照时序,接收两路第一校验位软信息和第二校验位软信息,每路验位软信息的长度与交织深度相等。
利用双二元turbo码交织器,对两路的系统位软信息进行交织,得到两路交织后的系统位软信息。
步骤2,初始化。
将前半轮迭代的先验信息初始化为0。
将前向度量和后向度量初始化为
步骤3,设置译码迭代次数。
设置译码最大迭代次数为m,m∈{1,2,...,10},∈表示属于操作;将当前迭代次数初始化为1。
步骤4,计算前半轮迭代的后向度量值。
第1步,合并接收的两路系统位软信息和两路第一校验位软信息,得到两个合并后的系统位软信息和两个合并后的校验位软信息。
所述的合并两路交织后的系统位软信息和两路第一校验位软信息是按照下式得到的:
s1=ark+brk
s2=ark-brk
p1=yrk+wrk
p2=yrk-wrk
其中,s1和s2分别表示两个合并后的系统位软信息;p1和p2分别表示两个合并后的校验位软信息;ark表示k时刻所接收的两路系统位软信息中的一路系统位软信息;brk表示k时刻所接收的两路系统位软信息中的另一路系统位软信息;yrk表示k时刻所接收的两路第一校验位软信息中的一路第一校验位软信息;wrk表示k时刻所接收的两路第一校验位软信息中的另一路第一校验位软信息,k依次取值1,2,…,n,n表示双二元turbo码交织器的交织深度。
第2步,由合并后的系统位软信息和合并后的校验位软信息,得到8个信道观测值。
所述的8个信道观测值是按照下式得到的:
sp11=s1+p1
sp12=s1-p1
sp13=s1+p2
sp14=s1-p2
sp21=s2+p2
sp22=s2-p2
sp23=s2+p1
sp24=s2-p1
其中,sp11、sp12、sp13、sp14、sp21、sp22、sp23、sp24分别表示由合并后的系统位软信息和合并后的校验位软信息,计算得到的8个信道观测值;s1和s2分别表示两个合并后的系统位软信息;p1和p2分别表示两个合并后的校验位软信息。
第3步,由信道观测值和前半轮迭代的先验信息,计算16个分支度量值。
所述的16个分支度量值是按照下式得到的:
其中,
第4步,将起始状态相同且结束状态不同的所有后向度量中间值,以四个中间值为一组,划分成多个后向度量中间值小组。
第5步,利用下式,在每个后向度量中间值小组中,分别计算后向度量差值和分支度量差值:
x=b1-c1
p=c2-b2
其中,x表示后向度量差值;b1表示带有对应于码字(0,1)的先验信息的后向度量中间值中的后向度量;c1表示带有对应于码字(1,0)的先验信息的后向度量中间值中的后向度量;p表示分支度量差值;c2表示带有对应于码字(1,0)的先验信息的后向度量中间值中的分支度量;b2表示带有对应于码字(0,1)的先验信息的后向度量中间值中的分支度量。
第6步,判断后向度量差值x是否大于分支度量差值p,若是,则将带有对应于码字(0,1)的先验信息的后向度量中间值作为第一个待选前向度量中间值,否则,将带有对应于码字(1,0)的先验信息的后向度量中间值作为第一个待选后向度量中间值。
第7步,使用与本步骤第5步、第6步相同的方法,由带有对应于码字(0,0)的先验信息的后向度量中间值和带有对应于码字(1,1)的先验信息的后向度量中间值,获得第二个待选后向度量中间值。
第8步,取每个后向度量中间值小组中两个待选后向度量中间值中最大的一个,作为该后向度量中间值小组选取的后向度量。
步骤5,计算前半轮迭代的后验信息和前半轮迭代的外信息。
第1步,将结束状态相同且起始状态不同的所有前向度量中间值,以四个中间值为一组,划分成多个前向度量中间值小组。
第2步,利用下式,在每个前向度量中间值小组中,分别计算前向度量差值和分支度量差值:
y=a1-d1
q=d2-a2
其中,y表示前向度量差值;a1表示带有对应于码字(0,0)的先验信息的前向度量中间值中的前向度量;d1表示带有对应于码字(1,1)的先验信息的前向度量中间值中的前向度量;q表示分支度量差值;d2表示带有对应于码字(1,1)的先验信息的前向度量中间值中的分支度量;a2表示带有对应于码字(0,0)的先验信息的前向度量中间值中的分支度量。
第3步,判断前向度量差值y是否大于分支度量差值q,若是,则将带有对应于码字(0,0)的先验信息的前向度量的中间值作为第一个待选前向度量中间值,否则,将带有对应于码字(1,1)的先验信息的前向度量中间值作为第一个待选前向度量中间值。
第4步,使用与本步骤第2步、第3步相同的方法,由带有对应于码字(0,1)的先验信息的前向度量中间值和带有对应于码字(1,0)的先验信息的前向度量中间值,获得第二个待选前向度量中间值;
第5步,取每个前向度量中间值小组中两个待选前向度量中间值中最大的一个,作为该前向度量中间值小组选取的前向度量。
第6步,利用后验信息公式,计算前半轮迭代的后验信息。
所述的后验信息公式如下:
其中,lk表示k时刻的后验信息,k的取值范围为[1,2,…,n],n表示双二元turbo码交织器的交织深度;max(·)表示取最大值操作;s′和s分别表示双二元turbo码编码器状态状态转移图上的两个状态节点;auk和buk分别表示双二元turbo码编码器k时刻两个输入的比特;
第7步,利用外信息公式,计算前半轮迭代的外信息。
所述的外信息公式如下:
其中,
步骤6,获得后半轮迭代的先验信息。
利用双二元turbo码交织器对前半轮迭代的外信息进行交织,获得后半轮迭代的先验信息。
步骤7,计算后半轮迭代的后向度量值。
第1步,合并两路交织后的系统位软信息和两路第二校验位软信息,得到两个合并后的系统位软信息和两个合并后的校验位软信息。
所述的合并两路交织后的系统位软信息和两路第二校验位软信息是按照下式得到的:
s1=ark+brk
s2=ark-brk
p1=yrk+wrk
p2=yrk-wrk
其中,s1和s2分别表示两个合并后的系统位软信息;p1和p2分别表示两个合并后的校验位软信息;ark表示k时刻两路交织后的系统位软信息中的一路交织后的系统位软信息;brk表示k时刻两路交织后的系统位软信息中的另一路交织后的系统位软信息;yrk表示k时刻所接收的两路第二校验位软信息中的一路第二校验位软信息;wrk表示k时刻所接收的两路第二校验位软信息中的另一路第二校验位软信息,k依次取值1,2,…,n,n表示双二元turbo码交织器的交织深度。
第2步,由合并后的系统位软信息和合并后的校验位软信息,合并得到8个信道观测值。
所述的8个信道观测值是按照下式得到的:
sp11=s1+p1
sp12=s1-p1
sp13=s1+p2
sp14=s1-p2
sp21=s2+p2
sp22=s2-p2
sp23=s2+p1
sp24=s2-p1
其中,sp11、sp12、sp13、sp14、sp21、sp22、sp23、sp24分别表示由合并后的系统位软信息和合并后的校验位软信息,计算得到的8个信道观测值;s1和s2分别表示两个合并后的系统位软信息;p1和p2分别表示两个合并后的校验位软信息。
第3步,由信道观测值和先验信息,计算得到16个分支度量值。
所述的16个分支度量值是按照下式得到的:
其中,
第4步,将起始状态相同且结束状态不同的所有后向度量中间值,以四个中间值为一组,划分成多个后向度量中间值小组。
第5步,利用下式,在每个后向度量中间值小组中,分别计算后向度量差值和分支度量差值:
x=b1-c1
p=c2-b2
其中,x表示后向度量差值;b1表示带有对应于码字(0,1)的先验信息的后向度量中间值中的后向度量;c1表示带有对应于码字(1,0)的先验信息的后向度量中间值中的后向度量;p表示分支度量差值;c2表示带有对应于码字(1,0)的先验信息的后向度量中间值中的分支度量;b2表示带有对应于码字(0,1)的先验信息的后向度量中间值中的分支度量。
第6步,判断后向度量差值x是否大于分支度量差值p,若是,则将带有对应于码字(0,1)的先验信息的后向度量中间值作为第一个待选前向度量中间值,否则,将带有对应于码字(1,0)的先验信息的后向度量中间值作为第一个待选后向度量中间值。
第7步,使用与本步骤第5步、第6步相同的方法,由带有对应于码字(0,0)的先验信息的后向度量中间值和带有对应于码字(1,1)的先验信息的后向度量中间值,获得第二个待选后向度量中间值;
第8步,取每个后向度量中间值小组中两个待选后向度量中间值中最大的一个,作为该后向度量中间值小组选取的后向度量。
步骤8,计算后半轮迭代的后验信息和后半轮迭代的外信息。
第1步,将结束状态相同且起始状态不同的所有前向度量中间值,以四个中间值为一组,划分成多个前向度量中间值小组。
第2步,利用下式,在每个前向度量中间值小组中,分别计算前向度量差值和分支度量差值:
y=a1-d1
q=d2-a2
其中,y表示前向度量差值;a1表示带有对应于码字(0,0)的先验信息的前向度量中间值中的前向度量;d1表示带有对应于码字(1,1)的先验信息的前向度量中间值中的前向度量;q表示分支度量差值;d2表示带有对应于码字(1,1)的先验信息的前向度量中间值中的分支度量;a2表示带有对应于码字(0,0)的先验信息的前向度量中间值中的分支度量。
第3步,判断前向度量差值y是否大于分支度量差值q,若是,则将带有对应于码字(0,0)的先验信息的前向度量的中间值作为第一个待选前向度量中间值,否则,将带有对应于码字(1,1)的先验信息的前向度量中间值作为第一个待选前向度量中间值。
第4步,使用与本步骤第2步、第3步相同的方法,由带有对应于码字(0,1)的先验信息的前向度量中间值和带有对应于码字(1,0)的先验信息的前向度量中间值,获得第二个待选前向度量中间值。
第5步,取每个前向度量中间值小组中两个待选前向度量中间值中最大的一个,作为该前向度量中间值小组选取的前向度量。
第6步,利用后验信息公式,计算后半轮迭代的后验信息。
所述的后验信息公式如下:
其中,lk表示k时刻的后验信息,k的取值范围为[1,2,…,n],n表示双二元turbo码交织器的交织深度;max(·)表示取最大值操作;s′和s分别表示双二元turbo码编码器状态状态转移图上的两个状态节点;auk和buk分别表示双二元turbo码编码器k时刻两个输入的比特;
第7步,利用外信息公式,计算后半轮迭代的外信息。
所述的外信息计算如下:
其中,
步骤9,获得前半轮迭代的先验信息。
利用双二元turbo码解交织器,对后半轮迭代的外信息进行解交织,获得前半轮迭代的先验信息。
步骤10,判断当前迭代次数是否达到最大迭代次数,若是,则执行步骤11,否则,将当前迭代次数加1后执行步骤4。
步骤11,判决对数似然比信息。
使用双二元turbo码解交织器,对后半轮迭代的后验信息进行解交织,得到对数似然比。
使用双二元turbo码的符号判决规则,对对数似然比进行硬判决,译码结束。
下面结合仿真图对本发明的效果做进一步的描述。
1、仿真实验条件:
本发明的仿真实验软件环境:windows7,matlabr2014a。
本发明的仿真实验采用第二代数字视频广播回传信道系统dvb-rcs2(digitalvideobroadcasting-returnchannelviasatellite2)标准的turbo码,设置译码最大迭代次数为8,并与一种现有技术进行了对比(增强max-log-map译码算法)。
2、仿真内容与仿真结果分析:
本发明的仿真实验是采用本发明的方法和现有技术的增强max-log-map译码算法,分别对1/2码率、408比特码长的双二元turbo码和5/6码率、1504比特码长的双二元turbo码进行译码,根据误比特率和比特信噪比的对应关系绘制图2。图2中纵坐标表示误比特率,横坐标表示比特信噪比,单位是db。图2中以圆形标识的虚线,代表采用本发明方法对1/2码率、408比特码长的双二元turbo码的译码仿真结果曲线。图2中以正方形标识的实线,代表采用现有技术的增强max-log-map译码算法对1/2码率、408比特码长的双二元turbo码的译码仿真结果曲线。图2中以五角星标识的虚线,代表采用本发明方法对5/6码率、1504比特码长的双二元turbo码的译码仿真结果曲线。图2中以菱形标识的实线,代表采用现有技术的增强max-log-map译码算法对5/6码率、1504比特码长的双二元turbo码的译码仿真结果曲线。图2中以上三角标识的实线,代表未编码情况的误码仿真曲线。
从图2的仿真结果可以看出,采用本发明方法与现有技术的增强max-log-map译码算法,对1/2码率、408比特码长的双二元turbo码译码的仿真结果曲线比较接近。采用本发明方法与现有技术的增强max-log-map译码算法,对5/6码率、1504比特码长的双二元turbo码译码的仿真结果曲线比较接近。与未编码的方法相比,本发明方法的所有仿真曲线均发生了左移,说明了本发明方法具有优秀的译码性能。
统计本发明方法和现有技术的增强max-log-map译码算法,获得一次双二元turbo的前向度量计算和后向度量过程中,所使用的加法次数和比较次数,根据统计的加法次数和比较次数绘制表1。
表1译码复杂度表
由表1所示的译码复杂度可以看到,采用现有技术的增强max-log-map译码算法,获得一次双二元turbo的前向度量计算和后向度量过程中,使用加法的总次数为248,使用比较的总次数为96。采用本发明方法,获得一次双二元turbo的前向度量计算和后向度量过程中,使用加法的总次数为134,使用比较的总次数为96。与现有技术的增强max-log-map译码算法相比,在获得一次双二元turbo的前向度量计算和后向度量过程中,本发明方法使用加法次数占现有技术的增强max-log-map译码算法使用加法次数的54%,由此说明本发明具有很低的译码复杂度。