CN111211792A - Turbo译码方法、装置及系统 - Google Patents

Turbo译码方法、装置及系统 Download PDF

Info

Publication number
CN111211792A
CN111211792A CN201811400739.6A CN201811400739A CN111211792A CN 111211792 A CN111211792 A CN 111211792A CN 201811400739 A CN201811400739 A CN 201811400739A CN 111211792 A CN111211792 A CN 111211792A
Authority
CN
China
Prior art keywords
bit data
data
input sequence
metric
state
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.)
Granted
Application number
CN201811400739.6A
Other languages
English (en)
Other versions
CN111211792B (zh
Inventor
郭继经
许百成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xiaomi Pinecone Electronic Co Ltd
Original Assignee
Beijing Pinecone Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Pinecone Electronics Co Ltd filed Critical Beijing Pinecone Electronics Co Ltd
Priority to CN201811400739.6A priority Critical patent/CN111211792B/zh
Publication of CN111211792A publication Critical patent/CN111211792A/zh
Application granted granted Critical
Publication of CN111211792B publication Critical patent/CN111211792B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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/2957Turbo codes and decoding
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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译码过程中的数据吞吐率。该Turbo译码方法包括:对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行;根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。

Description

Turbo译码方法、装置及系统
技术领域
本公开涉及通信技术领域,具体地,涉及一种Turbo译码方法、装置及系统。
背景技术
Turbo码是通信领域中一种先进的纠错码,其通过一种巧妙的交织反馈设计使得其纠错性能接近香农极限,从而被广泛应用于窄带物联网、深空通信、无人机图传等通信领域。
相关技术中,Turbo译码过程中单个比特数据的状态度量需要多个时钟周期才能完成,从而存在单位时间内数据吞吐率较低的问题。并且,相关技术中的Turbo译码通常会使用多个SISO(Soft In Soft Out,软输入软输出)装置,不仅会占用较多的元器件面积,还增加了Turbo译码的成本。
发明内容
本公开的目的是提供一种Turbo译码方法、装置及系统,以提高Turbo译码过程中单位时间单位面积的数据吞吐率,降低Turbo译码的成本。
第一方面,本公开提供一种Turbo译码方法,应用于软输入软输出SISO装置,包括:
对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行;
根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。
可选地,对输入序列进行前向状态度量和后向状态度量,包括:
对所述输入序列中的比特数据依次进行第一入栈操作和第一出栈操作;
对所述第一出栈操作得到的数据进行后向状态度量;
对所述第一出栈操作得到数据依次进行第二入栈操作和第二出栈操作;
对所述第二出栈操作得到的数据进行前向状态度量。
可选地,所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行,包括:
将所述比特数据存入随机存取存储RAM和备份寄存器中;
根据上一时刻对所述RAM中数据的存取操作和当前时刻对所述RAM中数据的存取操作,在所述RAM和所述备份寄存器中确定读取所述比特数据的目标位置;
从所述目标位置读取所述比特数据进行前向状态度量或后向状态度量。
可选地,所述输入序列中每一比特数据的前向状态度量或后向状态度量,包括:
按照以下公式,计算所述比特数据的分支度量:
Figure BDA0001876250610000021
其中,γk(s',s)为所述输入序列中比特数据的分支度量,s'为所述比特数据k-1时刻或k+1时刻的状态,s为所述比特数据k时刻的状态,d为所述比特数据,p为所述比特数据对应的校验数据;
当所述s'为所述比特数据k-1时刻的状态时,根据所述分支度量和所述比特数据在k-1时刻的前向状态度量,确定所述比特数据k时刻的前向状态度量;或
当所述s'为所述比特数据k+1时刻的状态时,根据所述分支度量和所述比特数据在k+1时刻的后向状态度量,确定所述比特数据k时刻的后向状态度量。
可选地,对所述输入序列进行前向状态度量和后向状态度量的窗口长度为所述SISO装置的最大译码长度的平方根值。
可选地,当对所述输入序列进行后向状态度量时,还包括:
确定所述输入序列中的比特数据为尾比特数据;
将所述尾比特数据中状态0的后向状态度量置为预设最大值,并将所述尾比特数据中其他状态的后向状态度量置为预设负最小值。
可选地,在根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码之后,还包括:
确定所述Turbo码的循环冗余校验CRC码是否正确;
如果所述CRC码不正确,则重新执行所述对输入序列进行前向状态度量和后向状态度量、以及所述根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码的步骤;
如果所述CRC码正确,则输出所述输入序列对应的Turbo码。
第二方面,本公开还提供一种软输入软输出SISO装置,包括:
度量模块,用于对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行;
确定模块,用于根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。
可选地,所述度量模块用于:
对所述输入序列中的比特数据依次进行第一入栈操作和第一出栈操作;
对所述第一出栈操作得到的数据进行后向状态度量;
对所述第一出栈操作得到数据依次进行第二入栈操作和第二出栈操作;
对所述第二出栈操作得到的数据进行前向状态度量。
可选地,所述度量模块用于:
将所述比特数据存入随机存取存储RAM和备份寄存器中;
根据上一时刻对所述RAM中数据的存取操作和当前时刻对所述RAM中数据的存取操作,在所述RAM和所述备份寄存器中确定读取所述比特数据的目标位置;
从所述目标位置读取所述比特数据进行前向状态度量或后向状态度量。
可选地,所述度量模块用于:
按照以下公式,计算所述比特数据的分支度量:
Figure BDA0001876250610000041
其中,γk(s',s)为所述输入序列中比特数据的分支度量,s'为所述比特数据k-1时刻或k+1时刻的状态,s为所述比特数据k时刻的状态,d为所述比特数据,p为所述比特数据对应的校验数据;
当所述s'为所述比特数据k-1时刻的状态时,根据所述分支度量和所述比特数据在k-1时刻的前向状态度量,确定所述比特数据k时刻的前向状态度量;或
当所述s'为所述比特数据k+1时刻的状态时,根据所述分支度量和所述比特数据在k+1时刻的后向状态度量,确定所述比特数据k时刻的后向状态度量。
可选地,所述度量模块对所述输入序列进行前向状态度量和后向状态度量的窗口长度为所述SISO装置的最大译码长度的平方根值。
可选地,所述度量模块还用于:
确定所述输入序列中的比特数据为尾比特数据;
将所述尾比特数据中状态0的后向状态度量置为预设最大值,并将所述尾比特数据中其他状态的后向状态度量置为预设负最小值。
可选地,所述装置还包括:
校验确定模块,用于确定所述Turbo码的循环冗余校验CRC码是否正确;
通知模块,用于在所述CRC码不正确时,通知所述度量模块和所述确定模块分别重新执行所述对输入序列进行前向状态度量和后向状态度量、以及所述根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码的步骤;
输出模块,用于在所述CRC码正确时,输出所述输入序列对应的Turbo码。
第三方面,本公开还提供一种Turbo译码系统,包括数据接收装置和至少一个第二方面里任一所述的软输入软输出SISO装置:
所述数据接收装置,用于接收输入的待译码序列;
所述至少一个软输入软输出SISO装置,用于对所述待译码输入序列进行前向状态度量和后向状态度量,以及根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。
通过上述技术方案,对输入序列中单个比特数据的状态度量可以在一个时钟周期内进行,相较于相关技术中在多个时钟周期内进行单个比特数据状态度量的方式,本公开的Turbo译码方法可以提高单位时间内的数据吞吐率。并且,由于在一个时钟周期内可以完成单个比特数据的状态度量,因此通过一个SISO装置可以完成Turbo译码过程,这减少了占用的元器件面积,提高了单位面积内的数据吞吐率,并降低了Turbo译码的成本。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开一示例性实施例示出的一种Turbo译码方法的流程图;
图2是根据本公开一示例性实施例示出的一种Turbo译码方法中对输入序列进行前向状态度量和后向状态度量的时序示意图;
图3是相关技术中进行RAM存储后读取数据的过程示意图;
图4是根据本公开一示例性实施例示出的一种Turbo译码方法中进行数据存储的过程示意图;
图5是根据本公开一示例性实施例示出的一种软输入软输出SISO装置的框图;
图6是根据本公开一示例性实施例示出的一种Turbo译码系统的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1是根据本公开一示例性实施例示出的一种Turbo译码方法的流程图。参照图1,该Turbo译码方法可以应用于软输入软输出SISO装置,可以包括以下步骤:
步骤S101,对输入序列进行前向状态度量和后向状态度量,其中,对输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行。
步骤S102,根据前向状态度量和后向状态度量的结果,确定输入序列对应的Turbo码。
通过上述技术方案,对输入序列中单个比特数据的状态度量可以在一个时钟周期内进行,相较于相关技术中在多个时钟周期内进行单个比特数据状态度量的方式,本公开的Turbo译码方法可以提高单位时间内的数据吞吐率。并且,由于在一个时钟周期内可以完成单个比特数据的状态度量,因此通过一个SISO装置可以完成Turbo译码过程,这减少了占用的元器件面积,提高了单位面积内的数据吞吐率,并降低了Turbo译码的成本。
应当理解的是,步骤S102中,根据前向状态度量和后向状态度量的结果,确定输入序列对应的Turbo码的过程可以是先根据前向状态度量和后向状态度量的结果更新Turbo译码过程中的置信度,然后根据该置信度确定Turbo译码结果。并且,为了得到更加可靠的译码结果,可以进行N(N为大于0的正整数)次迭代,然后在每次迭代中分别执行步骤S101和步骤S102,并将迭代结束时得到的译码结果作为最终的Turbo译码结果,具体的过程与相关技术中类似,这里不再赘述。下面对步骤S101中对输入序列进行前向状态度量和后向状态度量的过程进行详细说明。
在一种可能的方式中,步骤S101中,对输入序列中每一比特数据的前向状态度量或后向状态度量可以是先按照以下公式,计算比特数据的分支度量:
Figure BDA0001876250610000071
其中,γk(s',s)为输入序列中比特数据的分支度量,s'为所述比特数据k-1时刻或k+1时刻的状态,s为所述比特数据k时刻的状态,d为所述比特数据,p为所述比特数据对应的校验数据。
然后,当s'为比特数据k-1时刻的状态时,根据上述分支度量和比特数据在k-1时刻的前向状态度量,确定比特数据k时刻的前向状态度量。或者,当s'为比特数据k+1时刻的状态时,根据上述分支度量和比特数据在k+1时刻的后向状态度量,确定比特数据k时刻的后向状态度量。
例如,对输入序列中一比特数据进行前向状态度量,s'为该比特数据k-1时刻的状态,首先可以按照公式(1)计算出分支度量γk(s',s),然后按照以下公式,根据该分支度量和该比特数据k-1时刻的前向状态度量,计算累积度量:
Figure BDA0001876250610000081
由于在Turbo译码过程中每一时刻每个比特数据具有8个状态数,且每个状态可以有两个分支度量。因此,根据公式(2),每个状态可以计算出两个累积度量。然后,对于每个状态,可以在该两个累积度量里选择较大的累积度量确定为该状态的前向状态度量。因此,最终可以得到该比特数据当前时刻(k时刻)的8个前向状态度量。
又例如,对输入序列中一比特数据进行后向状态度量,s'为该比特数据k+1时刻的状态,首先可以按照公式(1)计算出分支度量γk(s',s),然后按照以下公式,根据该分支度量和该比特数据k+1时刻的后向状态度量,计算累积度量:
Figure BDA0001876250610000082
由于在Turbo译码过程中每一时刻每个比特数据具有8个状态数,且每个状态可以有两个分支度量。因此,根据公式(3),每个状态可以计算出两个累积度量。然后,对于每个状态,可以在该两个累积度量里选择较大的累积度量确定为该状态的后向状态度量。因此,最终可以得到该比特数据当前时刻(k时刻)的8个后向状态度量。
可见,在本公开实施例中,对于输入序列中的每一比特数据的前向状态度量或后向状态度量的计算,可以通过简单的加法和比较操作实现,计算并不复杂。因此,本公开的Turbo译码方法可以在一个时钟周期内进行单比特数据的前向状态度量或后向状态度量,以提高单位时间内的数据吞吐率。
在一种可能的方式中,在步骤S101中,对输入序列进行前向状态度量和后向状态度量可以是先对输入序列中的比特数据依次进行第一入栈操作和第一出栈操作,然后对第一出栈操作得到的数据进行后向状态度量,接着对第一出栈操作得到数据依次进行第二入栈操作和第二出栈操作,最后对第二出栈操作得到的数据进行前向状态度量。
也就是说,本公开实施例中,可以通过两级LIFO(Last In First Out,后进先出栈)先对输入序列进行后向状态度量,然后对后向状态度量的数据依次入栈和出栈后进行前向状态度量。由于后向状态度量和前向状态度量所用的数据是翻转的,通过入栈和出栈的操作正好可以实现这种数据翻转,从而使得Turbo译码过程中的管道模型(pipeline)紧密排列,避免时钟周期的空隙,进一步提高单位时间的数据吞吐率。
例如,参照图2,有32位比特数据,编号依次从0到31,先通过LIFO0对输入序列按照正序的方式(从0到31的顺序)进行第一入栈操作,并通过LIFO0对该第一入栈操作得到的数据进行第一出栈操作,得到按照从31到0排列的数据,然后可以对这从31到0排列的数据进行后向状态度量。
接着,通过LIFO1对第一出栈操作得到的数据依次进行第二入栈操作和第二出栈操作,得到按照从0到31排列的数据,然后对这0到31排列的数据进行前向状态度量。这样,最终输出的译码置信度LLR的输出也是正序的,可以直接进行CRC或输出译码(CyclicRedundancy Check,循环冗余校验)。
在一种可能的方式中,对输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行可以是先将比特数据存入随机存取存储RAM和备份寄存器中,然后根据上一时刻对RAM中数据的存取操作和当前时刻对RAM中数据的存取操作,在RAM和备份寄存器中确定读取比特数据的目标位置,最后从目标位置读取比特数据进行前向状态度量或后向状态度量。
在本公开实施例中,可以通过RAM(random access memory,随机存取存储器)或是寄存器来存储数据。应当理解的是,为了进一步减小Turbo译码占用的元器件面积,可以优先选择RAM进行数据存储。但是,通过RAM存储后,如果要读取数据,需要首先在k时刻读取数据地址,然后在k+1时刻才能读取数据,具体过程请参见图3。如图3所示,在k时刻读取地址2,而在k+1时刻才读取到数据C。也就是说,通过RAM存储数据的方式,在读数据的过程中会存在时间周期的空隙。
因此,为了消除通过RAM存储数据后读取数据存在的时间周期的空隙,本公开实施例中可以在通过RAM进行数据存储时,同时将数据存储到备份寄存器中,并通过上一时刻和当前时刻对RAM中数据的存取操作确定读取数据的位置,即确定是在RAM中读取数据还是在备份寄存器中读取数据。
示例地,参照图4,当对RAM进行入栈操作时,即通过RAM进行数据存储时,首先将该数据的地址备份存储到备份寄存器reg_top,然后对RAM中的上排(ram_top)进行出栈操作,以将前一步存储到RAM中的数据读取出来并存储到备份寄存器reg_top。
进一步,在需要读取数据进行状态度量时,可以首先确定上一时刻和当前时刻对RAM中数据的存取操作,并根据这两个时刻对RAM中数据的存储操作确定读取数据的具体位置。
需要说明的的是,这里所说的存取操作可以理解为入栈操作和出栈操作,比如,对数据的存储可以是入栈操作,而对数据的读取可以是出栈操作,等等,本公开实施例对此不作限定。
比如,将存取操作理解为入栈和出栈操作,上一时刻进行的是先入栈后出栈,且当前时刻进行的是出栈操作,那么可以从RAM中读取需要的数据进行状态度量。又或者,上一时刻进行的是先出栈后入栈,且当前时刻进行的是出栈操作,那么可以从备份寄存器读取数据进行状态度量。
也就是说,如果上一时刻通过入栈将数据存储到了RAM中,由于直接从RAM中读取数据会存在时间周期的空隙,因此,可以从备份寄存器读取数据。而如果上一时刻将数据从RAM中出栈了,那么可以直接从RAM中读取数据。
通过以上的方式,可以在一个时钟周期内完成数据的读取,数据读取过程中不会存在时钟周期的空隙,进一步提高了单位时间的数据吞吐率。
在本公开实施例中,前向状态度量和后向状态度量可以按照窗口为单位进行计算的,窗口的长度可以在SISO装置最大译码长度内取任意值。应当理解的是,考虑到译码性能,窗口长度不能设定得太短,通常可以将窗口长度设定为超过32的数值。
进一步,窗口的长度跟需要缓存的数据量相关,而为了减小Turbo译码过程中元器件占用的面积,本公开实施例希望缓存的数据量较小。因此,可以确定缓存的数据量最小时对应的窗口长度为进行状态度量的窗口长度。
示例地,当窗口的长度为W时,对于最大译码长度为K的SISO装置,可以按照以下公式确定需要缓存的数据量DepthBeta_buf
Figure BDA0001876250610000111
若要在K一定的情况下使DepthBeta_buf取值最小,可以对W求导,令
Figure BDA0001876250610000112
从而可以得到
Figure BDA0001876250610000113
此时,可以得到DepthBeta_buf的最优解,也就是DepthBeta_buf的最小值。
因此,在本公开实施例中,优选地,对输入序列进行前向状态度量和后向状态度量的窗口长度可以是SISO装置的最大译码长度的平方根值。比如,当SISO装置的最大译码长度分别为1024、4032、6144时,可以分别将窗口长度设定为32、64、80。
应当理解的是,本公开实施例中的窗口长度值应当是正整数。但是,如果对SISO装置的最大译码长度进行平方根计算时,得到的计算结果不是正整数,那么可以通过四舍五入的方式得到一个正整数作为窗口长度,或者向上取整得到一个正整数作为窗口长度,等等,本公开实施例对此不作限定。
在一种可能的方式中,在对输入序列进行后向状态度量时,还可以先确定输入序列中的比特数据为尾比特数据,然后将尾比特数据中状态0的后向状态度量置为最大,并将尾比特数据中其他状态的后向状态度量置为负最小值。
也就是说,在对输入序列中的每一位比特数据进行后向状态度量时,可以先判断该比特数据是否为尾比特数据,如果是尾比特数据,则可以通过将尾比特数据中状态0的后向状态度量置为预设最大值,并将尾比特数据中其他状态的后向状态度量置为预设负最小值的方式对该比特数据进行后向状态度量。而如果不是尾比特数据,则可以按照上述先计算比特数据的分支度量,再计算累积度量的方式对该比特数据进行后向状态度量。
示例地,由于在Turbo译码的硬件实现过程中,硬件能实现的最大值为0,负最小值为-255,因此可以按照以下公式,对尾比特数据进行后向状态度量:
Figure BDA0001876250610000121
其中,β表示后向状态度量,K+3表示输入序列的最后三位比特数据为尾比特数据,s表示比特数据除0以外的其他状态。
即,通过公式(4),可以通过将输入序列中的最后三位比特数据(尾比特数据)中状态0的后向状态度量置为0,并将这最后三位比特数据(尾比特数据)中其他状态的后向状态度量置为-255的方式对该输入序列中的尾比特数据进行后向状态度量。
应当理解的是,在其他不同的实现方式下,预设最大值和预设负最小值的设定会有所不同,本公开实施例对于预设最大值和预设负最小值的具体设定不作限定。
通过以上的方式,尾比特的后向状态度量无需复杂的计算,可以直接通过复用SISO装置计算尾比特的后向状态度量,这节省了用于计算尾比特后向状态度量的元器件,从而减少了Turbo译码中元器件占用的面积,降低了Turbo译码的成本。
应当理解的是,在进行前向状态度量时,可以不进行尾比特计算。因此,对输入序列中每一比特数据进行前向状态度量时,如果该比特数据是尾比特数据,则可以直接丢弃该比特数据,而无需计算其前向状态度量。
在一种可能的方式中,在根据前向状态度量和后向状态度量的结果,确定输入序列对应的Turbo码之后,还可以确定Turbo码的循环冗余校验CRC码是否正确,如果CRC码不正确,则重新执行所述对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行、以及所述根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码的步骤,而如果CRC码正确,则可以输出所述输入序列对应的Turbo码。
也就是说,本公开实施例中,对于输入序列的Turbo译码过程是不断迭代的过程,可以将每一次迭代得到的译码结果的CRC码和输入序列的CRC码进行比对,如果该译码结果的CRC码和输入序列的CRC码不一致(CRC码不正确),那么可以继续执行本公开实施例中的Turbo译码方法,直到译码结果的CRC和输入序列的CRC码一致(CRC码正确)。通过这样的方式,在译码结果的CRC码正确的情况下,可以及时停止译码过程,从而降低Turbo译码过程中的能耗。
下面将本公开的Turbo译码方法与相关技术中的Turbo译码方法进行比较来说明本公开的Turbo译码方法至少可以达到的技术效果。
表1
Figure BDA0001876250610000141
请参见表1,根据表1所示的内容可知,相关技术中的Turbo译码方法单位时间单位面积吞吐率为87.05,本公开实施例的Turbo译码方法单位时间单位面积吞吐率为118.37,约是相关技术中Turbo译码方法的1.35倍。因此,相较于相关技术,本公开实施例的Turbo译码方法可以极大提高数据吞吐率。
基于同一发明构思,本公开还提供一种软输入软输出SISO装置。参照图5,该SISO装置500可以包括:
度量模块501,用于对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行;
确定模块502,用于根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。
可选地,所述度量模块501用于:
对所述输入序列中的比特数据依次进行第一入栈操作和第一出栈操作;
对所述第一出栈操作得到的数据进行后向状态度量;
对所述第一出栈操作得到数据依次进行第二入栈操作和第二出栈操作;
对所述第二出栈操作得到的数据进行前向状态度量。
可选地,所述度量模块501用于:
将所述比特数据存入随机存取存储RAM和备份寄存器中;
根据上一时刻对所述RAM中数据的存取操作和当前时刻对所述RAM中数据的存取操作,在所述RAM和所述备份寄存器中确定读取所述比特数据的目标位置;
从所述目标位置读取所述比特数据进行前向状态度量或后向状态度量。
可选地,所述度量模块501用于:
按照以下公式,计算所述比特数据的分支度量:
Figure BDA0001876250610000151
其中,γk(s',s)为所述输入序列中比特数据的分支度量,s'为所述比特数据k-1时刻或k+1时刻的状态,s为所述比特数据k时刻的状态,d为所述比特数据,p为所述比特数据对应的校验数据;
当所述s'为所述比特数据k-1时刻的状态时,根据所述分支度量和所述比特数据在k-1时刻的前向状态度量,确定所述比特数据k时刻的前向状态度量;或
当所述s'为所述比特数据k+1时刻的状态时,根据所述分支度量和所述比特数据在k+1时刻的后向状态度量,确定所述比特数据k时刻的后向状态度量。
可选地,所述度量模块501对所述输入序列进行前向状态度量和后向状态度量的窗口长度为所述SISO装置的最大译码长度的平方根值。
可选地,所述度量模块501还用于:
确定所述输入序列中的比特数据为尾比特数据;
将所述尾比特数据中状态0的后向状态度量置为最大值,并将所述尾比特数据中其他状态的后向状态度量置为负最小值。
可选地,所述装置500还包括:
校验确定模块,用于确定所述Turbo码的循环冗余校验CRC码是否正确;
通知模块,用于在所述CRC码不正确时,通知所述度量模块和所述确定模块分别重新执行所述对输入序列进行前向状态度量和后向状态度量、以及所述根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码的步骤;
输出模块,用于在所述CRC码正确时,输出所述输入序列对应的Turbo码。
通过上述任一SISO装置,对输入序列中单个比特数据的状态度量可以在一个时钟周期内进行,相较于相关技术中在多个时钟周期内进行单个比特数据状态度量的方式,本公开的Turbo译码方法可以提高单位时间内的数据吞吐率。并且,由于在一个时钟周期内可以完成单个比特数据的状态度量,因此通过一个SISO装置可以完成Turbo译码过程,这减少了占用的元器件面积,提高了单位面积内的数据吞吐率,并降低了Turbo译码的成本。
基于同一发明构思,本公开还提供一种Turbo译码系统,包括数据接收装置和至少一个上述任一软输入软输出SISO装置:
所述数据接收装置,用于接收输入的待译码序列;
所述至少一个软输入软输出SISO装置,用于对所述待译码输入序列进行前向状态度量和后向状态度量,以及根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。
在一种可能的方式中,该Turbo译码系统的框图可以如图6所示。参照图6,该Turbo译码系统可以包括数据接收装置601和一个SISO装置602。其中,数据接收装置601可以包括解交织器611、交织器612、交织器613、选择器614、选择器615和选择器616。
参照图6,输入序列D和输入序列D经过交织器613得到的结果序列通过选择器615输入到SISO装置602,预设校验序列P1和P2通过选择器616输入到SISO装置602。SISO装置602根据接收到的数据,对输入序列D进行译码,并将译码结果和输入序列D进行比对,得到本次译码过程的增益值Le。该增益值Le通过交织器612、解交织器611和选择器614后输入到SISO装置602,以对下一次译码过程产生反馈影响。
应当理解的是,各交织器和解交织器的作用与相关技术中类似,本公开实施例中不再赘述。另外,本公开实施例中未提及的Turbo译码的其他步骤均与相关技术中类似,本公开实施例中也不再赘述。
通过上述Turbo译码系统,对输入序列中单个比特数据的状态度量可以在一个时钟周期内进行,相较于相关技术中在多个时钟周期内进行单个比特数据状态度量的方式,本公开的Turbo译码方法可以提高单位时间内的数据吞吐率。并且,由于在一个时钟周期内可以完成单个比特数据的状态度量,因此通过一个SISO装置可以完成Turbo译码过程,这减少了占用的元器件面积,提高了单位面积内的数据吞吐率,并降低了Turbo译码的成本。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (15)

1.一种Turbo译码方法,其特征在于,应用于软输入软输出SISO装置,包括:
对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行;
根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。
2.根据权利要求1所述的方法,其特征在于,对输入序列进行前向状态度量和后向状态度量,包括:
对所述输入序列中的比特数据依次进行第一入栈操作和第一出栈操作;
对所述第一出栈操作得到的数据进行后向状态度量;
对所述第一出栈操作得到数据依次进行第二入栈操作和第二出栈操作;
对所述第二出栈操作得到的数据进行前向状态度量。
3.根据权利要求1所述的方法,其特征在于,所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行,包括:
将所述比特数据存入随机存取存储RAM和备份寄存器中;
根据上一时刻对所述RAM中数据的存取操作和当前时刻对所述RAM中数据的存取操作,在所述RAM和所述备份寄存器中确定读取所述比特数据的目标位置;
从所述目标位置读取所述比特数据进行前向状态度量或后向状态度量。
4.根据权利要求1所述的方法,其特征在于,所述输入序列中每一比特数据的前向状态度量或后向状态度量,包括:
按照以下公式,计算所述比特数据的分支度量:
Figure FDA0001876250600000021
其中,γk(s',s)为所述输入序列中比特数据的分支度量,s'为所述比特数据k-1时刻或k+1时刻的状态,s为所述比特数据k时刻的状态,d为所述比特数据,p为所述比特数据对应的校验数据;
当所述s'为所述比特数据k-1时刻的状态时,根据所述分支度量和所述比特数据在k-1时刻的前向状态度量,确定所述比特数据k时刻的前向状态度量;或
当所述s'为所述比特数据k+1时刻的状态时,根据所述分支度量和所述比特数据在k+1时刻的后向状态度量,确定所述比特数据k时刻的后向状态度量。
5.根据权利要求1-4任一所述的方法,其特征在于,对所述输入序列进行前向状态度量和后向状态度量的窗口长度为所述SISO装置的最大译码长度的平方根值。
6.根据权利要求1-4任一所述的方法,其特征在于,当对所述输入序列进行后向状态度量时,还包括:
确定所述输入序列中的比特数据为尾比特数据;
将所述尾比特数据中状态0的后向状态度量置为预设最大值,并将所述尾比特数据中其他状态的后向状态度量置为预设负最小值。
7.根据权利要求1-4任一所述的方法,其特征在于,在根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码之后,还包括:
确定所述Turbo码的循环冗余校验CRC码是否正确;
如果所述CRC码不正确,则重新执行所述对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行、以及所述根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码的步骤;
如果所述CRC码正确,则输出所述输入序列对应的Turbo码。
8.一种软输入软输出SISO装置,其特征在于,包括:
度量模块,用于对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行;
确定模块,用于根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。
9.根据权利要求8所述的装置,其特征在于,所述度量模块用于:
对所述输入序列中的比特数据依次进行第一入栈操作和第一出栈操作;
对所述第一出栈操作得到的数据进行后向状态度量;
对所述第一出栈操作得到数据依次进行第二入栈操作和第二出栈操作;
对所述第二出栈操作得到的数据进行前向状态度量。
10.根据权利要求8所述的装置,其特征在于,所述度量模块用于:
将所述比特数据存入随机存取存储RAM和备份寄存器中;
根据上一时刻对所述RAM中数据的存取操作和当前时刻对所述RAM中数据的存取操作,在所述RAM和所述备份寄存器中确定读取所述比特数据的目标位置;
从所述目标位置读取所述比特数据进行前向状态度量或后向状态度量。
11.根据权利要求8所述的装置,其特征在于,所述度量模块用于:
按照以下公式,计算所述比特数据的分支度量:
Figure FDA0001876250600000041
其中,γk(s',s)为所述输入序列中比特数据的分支度量,s'为所述比特数据k-1时刻或k+1时刻的状态,s为所述比特数据k时刻的状态,d为所述比特数据,p为所述比特数据对应的校验数据;
当所述s'为所述比特数据k-1时刻的状态时,根据所述分支度量和所述比特数据在k-1时刻的前向状态度量,确定所述比特数据k时刻的前向状态度量;或
当所述s'为所述比特数据k+1时刻的状态时,根据所述分支度量和所述比特数据在k+1时刻的后向状态度量,确定所述比特数据k时刻的后向状态度量。
12.根据权利要求8-11任一所述的装置,其特征在于,所述度量模块对所述输入序列进行前向状态度量和后向状态度量的窗口长度为所述SISO装置的最大译码长度的平方根值。
13.根据权利要求8-11任一所述的装置,其特征在于,所述度量模块还用于:
确定所述输入序列中的比特数据为尾比特数据;
将所述尾比特数据中状态0的后向状态度量置为预设最大值,并将所述尾比特数据中其他状态的后向状态度量置为预设负最小值。
14.根据权利要求8-11任一所述的装置,其特征在于,所述装置还包括:
校验确定模块,用于确定所述Turbo码的循环冗余校验CRC码是否正确;
通知模块,用于在所述CRC码不正确时,通知所述度量模块和所述确定模块分别重新执行所述对输入序列进行前向状态度量和后向状态度量,其中,对所述输入序列中每一比特数据的前向状态度量或后向状态度量在一个时钟周期内进行、以及所述根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码的步骤;
输出模块,用于在所述CRC码正确时,输出所述输入序列对应的Turbo码。
15.一种Turbo译码系统,其特征在于,包括数据接收装置和至少一个权利要求8-14任一所述的软输入软输出SISO装置:
所述数据接收装置,用于接收输入的待译码序列;
所述至少一个软输入软输出SISO装置,用于对所述待译码输入序列进行前向状态度量和后向状态度量,以及根据所述前向状态度量和所述后向状态度量的结果,确定所述输入序列对应的Turbo码。
CN201811400739.6A 2018-11-22 2018-11-22 Turbo译码方法、装置及系统 Active CN111211792B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811400739.6A CN111211792B (zh) 2018-11-22 2018-11-22 Turbo译码方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811400739.6A CN111211792B (zh) 2018-11-22 2018-11-22 Turbo译码方法、装置及系统

Publications (2)

Publication Number Publication Date
CN111211792A true CN111211792A (zh) 2020-05-29
CN111211792B CN111211792B (zh) 2023-05-30

Family

ID=70788076

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811400739.6A Active CN111211792B (zh) 2018-11-22 2018-11-22 Turbo译码方法、装置及系统

Country Status (1)

Country Link
CN (1) CN111211792B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1328386A (zh) * 2001-07-11 2001-12-26 信息产业部电信传输研究所 并行滑动窗最大后验概率算法及其高速Turbo码译码器
US20040153942A1 (en) * 2003-01-24 2004-08-05 Nathan Shtutman Soft input soft output decoder for turbo codes
CN101026439A (zh) * 2007-02-07 2007-08-29 重庆重邮信科股份有限公司 一种提高Turbo码译码速率的译码方法
CN101286817A (zh) * 2008-04-03 2008-10-15 浙江大学 传统二进制和双二进制Turbo码通用译码方法
WO2010045842A1 (zh) * 2008-10-23 2010-04-29 华为技术有限公司 一种译码中外信息计算方法、译码器以及Turbo码译码器
WO2011048997A1 (ja) * 2009-10-22 2011-04-28 日本電気株式会社 軟出力復号器
CN104092470A (zh) * 2014-07-25 2014-10-08 中国人民解放军国防科学技术大学 一种Turbo码译码装置及方法
US10084486B1 (en) * 2017-09-29 2018-09-25 Intel Corporation High speed turbo decoder

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1328386A (zh) * 2001-07-11 2001-12-26 信息产业部电信传输研究所 并行滑动窗最大后验概率算法及其高速Turbo码译码器
US20040153942A1 (en) * 2003-01-24 2004-08-05 Nathan Shtutman Soft input soft output decoder for turbo codes
CN101026439A (zh) * 2007-02-07 2007-08-29 重庆重邮信科股份有限公司 一种提高Turbo码译码速率的译码方法
CN101286817A (zh) * 2008-04-03 2008-10-15 浙江大学 传统二进制和双二进制Turbo码通用译码方法
WO2010045842A1 (zh) * 2008-10-23 2010-04-29 华为技术有限公司 一种译码中外信息计算方法、译码器以及Turbo码译码器
WO2011048997A1 (ja) * 2009-10-22 2011-04-28 日本電気株式会社 軟出力復号器
CN104092470A (zh) * 2014-07-25 2014-10-08 中国人民解放军国防科学技术大学 一种Turbo码译码装置及方法
US10084486B1 (en) * 2017-09-29 2018-09-25 Intel Corporation High speed turbo decoder

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
J.H. HAN等: "High Speed Max-Log-MAP Turbo SISO Decoder Implementation Using Branch Metric Normalization" *
仵林博;朱怡安;田杭沛;: "一种改进的Turbo码译码算法" *

Also Published As

Publication number Publication date
CN111211792B (zh) 2023-05-30

Similar Documents

Publication Publication Date Title
US11463111B2 (en) Encoding/decoding method, device, and system
US9214958B2 (en) Method and decoder for processing decoding
CN102412847B (zh) 用联合节点处理来解码低密度奇偶校验码的方法和设备
KR101535225B1 (ko) 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치
US10866857B2 (en) Encoding and decoding of permuted cyclic codes
CN101194428A (zh) 迭代解码器中的停止准则
US9344117B2 (en) Methods and systems for error-correction decoding
US20050273687A1 (en) Apparatus and method for turbo decoding using a variable window size
JP4227481B2 (ja) 復号装置および復号方法
US20190260391A1 (en) Error detection in communication systems using polar coded data transmission
RU2571597C2 (ru) Способ и устройство для декодирования турбокода
CN105634508A (zh) 一种低复杂度近性能限的Turbo译码器的实现方法
EP2313979B1 (en) Methods for programmable decoding of a plurality of code types
CN103856218B (zh) 译码处理方法及译码器
US10084486B1 (en) High speed turbo decoder
CN110022158B (zh) 一种译码方法及装置
CN111211792B (zh) Turbo译码方法、装置及系统
CN103595424A (zh) 分量译码方法、译码器及Turbo译码方法、装置
EP3913810A1 (en) Error correcting decoding device and error correcting decoding method
EP4072023A1 (en) Decoding method, decoder, and decoding device
CN111384976B (zh) 稀疏校验矩阵的存储方法和读取方法
CN111769839B (zh) 快速的比特翻转译码方法
JP2003152556A (ja) 誤り訂正符号復号装置
CN117081611B (zh) 一种基于并行处理的译码方法和设备
CN113098532B (zh) 低时延低复杂度的极化码译码方法和系统

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
CB02 Change of applicant information

Address after: 100085 unit C, building C, lin66, Zhufang Road, Qinghe, Haidian District, Beijing

Applicant after: Beijing Xiaomi pinecone Electronic Co.,Ltd.

Address before: 100085 Beijing city Haidian District Qinghe Shun Yip things Park Building 3 unit A

Applicant before: BEIJING PINECONE ELECTRONICS Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant