CN113131947B - 译码方法、译码器和译码装置 - Google Patents
译码方法、译码器和译码装置 Download PDFInfo
- Publication number
- CN113131947B CN113131947B CN201911393850.1A CN201911393850A CN113131947B CN 113131947 B CN113131947 B CN 113131947B CN 201911393850 A CN201911393850 A CN 201911393850A CN 113131947 B CN113131947 B CN 113131947B
- Authority
- CN
- China
- Prior art keywords
- decoding
- subcodes
- subcode
- soft
- decision result
- 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
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000009191 jumping Effects 0.000 claims abstract description 9
- 230000015654 memory Effects 0.000 claims description 39
- 208000011580 syndromic disease Diseases 0.000 claims description 10
- 239000011159 matrix material Substances 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 101100165224 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) BCH1 gene Proteins 0.000 description 5
- 101100111270 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) BCH2 gene Proteins 0.000 description 5
- 238000012937 correction Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 101150054451 Rtel1 gene Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2906—Coding, 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 using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2906—Coding, 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 using block codes
- H03M13/2927—Decoding strategies
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2948—Iterative decoding
- H03M13/2951—Iterative decoding using iteration stopping criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/06—Dc level restoring means; Bias distortion correction ; Decision circuits providing symbol by symbol detection
- H04L25/067—Dc level restoring means; Bias distortion correction ; Decision circuits providing symbol by symbol detection providing soft decisions, i.e. decisions together with an estimate of reliability
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Abstract
本申请涉及通信领域,尤其涉及一种译码方法、译码器和译码装置。对多个子码中的第一子码进行软判决译码得到硬判决结果;判断是否跳出译码迭代,当不跳出译码迭代时:根据上述硬判决结果将第一子码对应的第一关断标识设置为第一数值,该第一关断标识用于指示在下一次译码迭代中是否对所述第一子码进行软判决译码,当第一关断标识表示的数值为第一数值时,则在下次译码迭代中不对所述第一子码进行软判决译码;保存上述硬判决结果。
Description
技术领域
本申请涉及通信领域,尤其涉及一种译码方法、译码器和译码装置。
背景技术
在高速光传输系统中,需要前向纠错(Forward error correction,FEC)技术来提升系统的传输性能,以支撑更远的传输距离。所谓FEC,指的是在发射端对所要传输的数据按照一定的规则进行编码,引入一定的冗余(即开销);在接收端根据相应的编码规则进行译码,从而纠正传输过程中由噪声或信道损伤引入的数据传输错误。FEC按译码方式可分为硬判决FEC和软判决FEC两种。
其中,硬判决FEC是指输入FEC译码器的每比特数据只有0、1两种取值,该输入数据称为硬信息,译码器在译码过程中也只计算和更新硬信息,最终输出的是硬信息。软判决FEC是指输入FEC译码器的每比特数据均用浮点数值或量化为多种取值的定点数值表示,该数值的符号表示该比特的0、1取值,绝对值大小表示该取值的可信程度,该输入数据称为软信息,译码器在译码过程中计算和更新的是也是软信息,最终输出的是硬信息。
硬判决FEC的实现复杂度低,所需功耗低,但是对于传输系统的性能提升不如软判决FEC大,软判决FEC对传输系统的性能提升高于硬判决,但是实现复杂度高,功耗高。因此,需要根据应用场景的不同来选择不同译码方式,因此,在当前的FEC芯片设计中,希望能够在同一FEC芯片中能够支持多种应用场景下的译码,同时还要满足系统的功耗、延时等需求。
在一种现有技术中,直接采用软判决译码,在译码结果满足一定条件时跳出译码,然而一般在跳出译码前的若干次软判决译码中,残留误码已经很少,使用软判决译码会造成译码器的大部分性能处于浪费状态,会消耗大量不必要的功耗。
发明内容
鉴于此,本申请实施例提供了一种译码方法、译码器和译码装置,用于降低译码功耗。
第一方面,本申请实施例公开了一种译码方法,该译码方法包括:
对码字的多个子码中的第一行子码进行软判决译码得到第一硬判决结果;
判断是否跳出译码迭代,当不跳出译码迭代时:根据上述第一硬判决结果将第一行子码对应的第一关断标识设置为第一数值,该第一关断标识用于指示在下一次译码迭代中是否对第一行子码进行软判决译码,当第一关断标识表示的数值为第一数值时,则在下次译码迭代中不对所述第一行子码进行软判决译码,保存第一硬判决结果;
当跳出译码迭代时:输出第一硬判决结果。
这里,第一硬判决结果为第一行子码的有效硬判决结果,即有效子码。本申请公开的译码方法中通过为每个待译的子码添加关断标识,若第一子码已经生成有效的硬判决结果,则将该子码的关断标识表示的数值更新为第一数值,指示下一次译码迭代中不需要再对第一子码进行软判决译码,从而节省了译码功耗,提高了译码效率。
一种可能的设计中,第一硬判决结果与本次对第一行子码进行软判决译码之前保存的硬判决结果有至少一个第一比特位上的取值不同,该第一比特位对应有第一列子码,第一列子码与所述第一行子码在该第一比特位相交;将所述第一列子码对应的关断标识设置为第二数值,当第一列子码对应的关断标识表示的数值为第二数值时,则在下次译码迭代中对上述第一列子码进行软判决译码。
本次对第一行子码进行软判决译码之前保存的硬判决结果通常为上一次对第一行子码译码迭代得到的硬判决结果。在第一行子码存在比特位有误码的情况,不仅仅对第一行子码重新软判决译码,还对第一行子码关联的第一列子码也再进行译码,提高了译码的准确度和精度。
一种可能的设计中,获取上述码字的多个子码中的第二子码对应的第二关断标识,该第二关断标识表示的数值为第一数值;获取第二子码的第二硬判决结果,该第二硬判决结果为在本次译码迭代之前的译码迭代中得到的有效的硬判决结果;判断是否跳出译码迭代,当不跳出译码迭代时:根据第二硬判决结果生成第二软信息,该第二软信息用于在下一次对所述第二子码的译码迭代中进行软判决译码;当跳出译码迭代时:将所述第二硬判决结果输出。
本次对第二子码进行译码时,已经存储有第二子码对应的第二关断标识,且第二关断标识表示的数值为第二数字,故本次不需要对第二子码进行译码。
一种可能的设计中,上述根据第二硬判决结果生成第二软信息,包括:根据第二硬判决结果对应的符号值和第二软信息的位宽值生成第二软信息,优选软信息的最大位宽值或相对较大的位宽值。
一种可能的设计中,获取上述多个子码中的第三子码对应的第三关断标识,该第三关断标识表示的数值为第二数值,本次译码迭代中需要对第三子码进行译码;获取第三子码对应的第三软信息;根据该第三软信息对第三子码进行软判决译码得到第三硬判决结果;
判断第三硬判决结果是否有效,若第三硬判决结果有效:生成新的第三软信息,该新的第三软信息用于后续对所述第三子码的译码迭代;将上述第三关断标识表示的数值更新为所述第一数值。因为第三硬判决结果有效,下次译码迭代中不需要对第三子码再进行译码。
一种可能的设计中,上述根据第三软信息对第三子码进行软判决译码得到所述第三硬判决结果后,方法还包括:
判断当前译码迭代为预设次数的译码迭代中的最后一次译码迭代;
跳出译码迭代;
输出第三硬判决结果。
一种可能的设计中,所述判断第三硬判决结果是否有效,包括:
根据所述对第三子码得到的第三硬判决结果,计算所述第三子码对应的伴随式矩阵;
根据所述第三子码对应的伴随式矩阵的取值,确定所述第三硬判决结果是否有效。
第二方面,本申请实施例公开了一种译码器,该译码器包括:处理器、第一存储器和第二存储器;
处理器用于对码字的多个子码中的第一行子码进行软判决译码得到第一硬判决结果;
第一存储器用于存储第一行子码对应的第一关断标识;
第二存储器用于存储上述第一硬判决结果;
处理器还用于将第一关断标识设置为第一数值,该第一关断标识用于指示在下一次译码迭代中是否对所述第一行子码进行软判决译码,当第一关断标识表示的数值为第一数值时,则在下次译码迭代中不对所述第一行子码进行软判决译码;
处理器还用于将上述第一硬判决结果保存在第二存储器中。
一种可能的设计中,译码器还包括输出接口,该输出接口用于将对上述第一行子码译码得到的第一硬判决结果输出。
一种可能的设计中,所述处理器还用于判断第一硬判决结果与本次对第一行子码进行软判决译码之前保存的硬判决结果有至少一个第一比特位上的取值不同,该第一比特位对应有第一列子码,第一列子码与第一行子码在该第一比特位相交;
处理器还用于将第一列子码对应的关断标识设置为第二数值,当第一列子码对应的关断标识表示的数值为第二数值时,则在下一次译码迭代中对第一列子码进行软判决译码。
一种可能的设计中,译码器还包括输入接口,该输入接口用于获取多个子码中的第二子码对应的第二关断标识,该第二关断标识表示的数值为所述第一数值;
输入接口还用于获取第二子码的第二硬判决结果;
处理器用于判断是否跳出译码迭代,当不跳出译码迭代时:理器根据第二硬判决结果生成第二软信息,该第二软信息用于在下一次对第二子码的译码迭代中进行软判决译码;
当跳出译码迭代时:输出接口还用于将对第二子码译码得到的第二硬判决结果输出。
一种可能的设计中,输入接口还用于获取多个子码中的第三子码对应的第三关断标识,该第三关断标识表示的数值为所述第二数值;输入接口还用于获取第三子码对应的第三软信息;处理器还用于根据第三软信息对第三子码进行软判决译码得到第三硬判决结果;
当处理器判断第三硬判决结果有效:处理器还用于生成新的第三软信息,该新的第三软信息用于后续对所述第三子码的译码迭代;处理器还用于将第三关断标识表示的数值更新为所述第一数值。
一种可能的设计中,处理器根据第三软信息对第三子码进行软判决译码得到第三硬判决结果后,处理器还用于跳出译码迭代;输出接口还用于输出第三硬判决结果。
一种可能的设计中,处理器判断是否跳出译码迭代,包括:
处理器比较当前的迭代次数是否达到预设的迭代次数:
当当前的迭代次数达到预设的迭代次数,则跳出译码迭代;当前的迭代次数未达到预设的迭代次数,不跳出译码迭代。
第三方面,本申请实施例公开了一种译码装置,该译码装置包括:
存储器,用于存储程序;
处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行第一方面中任一种可能实现的方法。
一种可能的设计中,所述译码装置为芯片或集成电路。
第四方面,本申请实施例公开了一种计算机存储介质,所述计算机存储介质中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行第一方面中任一种可能实现的方法。
第五方面,本申请实施例还公开了一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机执行第一方面中任一种可能实现的方法。
附图说明
图1a为本申请实施例公开的一种编译码系统的结构示意图;
图1b为本申请实施例公开的一种TPC码字的结构示意图;
图2为本申请实施例公开的一种译码方法的流程图;
图3a为本申请实施例公开的一种码字的编码方案的示意图;
图3b为本申请实施例公开的一种码字的译码方案的示意图;
图4为本申请实施例公开的一种获取基本序列的方法示意图;
图5为本申请实施例公开的一种获取测试序列的方法示意图;
图6为本申请实施例公开的一种译码方法的流程图;
图7为本申请实施例公开的一种译码方法的流程图;
图8为本申请实施例公开的一种译码方法的流程图;
图9为本申请实施例公开的一种译码器的结构示意图;
图10为本申请实施例公开的一种译码装置的结构示意图;
图11为本申请实施例公开的一种译码器示意图;
图12为本申请实施例公开的一种译码装置示意图。
具体实施方式
本申请公开了一种译码方法、译码器和译码装置,用于降低译码功耗,以下进行详细说明。
本申请公开的译码方法、译码器和译码装置可以适用于通过校验矩阵定义的一类线性码,例如低密度奇偶校验码(Low Density Parity Check Code,LDPC),同样更适用于二维码字,例如TPC(Turbo Product Codes)码字。本申请公开的译码方法还适用于其他种类的二维或多维码字,本申请对此不做限制。
图1a是本申请实施例提供的一种编译码系统的示意图,参见图1a,该编译码系统100可以包括编码设备101以及译码设备102。其中,编码设备101用于对数据流中各个数据块,进行编码,得到每个数据块所对应的码字,并将码字组成码流发送给译码设备102。该数据流可以是视频流、音频流以及文本流等任一个数据流。一个码字也即是编码设备101对一个数据块进行编码的结果,每个码字可以视为一个帧,一个码字中的数据也即是一帧数据。一个码字为一个译码设备译码时的基本数据单元,一个码字可以包括多行多列的比特位,一列或一行比特位可以组成一个子码,也即是一个码字包括多个子码,每个子码包括多个比特位,属于同一个子码的比特位位于一个码字的同一行或同一列。例如,一个码字包括128*128个比特位,其中,每128个比特位为一行,每128个比特位为一列,也即是该码字可以包括128行子码或128列子码。该编码设备101可以采用阶梯(staircase)乘积(turboproduct code,TPC)码的编码方案进行编码,该编码方案所得到的码字的比特位被一个横向的BCH(bose ray hocquenghem)子码和一个纵向的BCH子码保护。译码设备101以一帧数据(例如128bit*128bit)为基本单位进行编码,相邻的两个帧中的数据满足BCH(n,k)的编码关系,其中,n为一个BCH子码的码长,k为一个BCH子码的信息位。例如,译码设备101对一个数据流中第0帧和第1帧进行横向BCH(256,239)码字编码,也即是按照行,对第0帧和第1帧中每一行比特位上的数据进行编码,得到编码后的第0帧和编码后的第1帧;然后,译码设备101对编码后的第1帧以及第2帧进行纵向BCH(256,239)码字编码,也即是按照列,对编码后的第1帧以及第2帧的每一列比特位上的数据进行编码,得到2次编码后的第一帧和1次编码后的第2帧,从而2次编码后的第1帧中每个比特位被一个横向上的子码和一个纵向上的子码保护。
译码设备102,用于对接收到的码流中的码字进行译码。译码设备102每接收到一个码字时,均可以对目标个数的码字进行迭代译码,该目标个数的码字可以包括新接收的码字以及之前译码后的码字。
TPC码字是一种典型的二维分组代数码,两个维度可以采用相同或者不同的代数码子码联合编码,其码字构造如图1b所示(这里代数码子码以BCH码为例)。TPC码以一个矩形(多为正方形)的信息块为编码单元,首先对信息块的每一行使用BCH1码进行行编码,编码开销放在信息块右侧;然后再对信息块和行开销的每一列使用BCH2码进行列编码,编码开销放在信息块和行开销的下方。根据BCH码的内在数学原理,右下角部分由信息块和行开销部分编码出的列开销,从行的维度上看也会自动满足行BCH1的编码关系。编码后的信息块与行列开销组成一个更大的矩形数据块单元,即为一个TPC码字。
在译码端,以TPC码字为基本译码单元,进行行列迭代译码。在一定迭代次数内,译码性能随着迭代次数的增加而提升。迭代译码中的行/列译码内核既可以采用复杂度较低的硬判决译码内核,也可以采用性能更优的soft-in-soft-out(SISO)软判决译码内核,亦可设计成可根据条件切换的动态译码架构。
在采用硬判决译码内核时,只需要一个1位位宽的译码缓存RAM_HD。每次行/列译码后只需将RAM_HD中对应位置的比特按照译码结果翻转,在迭代中不断更新RAM_HD中的各个比特取值。在迭代译码完成后,RAM_HD的最终状态即作为译码结果输出。
在采用SISO译码内核时,需要两个多位位宽的译码缓存RAM_LLR和RAM_EX分别用于存储从信道获取的每个比特的LLR(Log Likelihood Ratio,对数似然比)值和每次行/列迭代译码后得到的外信息值。在每个TPC码字的译码过程中,RAM_LLR的内容保持不变,而RAM_EX则根据每次行/列译码后得到的外信息值对应更新。每次行/列译码的输入软信息由上一次列/行译码得到的外信息EX_info和LLR值共同计算得到。在迭代译码完成后,可简单的将最后一次译码的硬判决结果作为最终译码结果输出。
本申请公开的译码方法、译码器和译码装置是以子码为单元进行的,例如上述的TPC码字,假设一个n行n列的TPC码字,即总共存在2*n个子码,本申请的译码方法在译码时可以对该2*n子码中每个子码进行译码。
值得注意的是,本申请实施例下文所提到的关断标识缓存、硬判决结果缓存或软信息缓存可以是内存对象缓存系统或存储器,存储器可以包括寄存器、易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(harddisk drive,HDD)或固态硬盘(solid-state drive,SSD)、云存储(cloud storage)、网络附接存储(Network Attached Storage,NAS)、网盘(network drive)等;存储器还可以包括上述种类的存储器的组合或者其他具有存储功能的任意形态的介质或产品。
为了使本领域技术人员能够更清楚地理解本申请实施例提供的技术方案,下面通过具体的实施例,对本申请的实施例提供的译码方法进行详细说明,示例性的,本实施例中待译码的码字可以采用staircase(阶梯)TPC(Turbo Product Code,Turbo乘积码)编码方案。在对多个子码进行译码时,通常会预设一定次数的译码迭代,在第N次译码迭代中(第N次译码迭代可以是预设次数软判决译码迭代中的除首次译码迭代外的任意一次译码迭代)本申请译码方法具体过程可以包括:
S201、从关断标识缓存中获取待译子码对应的关断标识,从硬判决结果缓存中获取之前存储的待译子码对应的硬判决结果。
译码端,选取待译子码进行译码,每一个待译子码都有对应的关断标识,该关断标识存储在关断标识缓存中,从关断标识缓存中获取待译子码对应的关断标识;同时,设置硬判决结果缓存用于存储译码迭代中的硬判决结果,从硬判决结果缓存中获取之前存储的待译子码对应的硬判决结果。
J201、判断待译子码对应的关断标识表示的数值是否为第二数值。
当待译子码对应的关断标识表示的数值为第二数值(例如为0)时,执行S202;当待译子码对应的关断标识表示的数值不为第二数值或者为第一数值时(例如为1),执行J203;
待译子码对应的关断标识用于判断在本次译码迭代中是否需要进行待译子码的软判决译码:若待译子码对应的关断标识表示的数值为第二数值(例如为0),则说明之前的软判决译码过程中尚未得到有效的硬判决结果,继续译码,提升译码性能;若待译子码对应的关断标识表示的数值不为第二数值或者为第一数值时(例如为1),则说明之前的软判决译码过程中得到了有效的硬判决结果,本次译码迭代不需要再进行软判决译码,进而节省译码次数,降低译码功耗。
值得注意的是,当进行某一子码的第一次迭代译码时,可以直接从步骤S202开始,当进行第二次以及后续的译码迭代时,从步骤S201开始执行。
S202、获取待译子码对应的软信息。
从软信息缓存中获取待译子码在本次译码迭代中对应的软信息。
具体的,待译子码所在的码字采用上述staircase TPC编码方案可以如图3所示,采用该编码方案的每个比特被横向BCH(Bose Ray-Chaudhuri Hocquenghem)1和纵向BCH2两个BCH子码编码保护,故可以称为软判决BCH算法。示例性的,这里横向BCH1和纵向BCH2两个子码均采用BCH(512,491)纠三个错的码字(BCH1和BCH2也可以采用不同的BCH码字实现)。编码以一帧数据(256*256比特)为单位,相邻两帧数据用相同种类的BCH码字编码。如图3所示,第0帧和第1帧即采用横向BCH1(512,491)码字编码,编码后从横向看即为256个512比特长度的BCH码字。然后第1帧接着和第2帧用纵向的BCH2(512,491)码字编码(这里BCH1和2使用相同的BCH编码方案,也可以使用不同的),编码后从纵向看也是256个512比特长度的BCH码字。
其中,待译子码的软信息,是指该待译子码的每个比特位取值的软信息,包括取值和取值的置信度,其数学表示为每个比特等于1的后验概率与其等于0的后验概率的比值的对数。其取值为正数表示该比特更可能等于1,取值为负数表示该比特更可能等于0,而其绝对值大小则可以表示相应取值的可信程度,绝对值越大该取值越可靠。
示例性的,子码中某一比特位的软信息可以通过以下算法获取:
APPN=LLR+Ex_inofN-1*α (1)
其中,APPN表示第N次译码迭代中,上述某一比特的软信息,LLR(Log LikelihoodRatio,对数似然比)表示信道输入的初始置信度,Ex_infoN-1为第(N-1)次迭代译码输出的外信息,α为权重系数,α随迭代过程慢慢增大。
根据上述算发可知,在第1次译码中,获取信道输入的每个子码中的每个比特位的LLR信息作为软信息;在第2次译码及后续软判决译码步骤中,根据信道输入的待译子码中的每个比特位的LLR信息,以及该比特位对应的外信息Ex_info获取该比特位的软信息。
S203、对待译子码进行软判决译码得到新的硬判决结果。
(1)根据待译子码中的每个比特位的软信息,为待译子码生成至少一个测试序列。
上述软判决BCH算法的核心思想是通过有限量的测试错误图样来尝试估计并纠正子码错误,因此测试序列的生成是其中的关键步骤,测试序列的数量也对算法性能有很大的影响。根据上文所述,某一比特位的软信息的绝对值可以表示该比特为取值的可靠程度,绝对值越小说明该比特位的取值越不可靠,其为错误比特的概率也就越大。因此,对于一个码字中的子码,首先选取该子码上软信息的绝对值最小的P个比特位,认为该子码的错误最有可能出现在该P个位置(P为大于零的整数,P的取值可以根据需要设置,此处不做限定)。而后,根据这P个位置构造2P个测试序列(Test Sequence,TS)。具体的构造方法,例如:
选出待译子码的P个比特位后,将待译子码的P个比特位依次遍历0和1取值,并将该子码中除了P个比特位之外的比特位取0,得到2P个基本序列(Basic Sequence,BS)。
示例性的,假设P=2,并假设这2个位置为子码的第3位和第7位,则分别使上述第3位和第7位依次取值1和0,得到22=4个BS(BS1~BS4),如图4所示。
在得到BS后,获取对待译子码的软信息进行硬判决译码得到的待译子码的译码结果,记为D0,将待译子码的D0与该子码的2P个BS获取该子码的2P个TS。具体的,可以将待译子码的D0与该子码的2P个基本序列做模二加法,得到2P个TS。示例性的,利用图4所示的4个BS(BS1~BS4)构造TS,得到的TS(TS1~TS4)可以如图5所示。
(2)根据为待译子码生成的所有测试序列对待译子码进行软判决译码,得到待译子码的至少一个有效子码。
进行软判决译码后得到K个输出子码,即K个有效子码,K≤2P,这是因为有些TS可能超出译码能力从而不能正常译码。
(3)从待译子码的所有有效子码中选取最优有效子码,作为该子码的新的硬判决结果。
示例性的,从待译子码软判决译码后的K个有效子码中选取最优有效子码,可以通过:
首先,获取该子码K个有效子码与该子码软信息之间欧氏距离,这可以根据该子码每个有效子码的每个比特位的取值,以及该码字的每个比特位的软信息,利用欧氏距离公式获取,比如:
其中,di表示一个子码的K个有效子码中的有效子码i与该子码软信息之间欧氏距离,有效子码i为该码字的K个有效子码中的任意一个,x1k表示有效子码i的第k位的取值,x2k表示该子码第k位的软信息的取值。
需要注意的是,在计算欧式距离时,需要将有效子码中的比特取值从(1,0)相应转化为(1,-1)从而与软信息的取值范围相对应。
根据上述算法,根据K个有效子码就可得到K个欧氏距离,而后选取最小的欧氏距离对应的有效子码为最优有效子码,作为待译子码的新的硬判决结果。
可选地,图3b所示的本申请实施例公开的一种迭代译码过程的示意图,图3b中的滑动窗口的维度为6,设滑动窗口内的码字包括第P-6个码字至第P-1个码字,其中,第P-1个码字为滑动窗口中的第1个码字,第P-6个码字为滑动窗口中的最后一个码字,第P-1个码字也即是第P-1帧数据;当译码设备接收到第P个码字时,滑动窗口向前滑动一个码字,使得第P个码字为该滑动窗口内的第1个码字,第P-6个码字从该滑动窗口滑出,第P-5个码字为滑动窗口的最后一个码字;译码设备开始对第P-5个码字至第P个码字进行迭代译码过程,该迭代译码过程包括迭代译码1-5;译码设备对第P-5个码字至第P个码字进行的迭代译码过程可以是:首先,译码设备102对第P个码字和第P-1个码字进行一次横向软判决译码,得到译码后的第P个码字以及译码后的第P-1个码字,记为迭代译码1;然后,译码设备对译码后的第P-1个码字以及第P-2个码字进行一次纵向软判决译码,得到再次译码后的第P-1个码字以及译码后的第P-2个码字,记为迭代译码2,依次类推译码设备进行迭代译码3-5,当迭代译码5完成后,译码设备将第P-5个码字的译码结果输出,也即是输出译码后的第P-5个码字。其中,横向软判决译码为按照行对码字中的各个子码进行软判决译码,例如,对于一个码字,译码设备先对该码字中的第一行子码进行软判决译码,再对该码字中的第二行子码进行软判决译码,当然,译码设备也可以并行对多行子码进行软判决译码。纵向软判决译码为按照列对码字中的各个子码进行软判决译码,例如,对于一个码字,译码设备102先对该码字中的第一列子码进行软判决译码,再对该码字中的第二列子码进行软判决译码,当然,译码设备可以并行对多列子码进行软判决译码。
J202、判断是否跳出译码迭代。
若本次对待译子码的译码迭代后的译码次数达到预设的最大译码次数,则跳出译码迭代,执行步骤S205;若本次对待译子码的译码迭代后的译码次数未达到预设的最大译码次数,则执行步骤S204。
S204、若新的硬判决结果有效,将新的硬判决结果存储,待译子码对应的关断标识设置为第一数值;生成待译子码的下一次的软判决译码的软信息。之后执行步骤S207。
(1)判断上述得到的新的硬判决结果是否有效:若新的硬判决结果有效,将新的硬判决结果保存在硬判决结果缓存中,将关断标识缓存中待译子码对应的关断标识表示的数值更新为第一数值,这里关断标识表示的数值为第一数值,用于指示本次软判决译码过程中得到了有效的硬判决结果,下次译码迭代不需要再对本子码进行软判决译码,进而节省译码次数,降低译码功耗。
具体地,可以通过待译子码对应的新的硬判决结果和校验矩阵,来确定该子码的新的硬判决结果是否有效,在一种可能的实现方式中,计算校验矩阵与上述新的硬判决结果的积,当该积为0时,则认为新的硬判决结果有效。
可选地,在BCH译码中,通过计算BCH子码的伴随式来判断新的硬判决结果是否有效。例如,若一次软判决译码的纠错能力为t,也即是可以对t个比特位进行纠错,基于BCH子码的新的硬判决结果,计算2t个伴随式,若2t个伴随式的值全为0,则上述新的硬判决结果有效,若2t个伴随式的值出现非0值,则上述新的硬判决结果无效。这里,通过计算BCH子码的伴随式确定有效是在译码算法中默认的有效,即是译码算法设定的判断译码结果有效的方式,但实际可能存在一定的误码率。本申请对译码算法本身判断译码结果是否有效的方法并不限定。
(2)根据待译子码中的每个比特位的软信息、新的硬判决结果、次优有效子码获取该子码中的每个比特位的外信息,根据该外信息生成下一次的软判决译码的软信息。
由于所用FEC采用卷积编码+窗口译码的方式来提升性能,因此在完成当次软判决译码之后,还需要计算出本次译码获得的每个比特的外信息Ex_info并传递给下一次的软判决译码来生成下一次的软判决译码的软信息,从而实现置信度在译码过程中的有效传递。
示例性的,可以根据以下算法获取外信息:
其中,wj表示一个子码第j比特位的外信息,R表示软判决译码的输入软信息,D为该子码的最优有效子码,即上述新的硬判决结果,C为次优有效子码(该子码的所有有效子码中除了最优有效子码外最优的有效子码,也可以称为竞争子码),而dj为D中的第j比特位的取值(1/-1)。由于P的取值有限,所以有可能在K个输出结果中中找不到满足上述要求的C,这时,该比特位的外信息可以采用下面的近似算法获取:
wj=βdj (4)
其中,β为权重系数,随着译码流程取值慢慢增加,其具体取值可通过仿真优化得到。
由此可见,每一次软判决译码的译码结果通过外信息影响下一次软判决译码,所以上述某一子码的每一软判决译码也可以称为该子码的一次译码迭代。
可选地,新的硬判决结果与待译子码之前保存的硬判决结果有至少一个第一比特位上的取值不同,例如,本次译码迭代的待译子码为第一行子码,第一行子码上有第一比特位本次硬判决结果与之前保存的硬判决结果取值不同,第一比特位上还对应有第一列子码,第一列子码与第一行子码在第一比特位相交;则第一列子码对应的关断标识设置为第二数值(例如为0),当关断标识表示的数值为第二数值时,则在下次译码迭代中需要对第一列子码进行软判决译码。
值得一提的是,本申请实施例所提及的第一行子码和第一列子码也可以是两个关联的子码,不需要严格遵循行列通常的排布方式;另外,子码上比特位也不一定都是遵循一排的排列方式,本申请对此并不限定。例如,如图6所示,第一行子码601和第一列子码602在第一比特位603(图6中半圆凸起处)相交,第一行子码601和第一列子码602通过第一比特位603关联,第一比特位603对应有第一行子码601和第一列子码602;第一行子码601和第一列子码602也可以以图6中弯折的形式排布。
S205、输出上述得到的待译子码的新的硬判决结果。之后执行步骤S207,直至进行到所有待译子码的最后一个子码的最后一次译码迭代。
J203、判断是否跳出译码迭代。
若本次对待译子码的译码迭代后的译码次数达到预设的最大译码次数,则跳出译码迭代,执行步骤S205;若本次对待译子码的译码迭代后的译码次数未达到预设的最大译码次数,则执行步骤S206。
S206、根据上次译码存储的硬判决结果生成新的软信息。之后执行步骤S207。
根据获取的上次译码迭代中的硬判决结果生成新的软信息,具体地,根据上次译码迭代中的硬判决结果对应的符号值(硬判决结果每比特数据一般只有0、1两种取值,例如1对应的符号值为正,0对应的符号值为负)和软信息的位宽值生成新的软信息,并将该新的软信息保存在软信息缓存中。一般将硬判决结果对应的符号值和软信息的位宽值的乘积作为输出的软信息;优选地,软信息的位宽值优先选取软信息位宽允许下的最大位宽值或相对较大的位宽值。
S207、转向下一个子码。
本次待译子码的本次译码迭代结束,转向下一个子码的译码迭代,下一个子码可以是行子码,也可以是列子码。
本申请公开的译码方法中,以一个码字中的子码为基本的译码单元,相对于现有技术中以码字为译码单元,提高了译码精度。现有技术中在以码字为译码单元的时候,当一个码字存在一个比特位需要软判决译码时,则需要对整个码字重新进行软判决译码,而本申请的技术方案中的只需要对该比特位所在的子码进行译码,大大节省了译码功耗。
本申请公开的译码方法中,为每个待译的子码添加关断标识,在每次译码迭代后,更新关断标识表示的数值,若有子码已经生成有效的硬判决结果,则将该子码的关断标识表示的数值更新为第一数值,指示下一次译码迭代中不需要再进行软判决译码;若有子码中尚有比特位还未得到有效译码结果,则将该子码的关断标识表示的数值更新为第二数值,指示下一次译码迭代中还需要再进行软判决译码。本申请公开的译码方法大大节省了译码功耗,提高了译码效率。
本申请的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序,应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以本申请未描述的顺序实施。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。方法实施例中的具体操作方法也可以应用于装置实施例中。此外,为了更加明显地体现不同实施例中的组件的关系,本申请采用相同的附图编号来表示不同实施例中功能相同或相似的组件。
需要说明的是,本申请实施例中所述的至少一个表示“一个”或“一个以上”。示例性的,包括A、B、C中的至少一个,可能表示如下含义:
(1)包括A
(2)包括B
(3)包括C
(4)包括A和B
(5)包括A和C
(6)包括B和C
(7)包括A、B和C
还需要说明的是,除非特殊说明,一个实施例中针对一些技术特征的具体描述也可以应用于解释其他实施例提及对应的技术特征。例如,一个实施例中关于第二数值或第一数值表示的含义的限定也适用于其它实施例。
图7为本申请公开的一种译码方法的流程图,下述方法流程中以S表示执行类步骤,以J表示判断类步骤,如图7所示,该译码方法包括:
S701、对多个子码中的第一行子码进行软判决译码得到第一硬判决结果。
对码字中多个子码中的第一行子码进行软判决译码,软判决译码过程可参考上述步骤203的相关描述,得到第一硬判决结果。可选地,该第一硬判决结果为第一行子码有效子码,优先选取最优有效子码。
J701、判断是否跳出译码迭代:若是,则执行步骤S704;若否,则执行步骤S702。
若本次对第一行子码的译码迭代后的译码次数达到预设的最大译码次数,则跳出译码迭代,执行步骤S704;若本次第一行子码的译码迭代后的译码次数未达到预设的最大译码次数,则执行步骤S702。
S702、根据上述第一硬判决结果将第一行子码对应的第一关断标识设置为第一数值(例如为1)。
根据上述第一硬判决结果判断该第一硬判决结果是有效的译码结果。第一行子码对应有第一关断标识,第一关断标识存储在关断标识缓存中,将第一关断标识表示的数值设置为第一数值。第一关断标识用于指示在下一次译码迭代中是否对上述第一行子码进行软判决译码,当第一关断标识表示的数值为第一数值(例如为1)时,则在下次译码迭代中不对第一行子码进行软判决译码,因为在S701步骤中已经得到了有效的第一硬判决结果。
S703、保存上述第一硬判决结果。
将第一硬判决结果保存在硬判决结果缓存中。之后可以选择执行步骤S705。
S704、输出上述第一硬判决结果。
步骤S701~步骤S704为对某一子码第一次译码迭代所经历的步骤。
步骤S705、S706为可选步骤:
S705、将第一列子码对应的关断标识设置为第二数值。
在进行步骤S701之前,若硬判决结果缓存中,存储有在之前对第一行子码进行软判决译码保存的硬判决结果,本次一次译码迭代得到的第一硬判决结果与之前保存的第一行子码的硬判决结果有至少一个第一比特位上的取值不同,该第一比特位对应有第一列子码,第一列子码与第一行子码在该第一比特位相交;
将上述第一列子码对应的关断标识设置为第二数值(例如为0),当第一关断标识表示的数值为第二数值时,则在下次译码迭代中需要对上述第一列子码进行软判决译码。
S706、对下一个子码进行译码迭代。
第一行子码的本次译码迭代(例如第五次)完成后,对下一个子码进行本次译码迭代(例如第五次),下一个子码可以是行子码,也可以是列子码。
当码字中所有待译子码均进行完本次译码迭代后,再进行下一次译码迭代,直到码字的所有待译子码均完成预设次数的译码迭代后,译码完毕。
在一种可能的实施方式中,步骤S706中对下一个子码进行译码迭代可以包括如下步骤,如图8所示:
S801、获取多个子码中的第二子码对应的第二关断标识,该第二关断标识表示的数值为所述第一数值(例如为1)。
由于第二子码对应的第二关断标识表示的数值为第一数值,表明在之前的译码迭代中已经获得第二子码的有效的硬判决结果,所以在本次译码迭代中不需要对上述第二子码进行软判决译码。
S802、获取上述第二子码的第二硬判决结果,该第二硬判决结果为在当前的译码迭代之前的译码迭代中得到的有效的硬判决结果。
J801、判断是否跳出译码迭代,当不跳出译码迭代时,执行步骤S803;当跳出译码迭代时,执行步骤S804。
S803、根据上述第二硬判决结果生成第二软信息,该第二软信息用于在下一次对所述第二子码的译码迭代中进行软判决译码。
可选地,根据第二硬判决结果对应的符号值(硬判决结果每比特数据一般只有0、1两种取值,例如1对应的符号值为正,0对应的符号值为负)和第二软信息的位宽值生成第二软信息,并将该第二软信息保存在软信息缓存中。优选地,第二软信息的位宽值优先选取第二软信息的最大的位宽值或相对较大的位宽值。
S804、将上述第二硬判决结果输出。
步骤S801~S804展示了多个子码中有第二子码已经获得有效的硬判决结果后的译码过程。
在另一种可能的实施方式中,步骤S706中对下一个子码进行译码迭代还可以包括如下步骤,如图9所示:
S901、获取多个子码中的第三子码对应的第三关断标识,该第三关断标识表示的数值为上述第二数值(例如为0)。
由于第三子码对应的第三关断标识表示的数值为第二数值,表明在之前译码迭代中尚未得到第三子码的有效的硬判决结果,在本次译码迭代中,需要对第三子码进行软判决译码。
S902、获取第三子码对应的第三软信息,该第三软信息为在之前的译码迭代中保存的第三子码对应的第三软信息。
S903、根据上述第三软信息对第三子码进行软判决译码得到第三硬判决结果。
J901、判断上述第三硬判决结果是否有效,若该第三硬判决结果有效,执行步骤S904;若该第三硬判决结果无效,则可以选择执行步骤S905。
可选地,在BCH译码中,通过计算BCH子码的伴随式来判断新的硬判决结果是否有效。
S904、生成新的第三软信息,该新的第三软信息用于后续对第三子码的译码迭代;将第三子码对应的第三关断标识表示的数值更新为上述第一数值。
由于已经得到第三子码的有效的硬判决结果,下一次译码迭代中为了节省译码功耗不需要再对第三子码进行软判决译码,故将第三子码对应的第三关断标识表示的数值更新为第一数值。
具体地,根据第三子码中的每个比特位的软信息、第三硬判决结果获取第三子码中的每个比特位的外信息,根据该外信息生成新的第三软信息。
可选地,若本次对第三子码的译码迭代为预设的最后一次译码迭代,则跳出译码迭代,输出上述第三硬判决结果。
S905、若第三硬判决结果无效,则第三关断标识表示的数值保持不变,同时若本次对第三子码的译码迭代为预设的最后一次译码迭代,则输出第三子码的译码失败指示信息。
步骤S901~S905展示了多个子码中有第三子码尚未获得有效的硬判决结果后的译码过程。
本实施例公开的译码方法中,分别公开了对子码进行第一次译码迭代的译码流程、对已经获得有效硬判决结果的子码的译码流程和对尚未获得有效硬判决结果的子码的译码流程。本申请公开的译码方法大大节省了译码功耗,提高了译码效率。
图10为本申请实施例公开的一种译码器,如图10所示,该译码器1000包括处理器1001、第一存储器1002、第二存储器1003;
处理器1001,用于对多个子码中的第一行子码进行软判决译码得到第一硬判决结果;
第二存储器1003,用于存储上述第一硬判决结果;
第一存储器1002,用于存储上述第一行子码对应的第一关断标识;
处理器1001,还用于将上述第一关断标识设置为第一数值,该第一关断标识用于指示在下一次译码迭代中是否对所述第一行子码进行软判决译码,当第一关断标识表示的数值为所述第一数值时,则在下次译码迭代中不对所述第一行子码进行软判决译码;
处理器1001,还用于将上述第一硬判决结果保存在第二存储器1003中。
第一存储器和第二存储器仅仅是为了区分存储不同的信息,在实际可能是同一个存储器的不同部分,例如可能是同一个存储器中的两个独立的缓存或RAM。
在一种可能的实施方式中,译码器1000还可以包括输出接口1005,输出接口1005用于将对上述第一行子码译码得到的第一硬判决结果输出。
在一种可能的设计中,处理器1001还用于判断上述第一硬判决结果与上述对第一行子码进行软判决译码之前保存的硬判决结果有至少一个第一比特位上的取值不同,该第一比特位对应有第一列子码,第一列子码与第一行子码在第一比特位上相交;
处理器1001还用于将上述第一列子码对应的关断标识设置为第二数值,当第一列子码对应的关断标识表示的数值为第二数值时,则在下一次译码迭代中需要对上述第一列子码进行软判决译码。
在另一种可能的实施方式中,译码器1000还包括输入接口1004,
输入接口1004,用于获取多个子码中的第二子码对应的第二关断标识,该第二关断标识表示的数值为第一数值;
输入接口1004,还用于获取第二子码的第二硬判决结果;
处理器1001,还用于判断是否跳出译码迭代,当不跳出译码迭代时:
处理器1001根据上述第二硬判决结果生成第二软信息,该第二软信息用于在下一次对所述第二子码的译码迭代中进行软判决译码;
当跳出译码迭代时:
输出接口1005还用于将上述第二硬判决结果输出。
在一种可能的设计中,输入接口1004还用于获取上述多个子码中的第三子码对应的第三关断标识,该第三关断标识表示的数值为第二数值;
输入接口1004还用于获取第三子码对应的第三软信息;
处理器1001还用于根据上述第三软信息对第三子码进行软判决译码得到第三硬判决结果;
当处理器1001判断上述第三硬判决结果有效:处理器1001还用于生成新的第三软信息,该新的第三软信息用于后续对第三子码的译码迭代;处理器901还用于将上述第三关断标识表示的数值更新为第一数值。
进一步地,处理器1001根据上述第三软信息对第三子码进行软判决译码得到第三硬判决结果后,处理器1001还用于跳出译码迭代,输出接口1005还用于输出上述第三硬判决结果。
处理器1001判断是否跳出译码迭代,包括:
处理器1001比较当前的迭代次数是否达到预设的迭代次数:当当前的迭代次数达到预设的迭代次数,则跳出译码迭代;当前的迭代次数未达到预设的迭代次数,不跳出译码迭代。
图11为本申请实施例公开的一种译码器,如图11所示,该译码器1100包括:软判决译码模块1101、切换模块1102、关断模块1103和输出模块1105;
软判决译码模块1101,用于对多个子码中的第一行子码进行软判决译码得到第一硬判决结果;
切换模块1102,用于判断是否跳出译码迭代,当不跳出译码迭代时:
关断模块1103将第一行子码对应的第一关断标识设置为第一数值,该第一关断标识用于指示在下一次译码迭代中是否对上述第一行子码进行软判决译码,当第一关断标识表示的数值为上述第一数值时,则在下次译码迭代中不对所述第一行子码进行软判决译码;
当跳出译码迭代时:
输出模块1105将对所述第一行子码译码得到的所述第一硬判决结果输出。
在一种可能的实现方式中,上述第一硬判决结果与上述对第一行子码进行软判决译码之前保存的硬判决结果有至少一个第一比特位上的取值不同,该第一比特位对应有第一列子码,第一列子码与第一行子码在第一比特位相交;
关断模块1103将上述第一列子码对应的关断标识设置为第二数值,当第一列子码对应的关断标识表示的数值为第二数值时,则在下次译码迭代中对第一列子码进行软判决译码。
在一种可能的实现方式中,上述译码器1100还包括获取模块1104:
获取模块1104,用于获取多个子码中的第二子码对应的第二关断标识,该第二关断标识表示的数值为第一数值;
获取模块1104,还用于获取第二子码的第二硬判决结果,所述第二硬判决结果为在当前的译码迭代之前的译码迭代中得到的有效的硬判决结果;
切换模块1102,用于判断是否跳出译码迭代,当不跳出译码迭代时:
软判决译码模块1101根据上述第二硬判决结果生成第二软信息,该第二软信息用于在下一次对第二子码的译码迭代中进行软判决译码;
当跳出译码迭代时:
输出模块1105将上述第二硬判决结果输出。
可选地,根据所述第二硬判决结果对应的符号值和所述第二软信息的位宽值生成所述第二软信息。
在一种可能的实现方式中,获取模块1104,还用于获取多个子码中的第三子码对应的第三关断标识,该第三关断标识表示的数值为第二数值;
获取模块1104,还用于获取所述第三子码对应的第三软信息;
软判决译码模块1101,还用于根据上述第三软信息对所述第三子码进行软判决译码得到第三硬判决结果;
软判决译码模块1101,还用于判断第三硬判决结果是否有效,若第三硬判决结果有效:
软判决译码模块1101生成新的第三软信息,该新的第三软信息用于后续对上述第三子码的译码迭代;关断模块1103将第三关断标识表示的数值更新为所述第一数值。
图12为本申请实施例公开的一种译码装置,如图12所示,该译码装置包括:
存储器1201,用于存储程序;
处理器1202,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如上述方法实施例中所描述的任意一种方法。
可选地,该译码装置为芯片或集成电路。
本申请实施例还公开了一种计算机可读存储介质,该计算机存储介质中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如上述方法实施例中所描述的任意一种方法。
本申请实施例还公开了一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机执行如上述方法实施例中所描述的任意一种方法。
本申请实施例提供了一种计算机可读存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述处理器所执行的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述处理器所执行的方法。
本申请中的各个实施例之间相同相似的部分互相参见即可,尤其,对于图9~图10实施例而言,由于基于图2~图8对应的实施例,所以描述的比较简单,相关之处参见图2~图8对应实施例的部分说明即可。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
最后应说明的是:以上所述仅为本申请的具体实施方式,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (18)
1.一种译码方法,其特征在于,所述方法包括:
对码字的多个子码中的第一行子码进行软判决译码得到第一硬判决结果;
判断是否跳出软判决译码的译码迭代,当不跳出译码迭代时:
根据所述第一硬判决结果将所述第一行子码对应的第一关断标识设置为第一数值,所述第一关断标识用于指示在下一次译码迭代中是否对所述第一行子码进行软判决译码,当所述第一关断标识表示的数值为所述第一数值时,则在下次译码迭代中不对所述第一行子码进行软判决译码;
保存所述第一硬判决结果。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一硬判决结果与对所述第一行子码进行软判决译码之前保存的硬判决结果有至少一个第一比特位上的取值不同,所述第一比特位对应有第一列子码,所述第一列子码与所述第一行子码在所述第一比特位相交;
将所述第一列子码对应的关断标识设置为第二数值,当所述第一列子码对应的关断标识表示的数值为所述第二数值时,则在下次译码迭代中对所述第一列子码进行软判决译码。
3.如权利要求1或2任一所述的方法,其特征在于,所述方法还包括:
获取所述多个子码中的第二子码对应的第二关断标识,所述第二关断标识表示的数值为所述第一数值;
获取所述第二子码的第二硬判决结果,所述第二硬判决结果为在当前的译码迭代之前的译码迭代中得到的有效的硬判决结果;
判断是否跳出译码迭代,当不跳出译码迭代时:
根据所述第二硬判决结果生成第二软信息,所述第二软信息用于在下一次对所述第二子码的译码迭代中进行软判决译码;
当跳出译码迭代时:
将所述第二硬判决结果输出。
4.如权利要求3所述的方法,其特征在于,所述根据所述第二硬判决结果生成第二软信息,包括:
根据所述第二硬判决结果对应的符号值和所述第二软信息的位宽值生成所述第二软信息。
5.如权利要求2所述的方法,其特征在于,所述方法还包括:
获取所述多个子码中的第三子码对应的第三关断标识,所述第三关断标识表示的数值为所述第二数值;
获取所述第三子码对应的第三软信息;
根据所述第三软信息对所述第三子码进行软判决译码得到第三硬判决结果;
判断所述第三硬判决结果是否有效,若所述第三硬判决结果有效:
生成新的第三软信息,所述新的第三软信息用于后续对所述第三子码的译码迭代;
将所述第三关断标识表示的数值更新为所述第一数值。
6.如权利要求5所述的方法,其特征在于,所述根据所述第三软信息对所述第三子码进行软判决译码得到所述第三硬判决结果后,所述方法还包括:
判断当前译码迭代为预设次数的译码迭代中的最后一次译码迭代;
跳出译码迭代;
输出所述第三硬判决结果。
7.如权利要求5或6所述的方法,其特征在于,所述判断第三硬判决结果是否有效,包括:
根据所述第三硬判决结果,计算所述第三子码对应的伴随式矩阵;
根据所述第三子码对应的伴随式矩阵的取值,确定所述第三硬判决结果是否有效。
8.一种译码器,其特征在于,所述译码器包括:处理器、第一存储器和第二存储器;
所述处理器用于对码字的多个子码中的第一行子码进行软判决译码得到第一硬判决结果;
所述第一存储器用于存储所述第一行子码对应的第一关断标识;
所述第二存储器用于存储所述第一硬判决结果;所述处理器还用于将所述第一关断标识设置为第一数值,所述第一关断标识用于指示在下一次译码迭代中是否对所述第一行子码进行软判决译码,当所述第一关断标识表示的数值为所述第一数值时,则在下次译码迭代中不对所述第一行子码进行软判决译码;
所述处理器还用于将所述第一硬判决结果保存在所述第二存储器中。
9.如权利要求8所述的译码器,其特征在于,所述译码器还包括输出接口,所述输出接口用于将对所述第一行子码译码得到的所述第一硬判决结果输出。
10.如权利要求9所述的译码器,其特征在于,
所述处理器还用于判断所述第一硬判决结果与对所述第一行子码进行软判决译码之前保存的硬判决结果有至少一个第一比特位上的取值不同,所述第一比特位对应有第一列子码,所述第一列子码与所述第一行子码在所述第一比特位相交;
所述处理器还用于将所述第一列子码对应的关断标识设置为第二数值,当所述第一列子码对应的关断标识表示的数值为所述第二数值时,则在下一次译码迭代中对所述第一列子码进行软判决译码。
11.如权利要求10所述的译码器,其特征在于,所述译码器还包括输入接口,
所述输入接口用于获取所述多个子码中的第二子码对应的第二关断标识,所述第二关断标识表示的数值为所述第一数值;
所述输入接口还用于获取第二子码的第二硬判决结果;
所处处理器用于判断是否跳出译码迭代,当不跳出译码迭代时:
所述处理器根据所述第二硬判决结果生成第二软信息,所述第二软信息用于在下一次对所述第二子码的译码迭代中进行软判决译码;
当跳出译码迭代时:
所述输出接口还用于将对所述第二子码译码得到的所述第二硬判决结果输出。
12.如权利要求11所述的译码器,其特征在于,
所述输入接口还用于获取所述多个子码中的第三子码对应的第三关断标识,所述第三关断标识表示的数值为所述第二数值;
所述输入接口还用于获取所述第三子码对应的第三软信息;
所述处理器还用于根据所述第三软信息对所述第三子码进行软判决译码得到第三硬判决结果;
当所述处理器判断所述第三硬判决结果有效:
所述处理器还用于生成新的第三软信息,所述新的第三软信息用于后续对所述第三子码的译码迭代;
所述处理器还用于将所述第三关断标识表示的数值更新为所述第一数值。
13.如权利要求12所述的译码器,其特征在于,所述处理器根据所述第三软信息对所述第三子码进行软判决译码得到所述第三硬判决结果后,
所述处理器还用于跳出译码迭代;
所述输出接口还用于输出所述第三硬判决结果。
14.如权利要求11所述的译码器,其特征在于,所述处理器判断是否跳出译码迭代,包括:
所述处理器比较当前的迭代次数是否达到预设的迭代次数:
当当前的迭代次数达到预设的迭代次数,则跳出译码迭代;当前的迭代次数未达到预设的迭代次数,不跳出译码迭代。
15.一种译码装置,其特征在于,所述译码装置包括:
存储器,用于存储程序;
处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如权利要求1~7任一项所述的方法。
16.如权利要求15所述的装置,其特征在于,所述译码装置为芯片或集成电路。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1~7任意一项所述的方法。
18.一种计算机程序产品,其特征在于,当计算机读取并执行所述计算机程序产品时,使得计算机执行如权利要求1~7任意一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911393850.1A CN113131947B (zh) | 2019-12-30 | 2019-12-30 | 译码方法、译码器和译码装置 |
PCT/CN2020/117022 WO2021135426A1 (zh) | 2019-12-30 | 2020-09-23 | 译码方法、译码器和译码装置 |
EP20908654.5A EP4072023A4 (en) | 2019-12-30 | 2020-09-23 | DECODING METHOD AND DECODER DEVICE |
US17/852,218 US11750219B2 (en) | 2019-12-30 | 2022-06-28 | Decoding method, decoder, and decoding apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911393850.1A CN113131947B (zh) | 2019-12-30 | 2019-12-30 | 译码方法、译码器和译码装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113131947A CN113131947A (zh) | 2021-07-16 |
CN113131947B true CN113131947B (zh) | 2023-11-10 |
Family
ID=76686397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911393850.1A Active CN113131947B (zh) | 2019-12-30 | 2019-12-30 | 译码方法、译码器和译码装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11750219B2 (zh) |
EP (1) | EP4072023A4 (zh) |
CN (1) | CN113131947B (zh) |
WO (1) | WO2021135426A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114421976B (zh) * | 2022-01-25 | 2023-09-08 | 电子科技大学 | 基于概率计算的tpc迭代译码方法及译码器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6460160B1 (en) * | 2000-02-14 | 2002-10-01 | Motorola, Inc. | Chase iteration processing for decoding input data |
KR20040086872A (ko) * | 2003-03-22 | 2004-10-13 | 김환용 | 터보 복호기의 반복복호 횟수 제어장치 및 그 방법 |
CN102571108A (zh) * | 2012-02-24 | 2012-07-11 | 清华大学深圳研究生院 | 一种应用于Turbo乘积码的自适应迭代译码方法 |
CN103503319A (zh) * | 2013-04-03 | 2014-01-08 | 华为技术有限公司 | 一种译码方法、译码装置和通信系统 |
WO2016015288A1 (zh) * | 2014-07-31 | 2016-02-04 | 华为技术有限公司 | 译码方法和译码器 |
CN106341136A (zh) * | 2015-07-08 | 2017-01-18 | 北京忆芯科技有限公司 | Ldpc解码方法及其装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4522197B2 (ja) * | 2004-08-31 | 2010-08-11 | 三洋電機株式会社 | 受信方法および装置 |
US20080052594A1 (en) | 2006-07-28 | 2008-02-28 | Yedidia Jonathan S | Method and system for replica group-shuffled iterative decoding of quasi-cyclic low-density parity check codes |
US8700970B2 (en) * | 2010-02-28 | 2014-04-15 | Densbits Technologies Ltd. | System and method for multi-dimensional decoding |
US9197365B2 (en) * | 2012-09-25 | 2015-11-24 | Nvidia Corporation | Decoding a coded data block |
CN104092470B (zh) * | 2014-07-25 | 2017-07-07 | 中国人民解放军国防科学技术大学 | 一种Turbo码译码装置及方法 |
US9755665B1 (en) * | 2014-09-23 | 2017-09-05 | Marvell International Ltd. | Systems and methods for an iterative decoding scheme |
KR20160046467A (ko) * | 2014-10-21 | 2016-04-29 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템, 데이터 저장 시스템 및 그것의 동작 방법 |
CN104579369B (zh) * | 2014-12-18 | 2018-06-15 | 北京思朗科技有限责任公司 | 一种Turbo迭代译码方法和译码装置 |
US20160283321A1 (en) * | 2015-03-28 | 2016-09-29 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and Methods for Flash Memory Access |
US10419024B2 (en) * | 2017-05-26 | 2019-09-17 | SK Hynix Inc. | Early termination of low-density parity-check (LDPC) decoding |
US10164656B2 (en) * | 2016-03-30 | 2018-12-25 | Silicon Motion Inc. | Bit flipping algorithm for providing soft information during hard decision hard decoding |
CN108347297B (zh) * | 2017-01-25 | 2021-06-08 | 华为技术有限公司 | 一种编码方法、译码方法、编码装置及译码装置 |
US10187086B2 (en) * | 2017-03-15 | 2019-01-22 | SK Hynix Inc. | State-based decoding of product codes |
JP6840591B2 (ja) * | 2017-03-24 | 2021-03-10 | キオクシア株式会社 | 復号装置 |
US10511326B2 (en) * | 2017-11-14 | 2019-12-17 | Nyquist Semiconductor Limited | Systems and methods for decoding error correcting codes |
-
2019
- 2019-12-30 CN CN201911393850.1A patent/CN113131947B/zh active Active
-
2020
- 2020-09-23 EP EP20908654.5A patent/EP4072023A4/en active Pending
- 2020-09-23 WO PCT/CN2020/117022 patent/WO2021135426A1/zh unknown
-
2022
- 2022-06-28 US US17/852,218 patent/US11750219B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6460160B1 (en) * | 2000-02-14 | 2002-10-01 | Motorola, Inc. | Chase iteration processing for decoding input data |
KR20040086872A (ko) * | 2003-03-22 | 2004-10-13 | 김환용 | 터보 복호기의 반복복호 횟수 제어장치 및 그 방법 |
CN102571108A (zh) * | 2012-02-24 | 2012-07-11 | 清华大学深圳研究生院 | 一种应用于Turbo乘积码的自适应迭代译码方法 |
CN103503319A (zh) * | 2013-04-03 | 2014-01-08 | 华为技术有限公司 | 一种译码方法、译码装置和通信系统 |
WO2016015288A1 (zh) * | 2014-07-31 | 2016-02-04 | 华为技术有限公司 | 译码方法和译码器 |
CN106537787A (zh) * | 2014-07-31 | 2017-03-22 | 华为技术有限公司 | 译码方法和译码器 |
CN106341136A (zh) * | 2015-07-08 | 2017-01-18 | 北京忆芯科技有限公司 | Ldpc解码方法及其装置 |
Non-Patent Citations (1)
Title |
---|
孙元华等."MIMO-OFDM中的高阶Viterbi译码器的研究".《电子技术》.2009, * |
Also Published As
Publication number | Publication date |
---|---|
EP4072023A4 (en) | 2023-01-11 |
US11750219B2 (en) | 2023-09-05 |
US20220329260A1 (en) | 2022-10-13 |
WO2021135426A1 (zh) | 2021-07-08 |
EP4072023A1 (en) | 2022-10-12 |
CN113131947A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10536171B2 (en) | Encoding/decoding method, device, and system | |
US20200177208A1 (en) | Device, system and method of implementing product error correction codes for fast encoding and decoding | |
US10411735B1 (en) | Systems and methods for an iterative decoding scheme | |
CN103888148B (zh) | 一种动态阈值比特翻转的ldpc码硬判决译码方法 | |
KR101535225B1 (ko) | 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치 | |
US7853854B2 (en) | Iterative decoding of a frame of data encoded using a block coding algorithm | |
CN101656541B (zh) | Rs码的译码方法和装置 | |
US8321746B2 (en) | Systems and methods for quasi-cyclic LDPC code production and decoding | |
TW201335943A (zh) | 決定同位元檢查陣列之方法以及快閃記憶體系統 | |
US8832525B2 (en) | Memory controller with low density parity check code decoding capability and relevant memory controlling method | |
US9219501B2 (en) | LDPC encoding/decoding method and device using same | |
CN113131947B (zh) | 译码方法、译码器和译码装置 | |
KR20160075001A (ko) | 플래시 메모리 시스템 동작 방법 | |
RU2811072C1 (ru) | Способ декодирования, декодер и устройство декодирования | |
KR101496052B1 (ko) | 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로 | |
KR101206137B1 (ko) | 모바일 와이맥스용 ldpc 복호기 | |
JP2009182421A (ja) | 復号化方法及び復号化装置 | |
KR101630114B1 (ko) | 최소합 알고리즘을 이용한 ldpc 복호화 장치 및 방법 | |
US20100125769A1 (en) | Parity-check-code decoder and recording controller | |
KR20120000040A (ko) | 반복 복호수 설정 방법, ldpc 복호화 장치 및 그 방법 | |
US9325351B2 (en) | Adaptive multi-core, multi-direction turbo decoder and related decoding method thereof | |
CN113014267B (zh) | 译码方法、设备、可读存储介质、芯片及计算机程序产品 | |
KR100930240B1 (ko) | 효율적인 에러 정정을 위한 복호 방법 및 그 장치 | |
KR20140074600A (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
KR101226439B1 (ko) | 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 |
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 |