CN109831217B - 一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法 - Google Patents
一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法 Download PDFInfo
- Publication number
- CN109831217B CN109831217B CN201811581671.6A CN201811581671A CN109831217B CN 109831217 B CN109831217 B CN 109831217B CN 201811581671 A CN201811581671 A CN 201811581671A CN 109831217 B CN109831217 B CN 109831217B
- Authority
- CN
- China
- Prior art keywords
- probability
- backward
- system information
- component
- bit
- 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
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法。卷积码状态转移器,用于计算分量编码器的后向转移状态和该后向转移状态下的输出值、前向转移状态和该前向转移状态下的输入值;后向分支转移概率模块,按照倒序输入的系统信息位、校验位,计算出各后向转移状态下系统信息位的后向分支转移概率;后向递推概率模块,计算各后向转移状态下系统信息位的后向递推概率β值;前向分支转移概率模块,计算出各前向分支转移概率;前向递推概率模块,计算前向转移状态下系统信息位的前向递推概率α值;对数似然比模块,计算得到系统信息位被译码为0的概率和系统信息位被译码为1的概率和两者的对数似然比。本发明结构简单,节约硬件资源。
Description
技术领域
本发明涉及一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法,特别是FPGA硬件实现方法,属于通信的信道编解码领域。
背景技术
1993年由Berrou等人提出的Turbo码是现代编码理论发展史上一块重要的里程碑,Turbo码的重要性在与它突破了信道截止速率,达到了接近Shannon限的高性能。Turbo码获得优异性能的根本原因之一是采用了迭代译码,译码器的结构主要由两个分量译码器组成。每个分量译码器均采用软输入输出译码算法(SISO),用以计算译码的对数似然值,而译码的对数似然值由前向递推概率α和后向递推概率β计算,在硬件实现过程中,数据的位宽固定,为了防止计算过程中数据溢出,在每次计算出前向递推概率α和后向递推概率β的值时进行归一化处理,而通常的归一化处理为:每次计算出2l个状态前向递推概率α的值中求出最大值αmax和2l个状态后向递推概率β的值中求出最大值βmax,然后计算出2l个状态前向递推概率α的值减去最大值αmax,计算出2l个状态后向递推概率β的值减去最大值βmax,防止数据的溢出。但实际实现的过程中发现该方法并不十分理想。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法,用于解决传统硬件实现过程中Turbo码译码器译码速度慢,同时存在数据溢出的现象。
本发明的技术解决方案是:一种用于Turbo码的分量译码器,该分量译码器包括:卷积码状态转移器、后向分支转移概率模块、后向递推概率模块、前向分支转移概率模块、前向递推概率模块、对数似然比模块;其中:
卷积码状态转移器,基于Turbo码分量编码器,计算当分量编码器输入为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的后向转移状态和该后向转移状态下的输出值,并发送至后向分支转移概率模块;计算当分量编码器输出为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的前向转移状态和该前向转移状态下的输入值,并发送给前向分支转移概率模块;其中,l为分量编码器的寄存器位数;
后向分支转移概率模块,利用后向转移状态、后向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照倒序输入的系统信息位、校验位,计算出当分量编码器输入为0或1时,各后向转移状态下系统信息位的后向分支转移概率,并发送给后向递推概率模块;
后向递推概率模块,计算分量编码器输入为0或1时,各后向转移状态下系统信息位的后向递推概率β值,并将其发送给对数似然比模块;
前向分支转移概率模块,利用前向转移状态、前向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照顺序输入的系统信息位、校验位,计算出当分量编码器输出为0或1时,前向转移状态下系统信息位的前向分支转移概率,并发送给前向递推概率模块;
前向递推概率模块,计算分量编码器输出为0或1时,前向转移状态下系统信息位的前向递推概率α值,并将其发送给对数似然比模块;
对数似然比模块,根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为0时后向递推概率、分量编码器输出为0时的前向递推概率和分量编码器输出为0时的前向分支转移概率计算得到系统信息位被译码为0的概率;根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为1时后向递推概率、分量编码器输出为1时的前向递推概率和分量编码器输出为1时的前向分支转移概率计算得到系统信息位被译码为1的概率;根据系统信息位被译码为0的概率与系统信息位被译码为1的概率之比计算为对数似然比。
所述前向递推概率α值和后向递推概率β值的数据位宽为固定位宽。
所述前向递推概率模块和后向递推概率模块对前向递推概率α值和后向递推概率β值在输出之前做如下数据防溢出处理:
(1)、将前向递推概率α值或后向递推概率β值的最高位和次高位异或;
(2)、若异或值为1,将前向递推概率α值或后向递推概率β值除以2,然后输出;否则,直接将前向递推概率α值或后向递推概率β值输出。
所述将前向递推概率α值或后向递推概率β值除以2的具体实现为:将前向递推概率α值或后向递推概率β值向右移一位,最高位补符号位。
所述分量译码器采用FPGA实现。
本发明的另一个技术解决方案是:一种Turbo码译码器,包括解复用模块、第一分量译码器、第二分量译码器、交织器、解交织器、硬判决器;
解复用模块,将Turbo码信息流进行串并转换,得到第一系统信息位、第一校验位、第二校验位并存储;第一系统信息位发送至交织器经过交织处理后得到第二系统信息位;
第一分量译码器,获取第一系统信息位、第一校验位和第一先验信息,计算得到第一对数似然比,所述第一对数似然比减去第一系统信息,再减去第一先验信息得到第一外部信息并存储,第一外部信息发送至交织器经过交织处理后得到第二先验信息;
第二分量译码器,获取第二先验信息、第二系统信息位和第二校验位,计算得到第二对数似然比;所述第二对数似然比减去第二系统信息,再减去第二先验信息得到第二外部信息,第二外部信息发送至解交织器经过解交织后得到第一先验信息并存储;
第一分量译码器与第二分量译码器相互传递信息迭代运算,迭代过程中,第一分量译码器和第二分量译码器之间传递的外部信息渐渐趋于稳定,当满足迭代停止条件后,第二解交织器对第二分量译码器输出的第二对数似然比进行解交织并存储,硬判决器对解交织后的第二对数似然比进行判决后便可得到译码,其特征在于所述第一分量译码器和第二分量译码器采用如权利要求1所述的分量译码器。
本发明的又一个技术解决方案是:一种用于Turbo码的分量译码方法,包括如下步骤:
(1)、基于Turbo码分量编码器,计算当分量编码器输入为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的后向转移状态和该后向转移状态下的输出值;计算当分量编码器输出为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的前向转移状态和该前向转移状态下的输入值;其中,l为分量编码器的寄存器位数;
(2)、利用后向转移状态、后向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照倒序输入的系统信息位、校验位,计算出当分量编码器输入为0或1时,各后向转移状态下系统信息位的后向分支转移概率;
(3)、计算分量编码器输入为0或1时,各后向转移状态下系统信息位的后向递推概率β值,并将其发送给对数似然比模块;
(4)、利用前向转移状态、前向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照顺序输入的系统信息位、校验位,计算出当分量编码器输出为0或1时,前向转移状态下系统信息位的前向分支转移概率;
(5)、计算分量编码器输出为0或1时,前向转移状态下系统信息位的前向递推概率α值;
(6)、根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为0时后向递推概率、分量编码器输出为0时的前向递推概率和分量编码器输出为0时的前向分支转移概率计算得到系统信息位被译码为0的概率;
(7)、根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为1时后向递推概率、分量编码器输出为1时的前向递推概率和分量编码器输出为1时的前向分支转移概率计算得到系统信息位被译码为1的概率;
(8)、根据系统信息位被译码为0的概率与系统信息位被译码为1的概率之比计算为对数似然比。
所述步骤(6)之前对前向转移状态下系统信息位的前向递推概率α值和后向转移状态下系统信息位的后向递推概率β值如下截数据防溢出处理:
(1)、将前向递推概率α值或后向递推概率β值的最高位和次高位异或;
(2)、若异或值为1,将前向递推概率α值或后向递推概率β值除以2,然后输出;否则,直接将前向递推概率α值或后向递推概率β值输出。
所述将前向递推概率α值或后向递推概率β值除以2的具体实现为:将前向递推概率α值或后向递推概率β值向右移一位,最高位补符号位。
本发明还提供了一种Turbo码译码设备,该设备采用FPGA实现上述用于Turbo码的分量译码方法。
本发明与现有技术相比的有益效果是:
(1)、本发明提出的一种Turbo码译码器的分量译码器的硬件实现,该分量译码器实现结构简单,可以大大加速Turbo码译码器的译码速度,同时减少硬件资源消耗。
(2)、本发明在Turbo码译码器的分量译码器硬件实现的过程中,传统的方法采用数据归一化的方法,但实际实现中发现不能完全避免数据溢出现象,本文提出一种在固定位宽下,完全防止数据溢出的分量译码器结构,且不影响译码性能。
(3)、传统归一化方法防溢出硬件实现时,采用2×2l个M位减法器,而本发明只需要2×2l个两输入异或门,大大节省了硬件资源。
附图说明
图1是本发明实施例Turbo码的译码器结构示意图;
图2是本发明实施例分量译码器的内部结构示意图;
具体实施方式
下面结合实际一例子对本发明进行详细说明。
如图1所示,本发明提供了一种分量译码器,该分量译码器卷积码状态转移器、后向分支转移概率模块、后向递推概率模块、前向分支转移概率模块、前向递推概率模块、对数似然比模块;其中:
卷积码状态转移器,基于Turbo码分量编码器,计算当分量编码器输入为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的后向转移状态(下一个状态)和该后向转移状态下的输出值,并发送至后向分支转移概率模块;计算当分量编码器输出为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的前向转移状态(前一个状态)和该前向转移状态下的输入值,并发送给前向分支转移概率模块;其中,l为分量编码器的寄存器位数;
后向分支转移概率模块,利用后向转移状态、后向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照倒序输入的系统信息位、校验位,计算出当分量编码器输入为0或1时,各后向转移状态下系统信息位的后向分支转移概率,并发送给后向递推概率模块;若系统信息一帧为n个数据,帧数据的编号从0到n-1,后向是从数据编号n-1开始逆向计算,直到编号0。对于每个数据编号的系统信息位,当分量编码器输入为0时,卷积码状态转移器计算出2l种后向转移状态和2l种分量编码器的输出值;当分量编码器输入为1时,卷积码状态转移器计算出2l种后向转移状态和2l种分量编码器的编码输出值。所以,后向分支转移概率模块将计算出2×2l种后向转移状态下的系统信息位的后向分支转移概率值。
后向递推概率模块,计算分量编码器输入为0或1时,各后向转移状态下系统信息位的后向递推概率β值,并将其发送给对数似然比模块;当分量编码器输入0时,分量编码器的状态有2l种,可以计算出2l种可能状态的后向递推概率β值;当分量编码器输入1时,编码器的状态有2l种,可以计算出2l种可能状态的后向递推概率β值,得到2×2l种可能状态的后向递推概率β值。
前向分支转移概率模块,利用前向转移状态、前向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照顺序输入的系统信息位、校验位,计算出当分量编码器输出为0或1时,前向转移状态下系统信息位的前向分支转移概率,并发送给前向递推概率模块;
前向递推概率模块,计算分量编码器输出为0或1时,前向转移状态下系统信息位的前向递推概率α值,并将其发送给对数似然比模块;当分量编码器输出0时,分量编码器的状态有2l种,可以计算出2l种可能状态的前向递推概率β值;当分量编码器输出1时,编码器的状态有2l种,可以计算出2l种可能状态的前向递推概率α值;因此,共得到2×2l种可能状态的前向递推概率α值。
对数似然比模块,根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为0时后向递推概率、分量编码器输出为0时的前向递推概率和分量编码器输出为0时的前向分支转移概率计算得到系统信息位被译码为0的概率;根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为1时后向递推概率、分量编码器输出为1时的前向递推概率和分量编码器输出为1时的前向分支转移概率计算得到系统信息位被译码为1的概率;根据系统信息位被译码为0的概率与系统信息位被译码为1的概率之比计算为对数似然比。
具体为:将同一个系统信息位、分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为0时后向递推概率、分量编码器输出为0时的前向递推概率和分量编码器输出为0时的前向分支转移概率三者相加,得到该分量编码器内部寄存器2l种可能状态条件该系统信息位被译码输出为0的概率;将同一个系统信息位、分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为1时后向递推概率、分量编码器输出为1时的前向递推概率和分量编码器输出为1时的前向分支转移概率三者相加,得到分量编码器内部寄存器2l种可能状态条件下该系统信息位被译码输出为1的概率;比较分量编码器内部寄存器2l种可能状态条件下该系统信息位被译码输出为0的概率,取最大者作为该系统信息位被译码输出为0的概率;比较分量编码器内部寄存器2l种可能状态条件下该系统信息位被译码输出为1的概率,取最大者作为该系统信息位被译码输出为1的概率;系统信息位被译码为0的概率与系统信息位被译码为1的概率之比即为对数似然比。
在硬件实现时,若两个a比特数据相加,产生a+1的数据,两个a比特的数据相乘,产生2a比特的数据,由于Turbo译码器为迭代结构,以此规律递推,随着迭代次数的增加,内部运算位宽将一直增加,硬件很难实现。
本发明利用FPGA实现,所述前向递推概率α值和后向递推概率β值的数据位宽为M比特的固定位宽,经过加法器等其他运算器,以及计算迭代等原因,易造成数据溢出现象。为了防止数据溢出,需要对内部数据进行防溢出处理,所以,本发明所述前向递推概率模块和后向递推概率模块对前向递推概率α值和后向递推概率β值在输出之前做如下数据防溢出处理:
(1)、将前向递推概率α值或后向递推概率β值的最高位和次高位异或;以后向递推概率β值为例,若β的位宽为M bit,将β[M-1]和β[M-2]异或。
(2)、若异或值为1,说明即将溢出,将前向递推概率α值或后向递推概率β值除以2,然后输出;否则,直接将前向递推概率α值或后向递推概率β值输出。所述将前向递推概率α值或后向递推概率β值除以2的具体实现为:将前向递推概率α值或后向递推概率β值向右移一位,最高位补符号位。同样,以后向递推概率β值为例,即:将β[M-1:0]向右移一位,最高再补上一位符号位。
采取了上述溢出处理之后,本发明只需要考虑完成一次迭代前向递推概率α值或后向递推概率β值的位宽即可,大大地节约了硬件资源。Turbo编码器一般输出一个系统信息位,两个校验位,分别为1bit,但为了提高Turbo码译码性能,一般将1bit的数用更高bit的数据表示,例如1bit可以用8bit数值表示,1bit的1表示为8’h7F,1bit的0表示8’h00。所以,量化后的系统信息位设位宽为N bit,通过该系统信息位等其他信号计算其前向递推概率α值或后向递推概率β值过程中,其间经过4个加法器,所以前向递推概率α值或后向递推概率β值的位宽设为M=N+4bit。如图2所示,本发明还提供了一种Turbo译码器,该Turbo译码器包括解复用模块、第一分量译码器、第二分量译码器、交织器、解交织器、硬判决器;
解复用模块,将Turbo码信息流进行串并转换,得到第一系统信息位、第一校验位、第二校验位并存储;第一系统信息位发送至交织器经过交织处理后得到第二系统信息位;
第一分量译码器,获取第一系统信息位、第一校验位和第一先验信息,计算得到第一对数似然比,所述第一对数似然比减去第一系统信息,再减去第一先验信息得到第一外部信息并存储,第一外部信息发送至交织器经过交织处理后得到第二先验信息;
第二分量译码器,获取第二先验信息、第二系统信息位和第二校验位,计算得到第二对数似然比;所述第二对数似然比减去第二系统信息,再减去第二先验信息得到第二外部信息,第二外部信息发送至解交织器经过解交织后得到第一先验信息并存储;
第一分量译码器与第二分量译码器相互传递信息迭代运算,迭代过程中,第一分量译码器和第二分量译码器之间传递的外部信息渐渐趋于稳定,当满足迭代停止条件后,第二解交织器对第二分量译码器输出的第二对数似然比进行解交织并存储,硬判决器对解交织后的第二对数似然比进行判决后便可得到译码,其特征在于所述第一分量译码器和第二分量译码器采用如权利要求1所述的分量译码器。
本发明还提供了一种用于Turbo码的分量译码方法,该方法包括如下步骤:
(1)、基于Turbo码分量编码器,计算当分量编码器输入为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的后向转移状态和该后向转移状态下的输出值;计算当分量编码器输出为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的前向转移状态和该前向转移状态下的输入值;其中,l为分量编码器的寄存器位数;
(2)、利用后向转移状态、后向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照倒序输入的系统信息位、校验位,计算出当分量编码器输入为0或1时,各后向转移状态下系统信息位的后向分支转移概率;
(3)、计算分量编码器输入为0或1时,各后向转移状态下系统信息位的后向递推概率β值,并将其发送给对数似然比模块;
(4)、利用前向转移状态、前向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照顺序输入的系统信息位、校验位,计算出当分量编码器输出为0或1时,前向转移状态下系统信息位的前向分支转移概率;
(5)、计算分量编码器输出为0或1时,前向转移状态下系统信息位的前向递推概率α值;
(6)、根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为0时后向递推概率、分量编码器输出为0时的前向递推概率和分量编码器输出为0时的前向分支转移概率计算得到系统信息位被译码为0的概率;
(7)、根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为1时后向递推概率、分量编码器输出为1时的前向递推概率和分量编码器输出为1时的前向分支转移概率计算得到系统信息位被译码为1的概率;
(8)、根据系统信息位被译码为0的概率与系统信息位被译码为1的概率之比计算为对数似然比。
作为优选方案,所述步骤(6)之前对前向转移状态下系统信息位的前向递推概率α值和后向转移状态下系统信息位的后向递推概率β值如下截数据防溢出处理:
(5.1)、将前向递推概率α值或后向递推概率β值的最高位和次高位异或;
(5.2)、若异或值为1,将前向递推概率α值或后向递推概率β值除以2,然后输出;否则,直接将前向递推概率α值或后向递推概率β值输出。
所述将前向递推概率α值或后向递推概率β值除以2的具体实现为:将前向递推概率α值或后向递推概率β值向右移一位,最高位补符号位。
实施例:
以帧长为512,码率为1/3译码过程为例说明,其中设置前向递推概率α和后向递推概率β的位宽为10bit,编码器的4位寄存器,状态数24=16。
(1)先计算后向分支转移概率,当一帧的系统信息位数据为512个数据,帧中每个数的编号从0到511,后向是从编号511开始逆向计算,直到编号0,每个系统信息位数据的后向分支转移概率可能有32种情况。当前计算编号511,当分量编码器的输入0时,分量编码器的状态有24=16种,分别为γ0_b_0{511}、γ0_b_1{511}、γ0_b_2{511}、γ0_b_3{511}、γ0_b_4{511}、γ0_b_5{511}、γ0_b_6{511}、γ0_b_7{511}、γ0_b_8{511}、γ0_b_9{511}、γ0_b_10{511}、γ0_b_11{511}、γ0_b_12{511}、γ0_b_13{511}、γ0_b_14{511}、γ0_b_15{511};当分量编码器的输入1时,分量编码器的状态有24=16种,分别为γ1_b_0{511}、γ1_b_1{511}、γ1_b_2{511}、γ1_b_3{511}、γ1_b_4{511}、γ1_b_5{511}、γ1_b_6{511}、γ1_b_7{511}、γ1_b_8{511}、γ1_b_9{511}、γ1_b_10{511}、γ1_b_11{511}、γ1_b_12{511}、γ1_b_13{511}、γ1_b_14{511}、γ1_b_15{511},其中{511}为系统信息位数据编号511;
(2)根据每个系统信息位数据的分支转移概率可能的32种情况,计算出后向递推概率值β,当分量编码器输入0时,分量编码器的状态有24=16种,分别为β_0_0{511}、β_0_1{511}、β_0_2{511}、β_0_3{511}、β_0_4{511}、β_0_5{511}、β_0_6{511}、β_0_7{511}、β_0_8{511}、β_0_9{511}、β_0_10{511}、β_0_11{511}、β_0_12{511}、β_0_13{511}、β_0_14{511}、β_0_15{511};当分量编码器输入1时,分量编码器的状态有24=16种,分别为β_1_0{511}、β_1_1{511}、β_1_2{511}、β_1_3{511}、β_1_4{511}、β_1_5{511}、β_1_6{511}、β_1_7{511}、β_1_8{511}、β_1_9{511}、β_1_10{511}、β_1_11{511}、β_1_12{511}、β_1_13{511}、β_1_14{511}、β_1_15{511},其中{511}为系统信息位数据编号511;
(3)若所有的后向递推概率β值的位宽为10bit,取β_0_0为例说明,其他的β的值采取同样的处理方式,将β_0_0{511}[9]和β_0_0{511}[8]异或,如果异或值1,说明即将溢出,将β_0_0{511}[9:0]向右移一位,变为βf_0_0{511}[9:0]={β_0_0{511}[9],β_0_0{511}[9:1]},如果异或值0,保持值不变,为βf_0_0{511}[9:0]=β_0_0{511}[9:0],后向递推概率值β的其他状态的值利用同样的防溢出处理方式,防溢出处理后的值分别为βf_0_0{0}、βf_0_1{0}、βf_0_2{0}、βf_0_3{0}、βf_0_4{0}、βf_0_5{0}、βf_0_6{0}、βf_0_7{0}、βf_0_8{0}、βf_0_9{0}、βf_0_10{0、βf_0_11{0}}、βf_0_12{0}、βf_0_13{0}、βf_0_14{0}、βf_0_15{0}、βf_1_0{0}、βf_1_1{0}、βf_1_2{0}、βf_1_3{0}、βf_1_4{0}、βf_1_5{0}、βf_1_6{0}、βf_1_7{0}、βf_1_8{0}、βf_1_9{0}、βf_1_10{0}、βf_1_11{0}、βf_1_12{0}、βf_1_13{0}、βf_1_14{0}、βf_1_15{0}。其中{0}为系统信息位数据编号0;
(4)β后向递推概率防溢出方式处理完的32个状态数据分别存在32个SRAM中;
(5)然后重复1到4步骤,从系统信息位数据的编号从510计算到0;
(6)再计算后前分支转移概率,当一帧的系统信息位数据为512个数据,帧中每个数的编号从0到511,前向是从编号0开始顺序计算,直到编号511,每系统信息位数据的前向分支转移概率可能有32种情况。当前计算编号0,当分量编码器输出0时,分量编码器的状态有24=16种,分别为γ0_a_0{0}、γ0_a_1{0}、γ0_a_2{0}、γ0_a_3{0}、γ0_a_4{0}、γ0_a_5{0}、γ0_a_6{0}、γ0_a_7{0}、γ0_a_8{0}、γ0_a_9{0}、γ0_a_10{0}、γ0_a_11{0}、γ0_a_12{0}、γ0_a_13{0}、γ0_a_14{0}、γ0_a_15{0};当分量编码器输出1时,分量编码器的状态有24=16种,分别为γ1_a_0{0}、γ1_a_1{0}、γ1_a_2{0}、γ1_a_3{0}、γ1_a_4{0}、γ1_a_5{0}、γ1_a_6{0}、γ1_a_7{0}、γ1_a_8{0}、γ1_a_9{0}、γ1_a_10{0}、γ1_a_11{0}、γ1_a_12{0}、γ1_a_13{0}、γ1_a_14{0}、γ1_a_15{0},其中{0}为系统信息位数据编号0;
(7)根据每系统信息位数据的分支转移概率可能的32种情况,计算出α前向递推概率,当分量编码器输出0时,分量编码器的状态有24=16种,分别为α_0_0{0}、α_0_1{0}、α_0_2{0}、α_0_3{0}、α_0_4{0}、α_0_5{0}、α_0_6{0}、α_0_7{0}、α_0_8{0}、α_0_9{0}、α_0_10{0}、α_0_11{0}、α_0_12{0}、α_0_13{0}、α_0_14{0}、α_0_15{0};当分量编码器输出1时,分量编码器的状态有24=16种,分别为α_1_0{0}、α_1_1{0}、α_1_2{0}、α_1_3{0}、α_1_4{0}、α_1_5{0}、α_1_6{0}、α_1_7{0}、α_1_8{0}、α_1_9{0}、α_1_10{0}、α_1_11{0}、α_1_12{0}、α_1_13{0}、α_1_14{0}、α_1_15{0},其中{0}为系统信息位数据编号0;
(8)若所有的前向递推概率α值的位宽为10bit,取α_0_0{0}为例说明,其他的α的值采取同样的处理方式,将α_0_0{0}[9]和α_0_0{0}[8]异或,如果异或值1,说明即将溢出,将α_0_0{0}[9:0]向右移一位,变为αf_0_0{0}[9:0]={α_0_0{0}[9],α_0_0{0}[9:1]},如果异或值0,保持值不变,为αf_0_0{0}[9:0]=α_0_0{0}[9:0],前向递推概率值α的其他状态的值利用同样的防溢出处理方式,防溢出处理后的值分别为αf_0_0{0}、αf_0_1{0}、αf_0_2{0}、αf_0_3{0}、αf_0_4{0}、αf_0_5{0}、αf_0_6{0}、αf_0_7{0}、αf_0_8{0}、αf_0_9{0}、αf_0_10{0}、αf_0_11{0}、αf_0_12{0}、αf_0_13{0}、αf_0_14{0}、αf_0_15{0}、αf_1_0{0}、αf_1_1{0}、αf_1_2{0}、αf_1_3{0}、αf_1_4{0}、αf_1_5{0}、αf_1_6{0}、αf_1_7{0}、αf_1_8{0}、αf_1_9{0}、αf_1_10{0、αf_1_11{0}}、αf_1_12{0}、αf_1_13{0}、αf_1_14{0}、αf_1_15{0}。其中{0}为系统信息位数据编号0;
(9){0}系统信息位被译码为0的概率计算如下:
temp_0_0{0}=αf_0_0{0}+βf_0_0{0}+γ0_a_0{0},temp_0_1{0}=αf_0_1{0}+βf_0_1{0}+γ0_a_1{0}、temp_0_2{0}=αf_0_2{0}+βf_0_2{0}+γ0_a_2{0},同理可得,
temp_0_3{0}、temp_0_4{0}、temp_0_5{0}、temp_0_6{0}、temp_0_7{0}、temp_0_8{0}、temp_0_9{0}、temp_0_10{0}、temp_0_11{0}、temp_0_11{0}、temp_0_12{0}、temp_0_13{0}、temp_0_14{0}、temp_0_15{0},然后从这16个值中找出最大值max0{0},max0{0}为{0}系统信息位被译码为0的概率值;{0}系统信息位被译码为1的概率计算如下:
temp_1_1{0}=αf_1_1{0}+βf_1{0}+γ1_a_1{0}、temp_1_2{0}=αf_1_2{0}+βf_2{0}+γ1_a_2{0},同理可得,temp_1_3{0}、temp_1_4{0}、temp_1_5{0}、temp_1_6{0}、temp_1_7{0}、temp_1_8{0}、temp_1_9{0}、temp_1_10{0}、temp_1_11{0}、temp_1_12{0}、temp_1_13{0}、temp_1_14{0}、temp_1_15{0},然后从这16个值中找到最大值max1{0},max1{0}为{0}系统信息位被译码为1的概率值;
(10)由于对对数似然比求log值,所以max0{0}减去max1{0}得到对数似然比信息LLR{0},其中{0}为系统信息位数据编号0。
(11)重复6到10步,从系统信息位数据的编号从1计算到511。
上述实例只是用于具体说明本发明的Turbo码译码器的分量译码器硬件实现的实际方法,其中的具体数据只是为了方便说明而随意设置,不能用于限制本发明的保护范围,即只要按本权利要求所述的步骤,其中数据的任意变化均属于本发明的保护范围。
Claims (8)
1.一种用于Turbo码的分量译码器,其特征在于包括:卷积码状态转移器、后向分支转移概率模块、后向递推概率模块、前向分支转移概率模块、前向递推概率模块、对数似然比模块;其中:
卷积码状态转移器,基于Turbo码分量编码器,计算当分量编码器输入为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的后向转移状态和该后向转移状态下的输出值,并发送至后向分支转移概率模块;计算当分量编码器输出为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的前向转移状态和该前向转移状态下的输入值,并发送给前向分支转移概率模块;其中,l为分量编码器的寄存器位数;
后向分支转移概率模块,利用后向转移状态、后向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照倒序输入的系统信息位、校验位,计算出当分量编码器输入为0或1时,各后向转移状态下系统信息位的后向分支转移概率,并发送给后向递推概率模块;
后向递推概率模块,计算分量编码器输入为0或1时,各后向转移状态下系统信息位的后向递推概率β值,并将其发送给对数似然比模块;
前向分支转移概率模块,利用前向转移状态、前向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照顺序输入的系统信息位、校验位,计算出当分量编码器输出为0或1时,前向转移状态下系统信息位的前向分支转移概率,并发送给前向递推概率模块;
前向递推概率模块,计算分量编码器输出为0或1时,前向转移状态下系统信息位的前向递推概率α值,并将其发送给对数似然比模块;
对数似然比模块,根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为0时后向递推概率、分量编码器输出为0时的前向递推概率和分量编码器输出为0时的前向分支转移概率计算得到系统信息位被译码为0的概率;根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为1时后向递推概率、分量编码器输出为1时的前向递推概率和分量编码器输出为1时的前向分支转移概率计算得到系统信息位被译码为1的概率;根据系统信息位被译码为0的概率与系统信息位被译码为1的概率之比计算为对数似然比;
所述前向递推概率模块和后向递推概率模块对前向递推概率α值和后向递推概率β值在输出之前做如下数据防溢出处理:
(1)、将前向递推概率α值或后向递推概率β值的最高位和次高位异或;
(2)、若异或值为1,将前向递推概率α值或后向递推概率β值除以2,然后输出;否则,直接将前向递推概率α值或后向递推概率β值输出。
2.根据权利要求1所述的一种用于Turbo码的分量译码器,其特征在于所述前向递推概率α值和后向递推概率β值的数据位宽为固定位宽。
3.根据权利要求1所述的一种用于Turbo码的分量译码器,其特征在于所述将前向递推概率α值或后向递推概率β值除以2的具体实现为:将前向递推概率α值或后向递推概率β值向右移一位,最高位补符号位。
4.根据权利要求1所述的一种用于Turbo码的分量译码器,其特征在于采用FPGA实现。
5.根据权利要求1~4任一项所述的Turbo码的分量译码器,其特征在于包括解复用模块、第一分量译码器、第二分量译码器、交织器、解交织器、硬判决器;
解复用模块,将Turbo码信息流进行串并转换,得到第一系统信息位、第一校验位、第二校验位并存储;第一系统信息位发送至交织器经过交织处理后得到第二系统信息位;
第一分量译码器,获取第一系统信息位、第一校验位和第一先验信息,计算得到第一对数似然比,所述第一对数似然比减去第一系统信息,再减去第一先验信息得到第一外部信息并存储,第一外部信息发送至交织器经过交织处理后得到第二先验信息;
第二分量译码器,获取第二先验信息、第二系统信息位和第二校验位,计算得到第二对数似然比;所述第二对数似然比减去第二系统信息,再减去第二先验信息得到第二外部信息,第二外部信息发送至解交织器经过解交织后得到第一先验信息并存储;
第一分量译码器与第二分量译码器相互传递信息迭代运算,迭代过程中,第一分量译码器和第二分量译码器之间传递的外部信息渐渐趋于稳定,当满足迭代停止条件后,第二解交织器对第二分量译码器输出的第二对数似然比进行解交织并存储,硬判决器对解交织后的第二对数似然比进行判决后便可得到译码,其特征在于所述第一分量译码器和第二分量译码器采用如权利要求1所述的分量译码器。
6.一种用于Turbo码的分量译码方法,其特征在于包括如下步骤:
(1)、基于Turbo码分量编码器,计算当分量编码器输入为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的后向转移状态和该后向转移状态下的输出值;计算当分量编码器输出为0或1时,其内部寄存器对应的2l种可能状态条件下,分量编码器的前向转移状态和该前向转移状态下的输入值;其中,l为分量编码器的寄存器位数;
(2)、利用后向转移状态、后向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照倒序输入的系统信息位、校验位,计算出当分量编码器输入为0或1时,各后向转移状态下系统信息位的后向分支转移概率;
(3)、计算分量编码器输入为0或1时,各后向转移状态下系统信息位的后向递推概率β值,并将其发送给对数似然比模块;
(4)、利用前向转移状态、前向转移状态下的输出值、上一次迭代计算出系统信息位的先验信息、按照顺序输入的系统信息位、校验位,计算出当分量编码器输出为0或1时,前向转移状态下系统信息位的前向分支转移概率;
(5)、计算分量编码器输出为0或1时,前向转移状态下系统信息位的前向递推概率α值;
(6)、根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为0时后向递推概率、分量编码器输出为0时的前向递推概率和分量编码器输出为0时的前向分支转移概率计算得到系统信息位被译码为0的概率;
(7)、根据分量编码器内部寄存器2l种可能状态条件下,分量编码器输入为1时后向递推概率、分量编码器输出为1时的前向递推概率和分量编码器输出为1时的前向分支转移概率计算得到系统信息位被译码为1的概率;
(8)、根据系统信息位被译码为0的概率与系统信息位被译码为1的概率之比计算为对数似然比;
所述步骤(6)之前对前向转移状态下系统信息位的前向递推概率α值和后向转移状态下系统信息位的后向递推概率β值如下截数据防溢出处理:
(1)、将前向递推概率α值或后向递推概率β值的最高位和次高位异或;
(2)、若异或值为1,将前向递推概率α值或后向递推概率β值除以2,然后输出;否则,直接将前向递推概率α值或后向递推概率β值输出。
7.根据权利要求6所述的一种用于Turbo码的分量译码方法,其特征在于所述将前向递推概率α值或后向递推概率β值除以2的具体实现为:将前向递推概率α值或后向递推概率β值向右移一位,最高位补符号位。
8.一种Turbo码译码设备,其特征在于采用FPGA实现如权利要求6~7任一项所述的用于Turbo码的分量译码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811581671.6A CN109831217B (zh) | 2018-12-24 | 2018-12-24 | 一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811581671.6A CN109831217B (zh) | 2018-12-24 | 2018-12-24 | 一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109831217A CN109831217A (zh) | 2019-05-31 |
CN109831217B true CN109831217B (zh) | 2023-04-14 |
Family
ID=66860650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811581671.6A Active CN109831217B (zh) | 2018-12-24 | 2018-12-24 | 一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109831217B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111130570A (zh) * | 2019-12-23 | 2020-05-08 | 东方红卫星移动通信有限公司 | 一种并行Turbo译码算法在LEO中应用的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1841941A (zh) * | 2005-03-29 | 2006-10-04 | 松下电器产业株式会社 | 最大后验概率译码方法和装置 |
CN102111162A (zh) * | 2009-12-28 | 2011-06-29 | 重庆重邮信科通信技术有限公司 | Turbo 分量译码方法、分量译码器、支路计算器及Turbo 译码器 |
CN102594507A (zh) * | 2012-02-24 | 2012-07-18 | 缪蔚 | 一种软件无线电系统中的高速并行Turbo译码方法及系统 |
CN104092470A (zh) * | 2014-07-25 | 2014-10-08 | 中国人民解放军国防科学技术大学 | 一种Turbo码译码装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE602004014092D1 (de) * | 2004-01-19 | 2008-07-10 | St Microelectronics Nv | Parallele Verschachtelung für Turbodekodierung mit hohem Durchsatz |
-
2018
- 2018-12-24 CN CN201811581671.6A patent/CN109831217B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1841941A (zh) * | 2005-03-29 | 2006-10-04 | 松下电器产业株式会社 | 最大后验概率译码方法和装置 |
CN102111162A (zh) * | 2009-12-28 | 2011-06-29 | 重庆重邮信科通信技术有限公司 | Turbo 分量译码方法、分量译码器、支路计算器及Turbo 译码器 |
CN102594507A (zh) * | 2012-02-24 | 2012-07-18 | 缪蔚 | 一种软件无线电系统中的高速并行Turbo译码方法及系统 |
CN104092470A (zh) * | 2014-07-25 | 2014-10-08 | 中国人民解放军国防科学技术大学 | 一种Turbo码译码装置及方法 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的Turbo码译码器的设计;韦照川等;《电视技术》;20121202;第36卷(第23期);第116-119页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109831217A (zh) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100356324B1 (ko) | 채널 디코더 및 채널 디코딩 방법 | |
US6606724B1 (en) | Method and apparatus for decoding of a serially concatenated block and convolutional code | |
JP2008219892A (ja) | データを符号化および復号化する方法および装置 | |
US20010010089A1 (en) | Digital transmission method of the error-correcting coding type | |
CA2338919A1 (en) | A simple implementation of turbo decoder | |
CN105634508A (zh) | 一种低复杂度近性能限的Turbo译码器的实现方法 | |
KR101051933B1 (ko) | 트렐리스의 버터플라이 구조를 이용한 맵 디코딩을 위한메트릭 계산 | |
CN109831217B (zh) | 一种Turbo码译码器、用于Turbo码的分量译码器及分量译码方法 | |
US8983008B2 (en) | Methods and apparatus for tail termination of turbo decoding | |
Liu et al. | Joint source and channel decoding for variable length encoded turbo codes | |
Devi et al. | Performance analysis of sub-interleaver based turbo codes | |
KR100738250B1 (ko) | Llr의 부호 비교를 이용한 터보 복호기의 반복복호제어장치 및 방법 | |
CN114826284A (zh) | 基于扩展Turbo码和连续相位调制的迭代译码方法 | |
Andersen | 'Turbo'coding for deep space applications | |
KR20090091254A (ko) | 터보 디코더 장치 및 방법 | |
CN1133276C (zh) | 一种高速并行级联码的译码方法及译码器 | |
EP1094612B1 (en) | SOVA Turbo decoder with decreased normalisation complexity | |
Sklar | Turbo code concepts made easy, or how I learned to concatenate and reiterate | |
Kim et al. | A simple efficient stopping criterion for turbo decoder | |
CN113258937B (zh) | 分量译码器、外信息存储单元以及Turbo码译码器 | |
KR100776910B1 (ko) | 비이진부호에서의 scr/sdr을 이용한 반복 복호 장치및 그 동작 방법 | |
US20160204803A1 (en) | Decoding method for convolutionally coded signal | |
CN115529048A (zh) | 一种基于线性逼近与滑动窗口的Turbo码译码方法 | |
Wan et al. | A novel parallel turbo coding technique based on frame split and trellis terminating | |
CN1571316A (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 |