CN110896309A - Decoding method, device, decoder and computer storage medium for Turbo product code - Google Patents

Decoding method, device, decoder and computer storage medium for Turbo product code Download PDF

Info

Publication number
CN110896309A
CN110896309A CN201811063021.2A CN201811063021A CN110896309A CN 110896309 A CN110896309 A CN 110896309A CN 201811063021 A CN201811063021 A CN 201811063021A CN 110896309 A CN110896309 A CN 110896309A
Authority
CN
China
Prior art keywords
decoding
code
code word
iterative
received
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
CN201811063021.2A
Other languages
Chinese (zh)
Other versions
CN110896309B (en
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201811063021.2A priority Critical patent/CN110896309B/en
Priority to US17/275,730 priority patent/US11381259B2/en
Priority to JP2021514078A priority patent/JP7429223B2/en
Priority to KR1020217010728A priority patent/KR20210057787A/en
Priority to PCT/CN2019/105802 priority patent/WO2020052672A1/en
Publication of CN110896309A publication Critical patent/CN110896309A/en
Application granted granted Critical
Publication of CN110896309B publication Critical patent/CN110896309B/en
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
    • H03M13/2975Judging correct decoding, e.g. iteration stopping criteria
    • 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/2906Coding, 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/2909Product codes
    • 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/2948Iterative decoding
    • 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
    • H03M13/296Particular turbo code structure
    • H03M13/2963Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product codes
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes

Abstract

The embodiment of the invention discloses a method for decoding Turbo product codes, which comprises the following steps: acquiring a receiving code word of the Turbo product code, and performing iterative decoding of a set first iterative decoding time on the receiving code word; judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result; and performing error correction processing on the Turbo product code subjected to iterative decoding of the first iteration times according to the decoding identifier. The embodiment of the invention also discloses a decoding device and a decoder of the Turbo product code and a computer storage medium.

Description

Decoding method, device, decoder and computer storage medium for Turbo product code
Technical Field
The present invention relates to the field of error correction control, and in particular, to a method and an apparatus for decoding a Turbo product code, a decoder, and a computer storage medium.
Background
Turbo product code as a soft-input-based soft-output iterative decoding algorithm has become a hot point of research in the field of channel coding because the error correction performance of Turbo product code is very close to the shannon limit. In the related art, a soft decoding algorithm is mainly used as a decoding method of the Turbo product code, however, under the condition of less error codes, the power consumption of the soft decoding algorithm is high, and the hard decoding algorithm is more suitable for being adopted. However, at low bit error rate, decoding the Turbo product code by using a hard decoding algorithm may generate an error floor, and the cause of the error floor is mainly the generation of deadlock or deadlock-like structure. Because the Turbo product code is decoded by using a hard decoding algorithm by adopting alternate row-column decoding, if errors generated during row decoding are consistent with errors generated during column decoding and cannot be corrected, a deadlock or deadlock-like structure is formed.
Disclosure of Invention
In order to solve the existing technical problem, embodiments of the present invention provide a method and an apparatus for decoding a Turbo product code, a decoder, and a computer storage medium, which can effectively avoid occurrence of an error floor.
In order to achieve the above purpose, the technical solution of the embodiment of the present invention is realized as follows:
in a first aspect, an embodiment of the present invention provides a method for decoding a Turbo product code, including:
acquiring a receiving code word of the Turbo product code, and performing iterative decoding of a set first iteration number on the receiving code word;
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result;
and performing error correction processing on the Turbo product code subjected to iterative decoding of the first iteration times according to the decoding identifier.
In a second aspect, an embodiment of the present invention provides a decoding apparatus for Turbo product code, including:
the acquisition module is used for acquiring the receiving code word of the Turbo product code;
the front iteration decoding module is used for carrying out iterative decoding on the received code words by a set first iteration number; judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result;
and the deadlock correction module is used for carrying out error correction processing on the Turbo product code subjected to iterative decoding of the first iteration times according to the decoding identifier.
In a third aspect, an embodiment of the present invention provides a decoder, where the decoder includes a processor and a memory for storing a computer program capable of running on the processor; wherein the content of the first and second substances,
the processor is configured to execute the decoding method for the Turbo product code according to the first aspect when the computer program is executed.
In a fourth aspect, an embodiment of the present invention provides a computer storage medium, where a computer program is stored, and when the computer program is executed by a processor, the method for decoding a Turbo product code according to the first aspect is implemented.
In the method, the apparatus, the decoder, and the computer storage medium for decoding the Turbo product code provided in the embodiments, the iterative decoding of the first iteration number is performed on the received code word of the obtained Turbo product code, the decoding result of the iterative decoding of the first iteration number is determined according to the first decoding rule to obtain the decoding identifier, and the error correction processing is performed on the Turbo product code after the iterative decoding of the first iteration number according to the decoding identifier used for representing the decoding result. Therefore, the decoding result of the iterative decoding of the first iteration number is judged according to the first decoding rule to obtain the decoding identifier, the identification code element in the iterative decoding of the first iteration number can be recorded through the decoding identifier, and the error correction processing is performed on the Turbo product code after the iterative decoding according to the decoding identifier obtained by the iterative decoding, so that a deadlock or deadlock-like structure in the Turbo product code can be broken, and an error leveling layer is effectively avoided.
Drawings
FIG. 1 is a flow chart illustrating a method for decoding a Turbo product code according to an embodiment of the present invention;
FIG. 2 is a schematic structural diagram of a decoding apparatus for Turbo product codes according to an embodiment of the present invention;
FIG. 3 is a block diagram of a decoder according to an embodiment of the present invention;
FIG. 4 is a flowchart illustrating a method for decoding a Turbo product code according to an alternative embodiment of the present invention;
fig. 5 is a schematic flow chart illustrating pre-iterative decoding of a received codeword according to an iterative parameter and recording the parameter according to an exemplary embodiment of the present invention;
fig. 6 is a schematic flow chart illustrating pre-iterative decoding of a received codeword according to an iterative parameter and recording of the parameter according to another exemplary embodiment of the present invention;
fig. 7 is a flowchart illustrating post-iterative decoding of a negated received codeword according to an exemplary embodiment of the invention.
Detailed Description
The technical scheme of the invention is further elaborated by combining the drawings and the specific embodiments in the specification. Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. The terminology used in the description of the invention herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the term "and/or" includes any and all combinations of one or more of the associated listed items.
Referring to fig. 1, a decoding method for a Turbo product code according to an embodiment of the present invention includes the following steps:
step S101: acquiring a receiving code word of the Turbo product code, and performing iterative decoding of a set first iteration number on the receiving code word;
in this embodiment, the decoding method of the Turbo product code is applied to a decoder as an example. The encoder constructs a Turbo product code according to the code type of the block code, then serially transmits the Turbo product code bit by bit according to the line, and the decoder converts the received serial bit sequence into an array with the same dimension as the Turbo product code, thereby obtaining the receiving code word of the Turbo product code. The received code words are all received code words of the Turbo product code, and the received code words comprise code words in a row form and code words in a column form. The first iteration number may be set according to actual needs, for example, may be set to 3 times or 4 times. As can be appreciated, the iterative decoding of the set first number of iterations of the received codeword includes: and performing iterative decoding on the received code word for the first iteration times of the set row and column iteration sequence. The row and column iteration sequence may be the sequence of the first iteration and the second iteration, or the sequence of the first iteration and the second iteration. One row iteration is performed on the received code word and is recorded as one iteration, and similarly, one column iteration is performed on the received code word and is also recorded as one iteration. In the iterative decoding process of the first iteration number set for the received code word, the number of iterations performed on the received code word and the number of iterations performed on the received code word may be the same or different. In this embodiment, iterative decoding is performed for the first iteration number in the order of the leading iteration and the following iteration on the received codeword.
Step S102: judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result;
specifically, in each row iterative decoding and column iterative decoding process, a decoding result obtained through iterative decoding is judged according to a first decoding rule, so that a decoding identifier used for representing the decoding result is obtained. The decoding result may be information such as the decoded received codeword and the corresponding error correction condition.
In an optional embodiment, before the iterative decoding of the first number of iterations of setting the received codeword, the method further includes:
acquiring the code pattern of the block code forming the Turbo product code, wherein the code pattern comprises the maximum error-correcting code element number;
the judging the decoding result of the iterative decoding of the first iteration number according to the first decoding rule to obtain a decoding identifier for representing the decoding result includes:
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule, wherein the first decoding rule comprises at least one of the following rules: determining that the received code word is a shortened code according to the code pattern, and the code elements at the complementary positions in the decoded received code word are not all 0, determining that the decoding of the received code word fails; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; determining that the number of error correction code elements for the received code word after decoding is equal to the maximum error correction code element number of the received code word, the current iterative decoding times is equal to a set iterative decoding time threshold, and the number of code words failed in decoding in the last iterative decoding process is less than a set threshold, or determining that the number of error correction code elements for the received code word after decoding is equal to the maximum error correction code element number of the received code word, and the current iterative decoding times is not equal to the iterative decoding time threshold, determining that decoding of the received code word fails;
and determining the decoding identifier of the decoding result corresponding to the received code word according to the judgment result.
Here, the decoder receives the code pattern of the block code composing the Turbo product code sent by the encoder, taking the Turbo product code as a two-dimensional Turbo product code as an example, the code pattern of the block code includes (n1, k1, t1) and (n2, k2, t2), where n1 and n2 respectively represent the code length of the corresponding block code, k1 and k2 respectively represent the information length of the corresponding block code, and t1 and t2 respectively represent the maximum number of correctable symbols of the corresponding block code. When the code length of the received code word is smaller than the code length of the corresponding block code, the unnecessary code elements of the first n columns or the first n rows in the Turbo product code, namely the code elements with 0 information bits, are deleted before coding, namely the received code word is a shortened code, and n is the absolute value of the difference between the code length of the received code word and the code length of the corresponding block code. For example, assuming that the code pattern of the block code is (255, 239) × (255, 239), if the code length of the received codeword is 248, it is determined that the received codeword is a shortened code, and a symbol in which 7 information bits are 0 is omitted from the received codeword. Before decoding the received code word of the Turbo product code with the code pattern of the shortened code, all code elements at complementary positions in the received code word are complemented by 0, wherein the complementary positions refer to positions of the omitted code elements with 0 information bits. When the code length of the received code word is greater than the code length of the corresponding block code, it is indicated that the encoder adds a check column obtained by performing an exclusive or operation on all rows in the Turbo product code and/or a check row obtained by performing an exclusive or operation on all columns in the Turbo product code, that is, a check bit which is a last code element of the received code word is called an original check bit, that is, the received code word is a spreading code.
The first decoding rule mainly comprises judging the decoding result of the iterative decoding of the first iteration number based on three aspects of the code type being a shortened code, the code type being a spread code and the maximum number of error-correctable symbols, and obtaining a decoding identifier. For example, if all the symbols at the complementary positions in the received codeword after decoding are 0, it is described that the symbols at the complementary positions in the received codeword were decoded in error, and the received codeword is decoded in failure. For another example, when decoding the received codeword with the code pattern of the spreading code, the original check bits in the received codeword are not decoded. After the received code word is decoded, performing exclusive OR operation on all code elements in the decoded received code word to obtain check bits of the decoded received code word. And if the original check bits corresponding to the received code words are different from the check bits of the Turbo product code, indicating that errors occur in the decoding process of the received code words, determining that the decoding of the received code words fails. For another example, when it is determined that the number of error correction symbols for the received codeword after decoding is equal to the maximum number of error correction symbols for the received codeword, the current iterative decoding number of times is equal to the set iterative decoding number of times threshold, and the number of codewords that have failed in decoding in the last iterative decoding process is less than the set threshold, it is determined that decoding of the received codeword fails, thereby preventing more errors from being added. And when the number of error correction code elements of the received code word after decoding is determined to be equal to the maximum error correction code element number of the received code word, the current iterative decoding times are equal to the set iterative decoding time threshold, and the number of code words failed in decoding in the last iterative decoding process is equal to or greater than the set threshold, determining that the decoding of the received code word is successful, thereby increasing the flexibility of decoding. And when the number of error correction symbols of the received code word after decoding is determined to be equal to the maximum number of error correction symbols of the received code word, and the current iterative decoding time is not equal to the iterative decoding time threshold, determining that the decoding of the received code word fails, thereby preventing more errors from being increased. Here, the maximum number of error-correctable symbols of the received codeword is the maximum number of error-correctable symbols of the block code to which the received codeword belongs. The last iteration decoding process refers to the last iteration decoding process of the current iteration decoding determined according to the first iteration times. And if the current iterative decoding is the row iterative decoding, the last iterative decoding is the column iterative decoding. And if the current iterative decoding is the column iterative decoding, the last iterative decoding is the row iterative decoding. The coding units may be columns or rows. Correspondingly, if the last iterative decoding is line iterative decoding, the number of code words failed in decoding in the last iterative decoding process is smaller than a set threshold, namely the number of line numbers failed in decoding in the last iterative decoding process is smaller than a first set threshold; if the last iterative decoding is the column iterative decoding, the number of the code words which fail in decoding in the last iterative decoding process is smaller than a set threshold, and the number of the column numbers which fail in decoding in the last iterative decoding process is smaller than a second set threshold. The first set threshold and the second set threshold may be set according to actual requirements, for example, the first set threshold may be set to 6, and the second set threshold may be set to 7. The iterative decoding time threshold is smaller than the first iterative time, and may be set according to actual needs, for example, the iterative decoding time threshold may be set to a third time.
Here, the decoder determines the decoding identifier of the decoding result corresponding to the received codeword according to the result of the judgment, and may record the decoding identifier of the decoding result corresponding to the received codeword according to the result obtained by judging the decoding result after the iterative decoding is performed on the received codeword. The decoding identification is used for identifying whether the received code word is successfully decoded. For example, if it is determined that the received codeword is successfully decoded according to the result of the determination, the decoding result corresponding to the received codeword may be marked with 1, and the number of successfully decoded codewords may be increased by 1. If the received code word is determined to fail to be decoded according to the judgment result, the decoding result corresponding to the received code word can be marked by 0, and the number of the code words failing to be decoded can be added by 1. Of course, the row number or column number of the received codeword corresponding to the Turbo product code may also be recorded, and the corresponding row number or column number is bound to the decoding identifier.
Therefore, the decoding result of the iterative decoding of the received code word for the first iteration number is judged through the first decoding rule, and the decoding identifier of the decoding result corresponding to the received code word is determined according to the judgment result, so that reference is provided for subsequent error correction processing based on the decoding identifier, and the accuracy of error correction is improved.
In an optional embodiment, before determining, according to the result of the determining, the decoding identifier of the decoding result corresponding to the received codeword, the method further includes:
initializing a decoding identification matrix, wherein the decoding identification matrix is equal to the Turbo product code in size;
the determining the decoding identifier of the decoding result corresponding to the received code word according to the judged result includes:
and updating the decoding identifier of each code element in the received code word at the corresponding position in the decoding identifier matrix according to the judgment result.
Here, the initializing the decoding identification matrix may be to set a value corresponding to each element in the decoding identification matrix to 0, and when it is determined that decoding of a codeword is successful according to the result of the determination, set a value of the codeword at a corresponding position in the decoding identification matrix to 1, that is, set a value of each symbol in the codeword at a corresponding position in the decoding identification matrix to 1.
And allocating a position for each code element in the Turbo product code by setting a decoding identification matrix with the same size as the Turbo product code so as to record a corresponding decoding result. Therefore, the decoding result of each code element in the iterative process can be obtained, so that whether deadlock or deadlock-like structures occur in the decoding process can be obtained through analysis, and reference is provided for subsequent error correction processing.
In an optional embodiment, the first decoding rule further includes:
and if the error correction is carried out on the code elements in the received code words and the code elements are correctly decoded on the code elements in the decoding identification representation corresponding to the decoding identification matrix, determining that the code elements are failed to be decoded.
For example, assuming that decoding and decoding a received codeword composed of a first row of symbols in the Turbo product code are successful, at this time, a decoding identifier corresponding to a first symbol in the decoding identifier matrix is set to 1, and if decoding and determining that error correction is performed on the first symbol are performed on a received codeword composed of a first column of symbols in the Turbo product code, at this time, it is determined that decoding of the first symbol is failed, and a decoding identifier corresponding to the first symbol in the decoding identifier matrix is updated to 0.
Therefore, the current decoding result of the code element is determined according to the historical decoding result of the code element, the problem that the code element is repeatedly changed due to the influence of other code elements is solved, and the accuracy of the decoding result is improved.
Step S103: and performing error correction processing on the Turbo product code subjected to iterative decoding of the first iteration times according to the decoding identifier.
Specifically, according to a decoding identifier for representing a decoding result, which is obtained after iterative decoding of a first iteration number is performed on a received code word of a Turbo product code, error correction processing is performed on the Turbo product code after iterative decoding of the first iteration number.
Here, the decoding identifier can represent a decoding condition in an iterative decoding process of a set first iteration number, so that whether a deadlock or a deadlock-like structure exists in the Turbo product code after the iterative decoding of the first iteration number or not can be known according to the decoding identifier, and if a deadlock or a deadlock-like structure exists in the Turbo product code after the iterative decoding of the first iteration number, the Turbo product code after the iterative decoding of the first iteration number is subjected to error correction processing according to the decoding identifier so as to break the deadlock or deadlock-like structure in the Turbo product code and avoid an error leveling layer.
In summary, in the Turbo product code decoding method provided in the above embodiment, the decoding result of the iterative decoding of the first iteration number is determined according to the first decoding rule to obtain the decoding identifier, and the identification code element in the iterative decoding of the first iteration number may be recorded through the decoding identifier, so that the error correction processing is performed on the Turbo product code after the iterative decoding according to the decoding identifier obtained by the iterative decoding, thereby breaking a deadlock or deadlock-like structure in the Turbo product code, and effectively avoiding an error floor.
In an optional embodiment, the performing, according to the decoding identifier, error correction processing on the Turbo product code after iterative decoding of the first iteration number includes:
acquiring the number of rows of failed decoding during the last row iterative decoding corresponding to the first iteration number and the number of columns of failed decoding during the last column iterative decoding according to the decoding identifier;
and when the row number is determined to be equal to or larger than a set first number threshold and the column number is determined to be equal to or larger than a set second number threshold, performing negation operation on the code word which fails in decoding in the Turbo product code after iterative decoding of the first iteration number.
For example, assuming that the first iteration number is 6, the first iterative decoding is row iterative decoding, the second iterative decoding is column iterative decoding, and so on, the last row iterative decoding corresponding to the first iteration number is fifth iterative decoding, and the last column iterative decoding corresponding to the first iteration number is sixth iterative decoding. Since the decoding is performed iteratively, and the Turbo product code is updated after each decoding is successful, so as to obtain a new decoded Turbo product code, the last row iterative decoding and the last column iterative decoding corresponding to the first iteration number include iterative decoding information before the last row iterative decoding and the last column iterative decoding. The first number threshold and the second number threshold may be assigned according to a correspondenceThe maximum number of error-correctable symbols of the block code is determined. For example, when the code pattern of the block code constituting the Turbo product code is (n)1,k1,t1) And (n)2,k2,t2) And the size of the Turbo product code is n1*n2The first number threshold may be set to t1+1, the second number threshold may be set to t2+1。
It is understood that determining that the number of rows is equal to or greater than a set first number threshold and the number of columns is equal to or greater than a set second number threshold indicates that a deadlock or deadlock-like structure may occur in the Turbo product code after the iterative decoding of the first number of iterations. The negation operation is performed on the code word which fails in decoding in the Turbo product code after the iterative decoding of the first iteration number, which may be to perform the negation operation on all code words which fail in decoding in the Turbo product code after the iterative decoding of the first iteration number, or to perform the negation operation on part of code words which fail in decoding in the Turbo product code after the iterative decoding of the first iteration number, so as to break a deadlock or deadlock-like structure. For example, the negation operation on the code word that fails to be decoded in the Turbo product code after the iterative decoding of the first iteration number may be performed before t of decoding failure in the Turbo product code after the iterative decoding of the first iteration number1+1 line preceding t2The +1 column of symbols is inverted, i.e. the symbol changes from 1 to 0 and from 0 to 1.
In this way, when it is determined that the number of rows of decoding failure during the last row iterative decoding corresponding to the first iteration number and the number of columns of decoding failure during the last column iterative decoding are respectively greater than the corresponding number threshold, negation operation is performed on the code word of decoding failure in the Turbo product code after the iterative decoding of the first iteration number, so that a deadlock or deadlock-like structure is further accurately broken, and the accuracy of decoding is improved.
In an optional embodiment, the performing, according to the decoding identifier, error correction processing on the Turbo product code after iterative decoding of the first iteration number includes:
acquiring the number of code elements failed in decoding according to the decoding identification matrix;
and performing negation operation on the code elements which fail to be decoded in the Turbo product code after the iterative decoding of the first iteration times according to the relation between the number and a set third number threshold.
Here, since the decoding result corresponding to each symbol is recorded in the decoding identification matrix, the number of symbols that fail decoding can be obtained according to the decoding identification matrix. The third number threshold may be set according to actual needs, for example, 10 or 16 thresholds may be set. Performing an negation operation on the code element, which fails to be decoded, in the Turbo product code after the iterative decoding of the first iteration number according to the relationship between the number and a set third number threshold, where the negation operation may be performed on a part of the code element, which fails to be decoded, in the Turbo product code after the iterative decoding of the first iteration number when the number is greater than the set third number threshold; and when the number is smaller than or equal to a set third number threshold, performing negation operation on all code elements which fail in decoding in the Turbo product code after iterative decoding of the first iteration number. For example, when the number of 0 s in the decoding identifier matrix, that is, the number of code elements failing to be decoded, is obtained and it is determined that the number of 0 s in the decoding identifier matrix is greater than a third threshold, the negation operation is performed on the part of code elements failing to be decoded in the Turbo product code after iterative decoding of the first iteration number, which may be before (t) decoding failure in the Turbo product code after iterative decoding of the first iteration number1+1)*(t2+1) symbols are inverted. It is to be understood that the determination that a deadlock or deadlock-like structure may occur in the Turbo product code after the iterative decoding of the first iteration number when the number of symbols in which the decoding fails is greater than the set third number threshold.
Therefore, the number of code elements failed in decoding is obtained according to the decoding identification matrix, and the code elements failed in decoding in the Turbo product code after iterative decoding of the first iteration number are subjected to negation operation according to the relation between the number and a set third number threshold, so that a deadlock or deadlock-like structure is further accurately broken, and the accuracy of decoding is improved.
In an optional embodiment, after performing error correction processing on the Turbo product code after iterative decoding of the first iteration number according to the decoding identifier, the method further includes:
performing iterative decoding of a second iteration number set on the Turbo product code subjected to error correction processing;
and judging the decoding result of the iterative decoding of the second iteration times according to a second decoding judgment rule to obtain the target Turbo product code.
It should be understood that the iterative decoding of the second iteration number, which is set for the Turbo product code after the error correction processing, includes: and performing iterative decoding on the Turbo product code subjected to error correction for the first iteration times of the row and column iteration sequence. The row and column iteration sequence may be the sequence of the first iteration and the second iteration, or the sequence of the first iteration and the second iteration. When the first iteration number is an even number, if the received code word is subjected to iterative decoding first, the Turbo product code subjected to error correction is also subjected to iterative decoding first; and if the received code word is subjected to row-column iterative decoding, performing row-column iterative decoding on the Turbo product code subjected to error correction. When the first iteration number is an odd number, if the received code word is subjected to iterative decoding firstly, performing row-column iterative decoding on the Turbo product code subjected to error correction; and if the received code word is subjected to row-column iterative decoding, performing iterative decoding on the Turbo product code subjected to error correction. Here, the second iteration number may be set according to actual needs, for example, may be set to 3 times or 4 times. In general, the second number of iterations may be set smaller than the first number of iterations. The second decoding decision rule may be set according to actual requirements, for example, the second decoding decision rule may be a partial rule in the first decoding decision rule.
In this way, by performing iterative decoding of the second iteration number set on the Turbo product code subjected to the error correction processing, error correction is performed on error code elements which may exist in the Turbo product code subjected to the error correction processing, and the decoding accuracy is improved.
In an optional embodiment, the determining, according to a second decoding decision rule, a decoding result of the iterative decoding of the second iteration number includes:
judging the decoding result of the iterative decoding of the second iteration number according to a second decoding judgment rule, wherein the second decoding rule comprises at least one of the following rules: determining that a received code word is a shortened code according to the code pattern, and determining that the decoding of the received code word fails if all code elements at the supplementary position in the decoded received code word are 0; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; and determining that the number of error correction code elements of the received code word after decoding is equal to the maximum number of error correction code elements of the received code word, and determining that the decoding of the received code word is successful.
Here, the received code words are all code words of the Turbo product code subjected to the error correction processing.
Therefore, the decoding result of the iterative decoding of the second iteration times of the received code word is judged through the second decoding rule, so that the accuracy of decoding is improved.
In order to implement the foregoing method, an embodiment of the present invention further provides a decoding device for a Turbo product code, where as shown in fig. 2, the decoding device for a Turbo product code includes:
an obtaining module 10, configured to obtain a received codeword of a Turbo product code;
a previous iteration decoding module 20, configured to perform iterative decoding on the received codeword for a set first iteration number; judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result;
and a deadlock correction module 30, configured to perform error correction processing on the Turbo product code after iterative decoding of the first iteration number according to the decoding identifier.
In summary, in the decoding device for Turbo product code provided in the above embodiment, the decoding result of the iterative decoding of the first iteration number is determined according to the first decoding rule to obtain the decoding identifier, and the identification code element in the iterative decoding of the first iteration number may be recorded through the decoding identifier, so that the error correction processing is performed on the Turbo product code after the iterative decoding according to the decoding identifier obtained by the iterative decoding, thereby breaking a deadlock or deadlock-like structure in the Turbo product code, and effectively avoiding an error floor.
In an optional embodiment, the obtaining module 10 is further configured to obtain a code pattern of a block code forming the Turbo product code, where the code pattern includes a maximum number of error-correctable symbols;
the pre-iteration decoding module 20 is specifically configured to:
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule, wherein the first decoding rule comprises at least one of the following rules: determining that the received code word is a shortened code according to the code pattern, and the code elements at the complementary positions in the decoded received code word are not all 0, determining that the decoding of the received code word fails; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; determining that the number of error correction code elements for the received code word after decoding is equal to the maximum error correction code element number of the received code word, the current iterative decoding times is equal to a set iterative decoding time threshold, and the number of code words failed in decoding in the last iterative decoding process is less than a set threshold, or determining that the number of error correction code elements for the received code word after decoding is equal to the maximum error correction code element number of the received code word, and the current iterative decoding times is not equal to the iterative decoding time threshold, determining that decoding of the received code word fails;
and determining the decoding identifier of the decoding result corresponding to the received code word according to the judgment result.
Therefore, the decoding result of the iterative decoding of the received code word for the first iteration number is judged through the set first decoding rule, and the decoding identifier of the decoding result corresponding to the received code word is determined according to the judgment result, so that reference is provided for subsequent error correction processing based on the decoding identifier, and the accuracy of error correction is improved.
In an optional embodiment, the pre-iteration decoding module 20 is specifically configured to:
initializing a decoding identification matrix, wherein the decoding identification matrix is equal to the Turbo product code in size;
and updating the decoding identifier of each code element in the received code word at the corresponding position in the decoding identifier matrix according to the judgment result.
Therefore, the decoding result of each code element in the iterative process can be obtained, so that whether deadlock or deadlock-like structures occur in the decoding process can be obtained through analysis, and reference is provided for subsequent error correction processing.
In an optional embodiment, the first decoding rule further includes:
and if the error correction is carried out on the code elements in the received code words and the code elements are correctly decoded on the code elements in the decoding identification representation corresponding to the decoding identification matrix, determining that the code elements are failed to be decoded.
Therefore, the current decoding result of the code element is determined according to the historical decoding result of the code element, and the accuracy of the decoding result is improved.
In an optional embodiment, the deadlock correction module 30 is specifically configured to:
acquiring the number of rows of failed decoding during the last row iterative decoding corresponding to the first iteration number and the number of columns of failed decoding during the last column iterative decoding according to the decoding identifier;
and when the row number is determined to be equal to or larger than a set first number threshold and the column number is determined to be equal to or larger than a set second number threshold, performing negation operation on the code word which fails in decoding in the Turbo product code after iterative decoding of the first iteration number.
In this way, when it is determined that the number of rows and the number of columns of the decoding failure in the last iterative decoding corresponding to the first iteration number are respectively greater than the corresponding number threshold, the negation operation is performed on the code word of the decoding failure in the Turbo product code after the iterative decoding of the first iteration number, so that the deadlock or deadlock-like structure is further accurately broken, and the decoding accuracy is improved.
In an optional embodiment, the deadlock correction module 30 is specifically configured to:
acquiring the number of code elements failed in decoding according to the decoding identification matrix;
and performing negation operation on the code elements which fail to be decoded in the Turbo product code after the iterative decoding of the first iteration times according to the relation between the number and a set third number threshold.
Therefore, the number of code elements failed in decoding is obtained according to the decoding identification matrix, and the code elements failed in decoding in the Turbo product code after iterative decoding of the first iteration number are subjected to negation operation according to the relation between the number and a set third number threshold, so that a deadlock or deadlock-like structure is further accurately broken, and the accuracy of decoding is improved.
In an optional embodiment, the apparatus for decoding a Turbo product code further includes a post-iterative decoding module 40, configured to perform iterative decoding on the Turbo product code after error correction processing for a second iteration number; and judging the decoding result of the iterative decoding of the second iteration times according to a second decoding judgment rule to obtain the target Turbo product code.
In this way, by performing iterative decoding of the second iteration number set on the Turbo product code subjected to the error correction processing, error correction is performed on error code elements which may exist in the Turbo product code subjected to the error correction processing, and the decoding accuracy is improved.
In an optional embodiment, the post-iterative decoding module 40 is specifically configured to:
judging the decoding result of the iterative decoding of the second iteration number according to a second decoding judgment rule, wherein the second decoding rule comprises at least one of the following rules: determining that a received code word is a shortened code according to the code pattern, and determining that the decoding of the received code word fails if all code elements at the supplementary position in the decoded received code word are 0; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; and determining that the number of error correction code elements of the received code word after decoding is equal to the maximum number of error correction code elements of the received code word, and determining that the decoding of the received code word is successful.
Therefore, the decoding result of the iterative decoding of the second iteration times of the received code word is judged through the second decoding rule, so that the accuracy of decoding is improved.
In an optional embodiment, the decoder further includes a decoding result output module 50, configured to output the target Turbo product code.
It should be noted that: in the above embodiment, when the decoding device for Turbo product code is used to implement the decoding method for Turbo product code, the division of the program modules is only used for illustration, and in practical application, the processing distribution may be completed by different program modules according to needs, that is, the internal structure of the decoding device for Turbo product code is divided into different program modules to complete all or part of the above-described processing. In addition, the decoder of the Turbo product code provided in the foregoing embodiments and the corresponding decoding method embodiment of the Turbo product code belong to the same concept, and specific implementation processes thereof are described in detail in the method embodiment and are not described herein again.
In another embodiment, an embodiment of the present invention further provides a decoder, as shown in fig. 3, where the decoder includes: a processor 310 and a memory 311 for storing computer programs capable of running on the processor 310; the processor 310 illustrated in fig. 3 is not used to refer to the number of the processors 310 as one, but is only used to refer to the position relationship of the processor 310 relative to other devices, and in practical applications, the number of the processors 310 may be one or more; similarly, the memory 311 shown in fig. 3 is also used in the same sense, i.e. it is only used to refer to the position relationship of the memory 311 with respect to other devices, and in practical applications, the number of the memory 311 may be one or more.
The processor 310 is configured to execute the following steps when executing the computer program:
acquiring a receiving code word of the Turbo product code, and performing iterative decoding of a set first iteration number on the receiving code word;
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result;
and performing error correction processing on the Turbo product code subjected to iterative decoding of the first iteration times according to the decoding identifier.
In an alternative embodiment, the processor 310 is further configured to execute the following steps when the computer program is executed:
acquiring the code pattern of the block code forming the Turbo product code, wherein the code pattern comprises the maximum error-correcting code element number;
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule, wherein the first decoding rule comprises at least one of the following rules: determining that the received code word is a shortened code according to the code pattern, and the code elements at the complementary positions in the decoded received code word are not all 0, determining that the decoding of the received code word fails; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; determining that the number of error correction symbols for the received code word after decoding is equal to the maximum error correctable symbol number of the received code word, the current iterative decoding times is equal to a set iterative decoding time threshold, and the number of code words failed in decoding in the last iterative decoding process is less than a set threshold, or determining that the number of error correction symbols for the received code word after decoding is equal to the maximum error correctable symbol number of the received code word, and the current iterative decoding times is not equal to the iterative decoding time threshold, determining that decoding of the received code word fails;
and determining the decoding identifier of the decoding result corresponding to the received code word according to the judgment result.
In an alternative embodiment, the processor 310 is further configured to execute the following steps when the computer program is executed:
initializing a decoding identification matrix, wherein the decoding identification matrix is equal to the Turbo product code in size;
and updating the decoding identifier of each code element in the received code word at the corresponding position in the decoding identifier matrix according to the judgment result.
In an alternative embodiment, the processor 310 is further configured to execute the following steps when the computer program is executed:
acquiring the number of rows of failed decoding during the last row iterative decoding corresponding to the first iteration number and the number of columns of failed decoding during the last column iterative decoding according to the decoding identifier;
and when the row number is determined to be equal to or larger than a set first number threshold and the column number is determined to be equal to or larger than a set second number threshold, performing negation operation on the code word which fails in decoding in the Turbo product code after iterative decoding of the first iteration number.
In an alternative embodiment, the processor 310 is further configured to execute the following steps when the computer program is executed:
acquiring the number of code elements failed in decoding according to the decoding identification matrix;
and performing negation operation on the code elements which fail to be decoded in the Turbo product code after the iterative decoding of the first iteration times according to the relation between the number and a set third number threshold.
In an alternative embodiment, the processor 310 is further configured to execute the following steps when the computer program is executed:
performing iterative decoding of a second iteration number set on the Turbo product code subjected to error correction processing;
and judging the decoding result of the iterative decoding of the second iteration times according to a set second decoding judgment rule to obtain the target Turbo product code.
In an alternative embodiment, the processor 310 is further configured to execute the following steps when the computer program is executed:
judging the decoding result of the iterative decoding of the second iteration number according to a second decoding judgment rule, wherein the second decoding rule comprises at least one of the following rules: determining that the received code word is a shortened code according to the code pattern, and the code elements at the complementary positions in the decoded received code word are not all 0, determining that the decoding of the received code word fails; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; and determining that the number of error correction code elements of the received code word after decoding is equal to the maximum number of error correction code elements of the received code word, and determining that the decoding of the received code word is successful.
The decoder further comprises: at least one network interface 312. The various components in the decoder are coupled together by a bus system 313. It will be appreciated that the bus system 313 is used to enable communications among the components connected. The bus system 313 includes a power bus, a control bus, and a status signal bus in addition to the data bus. For clarity of illustration, however, the various buses are labeled as bus system 313 in FIG. 3.
The memory 311 may be a volatile memory or a nonvolatile memory, or may include both volatile and nonvolatile memories. Among them, the nonvolatile Memory may be a Read Only Memory (ROM), a Programmable Read Only Memory (PROM), an Erasable Programmable Read-Only Memory (EPROM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a magnetic random access Memory (FRAM), a Flash Memory (Flash Memory), a magnetic surface Memory, an optical disk, or a Compact Disc Read-Only Memory (CD-ROM); the magnetic surface storage may be disk storage or tape storage. Volatile memory can be Random Access Memory (RAM), which acts as external cache memory. By way of illustration and not limitation, many forms of RAM are available, such as Static Random Access Memory (SRAM), Synchronous Static Random Access Memory (SSRAM), Dynamic Random Access Memory (DRAM), Synchronous Dynamic Random Access Memory (SDRAM), Double Data Rate Synchronous Dynamic Random Access Memory (DDRSDRAM), Enhanced Synchronous Dynamic Random Access Memory (ESDRAM), Enhanced Synchronous Dynamic Random Access Memory (Enhanced DRAM), Synchronous Dynamic Random Access Memory (SLDRAM), Direct Memory (DRmb Access), and Random Access Memory (DRAM). The memory 311 described in connection with the embodiments of the invention is intended to comprise, without being limited to, these and any other suitable types of memory.
The memory 311 in the embodiment of the present invention is used to store various types of data to support the operation of the decoder. Examples of such data include: any computer program for operating on the decoder, such as operating systems and application programs; contact data; telephone book data; a message; a picture; video, etc. The operating system includes various system programs, such as a framework layer, a core library layer, a driver layer, and the like, and is used for implementing various basic services and processing hardware-based tasks. The application programs may include various application programs such as a Media Player (Media Player), a Browser (Browser), etc. for implementing various application services. Here, the program that implements the method of the embodiment of the present invention may be included in an application program.
The present embodiment also provides a computer storage medium, in which a computer program is stored, where the computer storage medium may be a Memory such as a magnetic random access Memory (FRAM), a Read Only Memory (ROM), a Programmable Read Only Memory (PROM), an Erasable Programmable Read-Only Memory (EPROM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a Flash Memory (Flash Memory), a magnetic surface Memory, an optical Disc, or a Compact Disc Read-Only Memory (CD-ROM); or may be a variety of devices including one or any combination of the above memories, such as a mobile phone, computer, tablet device, personal digital assistant, etc.
A computer storage medium having a computer program stored therein, the computer program, when executed by a processor, performing the steps of:
acquiring a receiving code word of the Turbo product code, and performing iterative decoding of a set first iteration number on the receiving code word;
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result;
and performing error correction processing on the Turbo product code subjected to iterative decoding of the first iteration times according to the decoding identifier.
In an alternative embodiment, the computer program, when executed by the processor, further performs the steps of:
acquiring the code pattern of the block code forming the Turbo product code, wherein the code pattern comprises the maximum error-correcting code element number;
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule, wherein the first decoding rule comprises at least one of the following rules: determining that the received code word is a shortened code according to the code pattern, and the code elements at the complementary positions in the decoded received code word are not all 0, determining that the decoding of the received code word fails; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; determining that the number of error correction symbols for the received code word after decoding is equal to the maximum error correctable symbol number of the received code word, the current iterative decoding times is equal to a set iterative decoding time threshold, and the number of code words failed in decoding in the last iterative decoding process is less than a set threshold, or determining that the number of error correction symbols for the received code word after decoding is equal to the maximum error correctable symbol number of the received code word, and the current iterative decoding times is not equal to the iterative decoding time threshold, determining that decoding of the received code word fails;
and determining the decoding identifier of the decoding result corresponding to the received code word according to the judgment result.
In an alternative embodiment, the computer program, when executed by the processor, further performs the steps of:
initializing a decoding identification matrix, wherein the decoding identification matrix is equal to the Turbo product code in size;
and updating the decoding identifier of each code element in the received code word at the corresponding position in the decoding identifier matrix according to the judgment result.
In an alternative embodiment, the computer program, when executed by the processor, further performs the steps of:
acquiring the number of rows of failed decoding during the last row iterative decoding corresponding to the first iteration number and the number of columns of failed decoding during the last column iterative decoding according to the decoding identifier;
and when the row number is determined to be equal to or larger than a set first number threshold and the column number is determined to be equal to or larger than a set second number threshold, performing negation operation on the code word which fails in decoding in the Turbo product code after iterative decoding of the first iteration number.
In an alternative embodiment, the computer program, when executed by the processor, further performs the steps of:
acquiring the number of code elements failed in decoding according to the decoding identification matrix;
and performing negation operation on the code elements which fail to be decoded in the Turbo product code after the iterative decoding of the first iteration times according to the relation between the number and a set third number threshold.
In an alternative embodiment, the computer program, when executed by the processor, further performs the steps of:
performing iterative decoding of a second iteration number set on the Turbo product code subjected to error correction processing;
and judging the decoding result of the iterative decoding of the second iteration times according to a second decoding judgment rule to obtain the target Turbo product code.
In an alternative embodiment, the computer program, when executed by the processor, further performs the steps of: judging the decoding result of the iterative decoding of the second iteration number according to a second decoding judgment rule, wherein the second decoding rule comprises at least one of the following rules: determining that the received code word is a shortened code according to the code pattern, and the code elements at the complementary positions in the decoded received code word are not all 0, determining that the decoding of the received code word fails; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; and determining that the number of error correction code elements of the received code word after decoding is equal to the maximum number of error correction code elements of the received code word, and determining that the decoding of the received code word is successful.
The following describes an embodiment of the present invention in further detail by using specific examples, and referring to fig. 4, a method for decoding a Turbo product code according to an alternative embodiment of the present invention includes the following steps:
step S201: acquiring a receiving code word and a code pattern of the Turbo product code and an iteration parameter;
here, the Turbo product code constructs a product code having a minimum distance characteristic of a sub-code by arranging two or more sets of codewords of a block code into a two-dimensional or multi-dimensional matrix. Code pattern packet of Turbo product codeIncluding (128, 120) × (128, 120), (128, 127) × (128, 127), (64, 57) × (64, 57), (32, 26) × (16, 15) × (8, 7), and the like. When the transmitting end transmits information, the Turbo product code is transmitted in serial bit by bit according to rows, a receiving end converts a received serial sequence into a two-dimensional matrix form, and then decoding is carried out by depending on a matrix structure. The decoding complexity and decoding delay of the Turbo product code depend on the code pattern of the subcode, and linearly increase along with the increase of the construction complexity and decoding complexity of the subcode. Because the code pattern of the received code word cannot be distinguished according to the received code word, the received code word r _ in and the code pattern need to be simultaneously obtained, and the number of times of pre-iterative decoding and the number of times of post-iterative decoding need to be set for subsequent decoding. In this embodiment, the Turbo product code row-column iterative decoding uses a code pattern of (n)1,k1,t1) And (n)2,k2,t2) Wherein n isiIs code length, kiIs information length, tiFor error correction capability, i belongs to the set {1, 2 }. The iteration parameters comprise a pre-iteration coding time m1 and a post-iteration coding time m 2.
Step S202: carrying out pre-iterative decoding on the received code words according to the iterative parameters, and recording the parameters;
if the decoding identification matrix exists, firstly initializing the decoding identification matrix, namely storing a decoding identification for each bit data according to the size of a Turbo product code block, wherein the size of the decoding identification matrix is the size of the Turbo product code, and all initial values are assigned to be 0.
When the received codeword r _ in is subjected to preceding iteration decoding with a preceding iteration number of m1 and the preceding iteration decoding is alternate decoding of row iteration decoding and column iteration decoding, the determination condition includes:
1) if the code pattern of the code word is the shortened code, judging whether the supplementary positions of the code word after decoding are all 0, and if not, indicating that the decoding fails.
2) If the code pattern of the code word is the spreading code, judging whether the code word after decoding is subjected to XOR calculation to obtain the check bit which is the same as the original check bit of the code word before decoding, and if the check bit is different from the original check bit, indicating that the decoding fails.
3) If the decoding identifier matrix exists and a code word is decoded, the decoding identifier of the corrected code element in the decoding identifier matrix is 1, and the decoding is considered to be failed.
4) If the number of corrected code elements is the limit of the error correction capability of the code word decoding when a certain code word is decoded, the decoding is considered to be failed; however, if the current iterative decoding number of times is equal to the set iterative decoding number threshold and the number of decoding error rows or columns in the last iterative decoding process of the current iterative decoding is large, the decoding condition that the number of corrected symbols is the limit of the error correction capability of decoding the codeword in the current iterative decoding is regarded as successful decoding.
Thus, the number of error symbols can be reduced by the pre-iteration decoding.
Step S203: utilizing the recorded parameters to negate the deadlock structure or the deadlock-like structure;
if the decoding identification matrix exists, judging the number of 0 in the decoding identification matrix, and if the number of 0 in the decoding identification matrix is greater than a set threshold num1, carrying out the decoding error pre-treatment (t)1+1)*(t2+1) symbols are inverted; if the number of 0 in the decoding identification matrix is smaller than the threshold num1, all data corresponding to the position of 0 in the decoding identification matrix, i.e. all the symbols with decoding errors, are negated.
If no decoding identification matrix exists, respectively recording the row number and the column number corresponding to the decoding error during the last row iterative decoding and the last column iterative decoding of the previous iterative decoding, and if the row number of the decoding error is equal to or more than t1+1 and the number of columns in decoding error is equal to or greater than t2+1, the first t in the error code word1+1 line t2And the +1 column of data is inverted, or part of data is selected for inversion, so that a deadlock structure is broken.
Step S204: carrying out post-iterative decoding on the received code word after negation;
when the post-iteration decoding with the post-iteration number of m2 is performed on the inverted received code word, the judgment condition includes:
5) if the code pattern of the code word is the shortened code, judging whether the supplementary positions of the code word after decoding are all 0, and if not, indicating that the decoding fails.
6) If the code pattern of the code word is the spreading code, judging whether the code word after decoding is subjected to XOR calculation to obtain the check bit which is the same as the original check bit of the code word before decoding, and if the check bit is different from the original check bit, indicating that the decoding fails.
7) If the number of corrected code elements is the limit of the error correction capability of the code word decoding when a certain code word is decoded, the decoding is considered to be successful. And finally, outputting the updated r _ in after the iterative decoding is finished.
In this way, by the post-iterative decoding, error correction is performed on an erroneous symbol that may exist after the pre-iterative decoding, thereby eliminating an insufficient portion of decoding.
In an exemplary embodiment, referring to fig. 5, the application scenario based on this embodiment is as follows: there is a decode identification matrix. The pre-iterative decoding of the received code word according to the iterative parameters and the recording of the parameters include the following steps S2021 to S2028:
step S2021: acquiring a received code word, and judging whether the received code word is a shortened code or not and whether the supplementary bit is 0 or not, if so, executing a step S2022, otherwise, executing a step S2027;
here, the received code words are sequentially obtained from the Turbo product code according to the order of the previous iteration decoding, whether the code pattern of the code word is a shortened code is judged, if the code pattern of the code word is the shortened code, whether all the supplementary bits of the code word after decoding are 0 is judged, and if not all the supplementary bits are 0, the decoding failure is explained.
Step S2022: judging whether the code is a spreading code and the check bit is the same as the original check bit, if so, executing step S2023, otherwise, executing step S2027;
if the code pattern of the code word is the spreading code, whether the parity bit obtained by performing the exclusive-or calculation on the code word after decoding is the same as the original parity bit of the code word before decoding is judged, and if the parity bit is different from the original parity bit, the decoding failure is judged.
Step S2023: judging whether the number of the error correction code elements is equal to the maximum number of the error correction code elements, if so, executing a step S2024, otherwise, executing a step S2025;
specifically, it is determined whether the number of error correction symbols after decoding the codeword is equal to the maximum number of error correction symbols of the codeword, if so, step S2024 is performed, otherwise, step S2025 is performed.
Step S2024: judging whether the current iteration number is a set number threshold and whether the number of the code words failed in the last iteration decoding is larger than the set threshold, if so, executing a step S2025, otherwise, executing a step S2027;
here, the number threshold may be set according to actual needs, and the corresponding number of iterations is recorded at the beginning of each iterative decoding. The threshold value can be set according to actual needs, such as 5 or 6.
Step S2025: judging whether the number of the error correction code elements is equal to the maximum number of the error correction code elements, if so, executing a step S2025, otherwise, executing a step S2027;
specifically, it is determined whether the number of error correction symbols after decoding the codeword is equal to the maximum number of error correction symbols of the codeword, if so, step S2025 is performed, otherwise, step S2027 is performed.
Step S2025: judging whether the original decoding identifier of the error correction position is 1, if not, executing the step S2026, otherwise, executing the step S2027;
here, after the codeword is decoded, if the decoding flag of the error correction position, which is the currently error-corrected symbol in the codeword, in the decoding flag matrix is 1, it is determined that the decoding of the codeword has failed.
Step S2026: updating the received Turbo product code;
specifically, the decoding result corresponding to the row number or column number with correct decoding is updated to the value corresponding to r _ in, thereby completing the updating of the received Turbo product code. And recording the line number K _ id1 with correct decoding at the last line iterative decoding of the previous iterative decoding and recording the column number K _ id2 with correct decoding at the last column iterative decoding.
Step S2027: updating the decoding identification matrix;
specifically, the decoding identifier matrix is updated according to the decoding result. If the code word decoding is successful, setting the row or column of the code word in the decoding identification matrix to be 1; if the code word decoding fails, setting all the rows or columns of the code word in the decoding identification matrix to be 0.
Step S2028: and judging whether the current iterative decoding times are less than the previous iterative decoding times, if so, returning to the step S2021, and otherwise, ending.
It should be noted that, when the decoding identification matrix exists, negating the deadlock structure may be performed according to the following conditions:
1) if K _ id1 is a full row number or K _ id2 is a full column number, the result of decoding is updated to r _ in, and post-decoding iteration is performed.
2) And judging the number of 0 in the decoding mark matrix, if the number is larger than a set threshold num1, performing bit-wise negation on r _ in of positions corresponding to the first (t1+1) × (t2+1) 0 in the decoding mark matrix, and otherwise, performing negation r _ in of positions corresponding to all 0.
In this embodiment, whether decoding is successful is determined by adding a decoding identifier matrix, so that the problem that the original decoding of a codeword is correct but is repeatedly changed due to the influence of other codewords is solved.
In an exemplary embodiment, referring to fig. 6, the application scenario based on this embodiment is as follows: there is no decoding identity matrix. The pre-iterative decoding of the received code word according to the iterative parameters and the recording of the parameters include the following steps S3021 to S3026:
step S3021: acquiring a received code word, judging whether the code is a shortened code and the complementary bit is 0, if so, executing a step S3022, otherwise, executing a step S3026;
here, the received code words are sequentially obtained from the Turbo product code according to the order of the previous iteration decoding, whether the code pattern of the code word is a shortened code is judged, if the code pattern of the code word is the shortened code, whether all the supplementary bits of the code word after decoding are 0 is judged, and if not all the supplementary bits are 0, the decoding failure is explained.
Step S3022: judging whether the code is a spreading code and whether the check bit is the same as the original check bit, if so, executing a step S3023, otherwise, executing a step S3026;
if the code pattern of the code word is the spreading code, whether the parity bit obtained by performing the exclusive-or calculation on the code word after decoding is the same as the original parity bit of the code word before decoding is judged, and if the parity bit is different from the original parity bit, the decoding failure is judged.
Step S3023: judging whether the number of the error correction code elements is equal to the maximum number of the error correction code elements, if so, executing a step S3024, otherwise, executing a step S3025;
specifically, after the codeword is decoded, it is determined whether the number of error correction symbols is equal to the maximum number of error correction symbols of the codeword, if so, step S3024 is executed, otherwise, step S3025 is executed.
Step S3024: judging whether the current iteration number is a set number threshold and whether the number of the code words failed in the last iteration decoding is larger than the set threshold, if so, executing a step S3025, otherwise, executing a step S3026;
here, the number threshold may be set according to actual needs, and the corresponding number of iterations is recorded at the beginning of each iterative decoding. The threshold value can be set according to actual needs, such as 5 or 6.
Step S3025: updating the received Turbo product code;
specifically, the decoding result corresponding to the row number or column number with correct decoding is updated to the value corresponding to r _ in, thereby completing the updating of the received Turbo product code. And recording the line number K _ id1 with correct decoding at the last line iterative decoding of the previous iterative decoding and recording the column number K _ id2 with correct decoding at the last column iterative decoding.
Step S3026: and judging whether the current iterative decoding times are less than the previous iterative decoding times, if so, returning to the step S3021, and otherwise, ending.
In the embodiment, a decoding identification matrix is omitted, and the condition of error correction limit is kept unchanged before a deadlock correction result or a deadlock-like structure is corrected, so that more errors are prevented from being increased. If the error is more, the condition of error correction limit is regarded as successful decoding, so that the decoding becomes more flexible.
In an exemplary embodiment, referring to fig. 7, the post-iterative decoding of the negated received codeword includes the following steps S4021 to S4025:
step S4021: acquiring a received code word;
here, the received code words are sequentially obtained from the updated Turbo product code according to the order of the post-iterative decoding.
Step S4022: judging whether the code is a shortened code and the supplementary bit is 0, if so, executing a step S4022, otherwise, executing a step S4025;
here, it is determined whether the code pattern of the codeword is a shortened code, and if the code pattern of the codeword is a shortened code, it is determined whether all the complementary bits of the codeword are 0 after decoding, and if not all the complementary bits are 0, decoding failure is described.
Step S4023: judging whether the code is a spreading code and whether the check bit is the same as the original check bit, if so, executing a step S4024, otherwise, executing a step S4025;
here, whether the code pattern of the code word is a spreading code is judged, if the code pattern of the code word is a spreading code, whether the parity bit obtained by performing xor calculation on the code word after decoding is the same as the original parity bit of the code word before decoding is judged, and if the parity bit is different from the original parity bit, decoding failure is judged.
Step S4024: updating the received Turbo product code;
here, after the success of decoding the codeword is determined, the received Turbo product code is updated according to the decoding result.
Step S4025: and judging whether the current iterative decoding times are less than the post iterative decoding times, if so, returning to the step S4021, and if not, ending.
Here, the current iterative decoding number is updated every time iterative decoding starts.
To implement the above method, please refer to fig. 2 again, which is a decoding apparatus for Turbo product code according to an alternative embodiment of the present invention, including:
an obtaining module 10, configured to obtain a received codeword and a code pattern of a Turbo product code and an iteration parameter;
the pre-iteration decoding module 20 is configured to establish a decoding identifier matrix, and obtain a decoding codeword after performing hard decision on the received codeword; judging whether decoding is successful according to the code pattern and the judgment condition, and updating a decoding identifier matrix;
a deadlock correcting module 30, configured to invert bits that may be in error according to the decoding identifier matrix;
the post-iterative decoding module 40 is configured to perform post-iterative decoding on the received codeword, and determine whether decoding is successful according to a given determination condition;
and a decoding result output module 50, configured to output a decoding result of the received codeword.
Here, the code pattern includes a code length, an information length, and an error correction capability. The deadlock correction module 30 inverts the bits with possible errors according to the decoding identifier matrix, compares the number of errors contained in the code block with a threshold, and if the number of errors contained in the code block is greater than the threshold, the inverted number of error positions may be (t)1+1)*(t2+1) pieces, t1And t2Respectively error correction capability. Through the post-iterative decoding process of the post-iterative decoding module 40, error bits remaining after the deadlock correction result are eliminated.
The above description is only for the specific embodiments of the present invention, but the scope of the present invention is not limited thereto, and any person skilled in the art can easily conceive of the changes or substitutions within the technical scope of the present invention, and all the changes or substitutions should be covered within the scope of the present invention. The scope of the invention is to be determined by the scope of the appended claims.

