CN105515591B - 一种Turbo码译码***及方法 - Google Patents
一种Turbo码译码***及方法 Download PDFInfo
- Publication number
- CN105515591B CN105515591B CN201410490810.XA CN201410490810A CN105515591B CN 105515591 B CN105515591 B CN 105515591B CN 201410490810 A CN201410490810 A CN 201410490810A CN 105515591 B CN105515591 B CN 105515591B
- Authority
- CN
- China
- Prior art keywords
- decoding
- unit
- information
- interleaving address
- siso
- 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
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明提供一种Turbo码译码***及方法,所述译码***包括SISO单元、交织单元和门控单元。其中,所述门控单元控制所述SISO单元在第一时段对分量码1进行译码并且在第二时段对分量码2进行译码,以及控制所述交织单元在第一时段计算并存储交织地址。本发明提供的Turbo码译码***及方法可降低译码的功耗和复杂度。
Description
技术领域
本发明涉及信道译码技术,具体涉及一种Turbo码译码***及方法。
背景技术
Turbo码是两个简单分量码通过伪随机交织器并行级联构造的具有伪随机特性的长码,Turbo码不仅在信道信噪比很低的高噪声环境下性能优越,而且还具有很强的抗衰落及抗干扰能力,因此它在信道条件差的移动通信***中有很大的应用潜力。目前,Turbo码的研究主要集中在以下几个方面:(1)编译码技术,编码方面主要包括对并行级联编码与串行级联编码的分析,以及对混合级联方式的研究;译码方面主要包括迭代译码、译码算法(如最大后验概率算法MAP、修正的MAP算法Max-Log-MAP等)的研究;(2)Turbo码的设计和分析,主要包括交织器的设计、码的级联方式、译码算法、Turbo码的性能分析等。
在译码方面,目前现有的Turbo码译码***和方法虽然在译码性能上有了很大的提高,但却无法满足某些移动通信中低复杂度、低功耗的要求。
发明内容
根据本发明的一个方面,提供一种Turbo码译码***,包括:
SISO单元,用于对分量码1或分量码2进行译码;
交织单元,与所述SISO单元相连,用于生成并存储交织地址;
门控单元,与所述SISO单元和所述交织单元相连,用于控制所述SISO单元和所述交织单元的运行;
其中,所述门控单元控制所述SISO单元在第一时段对分量码1进行译码并且在第二时段对分量码2进行译码,以及控制所述交织单元在第一时段计算并存储交织地址;其中,分量码1由***信息1和校验信息1组成,分量码2由***信息2和校验信息2组成,并且***信息2是利用所述交织单元生成的交织地址对***信息1进行交织得到的。
上述***中,所述门控单元用于在译码开始时开启所述交织单元的时钟和所述SISO单元的时钟;在所述SISO单元完成对分量码1的译码且所述交织单元未完成交织地址的生成和存储时,关闭所述SISO单元的时钟;在所述交织单元完成交织地址的生成和存储时关闭所述交织单元的时钟;在译码未完成、所述SISO单元的时钟关闭并且所述交织单元完成交织地址的生成和存储时,开启所述SISO单元的时钟以使所述SISO单元开始对分量码2的译码;以及,在译码完成时关闭所述SISO单元的时钟。
上述***中,所述交织单元包括两个交织存储器,一个交织存储器用于存储N/2长度的第一交织地址,另一个交织存储器用于存储N-N/2长度的第二交织地址,N为译码数据的总长度。
上述***还包括判定单元,用于判定是结束译码还是由所述SISO单元重新进行译码。
上述***中,所述判定单元用于根据当前迭代次数来判定是否结束译码;根据CRC校验结果来判定是否结束译码;以及,根据当前得到的硬比特数据与上次迭代得到的硬比特数据的差异来判定是否结束译码。
上述***还包括修正单元,用于对译码时产生的先验信息进行修正。
上述***还包括微控制器,用于接收译码参数并且采用任务列表的方式存储该译码参数;其中,所述SISO单元、交织单元和门控单元根据该译码参数进行译码操作。
根据本发明的一个方面,还提供一种Turbo码译码方法,包括:
步骤1)、对分量码1进行译码,同时生成并存储交织地址;其中,分量码1由***信息1和校验信息1组成;
步骤2)、对分量码2进行译码得到软信息;其中,分量码2由***信息2和校验信息2组成,并且***信息2是利用所述交织地址对***信息1进行交织得到的;
步骤3)、对所述软信息进行硬判决并且进行解交织得到硬比特数据,根据迭代次数或者得到的硬比特数据进行判定,基于判定结果选择结束或者重新执行步骤1)至3)。
上述方法中,在步骤1)中,利用先验信息2对分量码1进行译码,产生外信息1;其中,在首次执行步骤1)时,所述先验信息2为0;
上述方法中,步骤2)包括:
步骤21)、利用先验信息1对分量码2进行译码,产生外信息2和软信息;其中,先验信息1是利用所述交织地址对外信息1进行交织得到的;以及
步骤22)、利用所述交织地址对外信息2进行解交织,得到先验信息2。
上述方法中,在步骤1)和步骤2)中,采用滑动窗结构输入译码数据并进行译码;其中,所述译码数据包括分量码1或者分量码2。
上述方法中,在步骤1)和步骤2)中,采用两个滑动窗输入译码数据,其中,滑动窗1输入N/2的译码数据,滑动窗2输入N-N/2的译码数据,N为译码数据的总长度,并且译码包括以下步骤:
步骤A)、计算滑动窗1输入数据的先验概率;
步骤B)、计算滑动窗2输入数据的先验概率;同时,计算滑动窗1输入数据的后验概率和转移概率;
步骤C)、计算滑动窗2输入数据的后验概率和转移概率;从而得到外信息1或者外信息2。
上述方法中,在步骤1)中,按照滑动窗口结构,将交织地址分为第一交织地址和第二交织地址并分别进行存储。
上述方法中,在步骤2)中,根据以下步骤利用交织地址对外信息1和***信息1进行交织:
步骤a)、滑动窗1以第一交织地址读取N/2的***信息1,得到N/2的***信息2;其中,N为译码数据的总长度;
步骤b)、滑动窗2以第二交织地址读取N-N/2的***信息1,得到N-N/2的***信息2;同时,滑动窗1以第一交织地址读取N/2的外信息1,得到N/2的先验信息1;
步骤c)、滑动窗2以第二交织地址读取N-N/2的外信息1,得到N-N/2的先验信息1。
上述方法还包括:在得到先验信息1或先验信息2后,对所述先验信息1或先验信息2进行修正。
上述方法中,在步骤3)中,根据以下步骤进行判定并基于判定结果进行相应处理:
步骤31)、判断当前迭代次数是否大于或等于预定阀值,如果大于或等于该预定阈值则输出译码结果并结束;否则执行步骤32);
步骤32)、进行CRC校验,如果CRC校验正确则输出译码结果并结束,否则执行步骤33);
步骤33)、将当前得到的硬比特数据与上一次迭代得到的硬比特数据进行比较,如果两个硬比特数据之间的差异小于预定门限值,则输出译码结果并结束;否则重新执行步骤1)至步骤3)。
本发明提供的Turbo码译码***及方法与现有技术相比,取得了以下有益效果:
1、采用单个SISO单元,并且采用门控单元对***进行控制,降低了***功耗和复杂度;
2、采用独立于译码迭代的交织单元(半静态存储交织器结构),使每一次译码只需要执行一次交织算法,并且交织单元与SISO单元同时启动,提高了***单元间的并行度,增加了***的灵活性;
3、在译码过程中采用修正单元对数据进行修正,减小了性能损失;
4、利用微控制器对***进行配置,增强了译码***的灵活性;
5、在输入译码数据时采用滑动窗结构,提高了***的译码效率;
6、对译码结果进行判定,当译码结果达到收敛时,提前停止***的译码迭代操作,从而进一步降低了***功耗。
附图说明
图1是本发明的一个实施例提供的Turbo码译码***的结构示意图;
图2是本发明的另一个实施例提供的Turbo码译码***的结构示意图;
图3是本发明的一个实施例中的Turbo码译码***配置结构示意图;
图4是本发明的一个实施例提供的Turbo码译码方法的数据流向图;
图5和图6是本发明的一个实施例中的数据交织与解交织过程示意图;
图7是本发明的一个实施例中的译码结果判定方法流程图;
图8是本发明的一个实施例中的计算概率信息的时序图。
具体实施方式
下面结合附图和具体实施方式对本发明进行说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
根据本发明的一个实施例,提供一种Turbo码译码***。该Turbo码译码***用单个SISO单元(即软入/软出译码单元)取代现有Turbo码译码***的多个SISO单元来进行译码,并且利用门控单元对SISO单元的工作状态进行控制,使其能够在不同的时间段分别处理不同的数据。
图1示出了本实施例提供的Turbo码译码***的结构示意图,如图1所示,该***包括SISO单元、交织单元、门控单元以及硬判决单元和判定单元。在该Turbo码译码***中,门控单元与交织单元和SISO单元相连,硬判决单元与交织单元和SISO单元相连,并且判定单元与交织单元相连。该***在接收到从总线传输过来的译码任务时,通过门控单元的控制,对译码数据进行迭代译码、交织、解交织、硬判决、判定等操作,最后输出译码结果。下面将分别描述这些单元。
一、SISO单元
概括而言,SISO单元用于在第一时段对分量码1进行译码,并且在第二时段对分量码2进行译码。
分量码1由***信息1和校验信息1组成,在第一时段内,SISO单元根据译码算法,利用先验信息2对分量码1进行译码(即第一次半迭代译码),从而产生外信息1。需要说明的是,由于译码是一个迭代的过程,这里SISO单元对分量码1进行译码时需要用到的先验信息2是由后续操作产生的,因此在首次执行第一次半迭代译码时,先验信息2可以设置为0。
当第一次半迭代译码完成并且交织地址计算和存储(将在后文中描述)完成时,进入第二时段。其中,可利用***信息1根据交织单元计算出的交织地址产生***信息2,由***信息2与校验信息2组成分量码2,并且利用外信息1根据交织单元计算出的交织地址产生先验信息1。SISO单元根据译码算法,可利用先验信息1对分量码2进行译码(即第二次半迭代译码),从而产生外信息2和软信息。对外信息2进行解交织可得到先验信息2,如上文所述,该先验信息2用于下一个第一时段的半迭代译码。
二、交织单元
概括而言,交织单元用于计算并存储交织地址。
如上文所述,当SISO单元在第一时段内对分量码1进行译码时,交织单元在该时段内计算并存储交织地址。这样做的原因在于:在整个译码过程中,需要对***信息1和SISO单元产生的数据进行交织或解交织,所以可以在此时(即第一时段)计算交织地址来为交织和解交织操作做基础,交织地址的长度与交织数据的长度相等。如本领域技术人员所公知的,计算交织地址的过程是按照交织算法将一段顺序的地址打乱,然后将乱序的地址顺序保存。当数据需要进行交织时,只需根据乱序的地址读取数据即可完成数据的映射,从而达到交织或解交织的目的。
在一个实施例中,交织单元可包括交织地址计算器和两个交织地址存储器(称作交织地址存储器1和交织地址存储器2)。其中,交织地址计算器用于计算交织地址,交织地址存储器用于存储交织地址。在存储了交织地址后,SISO单元可根据交织地址读取数据,得到交织后的数据;SISO单元也可以根据逆序的交织地址读取数据,得到解交织后的数据。具体地,在交织地址存储器1中存储N/2长度的交织地址(称作第1交织地址),交织地址存储器2中存储N-N/2长度的交织地址(称作第2交织地址),其中N为译码数据的总长度。这种结构可以使***信息和外信息同时进行交织,例如,当利用一个交织地址存储器中的交织地址对N/2的***信息进行交织的同时,可以同时利用另一个交织地址存储器中的交织地址对N/2的外信息进行交织。
这种结构的交织单元在保证译码效率的同时能够大大降低译码功耗,并且其结构修改方便。例如,在高速通信***中,很容易将代码升级为并行化逻辑,只要协议定义的交织算法不存在存储地址的竞争,采取这种分块存储的方式就能完成交织单元的并行化。即总存储容量不变,按照并行化结构和滑动窗结构选择交织存储器的个数,处理好并行结构存储***的地址映射即可,无需进行其他逻辑修改和时序上的改动。由于这种结构的独立性,也可以很容易地实现任意一种交织算法来计算交织地址。
三、门控单元
门控单元用于控制SISO单元在第一时段对分量码1进行译码,并且控制交织单元在第一时段计算并存储交织地址;门控单元还用于控制SISO单元在第二时段对分量码2进行译码。下面根据一个实施例具体描述门控单元对SISO单元和交织单元的控制操作:
在译码开始时,门控单元产生供交织单元正常工作的时钟信号,当交织单元完成交织地址的产生并且存储该交织地址后,其自动回到空闲状态并且从交织单元中给出时钟关断信号,门控单元一旦接收到从交织单元传输过来的时钟关断信号,立即将该交织单元关闭,这一过程在上述第一时段内完成。
在译码开始时(即在交织单元工作的同时),门控单元还开启SISO单元的时钟,SISO单元开始进行第一次半迭代译码(即对分量码1进行译码),这一过程在上述第一时段内完成。对分量码1的译码完成后,如果交织单元此时已经完成交织地址的产生和存储工作,则继续保持SISO单元的时钟开启,并且开始进行第二次半迭代译码(即对分量码2进行译码),同时进入上述的第二时段;否则从SISO单元发出时钟关断信号,门控单元在接收到该时钟关断信号后,立即将SISO单元的时钟关闭,使SISO单元停止工作。当交织单元完成交织地址的产生及存储工作,门控单元重新开启SISO单元的时钟,进入上述第二时段并开始进行第二次半迭代译码。
当SISO单元完成译码数据的处理工作则发出时钟关断信号,门控单元接收到该时钟关断信号后,立即关闭SISO单元的时钟;否则继续保持SISO单元的时钟开启。
根据上述控制操作,***在接收到从总线传输过来的译码任务后,可通过门控单元对SISO单元时钟、交织单元时钟进行开启和关闭,完成对数据的迭代译码、交织、解交织、硬判决、判定等操作,最后输出译码结果,这种方式能够降低译码***的功耗。
四、硬判决单元
如本领域技术人员所公知的,硬判决单元可用于对SISO单元在译码时产生的软信息输出进行硬判决,并且产生硬比特数据。
五、判定单元
判定单元用于判定经过硬判决和解交织后得到的硬比特数据是否满足译码输出要求,也就是判定译码结果是否满足停止迭代译码的条件。若判定符合停止条件则输出译码结果;若判定不符合停止条件则重新进行译码。
在一个实施例中,如果当前的迭代次数不小于预先设定的一个数值,则判定输出译码结果;否则进行CRC校验。如果校验正确则判定输出译码结果,如果不正确则比较当前的硬比特数据与上一次迭代得到的硬比特数据。如果差异小于预定的门限值,则判定输出译码结果;否则重新进行译码。
在另一个实施例中,所述Turbo码译码***还包括修正单元,参见图2,该修正单元分别与交织单元和SISO单元相连,且用于对SISO单元在译码时产生的先验信息进行修正。
本领域技术人员应理解,对于译码算法,通常可采用Max-Log-MAP算法来简化运算,该算法的公式如下所示:
其中,公式1表示将多个对数指数运算简化为较容易实现的逻辑运算,公式1中的x1…xn表示不同的实数。应理解,尽管公式1减少了计算量且容易实现,但同时也会造成一些性能损失。在采用Max-Log-MAP译码算法(参见公式1)的实施例中,尽管该译码算法将较复杂的对指数逻辑转化为易实现的比较逻辑,但是性能损失较大。因此,为减少这种简化运算带来的性能损失,可在***中设置修正单元来对SISO单元译码产生的先验信息进行修正操作。该修正操作是基于Max-Log-MAP算法的止损补偿操作,将利用该算法计算得到的先验信息乘以一个修正因子,从而实现对先验信息的修正。本领域技术人员应理解,可通过大量的性能仿真统计实验来得到这个修正因子,以使乘上该修正因子后的先验信息更为准确。硬件层面是通过将先验信息进行移位运算来实现的。
在又一个实施例中,所述Turbo码译码***还包括微控制器,用于接收译码参数并采用任务列表的方式存储该译码参数,SISO单元、交织单元和门控单元可根据该译码参数进行译码操作。其中,采用微控制器,需要将不同序列的译码参数按照约定方式写入微控制器的任务列表里,在启动微控制器后,译码***的其他单元能够自动根据配置完成多个序列的译码操作。图3是本实施例中译码***的配置结构的示意图,其中将译码***的其他单元表示为Turbo码译码***主体模块。如图3所示,该微控制器通过ABP总线与AXI总线将译码参数传递给Turbo码译码***主体模块,这种配置方式可使***层的调度更加灵活。
根据本发明的一个实施例,还提供一种Turbo码译码方法,该方法可利用上述实施例提供的Turbo码译码***来实现。
图4示出了本实施例提供的译码方法的数据处理流向。需要说明的是,为了使译码过程更加清晰,图4中将SISO单元的工作用SISO1和SISO2两部分表示,其中SISO1表示第一次半迭代译码、SISO2表示第二次半迭代译码。结合图4并概括而言,该方法包括:对分量码1进行译码,同时计算并存储交织地址;对分量码2进行译码得到软信息;以及,对软信息进行硬判决并且进行解交织,根据迭代次数或者得到的硬比特数据进行判定,基于判定结果选择结束或者重新执行译码。
下面将具体描述该方法的每个步骤。
第一步:对分量码1进行译码,同时计算并存储交织地址。
在本步骤中,将***信息1和校验信息1组成分量码1,SISO单元根据译码算法,利用先验信息2对分量码1进行译码(即第一次半迭代译码),产生外信息1。需要说明的是,由于译码是一个迭代执行的过程,这里SISO单元对分量码1进行译码时需要用到的先验信息2是由后续步骤产生的,所以在首次执行第一步时,先验信息2为0。
与此同时,交织单元计算交织地址并存储。由于在整个译码过程中,需要对***信息1和SISO单元产生的数据进行交织或解交织,所以在此时计算交织地址以便为交织和解交织操作做基础,其中该交织地址的长度与交织数据的长度相等。如上文所述,计算交织地址的过程是按照交织算法将一段顺序的地址打乱,然后将乱序的地址顺序保存。当数据需要进行交织时,只需根据乱序的地址读取数据即可完成数据的映射,达到交织或解交织的目的。
当交织地址的计算和存储完成,并且第一次半迭代译码完成时,执行第二步。也就是说SISO单元对分量码1进行译码以及交织单元计算交织地址是在同一时间段完成的,在此将执行第一步的时间段称为T1。
在进一步的实施例中,如本领域技术人员所公知的,由于SISO单元的译码过程实际是通过一个已知的接收数据求一个可能的输入数据的似然概率过程,译码过程针对每个输入的数据计算先验概率α,后验概率β和转移概率γ。由于先验概率α的计算方式是根据输入数据中的第一个信息依次计算到最后一个信息的,而β、γ的计算方式是从输入数据中最后一个信息开始反向依次计算到第一个信息的,为了提高译码速度,在本实施例中,分量码1输入SISO单元时是采用滑动窗结构进行输入的。即将输入的数据分成相等的两部分,以两个滑动窗进行输入,这种输入方式可以在译码的计算时间上产生一部分重叠从而提高译码效率。
具体来说,将译码数据(如***信息1和校验信息1或者***信息2和校验信息2)分成长度相当的两段,分别作为两个滑动窗的输入,滑动窗1和滑动窗2的长度分别设置为N/2和N-N/2,其中N为译码数据的总长度。图8是本实施例中计算概率信息的时序图,下面结合图8按照时间顺序介绍SISO单元的第一次半迭代译码过程,在此将上述的T1时间段分为T11、T12、T13三个子时间段,则SISO单元对分量码1的译码过程如下:
在T11子时间段,计算滑动窗1输入数据的先验概率α1。此过程为顺序读取分量码1并计算先验概率,并且缓存滑动窗1长度的***信息1、校验信息1、先验信息2和α1(第一次执行步骤1时先验信息2为0)。
在T12子时间段,计算滑动窗2输入数据的先验概率α2,并缓存滑动窗2长度的***信息1、校验信息1、先验信息2和α2;与此同时,根据在T11时缓存的前半部分***信息1、校验信息1、外信息2计算滑动窗1输入数据的后验概率β1;根据在T11中缓存的前半部分***信息1、校验信息1、先验信息2、α1和上一次半迭代译码过程计算出的β1计算转移概率γ1和外信息1的前半部分,并将γ1和外信息1顺序缓存。
在T13子时间段,根据在T12中缓存的后半部分***信息1、校验信息1计算滑动窗2输入数据的后验概率β2,并根据在T12中缓存的后半部分***信息1、校验信息1、先验信息2、先验概率α2和上一次半迭代译码过程计算出的β2计算得到转移概率γ2和外信息1的后半部分,并顺序缓存γ2和外信息1。
至此,SISO单元完成了分量码1的译码工作。其中,外信息1由α1、β1、γ1计算得到。同理,SISO单元对分量码2的译码过程与此过程相同,同样可以采用滑动窗的结构输入译码数据并计算译码结果。
第二步:对分量码2进行译码得到软信息。
在本步骤中,利用***信息1根据交织单元计算出的交织地址产生***信息2,由***信息2与校验信息2组成分量码2;以及,利用外信息1根据交织单元计算出的交织地址产生先验信息1。
SISO单元根据译码算法,利用先验信息1对分量码2进行译码(即第二次半迭代译码),产生外信息2和软信息输出;对外信息2进行解交织可得到先验信息2。
当SISO单元对分量码2的译码完成时,执行第三步,在此将执行第二步的时间段称为T2。
下面结合图5和图6对第二步中涉及的数据交织与解交织过程进行介绍,如上文所述,由于分量码2和先验信息1是通过交织得到的,所以在SISO单元对分量码2进行译码之前,首先要进行数据交织的工作。在一个实施例中,在译码开始时,交织单元与SISO单元同时开始工作,交织单元生成乱序地址并存储到两个交织存储器中。数据需要交织时则可以采用滑动窗结构以乱序地址读取数据以完成交织工作,其中两个交织存储器的大小分别与两个滑动窗大小对应。
如图5和图6所示,***信息1和外信息1的交织过程如下:
步骤21、滑动窗1以交织存储器1中的乱序地址读取N/2的***信息1,即得到N/2的***信息2,在此将执行步骤21的子时间段称为T21。
步骤22、滑动窗2以交织存储器2中的乱序地址读取N-N/2的***信息1即得到N-N/2的***信息2;同时滑动窗1以交织存储器1中的乱序地址读取N/2的外信息1即得到N/2的先验信息1,在此将执行步骤22的子时间段称为T22。
步骤23、滑动窗2以交织存储器2中的乱序地址读取N-N/2的外信息1即得到N-N/2的先验信息1,在此将执行步骤23的子时间段称为T23。
对于外信息2以及译码结果的解交织过程与数据交织的过程相似,同样可采用滑动窗结构使用交织地址来读取数据,不同的是解交织过程是逆序使用交织地址读取数据的。
如上文所述,交织单元计算交织地址的工作独立于SISO单元的迭代译码工作,每个序列的译码过程只启动一次交织地址的计算和存储工作,因此交织单元与SISO单元可以同时启动,从而提高了译码***的并行度。并且,独立的交织单元结构可支持随机非连续的交织算法,也能支持3GPP信道复用和编码协议规定的交织算法。此外,这种结构也有利于并行化升级。
在一个实施例中,译码过程中还包括对先验信息1和先验信息2进行修正的操作,如上文所述,该操作是将从SISO单元输出的先验信息1和先验信息2乘以一个修正因子。采用修正后的先验信息可使译码的性能提高,几乎能够接近Log-MAP算法的性能。
第三步:对软信息进行硬判决并且进行解交织,根据迭代次数或者得到的硬比特数据进行判定,基于判定结果选择结束或者重新执行第一步至第三步。在此,将执行第三步的时间段称为T3。
本领域技术人员应理解,在每一次迭代计算产生译码结果后进行判定,其目的是判定该结果是否符合输出要求,如果不符合则要进行下一次迭代译码,直到译码结果符合输出要求为止。
在一个实施例中,对SISO单元输出的软信息进行硬判决并进行解交织,对得到的硬比特数据进行判定,若判定结果符合停止条件则输出译码结果;若判定结果不符合停止条件则回到第一步重新进行译码。图7示出了该判定方法的流程图,如图7所示,判定单元首先进行CRC校验,如果CRC校验正确则输出译码结果,否则进行HDA判决。HDA判决包括:比较SISO单元连续两次输出的软信息的硬判决符号是否发生变化,即是否满足下列公式:
例如在i次迭代后,根据SISO单元输出的软信息L2 (i)(uk)计算并存储硬判决和解交织后的结果,并将其与第i-1次迭代后的软信息L2 (i-1)(uk)得到的结果进行比较,如果没有符号发生变化,就停止迭代;否则继续迭代译码。本实施例提供的方法与传统的CRC校验方法相比,CRC校验只是在信道性能较好(即信噪比较高)的情况下有很好的校验结果。然而,在信道性能较差(即信噪比较低)的情况下,用CRC校验会造成很大程度的资源浪费,此时HDA判决优于CRC判决,因此这两种停止判决的联合实现,可使复杂度和性能优势得到互补,同时还能大大降低整个译码***的功耗。对每次迭代后得到的硬比特数据都进行一次CRC-HDA的校验,若满足停止条件,则立即停止译码。
在进一步的实施例中,对译码结果进行判定时,还要先判断当前的迭代次数是否超过预定的最大次数,当迭代译码的结果一直不能满足停止条件时,在超过最大迭代次数之前结束译码并输出译码结果。具体实现时,译码***会记录迭代次数,每一次译码开始时都会将记录的迭代次数加1,当本次迭代译码结束时,首先检查总迭代次数是否超过最大次数,如果超过则不再对本次译码结果做任何判定,直接输出该译码结果。本实施提供的判定方式是一种早停机制,可以进一步提高译码效率。
与现有技术相比,本发明提供的Turbo码译码***及方法采用单个SISO单元,并且采用门控单元对***中的其他单元进行控制,降低了***功耗和复杂度;采用独立于译码迭代的半静态存储交织单元结构,使每一次译码只需要执行一次交织算法,交织单元与译码单元可同时启动,提高了译码***的并行度,同时降低功耗,增加了高速***并行升级的灵活性;在译码过程中采用修正单元对数据进行修正,减小了性能损失;利用微控制器对译码***进行配置,增强了译码***的灵活性;在输入数据时采用滑动窗结构,提高了并行度并且增加了译码效率;对译码结果进行判定,当译码结果达到收敛时,提前停止译码***的迭代操作,进一步降低了***功耗。
最后,上述的实施例仅用来说明本发明,它不应该理解为是对本发明的保护范围进行任何限制。而且,本领域的技术人员可以明白,在不脱离上述实施例精神和原理下,对上述实施例所进行的各种等效变化、变型以及在文中没有描述的各种改进均在本专利的保护范围之内。
Claims (14)
1.一种Turbo码译码***,其中,采用两个滑动窗输入译码数据,所述译码数据包括分量码1或者分量码2;滑动窗1输入N/2的译码数据,滑动窗2输入N-N/2的译码数据,N为译码数据的总长度,所述***包括:
SISO单元,用于对分量码1或分量码2进行译码;
交织单元,与所述SISO单元相连,用于生成并存储交织地址;
门控单元,与所述SISO单元和所述交织单元相连,用于控制所述SISO单元和所述交织单元的运行;
其中,所述门控单元控制所述SISO单元在第一时段对分量码1进行译码并且在第二时段对分量码2进行译码,以及控制所述交织单元在第一时段计算并存储交织地址;其中,分量码1由***信息1和校验信息1组成,分量码2由***信息2和校验信息2组成,并且***信息2是利用所述交织单元生成的交织地址对***信息1进行交织得到的;
所述SISO单元用于:计算滑动窗1输入数据的先验概率;计算滑动窗2输入数据的先验概率,同时计算滑动窗1输入数据的后验概率和转移概率;计算滑动窗2输入数据的后验概率和转移概率;从而得到外信息1或者外信息2。
2.根据权利要求1所述的***,其中,所述门控单元用于在译码开始时开启所述交织单元的时钟和所述SISO单元的时钟;在所述SISO单元完成对分量码1的译码且所述交织单元未完成交织地址的生成和存储时,关闭所述SISO单元的时钟;在所述交织单元完成交织地址的生成和存储时关闭所述交织单元的时钟;在译码未完成、所述SISO单元的时钟关闭并且所述交织单元完成交织地址的生成和存储时,开启所述SISO单元的时钟以使所述SISO单元开始对分量码2的译码;以及,在译码完成时关闭所述SISO单元的时钟。
3.根据权利要求1或2所述的***,其中,所述交织单元包括两个交织存储器,一个交织存储器用于存储N/2长度的第一交织地址,另一个交织存储器用于存储N-N/2长度的第二交织地址,N为译码数据的总长度。
4.根据权利要求1或2所述的***,其中,所述***还包括:
判定单元,用于判定是结束译码还是由所述SISO单元重新进行译码。
5.根据权利要求4所述的***,其中,所述判定单元用于根据当前迭代次数来判定是否结束译码;根据CRC校验结果来判定是否结束译码;以及,根据当前得到的硬比特数据与上次迭代得到的硬比特数据的差异来判定是否结束译码。
6.根据权利要求1或2所述的***,其中,所述***还包括:
修正单元,用于对译码时产生的先验信息进行修正。
7.根据权利要求1或2所述的***,其中,所述***还包括:
微控制器,用于接收译码参数并且采用任务列表的方式存储该译码参数;其中,所述SISO单元、交织单元和门控单元根据该译码参数进行译码操作。
8.一种Turbo码译码方法,包括:
步骤1)、对分量码1进行译码,同时生成并存储交织地址;其中,分量码1由***信息1和校验信息1组成;
步骤2)、对分量码2进行译码得到软信息;其中,分量码2由***信息2和校验信息2组成,并且***信息2是利用所述交织地址对***信息1进行交织得到的;
步骤3)、对所述软信息进行硬判决并且进行解交织得到硬比特数据,根据迭代次数或者得到的硬比特数据进行判定,基于判定结果选择结束或者重新执行步骤1)至3);
其中,在步骤1)和步骤2)中,采用两个滑动窗输入译码数据,所述译码数据包括分量码1或者分量码2;滑动窗1输入N/2的译码数据,滑动窗2输入N-N/2的译码数据,N为译码数据的总长度,并且译码包括以下步骤:
步骤A)、计算滑动窗1输入数据的先验概率;
步骤B)、计算滑动窗2输入数据的先验概率;同时,计算滑动窗1输入数据的后验概率和转移概率;
步骤C)、计算滑动窗2输入数据的后验概率和转移概率;从而得到外信息1或者外信息2。
9.根据权利要求8所述的方法,其中,在步骤1)中,
利用先验信息2对分量码1进行译码,产生外信息1;其中,在首次执行步骤1)时,所述先验信息2为0。
10.根据权利要求9所述的方法,其中,步骤2)包括:
步骤21)、利用先验信息1对分量码2进行译码,产生外信息2和软信息;其中,先验信息1是利用所述交织地址对外信息1进行交织得到的;以及
步骤22)、利用所述交织地址对外信息2进行解交织,得到先验信息2。
11.根据权利要求8-10中任一项所述的方法,其中,在步骤1)中,
按照滑动窗口结构,将交织地址分为第一交织地址和第二交织地址并分别进行存储。
12.根据权利要求11所述的方法,其中,在步骤2)中,根据以下步骤利用交织地址对外信息1和***信息1进行交织:
步骤a)、滑动窗1以第一交织地址读取N/2的***信息1,得到N/2的***信息2;其中,N为译码数据的总长度;
步骤b)、滑动窗2以第二交织地址读取N-N/2的***信息1,得到N-N/2的***信息2;同时,滑动窗1以第一交织地址读取N/2的外信息1,得到N/2的先验信息1;
步骤c)、滑动窗2以第二交织地址读取N-N/2的外信息1,得到N-N/2的先验信息1。
13.根据权利要求10所述的方法,其中,所述方法还包括:
在得到先验信息1或先验信息2后,对所述先验信息1或先验信息2进行修正。
14.根据权利要求8-10中任何一个所述的方法,其中,在步骤3)中,根据以下步骤进行判定并基于判定结果进行相应处理:
步骤31)、判断当前迭代次数是否大于或等于预定阈 值,如果大于或等于该预定阈值则输出译码结果并结束;否则执行步骤32);
步骤32)、进行CRC校验,如果CRC校验正确则输出译码结果并结束,否则执行步骤33);
步骤33)、将当前得到的硬比特数据与上一次迭代得到的硬比特数据进行比较,如果两个硬比特数据之间的差异小于预定门限值,则输出译码结果并结束;否则重新执行步骤1)至步骤3)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410490810.XA CN105515591B (zh) | 2014-09-23 | 2014-09-23 | 一种Turbo码译码***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410490810.XA CN105515591B (zh) | 2014-09-23 | 2014-09-23 | 一种Turbo码译码***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105515591A CN105515591A (zh) | 2016-04-20 |
CN105515591B true CN105515591B (zh) | 2019-10-25 |
Family
ID=55723306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410490810.XA Active CN105515591B (zh) | 2014-09-23 | 2014-09-23 | 一种Turbo码译码***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105515591B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106301393B (zh) * | 2016-07-22 | 2019-09-06 | 西安空间无线电技术研究所 | 一种基于Turbo编码的交织地址快速计算方法 |
CN114244377A (zh) * | 2021-12-20 | 2022-03-25 | 大连海事大学 | 一种基于模拟退火算法的双因子修正Turbo译码方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134694A (en) * | 1996-02-29 | 2000-10-17 | Ntt Mobile Communications Network, Inc. | Error control method and error control device for digital communication |
CN1277494A (zh) * | 1999-06-11 | 2000-12-20 | 阿尔卡塔尔公司 | 卫星应用中使用乘积码对信元进行编码的方法 |
CN101286817A (zh) * | 2008-04-03 | 2008-10-15 | 浙江大学 | 传统二进制和双二进制Turbo码通用译码方法 |
CN101969309A (zh) * | 2010-09-28 | 2011-02-09 | 电子科技大学 | 一种Turbo编码和BFSK调制的FFH通信***的MAP解调译码方法 |
CN103354483A (zh) * | 2013-06-20 | 2013-10-16 | 西安电子科技大学 | 通用的高性能Radix-4SOVA译码器及其译码方法 |
-
2014
- 2014-09-23 CN CN201410490810.XA patent/CN105515591B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134694A (en) * | 1996-02-29 | 2000-10-17 | Ntt Mobile Communications Network, Inc. | Error control method and error control device for digital communication |
CN1277494A (zh) * | 1999-06-11 | 2000-12-20 | 阿尔卡塔尔公司 | 卫星应用中使用乘积码对信元进行编码的方法 |
CN101286817A (zh) * | 2008-04-03 | 2008-10-15 | 浙江大学 | 传统二进制和双二进制Turbo码通用译码方法 |
CN101969309A (zh) * | 2010-09-28 | 2011-02-09 | 电子科技大学 | 一种Turbo编码和BFSK调制的FFH通信***的MAP解调译码方法 |
CN103354483A (zh) * | 2013-06-20 | 2013-10-16 | 西安电子科技大学 | 通用的高性能Radix-4SOVA译码器及其译码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105515591A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5479580B2 (ja) | Lteにおける並列turboデコーディングの方法及び装置 | |
CN101026439B (zh) | 一种提高Turbo码译码速率的译码方法 | |
CN102571108B (zh) | 一种应用于Turbo乘积码的自适应迭代译码方法 | |
CN102523076B (zh) | 通用可配置的高速率Turbo码译码方法 | |
CN104092470B (zh) | 一种Turbo码译码装置及方法 | |
KR20120090856A (ko) | 반복적 디코더 및 반복적 디코딩 방법 | |
CN103905067B (zh) | 多模译码器实现方法及装置 | |
CN102158235B (zh) | turbo译码的方法及装置 | |
CN105515591B (zh) | 一种Turbo码译码***及方法 | |
Sun et al. | Low-power state-parallel relaxed adaptive Viterbi decoder | |
CN103354483A (zh) | 通用的高性能Radix-4SOVA译码器及其译码方法 | |
CN111224676B (zh) | 一种自适应串行抵消列表极化码译码方法及*** | |
Prescher et al. | A parametrizable low-power high-throughput turbo-decoder | |
CN103986557A (zh) | 低路径延迟的LTE Turbo码并行分块译码方法 | |
CN103856218B (zh) | 译码处理方法及译码器 | |
CN105375934A (zh) | 一种针对咬尾卷积码的Viterbi解码器及解码方法 | |
CN102832954B (zh) | 一种基于软信息平均最小值的Turbo码译码迭代停止方法 | |
CN103595424A (zh) | 分量译码方法、译码器及Turbo译码方法、装置 | |
CN101557234A (zh) | 一种Turbo码的动态迭代译码方法及装置 | |
CN101425870B (zh) | 一种Turbo码迭代译码方法 | |
CN102571107B (zh) | LTE***中高速并行Turbo码的解码***及方法 | |
CN101882933B (zh) | 一种LTE中进行Turbo译码的方法及Turbo译码器 | |
CN103916141B (zh) | Turbo码译码方法及装置 | |
CN106330206A (zh) | 一种译码方法及装置 | |
CN107565982A (zh) | Turbo迭代译码的输出控制方法、装置及译码设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |