WO2011010286A2 - Compact decoding of punctured codes - Google Patents

Compact decoding of punctured codes Download PDF

Info

Publication number
WO2011010286A2
WO2011010286A2 PCT/IB2010/053317 IB2010053317W WO2011010286A2 WO 2011010286 A2 WO2011010286 A2 WO 2011010286A2 IB 2010053317 W IB2010053317 W IB 2010053317W WO 2011010286 A2 WO2011010286 A2 WO 2011010286A2
Authority
WO
WIPO (PCT)
Prior art keywords
codeword
rows
columns
code
bits
Prior art date
Application number
PCT/IB2010/053317
Other languages
French (fr)
Other versions
WO2011010286A3 (en
WO2011010286A4 (en
Inventor
Eran Sharon
Idan Alrod
Simon Litsyn
Original Assignee
Ramot At Tel Aviv University Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/506,327 external-priority patent/US8516352B2/en
Priority claimed from US12/506,316 external-priority patent/US8516351B2/en
Priority claimed from US12/506,342 external-priority patent/US8375278B2/en
Application filed by Ramot At Tel Aviv University Ltd. filed Critical Ramot At Tel Aviv University Ltd.
Priority to EP10747670A priority Critical patent/EP2457329A2/en
Priority to KR1020127004322A priority patent/KR101722798B1/en
Publication of WO2011010286A2 publication Critical patent/WO2011010286A2/en
Publication of WO2011010286A3 publication Critical patent/WO2011010286A3/en
Publication of WO2011010286A4 publication Critical patent/WO2011010286A4/en

Links

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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • 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/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • H03M13/6368Error control coding in combination with rate matching by puncturing using rate compatible puncturing or complementary puncturing
    • H03M13/6393Rate compatible low-density parity check [LDPC] codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • H04L1/0013Rate matching, e.g. puncturing or repetition of code symbols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0067Rate matching
    • H04L1/0068Rate matching by puncturing
    • H04L1/0069Puncturing patterns

Definitions

  • the conventional method for decoding of c is by treating the punctured bits of c as "erasures": during decoding, bits are inserted into c ' to bring the number of bits of c ' back up to the full number of bits of c, and then decoding is performed by decoding the code of the original matrix equation (2) while assigning special values ("erasures") to the inserted bits.
  • This procedure for decoding punctured codewords is referred to herein as "erasure decoding”.
  • LDPC codes can be decoded using iterative message passing decoding algorithms.
  • the usual instantiation of a storage medium is as a memory.
  • the usual instantiation of a transmission medium is as a communication channel.
  • Both the storage medium and the transmission medium are examples of "corrupting" media.
  • a “corrupting" medium is a medium that may introduce errors to data that are exported to the medium, so that the corresponding imported data may not be identical to the exported data.
  • Another embodiment provided herein is a method of porting k input bits, including: (a) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby producing a codeword of n bits; (b) puncturing the codeword, thereby providing a punctured codeword of n ' ⁇ n bits; (c) exporting the punctured codeword to a corrupting medium; (d) importing a representation of the punctured codeword from the corrupting medium; and (e) decoding the representation of the punctured codeword using a matrix If that has at most m rows and fewer than n columns but more than n ' columns.
  • m is an even number
  • n ' n-m '
  • ⁇ T is derived by merging pairs of rows of H.
  • H' is derived from H by merging consecutive pairs of rows of H.
  • the decoding includes exchanging messages between the rows and columns of H', as in LDPC.
  • exchanging messages between the rows and columns of a parity check matrix is equivalent to exchanging messages between the bit nodes and the check nodes of a Tanner graph.
  • the corrupting medium is a transmission medium.
  • the exporting of the punctured codeword includes transmitting the punctured codeword via the transmission medium.
  • the importing of the representation of the punctured codeword includes receiving the representation of the punctured codeword from the transmission medium.
  • H' is a parity check matrix of a second code and the punctured codeword is a codeword of the second code.
  • m is an even number
  • m ' m/2
  • H' is derived by merging pairs of rows of H.
  • H' is derived from H by merging pairs of consecutive rows of H.
  • the decoding includes exchanging messages between the rows and columns of H ⁇ as in LDPC.
  • exchanging messages between the rows and columns of a parity check matrix is equivalent to exchanging messages between the bit nodes and the check nodes of a Tanner graph.
  • m is an even number
  • m ' m/2
  • H' is derived by merging pairs of rows of H.
  • the First code is a block code.
  • the method includes the step of deriving H' from H.
  • the derivation of H ! from H includes performing Gaussian elimination on H to set equal to zero the first m-m ' ' elements of the columns of H that correspond to a number m ' ' ⁇ n-n ' of the bits of the codeword that are selected for elimination.
  • the Gaussian elimination sets equal to zero the first elements of columns of H that correspond to only some of the bits of the codeword that are selected for elimination.
  • H' then is m-m " rows of the resulting matrix without the zeroed-out columns.
  • the decoder also includes a code reduction module for deriving H' from H.
  • the derivation of H' from H includes performing Gaussian elimination on H to set equal to zero the first m-m ' ' elements of the columns of H that correspond to a number m ' ! ⁇ n-n ' of the bits of the codeword that are selected for elimination, ⁇ n other words, the Gaussian elimination sets equal to zero the first elements of columns of H that correspond to only some of the bits of the codeword that are selected for elimination. H' then is m-m " rows of the resulting matrix without the zeroed-out columns.
  • the first code is a block code.
  • H' is a parity check matrix of a second code and the punctured codeword is a codeword of the second code.
  • the decoder also includes a code reduction module for deriving H' from H,
  • the derivation of H' from H includes performing Gaussian elimination on H to set equal to zero the first m ' elements of the columns of H that correspond to the bits of the codeword that are selected for elimination. H' then is selected rows of the resulting matrix without the zeroed-out columns and without one or more columns that correspond(s) to (an)other bit(s) that is/are connected, by H, only to the selected bits.
  • a receiver includes a demodulator and a decoding module.
  • the decoding module decodes the representation of the punctured codeword using a matrix H' that is smaller than H: H' has fewer than m '-m-(n ⁇ rt ') rows and fewer than n ' columns.
  • the receiver also includes a code reduction module for deriving H' from H.
  • the derivation of H' from H includes performing Gaussian elimination on H to set equal to zero the first m ' elements of the columns of H that correspond to the bits of the codeword that are selected for elimination. H' then is selected rows of the resulting matrix without the zeroed-out columns and without one or more columns that correspond(s) to (an)other bit(s) that is/are connected, by H, only to the selected bits.
  • the matrix H' is derived with a minimal number of row operations applied to each row (in this case one operation per row).
  • the number of l's in each row of H' is at most twice the number of l 's in a row of H. If H is sparse then H' usually can be considered as sparse. Therefore, if the original code is an LDPC code, the reduced code H' usually can also be regarded as an LDPC code, thus it can be decoded efficiently, by generating the Tanner graph of the code and performing a message passing algorithm.
  • FIG. 3 is a simplified schematic high-level block diagram of a decoder 60 for implementing the efficient punctured decoding described above.
  • Punctured decoder 60 includes a code reduction module 62 and a decoder module 64.
  • the inputs to punctured decoder 60 are the code matrix H and the (possibly noisy and corrupted) representation of the sub-codeword c'.
  • the reduced code matrix H' is computed in code reduction module 62 (preferably once, and then stored in a local volatile or nonvolatile memory (not shown)), and H' is then provided to decoder module 64, together with the representation of sub-codeword c'.
  • the output of decoder module 64 is the decoded codeword, which includes the information content of the original sub-codeword c'. This information is equal to the information content of the original codeword c.
  • FIG. 4 is a simplified schematic high-level block diagram of another decoder 80 for implementing the efficient punctured decoding described above.
  • decoder 80 includes a non-volatile memory 86 for storing the code matrix H.
  • the inputs to decoder 80 are the (possibly noisy and corrupted) representation of the sub -codeword c ' and information, such as the indices of the bits of c that were punctured to create c ', that tells code reduction module 82 which columns of H to zero out in the first ⁇ C rows of H in order to create H' '.
  • Code reduction module 82 computes H' as needed and preferably stores H' locally, either in memory 86 or in a local non- volatile memory
  • Row control circuit 3 is connected to word lines (WL) to select one of the word lines (WL), to apply read voltages, to apply writing voltages combined with the bit line potential levels controlled by column control circuit 2, and to apply an erase voltage coupled with a voltage of a p-type region on which the memory cells (M) are formed.
  • C-sourcc control circuit 4 controls a common source line connected to the memory cells (M).
  • C-p-well control circuit 5 controls the c-p-well voltage.
  • Controller 20 is connected or connectable with a host system such as a personal computer, a digital camera, a personal digital assistant. It is the host which initiates commands, such as to store or read data to or from the memory array 1, and provides or receives such data, respectively. Controller 20 converts such commands into command signals that can be interpreted and executed by command circuits 7. Controller 20 also typically contains buffer memory for the user data being written to or read from the memory array.
  • a typical memory device includes one integrated circuit chip 21 that includes controller 20, and one or more integrated circuit chips 22 that each contains a memory array and associated control, input/output and state machine circuits. The trend, of course, is to integrate the memory array and controller circuits of such a device together on one or more integrated circuit chips.
  • the memory device may be embedded as part of the host system, or may be included in a memory card that is removably insertable into a mating socket of host systems.
  • a memory card may include the entire memory device, or the controller and memory array, with associated peripheral circuits, may be provided in separate cards.
  • Mass storage device 108 is an example of a computer- readable storage medium bearing computer-readable driver code for efficient punctured decoding as described above.
  • Other examples of such computer-readable storage media include read-only memories such as CDs bearing such code.
  • demodulator 204 receives the modulated signal from channel 203 and subjects the received modulated signal to a digital demodulation such as BPSK, QPSK or multi-valued QAM. Decoder 206 decodes the resulting representation of the original punctured codeword as described above.
  • H ' is derived from H, not by Gaussian elimination, but by merging groups of rows of H. In each group, the number of 1's in each column associated with a punctured bit must be even, so that modulo 2 addition of the rows of the group sums those 1's to a 0.
  • Decoding continues until the decoder converges to a valid codeword, satisfying all the parity-check constraints, or until a maximum number of allowed decoding phases is reached.
  • the stopping criterion for the message passing within each sub-graph i is similar: iterate until either all the parity-check constraints within this sub-graph are satisfied or a maximum number of allowed iterations is reached.
  • the maximum allowed number of iterations may change from one sub-graph to another or from one activation of the decoder to another,

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)

Abstract