Claims (11)

1. A decoding method of Turbo product code is characterized in that the method comprises the following steps:
acquiring a receiving code word of the Turbo product code, and performing iterative decoding of a set first iteration number on the receiving code word;
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result;
and performing error correction processing on the Turbo product code subjected to iterative decoding of the first iteration times according to the decoding identifier.
2. The method of claim 1, wherein prior to the iterative decoding of the set first number of iterations of the received codeword, further comprising:
acquiring the code pattern of the block code forming the Turbo product code, wherein the code pattern comprises the maximum error-correcting code element number;
the judging the decoding result of the iterative decoding of the first iteration number according to the first decoding rule to obtain a decoding identifier for representing the decoding result includes:
judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule, wherein the first decoding rule comprises at least one of the following rules: determining that the received code word is a shortened code according to the code pattern, and the code elements at the complementary positions in the decoded received code word are not all 0, determining that the decoding of the received code word fails; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; determining that the number of error correction code elements for the received code word after decoding is equal to the maximum error correction code element number of the received code word, the current iterative decoding times is equal to a set iterative decoding time threshold, and the number of code words failed in decoding in the last iterative decoding process is less than a set threshold, or determining that the number of error correction code elements for the received code word after decoding is equal to the maximum error correction code element number of the received code word, and the current iterative decoding times is not equal to the iterative decoding time threshold, determining that decoding of the received code word fails;
and determining the decoding identifier of the decoding result corresponding to the received code word according to the judgment result.
3. The method according to claim 2, wherein before determining the decoding identifier of the decoding result corresponding to the received codeword according to the judgment result, the method further comprises:
initializing a decoding identification matrix, wherein the decoding identification matrix is equal to the Turbo product code in size;
the determining the decoding identifier of the decoding result corresponding to the received code word according to the judged result includes:
and updating the decoding identifier of each code element in the received code word at the corresponding position in the decoding identifier matrix according to the judgment result.
4. The method of claim 3, wherein the first coding rule further comprises:
and if the error correction is carried out on the code elements in the received code words and the code elements are correctly decoded on the code elements in the decoding identification representation corresponding to the decoding identification matrix, determining that the code elements are failed to be decoded.
5. The method according to claim 1, wherein said performing error correction on said Turbo product code after iterative decoding of said first number of iterations according to said decoding identifier comprises:
acquiring the number of rows of failed decoding during the last row iterative decoding corresponding to the first iteration number and the number of columns of failed decoding during the last column iterative decoding according to the decoding identifier;
and when the row number is determined to be equal to or larger than a set first number threshold and the column number is determined to be equal to or larger than a set second number threshold, performing negation operation on the code word which fails in decoding in the Turbo product code after iterative decoding of the first iteration number.
6. The method according to claim 3 or 4, wherein said performing error correction on said Turbo product code after iterative decoding for said first number of iterations according to said decoding identifier comprises:
acquiring the number of code elements failed in decoding according to the decoding identification matrix;
and performing negation operation on the code elements which fail to be decoded in the Turbo product code after the iterative decoding of the first iteration times according to the relation between the number and a set third number threshold.
7. The method according to claim 1, wherein after performing error correction processing on the Turbo product code after iterative decoding of the first iteration number according to the decoding identifier, the method further comprises:
performing iterative decoding of a second iteration number set on the Turbo product code subjected to error correction processing;
and judging the decoding result of the iterative decoding of the second iteration times according to a second decoding judgment rule to obtain the target Turbo product code.
8. The method according to claim 7, wherein said determining the decoding result of the iterative decoding of the second iteration number according to a second decoding decision rule comprises:
judging the decoding result of the iterative decoding of the second iteration number according to a second decoding judgment rule, wherein the second decoding rule comprises at least one of the following rules: determining that the received code word is a shortened code according to the code pattern, and the code elements at the complementary positions in the decoded received code word are not all 0, determining that the decoding of the received code word fails; determining that the received code word is a spreading code according to the code pattern, and if the original check bit of the received code word is different from the check bit of the decoded received code word, determining that the decoding of the received code word fails; and determining that the number of error correction code elements of the received code word after decoding is equal to the maximum number of error correction code elements of the received code word, and determining that the decoding of the received code word is successful.
9. A decoding apparatus for Turbo product codes, comprising:
the acquisition module is used for acquiring the receiving code word of the Turbo product code;
the front iteration decoding module is used for carrying out iterative decoding on the received code words by a set first iteration number; judging the decoding result of the iterative decoding of the first iteration times according to a first decoding rule to obtain a decoding identifier for representing the decoding result;
and the deadlock correction module is used for carrying out error correction processing on the Turbo product code subjected to iterative decoding of the first iteration times according to the decoding identifier.
10. A transcoder, characterised in that the transcoder comprises a processor and a memory for storing a computer program capable of running on the processor; wherein the content of the first and second substances,
the processor is configured to execute the method for decoding the Turbo product code according to any one of claims 1 to 8 when the computer program is executed.
11. A computer storage medium, in which a computer program is stored, which, when being executed by a processor, carries out the steps of the method for decoding a Turbo product code according to any one of claims 1 to 8.
CN201811063021.2A 2018-09-12 2018-09-12 Decoding method, device, decoder and computer storage medium for Turbo product code Active CN110896309B (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201811063021.2A CN110896309B (en) 2018-09-12 2018-09-12 Decoding method, device, decoder and computer storage medium for Turbo product code
US17/275,730 US11381259B2 (en) 2018-09-12 2019-09-12 Decoding method and device for turbo product codes, decoder and computer storage medium
JP2021514078A JP7429223B2 (en) 2018-09-12 2019-09-12 Turbo product code decoding method, device, decoder and computer storage medium
KR1020217010728A KR20210057787A (en) 2018-09-12 2019-09-12 Turbo product code decoding method, apparatus, decoder and computer recording medium
PCT/CN2019/105802 WO2020052672A1 (en) 2018-09-12 2019-09-12 Decoding method and apparatus for turbo product code, decoder, and computer storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811063021.2A CN110896309B (en) 2018-09-12 2018-09-12 Decoding method, device, decoder and computer storage medium for Turbo product code

Publications (2)

Publication Number Publication Date
CN110896309A true CN110896309A (en) 2020-03-20
CN110896309B CN110896309B (en) 2022-11-15

Family

ID=69777392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811063021.2A Active CN110896309B (en) 2018-09-12 2018-09-12 Decoding method, device, decoder and computer storage medium for Turbo product code

Country Status (5)

Country Link
US (1) US11381259B2 (en)
JP (1) JP7429223B2 (en)
KR (1) KR20210057787A (en)
CN (1) CN110896309B (en)
WO (1) WO2020052672A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112054809A (en) * 2020-08-28 2020-12-08 杭州华澜微电子股份有限公司 Improved TPC error correction algorithm and apparatus

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230081244A (en) * 2021-11-30 2023-06-07 삼성전자주식회사 Method and appartus for decoding of data in communication and broadcasting systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030110437A1 (en) * 2001-12-08 2003-06-12 Sooyoung Kim Method for iteratively decoding block turbo codes and recording medium for storing iterative decoding program of block turbo codes
CN102035558A (en) * 2009-09-27 2011-04-27 中兴通讯股份有限公司 Turbo decoding method and device
CN104579369A (en) * 2014-12-18 2015-04-29 中国科学院自动化研究所 Turbo iterative decoding method and device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093179B2 (en) * 2001-03-22 2006-08-15 University Of Florida Method and coding means for error-correction utilizing concatenated parity and turbo codes
CN1780152A (en) * 2004-11-17 2006-05-31 松下电器产业株式会社 Interative encode method and system
CN101557234A (en) * 2009-05-18 2009-10-14 北京天碁科技有限公司 Dynamic iterative decoding method of Turbo codes and device thereof
CN101777924B (en) * 2010-01-11 2014-02-19 新邮通信设备有限公司 Method and device for decoding Turbo codes
CN101958720B (en) 2010-09-24 2013-03-20 西安电子科技大学 Encoding and decoding methods for shortening Turbo product code
US9300329B2 (en) * 2012-11-08 2016-03-29 Sk Hynix Memory Solutions Inc. Turbo-product codes (TPC) with interleaving
US9391641B2 (en) 2013-04-26 2016-07-12 SK Hynix Inc. Syndrome tables for decoding turbo-product codes
US9287899B1 (en) * 2013-12-20 2016-03-15 Xilinx, Inc. Forward error correction
CN104980172A (en) * 2014-04-01 2015-10-14 中国科学院大学 Bit-level decoding method of joint channel-security coding based on Turbo codes
US10153786B1 (en) * 2015-02-06 2018-12-11 Marvell International Ltd. Iterative decoder with dynamically-variable performance
US9935659B2 (en) 2015-05-18 2018-04-03 SK Hynix Inc. Performance optimization in soft decoding for turbo product codes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030110437A1 (en) * 2001-12-08 2003-06-12 Sooyoung Kim Method for iteratively decoding block turbo codes and recording medium for storing iterative decoding program of block turbo codes
CN102035558A (en) * 2009-09-27 2011-04-27 中兴通讯股份有限公司 Turbo decoding method and device
CN104579369A (en) * 2014-12-18 2015-04-29 中国科学院自动化研究所 Turbo iterative decoding method and device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112054809A (en) * 2020-08-28 2020-12-08 杭州华澜微电子股份有限公司 Improved TPC error correction algorithm and apparatus

Also Published As

Publication number Publication date
CN110896309B (en) 2022-11-15
WO2020052672A1 (en) 2020-03-19
KR20210057787A (en) 2021-05-21
JP7429223B2 (en) 2024-02-07
JP2022500918A (en) 2022-01-04
US20220038118A1 (en) 2022-02-03
US11381259B2 (en) 2022-07-05

Similar Documents

Publication Publication Date Title
KR101422050B1 (en) Method of error correction in a multi­bit­per­cell flash memory
US9391641B2 (en) Syndrome tables for decoding turbo-product codes
CN102017425B (en) System and method for performing concatenated error correction
US9912355B2 (en) Distributed concatenated error correction
US10333558B2 (en) Decoding device and decoding method
US9654147B2 (en) Concatenated error correction device
JPH08330975A (en) Error correction code decoding method and circuit adopting this method
WO2018202097A1 (en) Encoding method and device
US20210141685A1 (en) System and method for improving efficiency and reducing system resource consumption in a data integrity check
US10606697B2 (en) Method and apparatus for improved data recovery in data storage systems
JP2019057812A (en) Memory system
CN110896309B (en) Decoding method, device, decoder and computer storage medium for Turbo product code
CN111696615A (en) Memory system and method of operating memory system
US11323138B1 (en) Reed-Solomon code soft-decision decoding method and device
JP2020046871A (en) Memory system
CN112346903B (en) Redundant array decoding system of independent disk for performing built-in self-test
KR20160075001A (en) Operating method of flash memory system
CN115269258A (en) Data recovery method and system
JP2020046823A (en) Memory system
CN113168882B (en) Encoding method, decoding method and storage controller
CN108170554B (en) NAND data coding method and device
CN113014267B (en) Decoding method, device, readable storage medium, chip and computer program product
JP2005011386A (en) Error correction apparatus
US20240106462A1 (en) G-ldpc decoder and g-ldpc decoding method
KR20230132697A (en) Device for decoding a generalized concatenated code codeword, storage system and method for controlling the system

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