k input bits are encoded according to a code with which is associated a m x n=m+k parity check matrix H. The resulting codeword is punctured, with n'<n bits. The punctured codeword is exported to a corrupting medium such as a communication channel or a memory. A representation of the punctured codeword is imported from the corrupting medium and is decoded using a matrix H' that is smaller than H. For example, H' is m'=m~(n-n ') x n' and is derived by merging selected rows of H. Alternatively, H has at most m rows and fewer than n columns but more than n' columns. Alternatively, H has fewer than m'=m-(n-n') rows and fewer than n' columns.

Description

COMPACT DECODING OF PUNCTURED CODES
FIELD AND BACKGROUND OF THE INVENTION
The present invention relates to punctured codes and, more particularly, to methods and devices for efficient decoding of punctured codewords.
A common conventional error control strategy, on time- varying channels, is to adapt the rate according to available channel state information (CSI), which is called rate adaptability. An effective way to realize this coding strategy is to use a single code and to puncture the code in a rate-compatible fashion, a so-called rate-compatible punctured code (RCPC). In such an approach, the transmitter systematically punctures parity bits in a codeword, and the locations of the punctured symbols are known to the receiver/receivers. Since the decoder for the lowest rate (the base code) is compatible with the decoders for the other higher rates, RCPC needs no additional complexity for the rate adaptability. Moreover, RCPC permits one to transmit redundancies progressively in conjunction with automatic repeat request (ARQ)
Consider a linear block code defined by a generator matrix F. To encode an information vector b, /"is right-multiplied by b to produce a codeword vector c:
c=bF (1)
Associated with /"are one or more parity check matrices H that satisfy the matrix equation HC - O (2)
for all the codeword vectors c of the code, Le. a vector c belongs to the code if the vector satisfies equation (2). Typically, F, H and c are defined over the field GF(Z), i.e. the elements of F, H and c are 0 or 1 , and the addition of field elements is done as integer addition modulo 2.
In many cases, such as when Rate-Compatible Punctured Codes (RCPC) are being implemented, only a portion of the bits of the codeword c are transmitted over the channel, (in a communications scenario), or stored in a memory device, (storage applications). The locations of the transmitted bits are assumed to be known to both the transmitter and receiver, (of the communication system or storage device). Denote the transmitted or stored bits by c' and refer to c ' as a sub-codeword, c ' also is referred to herein as a "punctured codeword". The bits of c that are excluded from c ' are referred to herein as "punctured bits". The bits received by the communications receiver, (or read by the memory reading device), typically are a noisy version of c' that is referred to herein as a "representation" of c \ but by reuse of notation the received sub-codeword will still be denoted by c'.
The conventional method for decoding of c, given the representation of the sub- codeword c', is by treating the punctured bits of c as "erasures": during decoding, bits are inserted into c ' to bring the number of bits of c ' back up to the full number of bits of c, and then decoding is performed by decoding the code of the original matrix equation (2) while assigning special values ("erasures") to the inserted bits. This procedure for decoding punctured codewords is referred to herein as "erasure decoding".
To provide a concrete example of erasure decoding, Low-Density Parity Check (LDPC) codes now will be described.
A LDPC code is a linear binary block code whose parity-check matrix or matrices H is/are sparse. As shown in Figure 1 , a LDPC parity check matrix H is equivalent to a sparse bipartite "Tanner graph" G- (V1QE) with a set F of N bit nodes (JV= 13 in Figure 1), a set C of M check nodes (Af=IO in Figure 1) and a set E of edges (£=38 in Figure 1) connecting bit nodes to check nodes. The bit nodes correspond to the codeword bits and the check nodes correspond to parity-check constraints on the bits. A bit node is connected by edges to the check nodes that the bit node participates with. In the matrix representation (matrix H of equation (2)) of the code on the left side of Figure 1 an edge connecting bit node / with check node/ is depicted by a non-zero matrix element at the intersection of row / and column i.
Next to the first and last check nodes of Figure 1 are shown the equivalent rows of equation (1). The symbol "©" means "XOR".
LDPC codes can be decoded using iterative message passing decoding algorithms.
These algorithms operate by exchanging messages between bit nodes and check nodes along the edges of the underlying bipartite graph that represents the code. The decoder is provided with initial estimates of the codeword bits (based on the communication channel output or based on the read memory content). These initial estimates are refined and improved by imposing the parity-check constraints that the bits should satisfy as a valid codeword
(according to equation (2)). This is done by exchanging information between the bit nodes representing the codeword bits and the check nodes representing parity-check constraints on the codeword bits, using the messages that are passed along the graph edges.
In iterative decoding algorithms, it is common to utilize "soft" bit estimations, which convey both the bit estimations and the reliabilities of the bit estimations. The bit estimations conveyed by the messages passed along the graph edges can be expressed in various forms. A common measure for expressing a "soft" estimation of a bit v is as a Log-Likelihood Ratio (LLR)
Pr(v = 01 current constraints and observations)
log— ! -,
Pr(v = 1 1 current constraints and observations)
where the "current constraints and observations" are the various parity-check constraints taken into account in computing the message at hand and observations, such as the sequence of symbols received from a communication channel, corresponding to the bits participating in these parity checks. The sign of the LLR provides the bit estimation (i.e., positive LLR corresponds to v = 0 and negative LLR corresponds to v = 1 ). The magnitude of the LLR provides the reliability of the estimation (L e. , |LLR| = 0 means that the estimation is completely unreliable and |LLR| = ±co means that the estimation is completely reliable and the bit value is known).
Returning now to the discussion of decoding a punctured codeword by "erasure decoding", if H is the parity- check matrix of an LDPC code, then the decoding is performed according to the Tanner graph associated with H, while assigning LLR~0 as an initial LLR to all the bits of the codeword c which are not bits of the sub-codeword c' (i.e., to all the punctured bits of c).
Such erasure decoding may also be applied to other types of codes such as BCH codes. In general, "erasure decoding" is more complex, and converges slower than, ordinary decoding. Moreover, typically the code is a systematic code, that encodes the input data bits as the codeword c by appending redundancy bits to the data bits, and the punctured bits are selected from among the redundancy bits, thus there is no real need to decode the punctured bits. A method that directly decodes the sub-codeword c' and extracts the information bits, (which are typically the same as the information bits of c), would be of a significant benefit.
DEFINITIONS
The methodology described herein is applicable to encoding and decoding punctured codewords in at least two different circumstances. One circumstance is the storing of data in a storage medium, followed by the retrieving of the data from the storage medium. The other circumstance is the transmitting of data to a transmission medium, followed by the receiving of the data from the transmission medium. Therefore, the concepts of "storing" and "transmitting" of data are generalized herein to the concept of "exporting" data, and the concepts of "retrieving" and "receiving" data are generalized herein to the concept of "importing" data. Both "storing" data and "transmitting" data thus are special cases of "exporting" data, and both "retrieving" data and "receiving" data are special cases of "importing" data. The process of "exporting" data and then optionally "importing" the data is termed herein "porting" data.
The usual instantiation of a storage medium is as a memory. The usual instantiation of a transmission medium is as a communication channel. Both the storage medium and the transmission medium are examples of "corrupting" media. A "corrupting" medium is a medium that may introduce errors to data that are exported to the medium, so that the corresponding imported data may not be identical to the exported data.
"Encoding" is understood herein to mean turning an information, vector ("Z?" in equation (I)) into a codeword ("c" in equation (I)). "Decoding" is understood herein to mean turning a representation of a codeword into the originally encoded information vector. It is a "representation" of the codeword, as imported from a corrupting medium, that is decoded, and not the codeword itself, because what is imported may be corrupted by noise relative to what is exported. Strictly speaking, the matrix H, or the equivalent Tanner graph as used in decoding by message passing, is used only to reconstruct the original codeword, not to provide the original information vector, but given the original codeword, it is well-known in the art how to recover the original information vector. Indeed, in the case of a systematic code, it is trivial to recover the original information vector because the codeword is just a concatenation of the original information vector and parity bits. In the appended claims, it is to be understood that using a matrix to decode a representation of a codeword means using the matrix to the extent that the matrix can be used to decode the representation of the codeword.
SUMMARY QF THE INVENTION
One embodiment provided herein is a method of porting k input bits, including: (a) encoding the input bits according to a first code with which is associated a parity check matrix H that has m rows and n~m+k columns, thereby producing a codeword of n bits; (b) puncturing the codeword, thereby providing a punctured codeword of n '<n bits; (c) exporting the punctured codeword to a corrupting medium; (d) importing a representation of the punctured codeword from the corrupting medium; (e) deriving, by merging selected rows of H, a matrix H' that has m '=m-(n-n ') rows and n ' columns; and (f) using H' to decode the representation of the punctured codeword.
Another embodiment provided herein is a memory device including: (a) a memory, and (b) a controller for storing k input bits in the memory and for recovering the input bits from the memory, the controller including: (i) an encoder for: (A) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby producing a codeword of n bits, (B) puncturing the codeword, thereby providing a punctured codeword of n '<n bits, and (ii) a decoder for decoding a representation of the punctured codeword that has been read from the memory, the decoding being effected using a matrix W that has m '=m~{n~n ') rows and n ' columns and that is derived from H by merging selected rows of H.
Another embodiment provided herein is a system including; (a) a first memory; and (b) a host of the first memory including: (i) a second memory having stored therein code for managing the first memory by steps including: (A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n^m+k columns, thereby producing a codeword of n bits, (B) puncturing the codeword, thereby providing a punctured codeword of n '<n bits, (C) storing the punctured codeword in the first memory, (D) reading a representation of the punctured codeword from the first memory, and (E) decoding the representation of the punctured codeword using a matrix If that has m '~m-(n-n ') rows and n ' columns and that is derived from H by merging selected rows of H, and (ii) a processor for executing the code.
Another embodiment provided herein is a computer-readable storage medium having embodied thereon computer-readable code for managing a memory, the computer-readable code including: (a) program code for encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby producing a codeword of n bits; (b) program code for puncturing the codeword, thereby providing a punctured codeword of n '<n bits; (c) program code for storing the punctured codeword in a memory; (d) program code for reading a representation of the punctured codeword from the memory; and (e) program code for decoding the representation of the punctured codeword using a matrix IP that has m '=m~{n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
Another embodiment provided herein is a communication system including: (a) a transmitter including: (i) an encoder for: (A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits, and (B) puncturing the codeword, thereby providing a punctured codeword of n '<n bits, and (ii) a modulator for transmitting the punctured codeword via a communication channel as a modulated signal; and (b) a receiver including: (i) a demodulator for receiving the modulated signal from the communication channel and for demodulating the modulated signal, thereby providing a representation of the punctured codeword, and (ii) a decoder for decoding the representation of the punctured codeword using a matrix W that has m '=m-(n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
Another embodiment provided herein is a method of recovering k input bits that have been encoded as a codeword of n bits according to a first code with which is associated a parity check matrix H that has m rows and n=m+k columns and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n-n ' selected bits from the codeword, the method including: (a) importing a representation of the punctured codeword from the corrupting medium; (b) deriving, by merging selected rows of H, a matrix H' that has m '=m-(n-n') rows and n ' columns; and (c) using H' to decode the representation of the punctured codeword.
Another embodiment provided herein is a decoder for decoding a representation of a punctured codeword, the punctured codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby providing a codeword of n bits, and then eliminating n-n ' selected bits from the codeword, the decoder including: (a) a decoding module for decoding the representation of the punctured codeword using a matrix If that has m '~m-(n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
Another embodiment provided herein is a receiver including: (a) a demodulator for receiving a modulated signal from a communication channel and for demodulating the modulated signal to provide a representation of a punctured codeword that had been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby providing a codeword of n bits, and then eliminating n-n ' selected bits from the codeword; and (b) a decoding module for decoding the representation of the punctured codeword using a matrix IT that has m '~m-{n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
Another embodiment provided herein is a method of porting k input bits, including: (a) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby producing a codeword of n bits; (b) puncturing the codeword, thereby providing a punctured codeword of n '<n bits; (c) exporting the punctured codeword to a corrupting medium; (d) importing a representation of the punctured codeword from the corrupting medium; and (e) decoding the representation of the punctured codeword using a matrix If that has at most m rows and fewer than n columns but more than n ' columns.
Another embodiment provided herein is a memory device including: (a) a memory, and (b) a controller for storing k input bits in the memory and for recovering the input bits from the memory, the controller including: (i) an encoder for: (A) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits, (B) puncturing the codeword, thereby providing a punctured codeword of fewer than n bits, and (ii) a decoder for decoding a representation of the punctured codeword that has been read from the memory, the decoding being effected using a matrix If that has at most m rows and fewer than n columns but more than n ' columns.
Another embodiment provided herein is a system including: (a) a first memory; and (b) a host of the first memory including: (i) a second memory having stored therein code for managing the first memory by steps including: (A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits, (B) puncturing the codeword, thereby providing a punctured codeword of n '<n bits, (C) storing the punctured codeword in the first memory, (D) reading a representation of the punctured codeword from the first memory, and (E) decoding the representation of the punctured codeword using a matrix If that has at most m rows and fewer than n columns but more than n ' columns, and (ii) a processor for executing the code.
Another embodiment provided herein is a computer-readable storage medium having embodied thereon computer-readable code for managing a memory, the computer-readable code including: (a) program code for encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits; (b) program code for puncturing the codeword, thereby providing a punctured codeword of n '<n bits; (c) program code for storing the punctured codeword in a memory; (d) program code for reading a representation of the punctured codeword from the memory; and (e) program code for decoding the representation of the punctured codeword using a matrix If that has at most m rows and fewer than n columns but more than n ' columns.
Another embodiment provided herein is a communication system including: (a) a transmitter including: (i) an encoder for: (A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits, and (B) puncturing the codeword, thereby providing a punctured codeword of fewer than n bits, and (ii) a modulator for transmitting the punctured codeword via a communication channel as a modulated signal; and (b) a receiver including: (i) a demodulator for receiving the modulated signal from the communication channel and for demodulating the modulated signal, thereby providing a representation of the punctured codeword, and (ii) a decoder for decoding the representation of the punctured codeword using a matrix IT that has at most m rows and fewer than n columns but more than n ' columns.
Another embodiment provided herein is a method of recovering k input bits that have been encoded as a codeword of n bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n-rC selected bits from the codeword, the method including: (a) importing a representation of the punctured codeword from the corrupting medium; and (b) decoding the representation of the punctured codeword using a matrix IT that has at most m rows and fewer than n columns but more than n ' columns.
Another embodiment provided herein is a decoder for decoding a representation of a punctured codeword, the punctured codeword having been produced by eliminating n-n ' selected bits from a codeword of n bits, the codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n~m+k columns, the decoder including: (a) a decoding module for decoding the representation of the punctured codeword using a matrix JT that has at most m rows and fewer than n columns but more than n ' columns.
Another embodiment provided herein is a receiver including: (a) a demodulator for receiving a modulated signal from a communication channel and for demodulating the modulated signal to provide a representation of a punctured codeword that had been produced by eliminating n-n ' selected bits from a codeword of n bits, the codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns; and (b) a decoding module for decoding the representation of the punctured codeword using a matrix JT that has at most m rows and fewer than n columns but more than n ' columns.
Another embodiment provided herein is a method of porting k input bits, including: (a) encoding the input bits according to a first code with which is associated a parity check matrix H that has m rows and n—m+k columns, thereby producing a codeword of n bits; (b) puncturing the codeword, thereby providing a punctured codeword of n'<n bits; (c) exporting the punctured codeword to a corrupting medium; (d) importing a representation of the punctured codeword from the corrupting medium; and (e) decoding the representation of the punctured codeword using a matrix IT that has fewer than m '—m-{n-n ') rows and fewer than n ' columns. Another embodiment provided herein is a memory device including: (a) a memory, and (b) a controller for storing k input bits in the memory and for recovering the input bits from the memory, the controller including: (i) an encoder for: (A) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits, (B) puncturing the codeword, thereby providing a punctured codeword of fewer than n bits, and (ii) a decoder for decoding a representation of the punctured codeword that has been read from the memory, the decoding being effected using a matrix IT that has fewer than m '=m-(n~n ') rows and fewer than n ' columns.
Another embodiment provided herein is a system including: (a) a first memory; and (b) a host of the first memory including: (i) a second memory having stored therein code for managing the first memory by steps including: (A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby producing a codeword of n bits, (B) puncturing the codeword, thereby providing a punctured codeword of n '<n bits, (C) storing the punctured codeword in the first memory, (D) reading a representation of the punctured codeword from the first memory, and (E) decoding the representation of the punctured codeword using a matrix JHP that has fewer than m '~m-(n-n '} rows and fewer than n ' columns, and (ii) a processor for executing the code.
Another embodiment provided herein is a computer-readable storage medium having embodied thereon computer-readable code for managing a memory, the computer-readable code including: (a) program code for encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby producing a codeword of n bits; (b) program code for puncturing the codeword, thereby providing a punctured codeword of n '<n bits; (c) program code for storing the punctured codeword in a memory; (d) program code for reading a representation of the punctured codeword from the memory; and (e) program code for decoding the representation of the punctured codeword using a matrix ff that has fewer than m '=m-(n-n ') rows and fewer than n ' columns.
Another embodiment provided herein is a communication system including: (a) a transmitter including: (i) an encoder for: (A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby producing a codeword of n bits, and (B) puncturing the codeword, thereby providing a punctured codeword of fewer than n bits, and (ii) a modulator for transmitting the punctured codeword via a communication channel as a modulated signal; and (b) a receiver including: (i) a demodulator for receiving the modulated signal from the communication channel and for demodulating the modulated signal, thereby providing a representation of the punctured codeword, and (ii) a decoder for decoding lhe representation of the punctured codeword using a matrix IT that has fewer than m '~m-{n-n ') rows and fewer than n ' columns.
Another embodiment provided herein is a method of recovering k input bits that have been encoded as a codeword of n bits according to a first code with which is associated a parity check matrix H that has m rows and n=m+k columns and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n-rC selected bits from the codeword, the method including: (a) importing a representation of the punctured codeword from the corrupting medium; and (b) decoding the representation of the punctured codeword using a matrix IT that has fewer than m '-m-{n-n ') rows and fewer than n ' columns.
Another embodiment provided herein is a decoder for decoding a representation of a punctured codeword, the punctured codeword having been produced by eliminating n-n ' selected bits from a codeword of n bits, the codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix //that has m rows and n=m+k columns, the decoder including: (a) a decoding module for decoding the representation of the punctured codeword using a matrix IT that has fewer than m '~m-(n-n ') rows and fewer than n ' columns.
Another embodiment provided herein is a receiver including: (a) a demodulator for receiving a modulated signal from a communication channel and for demodulating the modulated signal to provide a representation of a punctured codeword that had been produced by eliminating n-n ' selected bits from a codeword of n bits, the codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns; and (b) a decoding module for decoding the representation of the punctured codeword using a matrix IT that has fewer than m '=m~{n-n ') rows and fewer than n ' columns.
In the most general embodiment of a first method for porting k input bits, the input bits are encoded according to a first code with which is associated snn x n parity check matrix H, where n=m+k. The encoding produces a codeword of n bits. The n-bit codeword is punctured, thereby providing a punctured codeword of n '<n bits. The punctured codeword is exported to a corrupting medium. A representation of the punctured codeword is imported from the corrupting medium. The representation of the punctured codeword is decoded using a matrix H' that is smaller than H: H' has m '=m-(n-n ') rows and n ' columns. H' is derived from H by merging selected rows of IT.
Preferably, the first code is a block code. Preferably, H' is a parity check matrix of a second code and the punctured codeword is a codeword of the second code.
Ia many embodiments of the method, m is an even number, m '-ml2, n '=n-m ', and ΪT is derived by merging pairs of rows of H. Preferably, H' is derived from H by merging consecutive pairs of rows of H.
Preferably, the decoding includes exchanging messages between the rows and columns of H', as in LDPC. As noted above, exchanging messages between the rows and columns of a parity check matrix is equivalent to exchanging messages between the bit nodes and the check nodes of a Tanner graph.
In some embodiments of the first method, the corrupting medium is a transmission medium. The exporting of the punctured codeword includes transmitting the punctured codeword via the transmission medium. The importing of the representation of the punctured codeword includes receiving the representation of the punctured codeword from the transmission medium.
In other embodiments of the first method, the corrupting medium is a storage medium.
The exporting of the punctured codeword includes storing the punctured codeword in the storage medium. The importing of the representation of the punctured codeword includes reading the representation of the punctured codeword from the storage medium.
A memory device that uses the first method for porting k input bits includes a memory and a controller. The controller stores the input bits in the memory and recovers the input bits from the memory. The controller includes an encoder and a decoder. The encoder encodes the input bits according to the matrix H and punctures the resulting codeword to provide a punctured codeword. The decoder uses the matrix H' to decode a representation of the punctured codeword that has been read from the memory.
A system that uses the first method for porting k input bits includes a first memory and a host of the first memory. The host includes a second memory and a processor. The second memory has stored therein code for managing the first memory according to the first method for porting k input bits as applied to a storage medium. The processor is for executing the code. The scope of the appended claims also includes a computer-readable storage medium having embodied thereon computer-readable code for managing such a first memory according to the first method for porting k input bits.
A communication system that uses the first method for porting k input bits includes a transmitter and a receiver. The transmitter includes an encoder and a modulator. The encoder encodes the input bits according to the matrix H and punctures the resulting codeword to provide a punctured codeword. The modulator transmits the punctured codeword via a communication channel as a modulated signal. The decoder includes a demodulator and a decoder. The demodulator receives the modulated signal from the communication channel and demodulates the modulated signal, thereby providing a representation of the punctured codeword. The decoder uses the matrix H' to decode the representation of the punctured codeword.
In the most general embodiment of a first method for recovering k input bits that have been encoded as a codeword of n bits according to a first code with which is associated an m x n-m+k parity check matrix H and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n~n ' selected bits from the codeword, a representation of the punctured codeword is imported from the corrupting medium. The representation of the punctured codeword is decoded using a matrix H' that is smaller than H: H' has m '-m~(n~n ') rows and n ' columns. H' is derived from H by merging selected rows of H.
Preferably, the first code is a block code.
Preferably, H' is a parity check matrix of a second code and the punctured codeword is a codeword of the second code.
In many embodiments of the method, m is an even number, m '=m/2, n '-n-m ', and H' is derived by merging pairs of rows of H. Preferably, H' is derived from H by merging pairs of consecutive rows of H.
Preferably, the decoding includes exchanging messages between the rows and columns of H\ as in LDPC. As noted above, exchanging messages between the rows and columns of a parity check matrix is equivalent to exchanging messages between the bit nodes and the check nodes of a Tanner graph.
A decoder, for decoding a representation of a punctured codeword that was produced by encoding k input bits according to a code with which is associated a m x n=m+k parity check matrix H to provide a rø-bit codeword and then eliminating n-n ' selected bits from the codeword, includes a decoding module that decodes the representation of the punctured codeword using a matrix H ' that is smaller than H: H' has m '=m-(n~n ') rows and n ' columns. H' is derived from H by merging selected rows of H.
In many embodiments of the decoder, m is an even number, m '=m/2, n '~n-m ', and H' is derived by merging pairs of rows of H.
Preferably, the decoder also includes a code reduction module for deriving H' from H. A receiver includes a demodulator and a decoding module. The demodulator receives a modulated signal from a communication channel and demodulates the modulated signal to provide a representation of a punctured codeword that had been produced by encoding k input bits according to a code with which is associated a m x n-m+k parity check matrix H to provide a n~bύ' codeword and then eliminating n-n' selected bits from the codeword. The decoding module decodes the representation of the punctured codeword using a matrix H' that is smaller than H: H' has m '=m~(n-n ') rows and n ' columns. H' is derived from H by merging selected rows of H.
In many embodiments of the receiver, m is an even number, m '=m/2, n '=n-m ', and H' is derived by merging pairs of rows of H.
Preferably, the receiver also includes a code reduction module for deriving H' from H. In the most general embodiment of a second method for porting k input bits, the input bits are encoded according to a code with which is associated n m x n parity check matrix H, where n~m+k. The encoding produces a codeword of n bits. The n-bit codeword is punctured, thereby providing a punctured codeword of n '<n bits. The punctured codeword is exported to a corrupting medium. A representation of the punctured codeword is imported from the corrupting medium. The representation of the punctured codeword is decoded using a matrix H' that is smaller than H: H' has at most m rows and fewer than n columns but more than n-n ' columns.
Preferably, the First code is a block code.
Preferably, H' is a parity check matrix of a second code and the punctured codeword is a codeword of the second code.
Preferably, the second method includes the step of deriving H' from H. More preferably, the puncturing of the codeword includes eliminating n-n ' selected bits from the codeword, and the derivation of H' from // includes performing Gaussian elimination on H to set equal to zero the first m-m " elements of the columns of if that correspond to a number m ' '<n-n ' of the bits of the codeword that are selected for elimination. In other words, the Gaussian elimination sets equal to zero the first elements of columns of H that correspond to only some of the bits of the codeword that are selected for elimination. IT then is m-m " rows of the resulting matrix without the zeroed-out columns. Most preferably, m " is arrived at by terminating the Gaussian elimination at the point that if the Gaussian elimination were continued, the resulting matrix H' would fail to satisfy a predetermined criterion for sparseness. One useful criterion for sparseness is that the average column degree of H' must be less than 10 and also less than one-quarter of the number of rows of H' Preferably, the decoding includes exchanging messages between the rows and columns of H', as in LDPC. As noted above, exchanging messages between the rows and columns of a parity check matrix is equivalent to exchanging messages between the bit nodes and the check nodes of a Tanner graph.
In some embodiments of the second method, the corrupting medium is a transmission medium. The exporting of the punctured codeword includes transmitting the punctured codeword via the transmission medium. The importing of the representation of the punctured codeword includes receiving the representation of the punctured codeword from the transmission medium.
In other embodiments of the second method, the corrupting medium is a storage medium. The exporting of the punctured codeword includes storing the punctured codeword in the storage medium. The importing of the representation of the punctured codeword includes reading the representation of the punctured codeword from the storage medium.
A memory device that uses the second method for porting k input bits includes a memory and a controller. The controller stores the input bits in the memory and recovers the input bits from the memory. The controller includes an encoder and a decoder. The encoder encodes the input bits according to the matrix H and punctures the resulting codeword to provide a punctured codeword. The decoder uses the matrix H ' to decode a representation of the punctured codeword that has been read from the memory.
A system that uses the second method for porting k input bits includes a first memory and a host of the first memory. The host includes a second memory and a processor. The second memory has stored therein code for managing the first memory according to the second method for porting k input bits as applied to a storage medium. The processor is for executing the code. The scope of the appended claims also includes a computer-readable storage medium having embodied thereon computer-readable code for managing such a first memory according to the second method for porting k input bits.
A communication system that uses the second method for porting k input bits includes a transmitter and a receiver. The transmitter includes an encoder and a modulator. The encoder encodes the input bits according to the matrix H and punctures the resulting codeword to provide a punctured codeword. The modulator transmits the punctured codeword via a communication channel as a modulated signal. The decoder includes a demodulator and a decoder. The demodulator receives the modulated signal from the communication channel and demodulates the modulated signal, thereby providing a representation of the punctured codeword. The decoder uses the matrix //' to decode the representation of the punctured codeword.
In the most general embodiment of a second method for recovering k input bits that have been encoded as a codeword of n bits according to a code with which is associated an m x n=m+k parity check matrix H and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n-n ' selected bits from the codeword, a representation of the punctured codeword is imported from the corrupting medium. The representation of the punctured codeword is decoded using a matrix H' that is smaller than H: H' has at most m rows and fewer than n columns but more than n ' columns.
Preferably, the first code is a block code.
Preferably, the method includes the step of deriving H' from H. More preferably , the derivation of H! from H includes performing Gaussian elimination on H to set equal to zero the first m-m ' ' elements of the columns of H that correspond to a number m ' '<n-n ' of the bits of the codeword that are selected for elimination. In other words, the Gaussian elimination sets equal to zero the first elements of columns of H that correspond to only some of the bits of the codeword that are selected for elimination. H' then is m-m " rows of the resulting matrix without the zeroed-out columns. Most preferably, m " is arrived at by terminating the Gaussian elimination at the point that if the Gaussian elimination were continued, the resulting matrix H' would fail to satisfy a predetermined criterion for sparseness. One useful criterion for sparseness is that the average column degree of H' must be less than 10 and also less than one- quarter of the number of rows of H'
Preferably, the decoding includes exchanging messages between the rows and columns of H\ as in LDPC. As noted above, exchanging messages between the rows and columns of a parity check matrix is equivalent to exchanging messages between the bit nodes and the check nodes of a Tanner graph.
A decoder, for decoding a representation of a punctured codeword that was produced by eliminating n-n ' selected bits from a n-bit codeword that was produced by encoding k input bits according to a code with which is associated a m x n—m+k parity check matrix H, includes a decoding module that decodes the representation of the punctured codeword using a matrix H' that is smaller than H: H' has at most m rows and fewer than n columns but more than n ' columns.
Preferably, the decoder also includes a code reduction module for deriving H' from H. More preferably, the derivation of H' from H includes performing Gaussian elimination on H to set equal to zero the first m-m ' ' elements of the columns of H that correspond to a number m ' !<n-n ' of the bits of the codeword that are selected for elimination, ϊn other words, the Gaussian elimination sets equal to zero the first elements of columns of H that correspond to only some of the bits of the codeword that are selected for elimination. H' then is m-m " rows of the resulting matrix without the zeroed-out columns. Most preferably, m " is arrived at by terminating the Gaussian elimination at the point that if the Gaussian elimination were continued, the resulting matrix H' would fail to satisfy a predetermined criterion for sparseness. One useful criterion for sparseness is that the average column degree of H' must be less than 10 and also less than one-quarter of the number of rows of H'
A receiver includes a demodulator and a decoding module. The demodulator receives a modulated signal from a communication channel and demodulates the modulated signal to provide a representation of a punctured codeword that had been produced by eliminating n~n ' selected bits from a ^-bil codeword that had been produced by encoding k input bits according to a code with which is associated a m x n=m+k parity check matrix H. The decoding module decodes the representation of the punctured codeword using a matrix H' that is smaller than H: H' has at most m rows and fewer than n columns but more than n ' columns.
Preferably, the receiver also includes a code reduction module for deriving H' from H. More preferably, the derivation of H' from // includes performing Gaussian elimination on H to set equal to zero the first m-m ' ' elements of the columns of H that correspond to a number m ' '<n-n ' of the bits of the codeword that are selected for elimination. In other words, the Gaussian elimination sets equal to zero the first elements of columns of H that correspond to only some of the bits of the codeword that are selected for elimination. W then is m-m ' ' rows of the resulting matrix without the zeroed-out columns. Most preferably, m " is arrived at by terminating the Gaussian elimination at the point that if the Gaussian elimination were continued, the resulting matrix H' would fail to satisfy a predetermined criterion for sparseness. One useful criterion for sparseness is that the average column degree of H' must be less than 10 and also less than one-quarter of the number of rows of H'.
In the most general embodiment of a third method for porting k input bits, the input bits are encoded according to a first code with which is associated a m x n parity check matrix H, where n=m+k. The encoding produces a codeword of n bits. The n-bit codeword is punctured, thereby providing a punctured codeword of n '<n bits. The punctured codeword is exported to a corrupting medium. A representation of the punctured codeword is imported from the corrupting medium. The representation of the punctured codeword is decoded using a matrix Η' that is smaller than Η: Η' has fewer than m '-m-{n-n ') rows and fewer than n ' columns.
Preferably, the first code is a block code. Preferably, H' is a parity check matrix of a second code and the punctured codeword is a codeword of the second code.
Preferably, the method includes the step of deriving H' from H. Most preferably, the puncturing of the codeword includes eliminating n-n ' selected bits from the codeword, and the derivation of H' from H includes performing Gaussian elimination on H to set equal to zero the first m ' elements of the columns of H that correspond to the bits of the codeword that are selected for elimination. //' then is selected rows of the resulting matrix without the zeroed- out columns and without the column(s) that correspond to (an)other bit(s) that is/are connected, by H, only to the selected bits.
Preferably, the decoding includes exchanging messages between the rows and columns of H\ as in LDPC. As noted above, exchanging messages between the rows and columns of a parity check matrix is equivalent to exchanging messages between the bit nodes and the check nodes of a Tanner graph.
In some embodiments of the method, the corrupting medium is a transmission medium. The exporting of the punctured codeword includes transmitting the punctured codeword via the transmission medium. The importing of the representation of the punctured codeword includes receiving the representation of the punctured codeword from the transmission medium.
In other embodiments of the method, the corrupting medium is a storage medium. The exporting of the punctured codeword includes storing the punctured codeword in the storage medium. The importing of the representation of the punctured codeword includes reading the representation of the punctured codeword from the storage medium.
A memory device that uses the method for porting k input bits includes a memory and a controller. The controller stores the input bits in the memory and recovers the input bits from the memory. The controller includes an encoder and a decoder. The encoder encodes the input bits according to the matrix H and punctures the resulting codeword to provide a punctured codeword. The decoder uses the matrix H' to decode a representation of the punctured codeword that has been read from the memory.
A system that uses the method for porting k input bits includes a first memory and a host of the first memory. The host includes a second memory and a processor. The second memory has stored therein code for managing the first memory according to the third method for porting k input bits as applied to a storage medium. The processor is for executing the code. The scope of the appended claims also includes a computer-readable storage medium having embodied thereon computer-readable code for managing such a first memory according to the third method for porting k input bits. A communication system that uses the method for porting k input bits includes a transmitter and a receiver. The transmitter includes an encoder and a modulator. The encoder encodes the input bits according to the matrix H and punctures the resulting codeword to provide a punctured codeword. The modulator transmits the punctured codeword via a communication channel as a modulated signal. The decoder includes a demodulator and a decoder. The demodulator receives the modulated signal from the communication channel and demodulates the modulated signal, thereby providing a representation of the punctured codeword. The decoder uses the matrix H' to decode the representation of the punctured codeword.
In the most general embodiment of a third method for recovering k input bits that have been encoded as a codeword of n bits according to a first code with which is associated an m x n~m+k parity check matrix H and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n-n' selected bits from the codeword, a representation of the punctured codeword is imported from the corrupting medium. The representation of the punctured codeword is decoded using a matrix H' that is smaller than H: ir has fewer than m '=m-(n-n ') rows and fewer than n ' columns.
Preferably, the first code is a block code.
Preferably, if' is a parity check matrix of a second code and the punctured codeword is a codeword of the second code.
Preferably, the method includes the step of deriving IT from H. Most preferably, the puncturing of the codeword includes eliminating n-n ' selected bits from the codeword, and the derivation of H' from H includes performing Gaussian elimination on H to set equal to zero the first m ' elements of the columns of H that correspond to the bits of the codeword that are selected for elimination. IT then is selected rows of the resulting matrix without the zeroed- out columns and without one or more columns that correspond(s) to (an)other bit(s) that is/are connected, by H, only to the selected bits.
Preferably, the decoding includes exchanging messages between the rows and columns of H', as in LDPC. As noted above, exchanging messages between the rows and columns of a parity check matrix is equivalent to exchanging messages between the bit nodes and the check nodes of a Tanner graph.
A decoder, for decoding a representation of a punctured codeword that was produced by eliminating n-n ' selected bits from a n-bii codeword that was produced by encoding k input bits according to a code with which is associated a in x n—m+k parity check matrix H, includes a decoding module that decodes the representation of the punctured codeword using a matrix H' that is smaller than H: H' has fewer than, m '=m-(n~n ') rows and fewer than n ' columns.
Preferably, the decoder also includes a code reduction module for deriving H' from H, Most preferably, the derivation of H' from H includes performing Gaussian elimination on H to set equal to zero the first m ' elements of the columns of H that correspond to the bits of the codeword that are selected for elimination. H' then is selected rows of the resulting matrix without the zeroed-out columns and without one or more columns that correspond(s) to (an)other bit(s) that is/are connected, by H, only to the selected bits.
A receiver includes a demodulator and a decoding module. The demodulator receives a modulated signal from a communication channel and demodulates the modulated signal to provide a representation of a punctured codeword that had been produced by eliminating n-n ' selected bits from a n-bit codeword that had been produced by encoding k input bits according to a code with which is associated a m x n=m+k parity check matrix H. The decoding module decodes the representation of the punctured codeword using a matrix H' that is smaller than H: H' has fewer than m '-m-(n~rt ') rows and fewer than n ' columns.
Preferably, the receiver also includes a code reduction module for deriving H' from H. Most preferably, the derivation of H' from H includes performing Gaussian elimination on H to set equal to zero the first m ' elements of the columns of H that correspond to the bits of the codeword that are selected for elimination. H' then is selected rows of the resulting matrix without the zeroed-out columns and without one or more columns that correspond(s) to (an)other bit(s) that is/are connected, by H, only to the selected bits.
BRIEF DESCRIPTION QF THE DRAWINGS
Various embodiments are herein described, by way of example only, with reference to the accompanying drawings, wherein:
FIG. 1 shows how a LDPC code can be represented as either a sparse parity check matrix or as a Tanner graph;
FIG. 2 illustrates the transformation of a parity check matrix H to a smaller matrix IT for decoding a punctured codeword;
FIGs. 3 and 4 are simplified schematic high-level block diagrams of decoders for efficient decoding of representations of punctured codewords;
FIG. 5 is a high-level schematic block diagram of a flash memory device whose controller includes the decoder of FIG. 3 or the decoder of FIG. 4;
FIG. 6 is a detail of FIG. 5; FIG. 7 is a high-level schematic block diagram of a memory system in which most of the functionality of the controller of FIG. 5 is emulated by software;
FIG. 8 is a high-level schematic block diagram of a communication system whose receiver includes the decoder of FIG. 3 or the decoder of FIG. 4;
FIG. 9 illustrates the context of a third variant of the method described herein;
FIG. 10 shows a Tanner graph for illustrating the transformation of H to H' according to the third variant of the method described herein.
DESCRIPTION QF THE PREFERRED EMBODIMENTS
The principles and operation of efficient decoding of a punctured codeword may be better understood with reference to the drawings and the accompanying description.
Denote the order of H as mxn , i.e. H has m rows and n columns. H is a parity check matrix of a code C, which of course implies that c is of length n {i.e. c has n elements). A punctured codeword c ' is derived from c by deleting some predefined coordinates of c. Denote the length of c' by n'. Of course, n'<n. The set of all punctured codewords is itself a code, denoted C '. Preferably, the information bits of the original code C are not punctured, so that the punctured code C has the same size (i.e. the same number of codewords) as C5 but has fewer redundancy bits.
Given H, c', n, m and n', a reduced matrix code H' is computed, such that if c is a codeword satisfying equation (2) then the punctured sub-codeword c' satisfies
Hv = o (3)
A matrix H' constructed as described below is smaller (fewer rows and/or columns) than H, so that decoding of c' according to equation (3) is easier and less complex then applying erasure decoding to equation (2).
Given H of order mx n , and given c' of length n', a matrix H' of order m 'x n' is computed, where m ' = m - (n - n ') .
H' is computed by performing a Gaussian elimination algorithm on the matrix H, with the goal of achieving all 0-s in a selected m ' rows of H, for example in the first m' rows of H, in all the columns associated with the punctured bits of c. After achieving this goal, and denoting the modified matrix by H' \ the first m ' rows of H" represent a reduced code, and the punctured bits do not participate in the code, since they are all multiplied by 0 in all the check equations. Therefore the reduced code can be represented by taking only the first m' rows of H", and the n' columns of H' ' associated with non-punctured bits. H' is those first m ' rows of H" without the columns of H' ' that are zeroed in the first m ' rows of H' ' and that correspond to punctured bits. For example, if « = 4096 and bits 4000, 4010, 4020, 4030 and 4040 of c are punctured (n ' = 4091), the columns of H" that are zeroed in the first m' rows of H" are columns 4000, 4010, 4020, 4030 and 4040, and H' is the first m ' rows of H" without columns 4000, 4010, 4020, 4030 and 4040.
For example consider a code whose parity check matrix H has the form shown in Figure 2. In this case the submatrices related to the punctured bits in the lower part of the matrix and the upper part of the matrix have the same structure, therefore replacing the upper half of the matrix with the sum (modulo 2) of the upper and lower halves of the matrix generates a matrix H" with all 0-s in the first m ' rows of the columns associated with the punctured bits. Because only row operations are performed in order to generate H' ' from H, both Hand H" span the same linear subspace and both Hand H" are parity-check matrices of the code C. H' is derived from H' ' by eliminating all but the first m ' rows of H' ' and the first n ' columns of H", resulting in a (jn-m ') x n ' parity-check matrix of the punctured code C.
Moreover, in this example the matrix H' is derived with a minimal number of row operations applied to each row (in this case one operation per row). Hence, the number of l's in each row of H' is at most twice the number of l 's in a row of H. If H is sparse then H' usually can be considered as sparse. Therefore, if the original code is an LDPC code, the reduced code H' usually can also be regarded as an LDPC code, thus it can be decoded efficiently, by generating the Tanner graph of the code and performing a message passing algorithm.
In most implementations, a limit is set on the number of row operations performed on H, in order to preserve certain properties, such as sparseness.
Figure 3 is a simplified schematic high-level block diagram of a decoder 60 for implementing the efficient punctured decoding described above. Punctured decoder 60 includes a code reduction module 62 and a decoder module 64. The inputs to punctured decoder 60 are the code matrix H and the (possibly noisy and corrupted) representation of the sub-codeword c'. The reduced code matrix H' is computed in code reduction module 62 (preferably once, and then stored in a local volatile or nonvolatile memory (not shown)), and H' is then provided to decoder module 64, together with the representation of sub-codeword c'. The output of decoder module 64 is the decoded codeword, which includes the information content of the original sub-codeword c'. This information is equal to the information content of the original codeword c.
Figure 4 is a simplified schematic high-level block diagram of another decoder 80 for implementing the efficient punctured decoding described above. In addition to a code reduction module 82 and a decoder module 84, decoder 80 includes a non-volatile memory 86 for storing the code matrix H. The inputs to decoder 80 are the (possibly noisy and corrupted) representation of the sub -codeword c ' and information, such as the indices of the bits of c that were punctured to create c ', that tells code reduction module 82 which columns of H to zero out in the first πC rows of H in order to create H' '. Code reduction module 82 computes H' as needed and preferably stores H' locally, either in memory 86 or in a local non- volatile memory
(not shown). As in decoder 60, H' is provided to decoder module 84 together with the representation of sub-codeword c '. The output of decoder module 84 is the decoded codeword.
Code reduction modules 62 and 82 and decoder modules 64 and 84 may be implemented in hardware, in firmware, in software, or in combinations thereof, as is known in the art.
Figure 5 is a high-level schematic block diagram of a flash memory device. A memory cell array I including a plurality of memory cells M arranged in a matrix is controlled by a column control circuit 2, a row control circuit 3, a c-source control circuit 4 and a c-p-well control circuit 5. Column control circuit 2 is connected to bit lines (BL) of memory cell array 1 for reading data stored in the memory cells (M)5 for determining a state of the memory cells (M) during a writing operation, and for controlling potential levels of the bit lines (BL) to promote the writing or to inhibit the writing. Row control circuit 3 is connected to word lines (WL) to select one of the word lines (WL), to apply read voltages, to apply writing voltages combined with the bit line potential levels controlled by column control circuit 2, and to apply an erase voltage coupled with a voltage of a p-type region on which the memory cells (M) are formed. C-sourcc control circuit 4 controls a common source line connected to the memory cells (M). C-p-well control circuit 5 controls the c-p-well voltage.
The data stored in the memory cells (M) are read out by column control circuit 2 and are output to external I/O lines via an I/O line and a data input/output buffer 6. Program data to be stored in the memory cells are input to data input/output buffer 6 via the external I/O lines, and are transferred to column control circuit 2. The external I/O lines are connected to a controller 20.
Command data for controlling the flash memory device are input to a command interface connected to external control lines which are connected with controller 20. The command data inform the flash memory of what operation is requested. The input command is transferred to a state machine 8 that controls column control circuit 2, row control circuit 3, c- source control circuit 4, c-p~well control circuit 5 and data input/output buffer 6. State machine 8 can output a status data of the flash memory such as READY/BUSY or PASS/FAIL.
Controller 20 is connected or connectable with a host system such as a personal computer, a digital camera, a personal digital assistant. It is the host which initiates commands, such as to store or read data to or from the memory array 1, and provides or receives such data, respectively. Controller 20 converts such commands into command signals that can be interpreted and executed by command circuits 7. Controller 20 also typically contains buffer memory for the user data being written to or read from the memory array. A typical memory device includes one integrated circuit chip 21 that includes controller 20, and one or more integrated circuit chips 22 that each contains a memory array and associated control, input/output and state machine circuits. The trend, of course, is to integrate the memory array and controller circuits of such a device together on one or more integrated circuit chips. The memory device may be embedded as part of the host system, or may be included in a memory card that is removably insertable into a mating socket of host systems. Such a card may include the entire memory device, or the controller and memory array, with associated peripheral circuits, may be provided in separate cards.
Figure 6 is an enlarged view of part of Figure 5, showing that controller 20 includes an encoder 52 for encoding user data received from the host as one or more punctured codewords, circuitry 54 for instructing command circuits 7 to store the punctured codewords in memory cell array 1 and for instructing command circuits 7 to retrieving the stored punctured codewords from memory cell array 1, and a decoder 30, that could be, for example, either decoder 60 of Figure 3 or decoder 80 of Figure 4, for decoding the representation of the punctured codewords as retrieved by circuitry 54.
RCPC conventionally is thought of as applicable only to time-varying communication channels. It is not commonly appreciated that memories such as flash memories, that become less and less reliable over time, also are time-varying corrupting media. Controller 20 initially uses a relatively large number of punctured bits, and gradually reduces that number as memory cell array 1 becomes less reliable over time.
Figure 7 is a high-level block diagram of a system 100 in which most of the functionality of controller 20 is effected by software. System 100 includes a processor 102 and four memory devices: a RAM 104, a boot ROM 106, a mass storage device (hard disk) 108 and a modified flash memory device of Figure 5 as a flash memory device 112, all communicating via a common bus 114. The difference between the flash memory device of Figure 5 and flash memory device 112 is that the controller of flash memory device 112 functions only as an interface to bus 114; the rest of the functionality of controller 20 of Figure 5 as described above is emulated by flash memory driver code 110 that is stored in mass storage device 108 and that is executed by processor 102 to interface between user applications executed by processor 102 and flash memory device 112, and to manage the flash memory of flash memory device 112. In addition to the conventional functionality of such flash management driver code, driver code 110 emulates the functionality of controller 20 of Figure 5 with respect to punctured encoding and decoding of codewords that are stored in memory cell array ] and that are read from memory cell array I5 as described above. Driver code 110 typically is included in operating system code for system 100 but also could be freestanding code.
The components of system 100 other than flash memory device 112 constitute a host 120 of flash memory device 112. Mass storage device 108 is an example of a computer- readable storage medium bearing computer-readable driver code for efficient punctured decoding as described above. Other examples of such computer-readable storage media include read-only memories such as CDs bearing such code.
Although the methods and the decoders disclosed herein are intended primarily for use in data storage systems, these methods and decoders also are applicable to communications systems, particularly communications systems that rely on wave propagation through noisy transmission media.
Figure 8 is a high-level schematic block diagram of a communication system 200 that includes a transmitter 210, a channel 203 and a receiver 212. Transmitter 210 includes an encoder 201 and a modulator 202. Receiver 212 includes a demodulator 204 and decoder 206 that could be, for example, either decoder 60 of Figure 3 or decoder 80 of Figure 4. Encoder 201 receives a message and generates a corresponding punctured codeword. Modulator 202 subjects the generated punctured codeword to a digital modulation such as BPSK, QPSK or multi- valued QAM and transmits the resulting modulated signal to receiver 212 via channel 203. At receiver 212, demodulator 204 receives the modulated signal from channel 203 and subjects the received modulated signal to a digital demodulation such as BPSK, QPSK or multi-valued QAM. Decoder 206 decodes the resulting representation of the original punctured codeword as described above.
In one variant of the method described above for efficient decoding of a punctured codeword, H ' is derived from H, not by Gaussian elimination, but by merging groups of rows of H. In each group, the number of 1's in each column associated with a punctured bit must be even, so that modulo 2 addition of the rows of the group sums those 1's to a 0.
An important special case is that of merging pairs of rows of H. Clearly, m must be an even number in this special case. The resulting matrix H' has m!2 rows and n-m/2 columns. The parity check matrix of Figure 2 is an example of a matrix H from which H' can be derived by mergers of pairs of rows. In this case, m=2m '. The merging is done by modulo 2 addition of the pair (row 1 and row m'+l), the pair (row 2 and row m '+2) , ... , the pair (row m ' and row 2m '). In addition, the matrix H preferably is designed so that the merged rows have their 1 's in different columns (except, of course, for the columns associated with punctured bits). This way, if all the rows of H have the same number of 1 's, then all the rows of H' also have the same number of 1's. This property is desirable for iterative decoding, as right regular LDPC codes can be designed to achieve a near optimal error correction capability. Moreover, the systematic structure facilitates an efficient decoder hardware design.
In this variant, H and H' can be stored in the same array in non-volatile memory 86 of decoder 80. For each row of H, only the indices of the columns in which the elements of that row are 1 's are stored. If H is a regular matrix (a matrix in which all the rows have the same number of 1 's), the storage is even simpler because the indices are just stored successively and code reduction module 82 knows that after traversing a predetermined number of indices a new row of H has started. If H is designed so that the merged rows have their 1's in different columns, it is not necessary to store H' separately because H' can be generated on the fly by merging rows of H. The indices of the "1" elements of the merged rows of H also are indices of the "1" elements of the rows of//'.
If H' is derived by merging consecutive rows of H (merging the first and second rows of H, merging the third and fourth rows of H, ..., merging the m-l-th and m-th rows of H), decoder 80 can implement either unpunctured decoding (of a representation of an n-element unpunctured codeword) using H or punctured decoding (of a representation of a n '-element punctured codeword) using H'.
A second variant of the method described above addresses a potential shortcoming of the method. A full Gaussian elimination, all the way to a matrix H' with m ' rows, may produce a matrix H' that is not sufficiently sparse to use in decoding by message passing. Empirically, a useful criterion for sparseness is that the average column degree of H\ i.e. the average number of 1's per column of H\ should be less than 10 and also less than the number of rows of H' divided by 4. (In good LDPC codes, the average column degrees of the parity check matrices are between 3 and 4.) The Gaussian elimination for deriving H' from H is implemented until eliminating another column of H would produce a matrix Ii' that is not sparse according to this criterion. Then, during the decoding, conventional erasure decoding is used to handle the punctured bits whose corresponding columns of H have not been eliminated.
One context for a third variant of the method described above is illustrated in Figure 9 that illustrates the bipartite graph that represents a LDPC code as being divided into several sections in the following way: 1) Divide the set V of bit nodes into / disjoint subsets: Vj, V2,..., Vt (such that V = V1 U V2 U... ^J V1). 2) For each subset V,- of bit nodes, form a subset C, of check nodes, including all of the check nodes that are connected solely to the bit nodes in V1. 3) Form a subset Cj of external check nodes, including all of the check nodes that are not in any of the check node subsets formed so far, i.e. C; =C\ (C] uC2 u, ., υCJ) . 4) Divide the graph
G into t sub-graphs G15G2,... , G, such that G1 = (VnCnE,) where E1 is the set of edges connected between bit nodes in F, and check nodes in Cj. Denote the edges connected to the set Cj by Ej (note that Ej = E \ (Ey u E2 u...u Et) ).
In these embodiments, the graph G is processed according to a special message passing schedule, by iteratively performing decoding phases, and in each decoding phase exchanging messages along the graph edges in the following order:
• for / = 1 through /
1. Send messages from check nodes c e Cj to bit nodes v e V1 along edges in Ej, depicted as the Rcjvt messages in Figure 9. Set messages from check nodes c e Cj to bits nodes v e V1 to zero, depicted by the Rep,- messages in Figure 9.
Set initial bit estimations for every bit v e V1 , depicted as the PVi messages in Figure 9. Note that the messages Rcjvi are the result of activating the decoder for the other /-1 sub-graphs Gt, k≠i, prior to this step. In the event that other sub-graphs have not been processed yet, their corresponding messages QvicJ in Figure 9 are set to the initial bit estimates as read from the memory or received from the communication channel.. Note that the initial (LLR) estimates of punctured bits are identically zero.
2. Perform one or more iterations by sending messages from bit nodes in Vt to check nodes in C, and messages from check nodes in C1 to bit nodes in Vh along the edges in E1, according to some schedule. This is depicted as the Qv1Ci and
Row messages in Figure 9. 3. Send messages from bit nodes in V1 to check nodes in Cj along the edges in Ej, depicted as the Qv1Cj messages in Figure 9.
Decoding continues until the decoder converges to a valid codeword, satisfying all the parity-check constraints, or until a maximum number of allowed decoding phases is reached. The stopping criterion for the message passing within each sub-graph i is similar: iterate until either all the parity-check constraints within this sub-graph are satisfied or a maximum number of allowed iterations is reached. In general, the maximum allowed number of iterations may change from one sub-graph to another or from one activation of the decoder to another,
In some implementations of this context, the check nodes in Cj are connected only to bit nodes corresponding to the punctured bits. The message exchange within the isolated subgraphs G1 is performed using a matrix H' that ignores not only the punctured bits but also the bits that are connected by H only to punctured bits. Figure 10 shows a Tanner graph that illustrates how such an H' is derived from such an H. The numbered circles are bit nodes. The numbered squares are check nodes. Note that the Tanner graph of Figure 10 is only for illustrating the concept of the third variant and is not necessarily a Tanner graph that would be useful in the context of Figure 9. The matrix H that corresponds to the Tanner graph of Figure 10 is:
Figure imgf000028_0001
Bits 7, 8 and 9 are punctured. H' is derived by modulo-2 addition of rows 1 and 4, rows 2 and 5, and rows 3 and 6, followed by omission of the last row and the last four columns. Hence:
Figure imgf000028_0002
A limited number of embodiments of methods for punctured decoding, and of devices and systems that use the methods, have been described. It will be appreciated that many variations, modifications and other applications of the methods, devices and system may be made.

Claims

WHAT IS CLAIMED IS:
1. A method of porting k input bits, comprising:
(a) encoding the input bits according to a first code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits;
(b) puncturing the codeword, thereby providing a punctured codeword of n '<n bits;
(c) exporting the punctured codeword to a corrupting medium;
(d) importing a representation of the punctured codeword from the corrupting medium;
(e) deriving, by merging selected rows of H, a matrix H' that has m '=m-(n-n ') rows and n ' columns; and
(f) using H' to decode the representation of the punctured codeword.
2. The method of claim 1 , wherein the first code is a block code.
3. The method of claim 1 , wherein H' is a parity check matrix of a second code and wherein the punctured codeword is a codeword of the second code.
4. The method of claim 1, wherein m is an even number, wherein H' is derived by merging pairs of rows of H, wherein m '~m/2, and wherein n '=n-m ',
5. The method of claim 4, wherein H' is derived from H by merging pairs of consecutive rows of H.
6. The method of claim 1, wherein the decoding includes exchanging messages between the rows of H' and the columns of. H',
7. The method of claim 1, wherein the corrupting medium is a transmission medium, wherein the exporting includes transmitting the punctured codeword via the transmission medium, and wherein the importing includes receiving the representation of the punctured codeword from the transmission medium.
8. The method of claim 1, wherein the corrupting medium is a storage medium, wherein the exporting includes storing the punctured codeword in the storage medium, and wherein the importing includes reading the representation of the punctured codeword from the storage medium.
9. A memory device comprising:
(a) a memory, and
(b) a controller for storing k input bits in the memory and for recovering the input bits from the memory, the controller including:
(i) an encoder for:
(A) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and n=m~\~k columns, thereby producing a codeword of n bits,
(B) puncturing the codeword, thereby providing a punctured codeword of n<n bits, and
(ii) a decoder for decoding a representation of the punctured codeword that has been read from the memory, the decoding being effected using a matrix IT that has m '-m~{n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
10. The memory device of claim 9, wherein m is an even number, wherein H' is derived by merging pairs of rows of H, wherein m '-mil, and wherein n '=n~m '.
11. A system comprising:
(a) a first memory; and
(b) a host of the first memory including:
(i) a second memory having stored therein code for managing the first memory by steps including:
(A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n~m+k columns, thereby producing a codeword of n bits,
(B) puncturing the codeword, thereby providing a punctured codeword of n '<n bits,
(C) storing the punctured codeword in the first memory,
(D) reading a representation of the punctured codeword from the first memory, and (E) decoding the representation of the punctured codeword using a matrix H7 that has m '~m-{n-n r) rows and n ' columns, and that is derived from H by merging selected rows of H, and
(ii) a processor for executing the code.
12. The system of claim 11, wherein m is an even number, wherein H' is derived by merging pairs of rows of H, wherein m '=m/2, and wherein n '=n~m '.
13. The system of claim 11, wherein the code for managing the first memory also includes code for deriving H' from H.
14. A computer-readable storage medium having embodied thereon computer- readable code for managing a memory, the computer-readable code comprising:
(a) program code for encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits;
(b) program code for puncturing the codeword, thereby providing a punctured codeword of n '<n bits;
(c) program code for storing the punctured codeword in a memory;
(d) program code for reading a representation of the punctured codeword from the memory; and
(e) program code for decoding the representation of the punctured codeword using a matrix if that has m '=m-(n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
15. The computer-readable storage medium of claim 14, wherein m is an even number, wherein H' is derived by merging pairs of rows of H, wherein m '=m/2, and wherein n '=n-m '.
16. The computer-readable storage medium of claim 14, wherein the computer- readable code further comprises:
(f) program code for deriving H' from H.
17. A communication system comprising:
(a) a transmitter including:
(i) an encoder for:
(A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n-mΛ-k columns, thereby producing a codeword of n bits, and
(B) puncturing the codeword, thereby providing a punctured codeword ofn<n bits, and
(ii) a modulator for transmitting the punctured codeword via a communication channel as a modulated signal; and
(b) a receiver including:
(i) a demodulator for receiving the modulated signal from the communication channel and for demodulating the modulated signal, thereby providing a representation of the punctured codeword, and
(ii) a decoder for decoding the representation of the punctured codeword using a matrix if that has m '=m-(n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
18. The communication system of claim 17, wherein m is an even number, wherein H ' is derived by merging pairs of rows of H, wherein m '=m/2, and wherein n '~n-m '.
19. A method of recovering k input bits that have been encoded as a codeword of n bits according to a first code with which is associated a parity check matrix H that has m rows and n-mΛ-k columns and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n-n' selected bits from the codeword, the method comprising:
(a) importing a representation of the punctured codeword from the corrupting medium;
(b) deriving, by merging selected rows of H, a matrix H' that has m '=m-{n-n ') rows and n columns; and
(c) using H' to decode the representation of the punctured codeword.
20. The method of claim 19, wherein the first code is a block code.
21. The method of claim 19, wherein H' is a parity check matrix of a second code and wherein the punctured codeword is a codeword of the second code.
22. The method of claim 19, wherein m is an even number, wherein H' is derived by merging pairs of rows of H, wherein m '=m/2t and wherein n '=n-m '.
23. The method of claim 22, wherein H' is derived from H by merging pairs of consecutive rows of H.
24. The method of claim 19, wherein the decoding includes exchanging messages between the rows of H' and the columns of H'.
25. A decoder for decoding a representation of a punctured codeword, the punctured codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby providing a codeword of n bits, and then eliminating n-n ' selected bits from the codeword, the decoder comprising:
(a) a decoding module for decoding the representation of the punctured codeword using a matrix If that has m '=m-(n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
26. The decoder of claim 25, wherein m is an even number, wherein H' is derived by merging pairs of rows of H, wherein m '=m/2, and wherein n '-n-m '.
27. The decoder of claim 25 , further comprising:
(b) a code reduction module for deriving Ii' from H.
28. A receiver comprising:
(a) a demodulator for receiving a modulated signal from a communication channel and for demodulating the modulated signal to provide a representation of a punctured codeword that had been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n~m+k columns, thereby providing a codeword of n bits, and then eliminating n-n ' selected bits from the codeword; and (b) a decoding module for decoding the representation of the punctured codeword using a matrix H7 that has m '=m-(n-n ') rows and n ' columns and that is derived from H by merging selected rows of H.
29. The communication system of claim 28, wherein m is an even number, wherein H' is derived by merging pairs of rows of H, wherein m '=m/2, and wherein n '=n-m '.
30. The receiver of claim 28, further comprising:
(c) a code reduction module for deriving H' from H.
31. A method of porting k input bits, comprising:
(a) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits;
(b) puncturing the codeword, thereby providing a punctured codeword of n '<n bits;
(c) exporting the punctured codeword to a corrupting medium;
(d) importing a representation of the punctured codeword from the corrupting medium; and
(e) decoding the representation of the punctured codeword using a matrix If that has at most m rows and fewer than n columns but more than n ' columns.
32. The method of claim 31 , wherein the first code is a block code.
33. The method of claim 31, wherein H' is a parity check matrix of a second code and wherein the punctured codeword is a codeword of the second code.
34. The method of claim 31 , further comprising:
(f) deriving H' from H.
35. The method of claim 34, wherein the puncturing includes eliminating n-n ' selected bits from the codeword, and wherein the deriving of H' from H is effected by steps including performing Gaussian elimination on H to set equal to zero elements 1 through m-m ' ' of the columns of Ii that correspond to a number m "<n~n' of the selected bits, thereby producing a matrix H'\ H' then being m-m " rows of H" without the columns that correspond to the m ' ' of the selected bits.
36. The method of claim 35, wherein the Gaussian elimination is terminated when further Gaussian elimination would produce a matrix H' that fails to satisfy a predetermined criterion of sparseness.
37. The method of claim 36, wherein the predetermined criterion of sparseness is that an average column degree of H' is less than the lesser of 10 and one-quarter of a number of rows of//'.
38. The method of claim 31, wherein the decoding includes exchanging messages between the rows of H' and the columns of//'.
39. The method of claim 31, wherein the corrupting medium is a transmission medium, wherein the exporting includes transmitting the punctured codeword via the transmission medium, and wherein the importing includes receiving the representation of the punctured codeword from the transmission medium.
40. The method of claim 31 , wherein the corrupting medium is a storage medium, wherein the exporting includes storing the punctured codeword in the storage medium, and wherein the importing includes reading the representation of the punctured codeword from the storage medium.
41. A memory device comprising:
(a) a memory, and
(b) a controller for storing k input bits in the memory and for recovering the input bits from the memory, the controller including:
(i) an encoder for:
(A) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+k columns, thereby producing a codeword of n bits,
(B) puncturing the codeword, thereby providing a punctured codeword of fewer than n bits, and (H) a decoder for decoding a representation of the punctured codeword that has been read from the memory, the decoding being effected using a matrix IF that has at most m rows and fewer than n columns but more than n ' columns.
42. A system comprising:
(a) a first memory; and
(b) a host of the first memory including:
(i) a second memory having stored therein code for managing the first memory by steps including:
(A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits,
(B) puncturing the codeword, thereby providing a punctured codeword of n '<n bits,
(C) storing the punctured codeword in the first memory,
(D) reading a representation of the punctured codeword from the first memory, and
(E) decoding the representation of the punctured codeword using a matrix if that has at most m rows and fewer than n columns but more than n ' columns, and
(ii) a processor for executing the code.
43. The system of claim 42, wherein the code for managing the first memory also includes code for deriving H' from H.
AA. The system of claim 43, wherein the puncturing includes eliminating n-n ' selected bits from the codeword, and wherein the code for deriving H' from H includes code for performing Gaussian elimination on H to set equal to zero elements 1 through m-m ' ' of the columns of H that correspond to a number m ' '<n-n ' of the selected bits, thereby producing a matrix H", H' then being m-m ' ' rows of H " without the columns that correspond to the m ' ' of the selected bits.
45. The system of claim 44, wherein the Gaussian elimination is terminated when further Gaussian elimination would produce a matrix H' that fails to satisfy a predetermined criterion of sparseness.
46. The system of claim 45, wherein the predetermined criterion of sparseness is that an average column degree of H' is less than the lesser of 10 and one-quarter of a number of rows of H'.
47. A computer-readable storage medium having embodied thereon computer- readable code for managing a memory, the computer-readable code comprising:
(a) program code for encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits;
(b) program code for puncturing the codeword, thereby providing a punctured codeword of n '<n bits;
(c) program code for storing the punctured codeword in a memory;
(d) program code for reading a representation of the punctured codeword from the memory; and
(e) program code for decoding the representation of the punctured codeword using a matrix If that has at most m rows and fewer than n columns but more than n ' columns.
48. The computer-readable storage medium of claim 47, wherein the computer- readable code further comprises:
(f) program code for deriving H' from H.
49. The computer-readable storage medium of claim 48, wherein the puncturing includes eliminating n-n ' selected bits from the codeword, and wherein the program code for deriving H' from H includes program code for performing Gaussian elimination on H to set equal to zero elements 1 through m-m ' ' of the columns of H that correspond to a number m ' '<n-n ' of the selected bits, thereby producing a matrix H", H' then being m-m ' ' rows of H" without the columns that correspond to the m " of the selected bits.
50. The computer-readable storage medium of claim 49, wherein the Gaussian elimination is terminated when further Gaussian elimination would produce a matrix H' that fails to satisfy a predetermined criterion of sparseness.
51. The computer-readable storage medium of claim 50, wherein the predetermined criterion of sparseness is that an average column degree of H' is less than the lesser of 10 and one-quarter of a number of rows of H'.
52. A communication system comprising:
(a) a transmitter including:
(i) an encoder for:
(A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits, and
(B) puncturing the codeword, thereby providing a punctured codeword of fewer than n bits, and
(ii) a modulator for transmitting the punctured codeword via a communication channel as a modulated signal; and
(b) a receiver including:
(i) a demodulator for receiving the modulated signal from the communication channel and for demodulating the modulated signal, thereby providing a representation of the punctured codeword, and
(ii) a decoder for decoding the representation of the punctured codeword using a matrix H1 that has at most m rows and fewer than n columns but fewer than n ' columns.
53. A method of recovering k input bits that have been encoded as a codeword of n bits according to a code with which is associated a parity check matrix H that has m rows and n-mήrk columns and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n-rC selected bits from the codeword, the method comprising:
(a) importing a representation of the punctured codeword from the corrupting medium; and
(b) decoding the representation of the punctured codeword using a matrix iT that has at most m rows and fewer than n columns but more than n ' columns.
54. The method of claim 53, wherein the first code is a block code.
55. The method of claim 53, wherein H' is a parity check matrix of a second code and wherein the punctured codeword is a codeword of the second code.
56. The method of claim 53, further comprising:
(c) deriving H' from H.
57. The method of claim 56, wherein the deriving H' from H is effected by steps including performing Gaussian elimination on H to set equal to zero elements 1 through m-m ' ' of the columns of H that correspond to a number m "<n-n ' of the selected bits, thereby producing a matrix H", IT then being m-m" rows of H" without the columns that correspond to the m " of the selected bits.
58. The method of claim 57, wherein the Gaussian elimination is terminated when further Gaussian elimination would produce a matrix H' that fails to satisfy a predetermined criterion of sparseness.
59. The method of claim 58, wherein the predetermined criterion of sparseness is that an average column degree of H' is less than the lesser of 10 and one-quarter of a number of rows of//'.
60. The method of claim 53, wherein the decoding includes exchanging messages between the rows of H' and the columns of IT.
61. A decoder for decoding a representation of a punctured codeword, the punctured codeword having been produced by eliminating n-n ' selected bits from a codeword of n bits, the codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and rr=m+k columns, the decoder comprising:
(a) a decoding module for decoding the representation of the punctured codeword using a matrix IT that has at most m rows and fewer than n columns but more than n ' columns.
62. The decoder of claim 61 , further comprising:
(b) a code reduction module for deriving H' from H.
63. The decoder of claim 62, wherein the deriving of H' from H includes performing Gaussian elimination on H to set equal to zero elements 1 through m-m ' ' of the columns of H that correspond to a number m "<n~n ' of the selected bits, thereby producing a matrix H", H' then being m-m " rows of H" without the columns that correspond to the m" of the selected bits.
64. The decoder of claim 63, wherein the Gaussian elimination is terminated when further Gaussian elimination would produce a matrix H' that fails to satisfy a predetermined criterion of sparseness.
65. The decoder of claim 64, wherein the predetermined criterion of sparseness is that an average column degree of H' is less than the lesser of 10 and one-quarter of a number of rows of H'.
66. A receiver comprising:
(a) a demodulator for receiving a modulated signal from a communication channel and for demodulating the modulated signal to provide a representation of a punctured codeword that had been produced by eliminating n-n' selected bits from a codeword of n bits, the codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n=m+k columns; and
(b) a decoding module for decoding the representation of the punctured codeword using a matrix H' that has at most m rows and fewer than n columns but more than n ' columns.
67. The receiver of claim 66, further comprising:
(c) a code reduction module for deriving H' from H.
68. The receiver of claim 67, wherein the deriving H' from H includes performing Gaussian elimination on H to set equal to zero elements 1 through m-m ' ' of the columns of H that correspond to a number m "<n-n ' of the selected bits, thereby producing a matrix H", H' then being m-m ' ' rows of H' ' without the columns that correspond to the m " of the selected bits.
69. The receiver of claim 68, wherein the Gaussian elimination is terminated when further Gaussian elimination would produce a matrix H' that fails to satisfy a predetermined criterion of sparseness.
70. The receiver of claim 69, wherein the predetermined criterion of sparseness is that an average column degree of H' is less than the lesser of 10 and one-quarter of a number of rows of H'.
71. A method of porting k input bits, comprising:
(a) encoding the input bits according to a first code with which is associated a parity check matrix H that has m rows and n=m+k columns, thereby producing a codeword of n bits;
(b) puncturing the codeword, thereby providing a punctured codeword of n '<n bits;
(c) exporting the punctured codeword to a corrupting medium;
(d) importing a representation of the punctured codeword from the corrupting medium; and
(e) decoding the representation of the punctured codeword using a matrix FT that has fewer than m !-m~{n-n ') rows and fewer than n ' columns.
72. The method of claim 71 , wherein the first code is a block code.
73. The method of claim 71, wherein H' is a parity check matrix of a second code and wherein the punctured codeword is a codeword of the second code.
74. The method of claim 71 , further comprising:
(f) deriving H' from H.
75. The method of claim 74, wherein the puncturing includes eliminating n-n ' selected bits from the codeword, and wherein the deriving of H' from H is effected by steps including performing Gaussian elimination on H to set equal to zero elements 1 through m ' of the columns of H that correspond to the selected bits, thereby producing a matrix H", H' then being selected rows of H" without the columns that correspond to the selected bits and without at least one column that corresponds to another bit that is connected, by H, only to the selected bits.
76. The method of claim 71, wherein the decoding includes exchanging messages between the rows of H' and the columns of H'.
77. The method of claim 71, wherein the corrupting medium is a transmission medium, wherein the exporting includes transmitting the punctured codeword via the transmission medium, and wherein the importing includes receiving the representation of the punctured codeword from the transmission medium.
78. The method of claim 71 , wherein the corrupting medium is a storage medium, wherein the exporting includes storing the punctured codeword in the storage medium, and wherein the importing includes reading the representation of the punctured codeword from the storage medium.
79. A memory device comprising:
(a) a memory, and
(b) a controller for storing k input bits in the memory and for recovering the input bits from the memory, the controller including:
(i) an encoder for:
(A) encoding the input bits according to a code with which is associated a parity check matrix H that has m rows and π=mλ-k columns, thereby producing a codeword of n bits,
(B) puncturing the codeword, thereby providing a punctured codeword of fewer than n bits, and
(ii) a decoder for decoding a representation of the punctured codeword that has been read from the memory, the decoding being effected using a matrix IT that has fewer than m '=m-{n-n f) rows and fewer than n ' columns.
80. A system comprising: (a) a first memory; and
(b) a host of the first memory including:
(i) a second memory having stored therein code for managing the first memory by steps including:
(A) encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n-m+Jc columns, thereby producing a codeword of n bits,
(B) puncturing the codeword, thereby providing a punctured codeword of n'<n bits,
(C) storing the punctured codeword in the first memory,
(D) reading a representation of the punctured codeword from the first memory, and
(E) decoding the representation of the punctured codeword using a matrix JFT that has fewer than m '=m-(n-n ') rows and fewer than n ' columns, and
(ii) a processor for executing the code.
81. The system of claim 80, wherein the code for managing the first memory also includes code for deriving H' from B.
82. The system of claim 81, wherein the code for deriving H' from H includes code for performing Gaussian elimination on H to set equal to zero elements 1 through m ' of the columns of Hthat correspond to the selected bits, thereby producing a matrix H", H' then being selected rows of H" without the columns that correspond to the selected bits and without at least one column that corresponds to another bit that is connected, by H, only to the selected bits.
83. A computer-readable storage medium having embodied thereon computer- readable code for managing a memory, the computer-readable code comprising:
(a) program code for encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and
Figure imgf000043_0001
columns, thereby producing a codeword of n bits;
(b) program code for puncturing the codeword, thereby providing a punctured codeword of n '<n bits; (c) program code for storing the punctured codeword in a memory;
(d) program code for reading a representation of the punctured codeword from the memory; and
(e) program code for decoding the representation of the punctured codeword using a matrix IT that has fewer than m '=m-(n~n ') rows and fewer than n ' columns.
84. The computer-readable storage medium of claim 83, wherein the computer- readable code further comprises:
(f) program code for deriving H' from H,
85. The computer-readable storage medium of claim 84, wherein the program code for deriving H' from H includes program code for performing Gaussian elimination on H to set equal to zero elements 1 through m ' of the columns of Ii that correspond to the selected bits, thereby producing a matrix H", H' then being selected rows of H' ' without the columns that correspond to the selected bits and without at least one column that corresponds to another bit that is connected, by H, only to the selected bits.
86. Λ communication system comprising:
(a) a transmitter including:
(i) an encoder for:
(A) encoding k input bits according to a code with which is associated a parity check matrix Ii that has m rows and n~m+k columns, thereby producing a codeword of n bits, and
(B) puncturing the codeword, thereby providing a punctured codeword of fewer than n bits, and
(ii) a modulator for transmitting the punctured codeword via a communication channel as a modulated signal; and
(b) a receiver including:
(i) a demodulator for receiving the modulated signal from the communication channel and for demodulating the modulated signal, thereby providing a representation of the punctured codeword, and
(ii) a decoder for decoding the representation of the punctured codeword using a matrix IT that has fewer than m '=m-(n-n ') rows and fewer than n columns.
87. A method of recovering k input bits that have been encoded as a codeword of n bits according to a first code with which is associated a parity check matrix H that has m rows and n~m+k columns and that have been exported to a corrupting medium as a punctured codeword produced by eliminating n-rC selected bits from the codeword, the method comprising:
(a) importing a representation of the punctured codeword from the corrupting medium; and
(b) decoding the representation of the punctured codeword using a matrix JfT that has fewer than m '=m-(n-n ') rows and fewer than n ' columns.
88. The method of claim 87, wherein the first code is a block code.
89. The method of claim 87, wherein H' is a parity check matrix of a second code and wherein the punctured codeword is a codeword of the second code.
90. The method of claim 87, further comprising:
(c) deriving H' from H.
91. The method of claim 90, wherein the deriving H' from H is effected by steps including performing Gaussian elimination on H to set equal to zero elements 1 through m ' of the columns of H that correspond to the selected bits, thereby producing a matrix H", H' then being selected rows of H" without the columns that correspond to the selected bits and without at least one column that corresponds to another bit that is connected, by H, only to the selected bits.
92. The method of claim 87, wherein the decoding includes exchanging messages between the rows of Η' and the columns of Η'.
93. A decoder for decoding a representation of a punctured codeword, the punctured codeword having been produced by eliminating n-n ' selected bits from a codeword of n bits, the codeword having been produced, by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n~m+k columns, the decoder comprising: (a) a decoding module for decoding the representation of the punctured codeword using a matrix IT that has fewer than m '=m-(n-n t) rows and fewer than n ' columns.
94. The decoder of claim 93, further comprising:
(b) a code reduction module for deriving H' from H.
95. The decoder of claim 94, wherein the deriving of H' from H includes performing Gaussian elimination on H to set equal to zero elements 1 through m ' of the columns of H that correspond to the selected bits, thereby producing a matrix //", Ii' then being selected rows of H" without the columns that correspond to the selected bits and without at least one column that corresponds to another bit that is connected, by H, only to the selected bits.
96. A receiver comprising:
(a) a demodulator for receiving a modulated signal from a communication channel and for demodulating the modulated signal to provide a representation of a punctured codeword that had been produced by eliminating n-n ' selected bits from a codeword of n bits, the codeword having been produced by encoding k input bits according to a code with which is associated a parity check matrix H that has m rows and n~m+k columns; and
(b) a decoding module for decoding the representation of the punctured codeword using a matrix If that has fewer than m '=m-(n-n ') rows and fewer than n ' columns.
97. The receiver of claim 96, further comprising:
(c) a code reduction module for deriving H' from H.
98. The receiver of claim 97, wherein the deriving H' from H includes performing Gaussian elimination on H to set equal to zero elements 1 through m ' of the columns of H that correspond to the selected bits, thereby producing a matrix H", H' then being selected rows of H' ' without the columns that correspond to the selected bits and without at least one column that corresponds to another bit that is connected, by H, only to the selected bits.
PCT/IB2010/053317 2009-07-21 2010-07-21 Compact decoding of punctured codes WO2011010286A2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP10747670A EP2457329A2 (en) 2009-07-21 2010-07-21 Compact decoding of punctured codes
KR1020127004322A KR101722798B1 (en) 2009-07-21 2010-07-21 Compact decoding of punctured codes

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US12/506,327 US8516352B2 (en) 2009-07-21 2009-07-21 Compact decoding of punctured block codes
US12/506,316 US8516351B2 (en) 2009-07-21 2009-07-21 Compact decoding of punctured block codes
US12/506,342 2009-07-21
US12/506,316 2009-07-21
US12/506,327 2009-07-21
US12/506,342 US8375278B2 (en) 2009-07-21 2009-07-21 Compact decoding of punctured block codes

Publications (3)

Publication Number Publication Date
WO2011010286A2 true WO2011010286A2 (en) 2011-01-27
WO2011010286A3 WO2011010286A3 (en) 2011-11-24
WO2011010286A4 WO2011010286A4 (en) 2012-01-19

Family

ID=43430611

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2010/053317 WO2011010286A2 (en) 2009-07-21 2010-07-21 Compact decoding of punctured codes

Country Status (3)

Country Link
EP (1) EP2457329A2 (en)
KR (1) KR101722798B1 (en)
WO (1) WO2011010286A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2256935A3 (en) * 2009-05-29 2011-10-12 Sony Corporation Punctured LDPC Codes
US9397699B2 (en) 2009-07-21 2016-07-19 Ramot At Tel Aviv University Ltd. Compact decoding of punctured codes
CN111722956A (en) * 2019-03-19 2020-09-29 西部数据技术公司 LDPC code length adjustment

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100834650B1 (en) * 2006-09-04 2008-06-02 삼성전자주식회사 Apparatus and method for transmitting/receiving signal in a communication system
TWI427936B (en) * 2009-05-29 2014-02-21 Sony Corp Receiving apparatus, receiving method, program, and receiving system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
None

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2256935A3 (en) * 2009-05-29 2011-10-12 Sony Corporation Punctured LDPC Codes
US8448049B2 (en) 2009-05-29 2013-05-21 Sony Corporation Receiving apparatus, receiving method, program, and receiving system
US9397699B2 (en) 2009-07-21 2016-07-19 Ramot At Tel Aviv University Ltd. Compact decoding of punctured codes
CN111722956A (en) * 2019-03-19 2020-09-29 西部数据技术公司 LDPC code length adjustment
CN111722956B (en) * 2019-03-19 2024-04-09 西部数据技术公司 LDPC code length adjustment

Also Published As

Publication number Publication date
KR101722798B1 (en) 2017-04-05
WO2011010286A3 (en) 2011-11-24
EP2457329A2 (en) 2012-05-30
WO2011010286A4 (en) 2012-01-19
KR20120046751A (en) 2012-05-10

Similar Documents

Publication Publication Date Title
US8291279B2 (en) Memory-efficient LDPC decoder and method
US8464123B2 (en) Matrix structure for block encoding
US8806307B2 (en) Interruption criteria for block decoding
US20090319860A1 (en) Overcoming ldpc trapping sets by decoder reset
CN102077173B (en) Error-floor mitigation of codes using write verification
CN108053862B (en) Recovering data for a failed memory cell using reliability information from a plurality of memory cells and a parity memory cell
KR101621573B1 (en) Reduced complexity ldpc decoder
EP2768146B1 (en) Apparatus and method for transmitting and receiving data in communication/broadcasting system
US8375278B2 (en) Compact decoding of punctured block codes
US8504895B2 (en) Using damping factors to overcome LDPC trapping sets
WO2014126750A1 (en) Bit flipping decoding with reliability inputs for ldpc codes
CN102412847A (en) Method and apparatus for decoding low density parity check code using united node processing
US9300328B1 (en) Methodology for improved bit-flipping decoder in 1-read and 2-read scenarios
US8516352B2 (en) Compact decoding of punctured block codes
US8516351B2 (en) Compact decoding of punctured block codes
US9397699B2 (en) Compact decoding of punctured codes
Yuan et al. On systematic LT codes
EP2457329A2 (en) Compact decoding of punctured codes
WO2014172874A1 (en) Method and apparatus of ldpc encoder in 10gbase-t system
Yu et al. Concatenated raptor codes in NAND flash memory
US20170161141A1 (en) Method and apparatus for correcting data in multiple ecc blocks of raid memory
KR101484066B1 (en) Ldpc code decoding method
Inaba et al. Reliability-based hybrid ARQ (RB-HARQ) schemes using low-density parity-check (LDPC) codes

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2010747670

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2010747670

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 20127004322

Country of ref document: KR

Kind code of ref document: A

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10747670

Country of ref document: EP

Kind code of ref document: A2