WO2003021440A1 - Decoding architecture for low density parity check codes - Google Patents

Decoding architecture for low density parity check codes Download PDF

Info

Publication number
WO2003021440A1
WO2003021440A1 PCT/US2002/028047 US0228047W WO03021440A1 WO 2003021440 A1 WO2003021440 A1 WO 2003021440A1 US 0228047 W US0228047 W US 0228047W WO 03021440 A1 WO03021440 A1 WO 03021440A1
Authority
WO
WIPO (PCT)
Prior art keywords
messages
ldpc
computation unit
nodes
bit
Prior art date
Application number
PCT/US2002/028047
Other languages
French (fr)
Inventor
Sungwook Kim
Original Assignee
Bermai, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bermai, Inc. filed Critical Bermai, Inc.
Publication of WO2003021440A1 publication Critical patent/WO2003021440A1/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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1157Low-density generator matrices [LDGM]
    • 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
    • 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
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • 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
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • H03M13/1122Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule storing only the first and second minimum values per check node
    • 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/1131Scheduling of bit node or check node processing
    • H03M13/1134Full parallel processing, i.e. all bit nodes or check nodes are processed in parallel
    • 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/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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/65Purpose and implementation aspects
    • H03M13/6572Implementations using a tree structure, e.g. implementations in which the complexity is reduced by a tree structure from O(n) to O (log(n))
    • 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/0054Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms

Definitions

  • the invention relates to digital communication and, more particularly, to techniques for decoding digital communication signals using low density parity check codes.
  • FEC Forward error correction
  • LDPC low density parity coding
  • AWGN additive white Gaussian noise
  • the invention is directed to architectures for decoding low density parity check codes.
  • the architectures permit varying degrees of hardware sharing to balance throughput, power consumption and area requirements.
  • the LDPC decoding architectures described herein may be useful in a variety of communication systems, and especially useful in wireless communication systems in which throughput, power consumption, and area are significant concerns.
  • Decoding architectures in accordance with the invention, implement an approximation of the standard message passing algorithm used for LDPC decoding, thereby reducing computational complexity. Instead of a fully parallel structure, this approximation permits at least a portion of the message passing structure between check and bit nodes to be implemented in a block-serial mode, providing reduced area without substantial added latency.
  • Memory for storing messages between check and bit nodes can be constructed using D flip-flops, multiplexers and demultiplexers, leading to reduced power requirements.
  • the decoding architecture can be configured to store incoming messages in fixed positions in memory, taking advantage of the fact that messages in the LDPC decoder change rather slowly as they iterate, to present low switching activity.
  • the decoding architectures avoid the need for summations and lookup tables, as typically required by conventional message-passing algorithms. As a result, the decoding architectures can be made more area-efficient.
  • the invention provides a low density parity check (LDPC) decoder comprising a first computation unit and a second computation unit.
  • the first computation unit iteratively computes messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm.
  • the second computation unit is responsive to the first computation unit and iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
  • LDPC low density parity check
  • the invention provides a low density parity check (LDPC) decoding method comprising iteratively computing messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm in a first computation unit, and responsive to the first computation unit, iteratively computing messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision in a second computation unit.
  • LDPC low density parity check
  • the invention provides a low density parity check (LDPC) decoding method comprising iteratively computing messages for LDPC encoded information from check nodes to bit nodes in block serial mode using shared hardware in a first computation unit and, responsive to the first computation unit, iteratively computing messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision in a second computation unit.
  • LDPC low density parity check
  • the invention provides a low density parity check (LDPC) decoder comprising a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes in block serial mode using shared hardware, and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
  • LDPC low density parity check
  • the invention provides a wireless communication device comprising a radio circuit that receives radio frequency signals, a modem that demodulates the received signals, wherein the signals are encoded with low density parity check (LDPC) codes; and an LDPC decoder.
  • the LDPC decoder includes a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm, and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
  • LDPC decoder includes a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm, and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes
  • the invention provides a wireless communication device comprising a radio circuit that receives radio frequency signals, a modem that demodulates the received signals, wherein the signals are encoded with low density parity check (LDPC) codes, and a low density parity check (LDPC) decoder.
  • the LDPC decoder includes a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes in block serial mode using shared hardware, and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
  • the invention may offer a number of advantages.
  • the use of LDPC coding can provide exceptional performance.
  • LDPC codes are characterized by good distance properties that reduce the likelihood of undetected errors.
  • LDPC codes permit implementation of low complexity, highly parallelizable decoding algorithms. Parallel processing, in turn, promotes low power consumption, high throughput and simple control logic. Availability of different degrees of serial processing, however, reduces area. Also, the intermediate results on each node of the LDPC decoder tend to converge to a certain value, resulting in low power consumption due to reduced switching activity.
  • the architectures contemplated by the invention are capable of delivering such advantages while balancing throughput, power consumption and area, making LDPC more attractive in a wireless communication system.
  • FIG. 1 is a block diagram illustrating a wireless communication network.
  • FIG. 2 is a block diagram illustrating a wireless communication device useful in the network of FIG. 1.
  • FIG. 3 is a block diagram illustrating a wireless communication device in greater detail.
  • FIG. 4 is a block diagram illustrating a modem associated with a wireless communication device.
  • FIG. 5 is a bipartite diagram of an exemplary LDPC code.
  • FIG. 6A illustrates a parallel concatenated parity check (PCPC) generator matrix.
  • FIG. 6B illustrates a plot for the generator matrix of FIG. 6A.
  • FIG. 7 is a block diagram illustrating an exemplary PCPC encoder configured to generate LDPC codes.
  • FIG. 8 is diagram illustrating the general structure of an LDPC parity check matrix H.
  • FIG. 9A illustrates an exemplary LDPC parity check matrix H.
  • FIG. 9B illustrates a plot for the LDPC parity check matrix H of FIG. 9A.
  • FIG. 10 is a block diagram illustrating an exemplary embodiment of an
  • FIG. 11 is a block diagram illustrating the structure of a check to bit computation unit for computing messages from check to bit nodes.
  • FIG. 12 is a logic diagram illustrating an absolute value unit in the check to bit computation unit of FIG. 11.
  • FIG. 13 is a logic diagram illustrating a sign evaluation unit in the check to bit computation unit of FIG. 11.
  • FIG. 14A is a block diagram illustrating a minimum determination unit in the check to bit computation unit of FIG. 11.
  • FIG. 14B is a logic diagram illustrating the minimum determination unit of
  • FIG. 14A is a diagrammatic representation of FIG. 14A.
  • FIG. 15 A is a block diagram illustrating a comparator unit in the check to bit computation unit of FIG. 11.
  • FIG. 15B is a logic diagram illustrating the comparator unit of FIG. 15 A.
  • FIG. 16A is a block diagram illustrating a sign reconstruction unit in the check to bit computation unit of FIG. 11.
  • FIG. 16B is a logic diagram illustrating the sign reconstruction unit of FIG.
  • FIG. 17 is a block diagram illustrating the structure of a bit to check computation unit for computing messages from bit to check nodes.
  • FIG. 18 A is a block diagram illustrating a saturation unit for the bit to check computation unit of FIG. 17.
  • FIG. 18B is a logic diagram illustrating the saturation unit of FIG. 18 A in greater detail.
  • FIG. 19A is a block diagram illustrating a bit to check register in fully parallel mode.
  • FIG. 19B is a block diagram illustrating a bit to check register in half hardware sharing mode.
  • FIG. 19C is a block diagram illustrating a bit to check register in 1/k hardware sharing mode.
  • FIG. 20A is a block diagram illustrating a check to bit register in fully parallel mode.
  • FIG. 20B is a block diagram illustrating a check to bit register in half hardware sharing mode.
  • FIG. 20C is a block diagram illustrating a check to bit register in 1/k hardware sharing mode.
  • FIG. 1 is a block diagram illustrating a wireless communication network 10.
  • wireless communication network 10 may include one or more wireless access points 12 coupled to a wired network 14, e.g., via an Ethernet connection.
  • Wireless access point 12 permits wireless communication between wired network 14 and one or more wireless communication devices 16A-16N (hereinafter 16).
  • Wireless access point 12 may integrate a hub, switch or router to serve multiple wireless communication devices 16.
  • Wireless communication network 10 may be used to communicate data, voice, video and the like between devices 16 and network 14 according to a variety of different wireless transmission standards.
  • wireless communication network 10 may transmit signals based on a multi- carrier communication technique such as OFDM, e.g., as specified by IEEE 802.1 la.
  • Wireless communication network 10 makes use of LDPC coding to support forward error correction of bit errors in symbols transmitted between access point 12 and devices 16.
  • access point 12, devices 16 or both may implement an LDPC decoder architecture that permits varying degrees of hardware sharing. Hardware sharing can be exploited to balance throughput, power consumption and area requirements, as will be described.
  • the decoding architectures implemented by access point 12 and devices 16 rely on an approximation of the standard message passing algorithm used for LDPC decoding. Instead of a fully parallel structure, this approximation permits at least a portion of the message passing structure between check and bit nodes to be implemented in a block-serial mode. A degree of block-serial mode implementation can reduce the area requirements of the decoder without substantial added latency.
  • the structure of the decoder architecture will be described in greater detail below. Although the decoder architecture may be useful in wired networks, application within wireless communication network 10 will be described herein for purposes of illustration.
  • FIG. 2 is a block diagram illustrating a wireless communication device 16 in further detail.
  • wireless communication device 16 may include an RF receive antenna 18, RF transmit antenna 20, radio 22, modem 24, and media access controller 26 coupled to a host processor 26. Radio 22 and modem 24 function together as a wireless receiver.
  • Wireless communication device 16 may take the form of a variety of wireless equipment, such as computers, personal computer cards, e.g., PCI or PCMCIA cards, personal digital assistants (PDAs), network audio or video appliances, and the like.
  • PDAs personal digital assistants
  • RF receive antenna 18 receives RF signals from access point 12, whereas RF transmit antenna 20 transmit RF signals to access point.
  • receive and transmit antennas 18, 20 may be realized by a common RF antenna used for both reception and transmission.
  • Radio 22 may include circuitry for upconverting transmitted signals to RF, and downconverting RF signals to baseband.
  • radio 20 may integrate both transmit and receive circuitry within a single transceiver component. In some cases, however, the transmit and receive circuitry may be formed by separate transmitter and receiver components. For purposes of illustration, the discussion herein will be generally limited to the receiver and demodulation aspects of radio 22 and modem 24.
  • Modem 24 encodes information in a baseband signal for upconversion to the RF band by radio 22 and transmission via a transmit antenna. Similarly, and more pertinent to the invention, modem 24 decodes information from RF signals received via antenna 18 and downconverted to baseband by radio 22.
  • Media access controller 26 interacts with host processor 28 to facilitate communication between modem 24 and a host wireless communication device 16, e.g., a computer, PDA or the like. Hence, host processor 28 may be a CPU within a computer or some other device.
  • Radio 22, modem 24 and media access controller 26 may be integrated on a common integrated circuit chip, or realized by discrete components.
  • FIG. 3 is a block diagram illustrating radio and modem circuitry within an access point 12 or wireless communication device 16. Similar radio and modem circuitry may be implemented in wireless access point 12.
  • radio 22 includes a downconverter 30 that receives an RF signal via antenna 18. Downconverter 30 mixes the received RF signal with a signal received from a frequency synthesizer 32 to convert the RF signal down to a baseband frequency. Radio 22 also may include a low noise amplifier and other signal conditioning circuitry (not shown in FIG. 3).
  • Modem 24 includes an analog-to-digital converter (ADC) 34 that produces a digital representation of the baseband signal.
  • ADC 34 may include an amplifier (not shown in FIG. 3) that applies a gain to the analog baseband signal prior to conversion to a digital signal.
  • Circuitry also may be provided to perform a number of functions, such as gain control, signal detection, frame synchronization and carrier frequency offset estimation and correction.
  • a fast Fourier transform (FFT) unit 36 receives the digital signal from ADC 34 and produces FFT outputs to demodulate the signal.
  • a decoder 38 decodes the FFT outputs from FFT unit 36 to recover the information carried by the received signal.
  • decoder 38 decodes the information carried by a given tone and produces a stream of serial data for transmission to host processor 28 via MAC 26 (FIG. 2).
  • decoder 38 implements an LDPC decoder architecture as described herein.
  • FIG. 4 is a block diagram illustrating modem 24 and decoder 38.
  • modem 24 may include a soft demapper unit 40, deinterleaver unit 42 and LDPC decoder unit 44.
  • Soft demapper unit 40 processes observation samples produced by FFT unit 36 to generate soft decisions ⁇ for the transmitted symbols.
  • the soft decisions may be accompanied by, or take the form of, log likelihood ratios (LLRs).
  • Deinterleaver unit 42 restores the outputs from soft demapper unit 40 to the original order of the symbols prior to transmission.
  • LDPC decoder unit 44 accepts the log likelihood ratios from deinterleaver unit 42 and performs decoding according to the message passing algorithm.
  • FIG. 5 is a bipartite graph of an exemplary LDPC code.
  • FIG. 5 illustrates the message passing algorithm implemented by LDPC decoder unit 44 to decode LDPC codes.
  • One set of nodes x(l)-x(M) represents the codeword bits (bit nodes), and the other set of nodes c(l)-c(N) represents the parity-check constraints on the bits (check nodes).
  • Edges in the bipartite graph of FIG. 5 connect check nodes c(l)-c(N) to bit nodes x(l)-x(N), and identify the bits that participate in each parity check.
  • a bit sequence is a codeword if and only if the modulo 2 sum of the bits that neighbor a check node is 0 for each check node. Thus, for a codeword, each bit neighboring a given check node is equal to the modulo 2 sum of the other neighbors.
  • Each message represents an estimate of the bit associated with the particular edge carrying the message. For decoding, messages are exchanged along the edges of the graph and computations are performed at the nodes.
  • the structure of the LDPC encoder at the transmit access point 12 or wireless communication device 16 should be considered.
  • One disadvantage of LDPC codes is that the encoder is generally more complex than the encoder used for turbo codes.
  • the sparse parity check provided by LDPC decoding is advantageous, but makes the LDPC encoder more complex. In particular, it is difficult to construct a sparse generator matrix from the sparse parity check matrix.
  • a systematic parallel concatenated parity check (PCPC) encoder structure can be used.
  • FIG. 6B illustrates a plot for the generator matrix of FIG. 6 A.
  • a dot in the plot of FIG. 6B represents a l's element in the generator matrix of FIG. 6 A.
  • the codewords are constructed by G*m where G is a generator matrix and m is a message.
  • Each submatrix is constructed as:
  • the parity check block codes After interleaving, the parity check block codes generate single bits to enforce even or odd parity. Each of the single bit parity check component codes can be efficiently implemented using a simple logical XOR operation.
  • FIG. 7 is a block diagram illustrating an exemplary PCPC encoder 46 configured to generate LDPC codes.
  • PCPC encoder 46 is based on the generator matrix G of FIG. 6A.
  • PCPC encoder 46 includes three permutation units 48A, 48B, 48C, parity check blocks 50A, 50B, 50C, 50D, and a parallel-to-serial converter 52.
  • PCPC encoder 46 concatenates, in parallel, multiple single bit parity check block codes.
  • the coding scheme in FIG. 7 can be viewed as a low- density generator matrix and decoded as a low-density parity check code.
  • LDPC codes are linear block codes defined by parity check matrices where the number of non-zero entries is a small proportion of the matrix.
  • FIG. 8 is a diagram illustrating the general structure of an exemplary LDPC parity check matrix H. As shown in FIG. 8, the matrix H has M rows and N columns, where N is the length of a codeword, and the location of a 1 in the parity check matrix indicates that a particular bit is involved in a parity check.
  • the parity check matrix H has a column weight of j and a row weight of i. [0064] Each column of the parity check matrix H corresponds to a particular transmitted bit and each row corresponds to a particular parity checksum. The codeword x corresponds to column vectors that satisfy the parity check constraint.
  • the parity-check matrix H is assumed to have full row rank.
  • H For encoding, it is useful to put H into systematic form [P I], where I is the identity matrix of size M x M, and P is of size M x (N-M). This can be accomplished using Gaussian elimination. In this case, some rearrangement of the columns might be necessary.
  • the codeword x can be divided into messages and parity portions, so that systematic encoding is performed as follows:
  • FIG. 9B illustrates a plot for the parity check matrix H of FIG. 9 A.
  • a dot in the plot of FIG. 9B represents a 1 's element in the parity check matrix of FIG. 9 A.
  • the generator matrix G is sparse as well.
  • the PCPC codes produced by generator matrix G are viewed as LDPC codes. Consequently, the PCPC codes can be decoded using the LDPC message-passing algorithm.
  • the LDPC decoding algorithm also known as the message-passing algorithm or the sum-product algorithm, involves a cyclical passing of messages from bit nodes and check nodes, and vice-versa.
  • the two major computational units, or blocks, in LDPC decoder 48 are (1) computation of bit-to-check message from bit nodes to parity check nodes, and (2) computation of check-to-bit messages from parity check nodes to bit nodes.
  • LDPC decoder 44 typically will include memory to store intermediate messages between the computational blocks.
  • the probabilities for binary variables can be represented in terms of log-likelihood ratios (LLR).
  • LLR log-likelihood ratios
  • the iterative decoding algorithm for LDPC 44 involves the following steps:
  • Step 0. Initialize. LDPC decoder 44 begins with prior log-likelihood ratios for the bits x. , as indicated below:
  • Step 1 Messages from bits to checks.
  • Step 2 Messages from checks to bits.
  • LDPC decoder 44 processes LLR value summations from checks c ⁇ to bits x ⁇ as indicated below:
  • LDPC decoder 44 outputs the posterior LLR when the iterations are complete, as follows:
  • LLR poster ⁇ or (x l ) ⁇ LLR ⁇ + LLR o ⁇ ,) . (7) j' ⁇ Col[, ⁇
  • the notation ⁇ e Row[j] ⁇ ⁇ / ⁇ identifies the indices f (1 ⁇ i' ⁇ ⁇ ) of all bits in row j (1 ⁇ j ⁇ m) which have value 1, excluding the current bit index, i .
  • the iterations may continue for a fixed number of iterations or until the codewords are valid. Although the latter requires additional hardware cost to realize the validity checking algorithm, the average number of iterations can be significantly reduced. After each iteration, it is possible to make hard-decisions based on the log-likelihood ratios, as represented below:
  • LDPC decoder 44 can be configured to carry out an approximation of equation (6) above.
  • equation (6) can be simplified by observing that the summation is usually dominated by the minimum term, giving the approximation:
  • the standard message-passing equation (6) generally requires look-up-tables for the realization of the non-linear function. Also, the function f(x) in the standard message-passing equation (6) is sensitive to the number of quantization bits because its slope decreases with increasing x. A good performance-complexity tradeoff can be achieved, however, using the approximation of the message-passing equation as set forth in equation (9) instead of using the standard message-passing equation (6). Accordingly, use of the approximation (9) of the message-passing equation in LDPC decoder 44 can provide significant computational performance advantages. [0068] Advantageously, the message-passing algorithm depicted on the bipartite graph of FIG. 5 maps extremely well to a parallel decoder architecture.
  • the graph representation of an LDPC code shows that the computational dependencies for any node depend only on nodes of the opposite type, i.e., parity check node versus bit node. This characteristic allows bit nodes or check nodes to be updated in a block- parallel manner, enabling very high throughput. On the contrary, turbo decoding generally is realized using block-serial dependencies.
  • FIG. 10 is a block diagram illustrating an exemplary embodiment of LDPC decoder 44 in greater detail.
  • the architecture of LDPC decoder 44 exploits hardware sharing techniques to share some computational nodes, leading to an area-efficient structure that is especially advantageous for small, mobile devices such as wireless communication devices 16.
  • the architecture of LDPC decoder 44 carries out bit-to- check and check-to-bit computations that communicate with each other by passing messages.
  • LDPC decoder 44 may comprise several components including Block_Cell_A 54, Block_Cell_B 56, Reg_b2c 58, Reg_c2b 60, MUX 62, Inter_b2c 64, and Inter_c2b 66, each of which will be described in greater detail below.
  • Block_Cell_A serves as a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm.
  • Block_Cell_B serves as a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
  • Block_Cell_B 56 computes messages from bit to check nodes
  • Block_Cell_A 54 computes the messages from check to bit nodes. Following a number of iterations, Block_Cell B 56 produces a hard decoding decision (Hard_Limit).
  • Hard_Limit hard decoding decision
  • 384 Cell_As are needed in Block_Cell_A 56.
  • a hardware sharing mode a lesser number of Cell_As can be used in Block_Cell_A 56 in order to reduce area requirements.
  • the hardware sharing factor (HSF) is a function of the number of Cell_As in Block_Cell_A 56. Therefore, according to the architecture of FIG. 10, the number of Cell_As is made adjustable according to the area requirements.
  • LDPC decoder 44 begins by processing the initial soft information, ⁇ Q , which is a log-likelihood probability for each bit with the signed 2's complement representation as a sign bit and 4 magnitude bits.
  • ⁇ Q is a log-likelihood probability for each bit with the signed 2's complement representation as a sign bit and 4 magnitude bits.
  • the messages from bit to check nodes are first computed in Block_Cell_B 56 in fully parallel mode.
  • the computed messages then are interleaved by Inter_b2c 64, which rearranges the incoming messages independently according to the corresponding permutation pattern.
  • Inter_b2c 64 is implemented by metal layers in LDPC decoder 44 according to the order of the permutation.
  • the interleaved messages then are stored in register Reg_b2c 58, which may be realized by positive-edge triggered D flip-flops.
  • Half of the messages in Reg_b2c 58 are fed into Block_Cell_A 54 for computing the message from check to bit nodes.
  • the messages computed by Block__Cell_A 54 then are stored in the upper half of register Reg_c2b 60 in one clock cycle. The remaining messages are processed in the same way as the previous messages in a subsequent clock cycle.
  • FIG. 11 is a block diagram illustrating the structure of a Cell_A unit 68 within Block_Cell_A 54 for computing messages from check to bit nodes.
  • each parity check node in LDPC encoder 44 performs parity checks on thirteen bit nodes. The messages from checks to bits are evaluated by Block_Cell_A 54 according to the following equation:
  • each Cell_A unit 68 may include multiple absolute value units (block- ABS) 70, a minimum determination unit 72, multiple comparator units (block-Comp) 74, multiple sign reconstruction units (block Sign-Reconstruct) 76, and a sign-evaluation unit (Sign_Evaluation) 78.
  • block- ABS absolute value units
  • block-Comp comparator units
  • block Sign-Reconstruct multiple sign reconstruction units
  • Sign_Evaluation sign-evaluation unit
  • the LDPC block code has a total of 382 parity check nodes, where each parity check j in Cell_A check to bit unit 68 computes ⁇ ⁇ using entries from 13 bit nodes z , i 2 ,..., ⁇ 13 _ Using 2's complement representation, the most-significant bit (MSB) of the messages is a sign bit. Therefore, the product is computed in sign-evaluation unit 78, which may be realized by XOR gates. The summation in the message passing equation (6) is usually dominated by the minimum term. Therefore, the use of approximation (9) of the standard message-passing algorithm for computation of messages from check to bit nodes provides a method for reduced complexity decoding which can be constructed by finding the minimum value using minimum value unit 72.
  • Block-ABS 70 converts the signed 2's complement messages into unsigned messages to obtain the absolute value. To keep the computation parallel in finding the minimum value, it is desirable to retain the two lowest values, produced by minimum value unit 72, because the minimum value for each message is always one of the two lowest values. Finally, the minimum value for each message is evaluated in block-Comp 74, which selects one of two lowest values. The final messages from check to bit nodes, ⁇ . , are converted into the signed 2's complement number by block-Sign-Reconstruct 76 according to the result from sign evaluation unit 78. [0077] FIG. 12 is a logic diagram illustrating an absolute value unit 77 in the Cell_A check to bit unit 68 of FIG. 11. In particular, FIG. 12 illustrates an absolute value unit 77 for use in block- ABS 70 in processing one of the entries at bit nodes i x ,i 2 ,...,i Xi .
  • absolute value unit 77 includes a multiplexer 79 that receives an entry and an inverted entry via inverter 81.
  • An adder 83 adds the output of multiplexer 79 to 0 to produce output
  • absolute value unit 77 converts the signed 2's complement number A into the unsigned number
  • is the same as the input because the input is a positive number. Otherwise, the output is obtained by A + 0 + 1 —A because the input is a negative number.
  • FIG. 13 is a logic diagram illustrating a sign evaluation unit 78 in the Cell_A check to bit unit 68 of FIG. 11.
  • the function for evaluating the sign bit for all messages in Cell_A unit 68 can be defined by:
  • the sign bit of each message is computed by performing an XOR function between the total sign bit and the sign bit of each message.
  • FIG. 14A is a block diagram illustrating minimum determination unit 72 in the Cell _A check to bit unit 68 of FIG. 11.
  • FIG. 14B is a logic diagram illustrating minimum determination unit 72 of FIG. 14A in greater detail. As shown in FIG. 14B, minimum determination unit 72 may include a series of minimum value stages 86, 88, 90, 92, 94.
  • minimum determination unit 72 finds the two lowest values of the messages in each group of three messages, so that one of the minimum values is selected for the final result.
  • minimum determination unit 72 includes eleven 3 :2-Minimum blocks. Each 3 :2- Minimum block can be constructed by three comparators and multiplexers. One of the two lowest values is selected to obtain the final minimum value for each message.
  • FIG. 15A is a block diagram illustrating comparator unit 96 within block- Comp 74.
  • FIG. 15B is a logic diagram illustrating comparator unit 96 of FIG. 15A in greater detail. Comparator unit 96 compares the two lowest values output by minimum determination umt 72 with a respective input entry from block-ABS 70 to produce a minimum output.
  • each comparator unit 96 in block-COMP 74 may implement the algorithm represented by the following operations:
  • each comparator unit 96 may be implemented by a combination of inverters 100, 102, XOR gates 104, 106, AND gates 108, 110, and 4- to-1 multiplexer 111 that outputs the lowest of the two values Mini, Min 2.
  • FIG. 16 A is a block diagram illustrating a sign reconstruction unit 112 in block Sign-Reconstruct 76 of FIG. 11.
  • FIG. 16B is a logic diagram illustrating sign reconstruction unit 112 of FIG. 16A in greater detail.
  • the positive messages are converted into the signed 2's complement numbers according to the sign bit from the block Sign-Evaluation 78. As shown in FIG.
  • a sign reconstruction unit 112 within block Sign-Reconstruct 76 receives as inputs the output (hi) of a respective comparator unit 96 and the sign output (Sign) of sign evaluation unit 78.
  • the final sign bit of a message is determined by:
  • the sign reconstruction function can be constructed using a five-bit adder 114, a 2-1 multiplexer 116, and inverters 118, 120. Multiplexer 116 passes either the block- Comp output or the inverted block-Comp output (via inverter 118) depending on the sign passed to control multiplexer 116 by inverter 120.
  • FIG. 17 is a block diagram illustrating the structure of Block_Cell_B bit to check unit 56 for computing messages from bit to check nodes.
  • Block_Cell_B 56 accommodates each of the 1536 bit nodes in LDPC decoder 44 to compute q tj using entries from four different check nodes and prior information.
  • the messages from bit nodes to check nodes are computed by:
  • Block_Cell_B 56 may include an adder array and a saturation logic function. As shown in FIG. 17, for example, Block_Cell_B 56 may include an adder 124 that sums nodes rl and r2, an adder 126 that sums nodes r3 and r4, an adder 128 that sums the outputs of adders 124, 126, and an adder that sums the output of adder 128 with P(xi) p ⁇ or to produce the MSB for xi. A stage of adders 132 then sums the output of adder 128 with respective nodes rl, r2, r3, r4. In this manner, outgoing messages are formed as the group sum minus the input message of each individual edge through the adder array. If overflows occur, the intermediate value is saturated to the maximum possible value through the components identified as saturation units 134. With the structure illustrated in FIG. 17, hard-decision from soft information is decided by the MSB using the summation of all incoming messages.
  • FIG. 18 A is a block diagram illustrating a saturation unit 134 for the bit to check unit of FIG. 17.
  • FIG. 18B is a logic diagram illustrating saturation unit 134 of FIG. 18A in greater detail.
  • the quantization bits for the soft information is 5-bit.
  • the intermediate result after summation is 8-bit long, resulting in saturation to the 5-bit level. If the sign-bit is 1 and the input value is larger than the output value, the result should be saturated to "10000.” If the sign-bit is 0 and the input value is larger than the output value, the result should be saturated to "01111.” Otherwise, the result should be the same as the input.
  • the function of saturation unit 134 can be realized by AND gates 138, 140, OR gate 142, inverter 144 and 2:1 multiplexer 146.
  • FIG. 19A is a block diagram illustrating a bit to check register 148 in fully parallel mode.
  • FIG. 19B is a block diagram illustrating a bit to check register in half hardware sharing mode, as indicated by registers 148, 150 and multiplexer 154.
  • FIG. 19C is a block diagram illustrating a bit to check register in 1/k hardware sharing mode, as indicated by registers 152 a through 152 k and multiplexer 156.
  • Each memory arrangement depicted in FIGS. 19A, 19B, and 19C is possible for implementation.
  • One challenge when implementing the message-passing algorithm for decoding LDPC codes in LDPC decoder 44 is to design the memory to hold the messages. As the functionality of both the check and variable nodes is very simple, their respective realizations are straightforward. Implementing the message passing between the nodes results in very different challenges depending on whether a hardware sharing or parallel decoder architecture is determined.
  • LDPC decoder 44 may incorporate memory is implemented by D flip-flops.
  • the required memory for LDPC decoder 44 in a fully parallel mode, configured to handle (1536,1152) LDPC codes with code rate 3/4, is 5x4992 24960 D flip-flops for storing intermediate messages form check to bit nodes because there exist 4992 edges and message passing on an edge can be represented with a 5-bit value.
  • the memory for each message from bit to check nodes can be implemented by D flip-flops 150, 152 and a multiplexer 154, as shown in FIG. 19B.
  • FIG. 19B illustrates a bit to check register in half hardware sharing mode, using two flip flops 148, 150.
  • the number of flip flops can be scaled upward, as shown in the example of FIG. 19C.
  • FIG. 19A shows memory for the parallel architecture which is constructed using only D flip-flops 148 without a multiplexer. In this manner, the message from bit to check nodes can be processed in one clock cycle, so that the parallel architecture obtains high throughput.
  • the memory arrangement contemplated by the half hardware sharing scheme of FIG. 19B is divided into two registers 150, 152, which accept inputs in parallel at the same time. During the first clock cycle, the messages of the upper register 150 are loaded through multiplexer 154, and the messages of the lower register 152 are loaded during the second clock cycle.
  • FIG. 20A is a block diagram illustrating a check to bit register 162 in fully parallel mode.
  • FIG. 20B is a block diagram illustrating a check to bit register in half hardware sharing mode, as indicated by registers 164, 166 and demultiplexer 168.
  • FIG. 20C is a block diagram illustrating a check to bit register in 1/k hardware sharing mode, as indicated by registers 170 a through 170 k and demultiplexer 172.
  • Memory from check to bit nodes can be implemented by D flip-flops and demultiplexers as shown in FIGS. 20B and 20C. The memory from check to bit nodes accepts inputs in block-serial and generates outputs in parallel.
  • FIG. 20A provides a fully parallel architecture, which is constructed using only D flip-flops. Therefore, the message from check to bit nodes can be processed in one clock cycle, leading to high throughput.
  • FIG. 20B presents the memory architecture using the half hardware sharing technique, which is involves an arrangement of two registers 164, 166 and a demultiplexer 168. One-half of all messages is stored in the upper register 164 during the first clock cycle, and the rest of the messages re stored in the lower register 166 during the second clock cycle.
  • Demultiplexer 168 serves to accept the messages in block serial mode for distribution to registers 164, 166.
  • EXAMPLE As an example, an LDPC decoder conforming generally to the structure illustrated in FIG. 10 was implemented in a 0.18 ⁇ m , 1.8v UMC CMOS process using standard cells. TABLE 1 shows the area and propagation delay for each component for the LDPC decoder 44. The worst propagation delay of the Cell_A is 10.5ns. Consequently, the clock frequency can be 80MHz including a twenty percent safety- margin. TABLE 1
  • Cell_A (check to bit) is a bottleneck in LDPC decoder 44 because it needs more area than Cell_B (bit to check). Therefore, it is efficient to reduce the area so that the number of Cell_As becomes a factor of hardware-sharing.
  • a fully parallel architecture for LDPC decoder 44 achieves high throughput but requires more area.
  • a fully serial architecture for LDPC decoder 44 requires less area but produces low throughput.
  • a balance between area and throughput can be achieved by providing a compromise between a fully parallel and fully serial architecture.
  • An LDPC decoder 44 in accordance with the embodiments described herein, can provide certain advantages.
  • the use of LDPC coding can provide exceptional performance.
  • LDPC codes are characterized by good distance properties that reduce the likelihood of undetected errors.
  • LDPC codes permit implementation of low complexity, highly parallelizable decoding algorithms. Parallel processing, in turn, promotes low power consumption, high throughput and simple control logic. Availability of different degrees of serial processing, however, reduces area.
  • the intermediate results on each node of the LDPC decoder tend to converge to a certain value, resulting in low power consumption due to reduced switching activity.
  • the architectures contemplated by the invention are capable of delivering such advantages while balancing throughput, power consumption and area, making LDPC coding more attractive, especially in a wireless communication system.

Abstract

Architectures for decoding low density parity check codes permit varying degrees of hardware sharing to balance throughput, power consumption and area requirements. The LDPC decoding architectures may be useful in a variety of communication systems in which throughput, power consumption, and area are significant concerns. The decoding architectures implement an approximation of the standard message passing algorithm used for LDPC decoding, thereby reducing computational complexity. Instead of a fully parallel structure, this approximation permits at least a portion of the message passing structure between check and bit nodes to be implemented in a block-serial mode, providing reduced area without substantial added latency.

Description

DECODING ARCHITECTURE FOR LOW DENSITY PARITY CHECK
CODES
FIELD
[0001] The invention relates to digital communication and, more particularly, to techniques for decoding digital communication signals using low density parity check codes.
BACKGROUND
[0002] Forward error correction (FEC) is an important feature of most modern communication systems, including wired and wireless systems. Communication systems use a variety of FEC coding techniques to permit correction of bit errors in transmitted symbols. One coding technique, low density parity coding (LDPC), has been found to provide excellent performance on both the binary symmetric channel and the additive white Gaussian noise (AWGN) channel. As a result, LDPC coding has emerged as a viable alternative to turbo and block turbo coding.
SUMMARY
[0003] The invention is directed to architectures for decoding low density parity check codes. The architectures permit varying degrees of hardware sharing to balance throughput, power consumption and area requirements. The LDPC decoding architectures described herein may be useful in a variety of communication systems, and especially useful in wireless communication systems in which throughput, power consumption, and area are significant concerns.
[0004] Decoding architectures, in accordance with the invention, implement an approximation of the standard message passing algorithm used for LDPC decoding, thereby reducing computational complexity. Instead of a fully parallel structure, this approximation permits at least a portion of the message passing structure between check and bit nodes to be implemented in a block-serial mode, providing reduced area without substantial added latency.
[0005] Memory for storing messages between check and bit nodes can be constructed using D flip-flops, multiplexers and demultiplexers, leading to reduced power requirements. For example, the decoding architecture can be configured to store incoming messages in fixed positions in memory, taking advantage of the fact that messages in the LDPC decoder change rather slowly as they iterate, to present low switching activity. In addition, in some embodiments, the decoding architectures avoid the need for summations and lookup tables, as typically required by conventional message-passing algorithms. As a result, the decoding architectures can be made more area-efficient.
[0006] In one embodiment, the invention provides a low density parity check (LDPC) decoder comprising a first computation unit and a second computation unit. The first computation unit iteratively computes messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm. The second computation unit is responsive to the first computation unit and iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision. [0007] In another embodiment, the invention provides a low density parity check (LDPC) decoding method comprising iteratively computing messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm in a first computation unit, and responsive to the first computation unit, iteratively computing messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision in a second computation unit.
[0008] In an added embodiment, the invention provides a low density parity check (LDPC) decoding method comprising iteratively computing messages for LDPC encoded information from check nodes to bit nodes in block serial mode using shared hardware in a first computation unit and, responsive to the first computation unit, iteratively computing messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision in a second computation unit. [0009] In another embodiment, the invention provides a low density parity check (LDPC) decoder comprising a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes in block serial mode using shared hardware, and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
[0010] In an added embodiment, the invention provides a wireless communication device comprising a radio circuit that receives radio frequency signals, a modem that demodulates the received signals, wherein the signals are encoded with low density parity check (LDPC) codes; and an LDPC decoder. The LDPC decoder includes a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm, and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
[0011] In a further embodiment, the invention provides a wireless communication device comprising a radio circuit that receives radio frequency signals, a modem that demodulates the received signals, wherein the signals are encoded with low density parity check (LDPC) codes, and a low density parity check (LDPC) decoder. The LDPC decoder includes a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes in block serial mode using shared hardware, and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
[0012] The invention may offer a number of advantages. In general, the use of LDPC coding can provide exceptional performance. For example, LDPC codes are characterized by good distance properties that reduce the likelihood of undetected errors. In addition, LDPC codes permit implementation of low complexity, highly parallelizable decoding algorithms. Parallel processing, in turn, promotes low power consumption, high throughput and simple control logic. Availability of different degrees of serial processing, however, reduces area. Also, the intermediate results on each node of the LDPC decoder tend to converge to a certain value, resulting in low power consumption due to reduced switching activity. Moreover, the architectures contemplated by the invention are capable of delivering such advantages while balancing throughput, power consumption and area, making LDPC more attractive in a wireless communication system.
BRIEF DESCRIPTION OF THE DRAWINGS
[0013] FIG. 1 is a block diagram illustrating a wireless communication network. [0014] FIG. 2 is a block diagram illustrating a wireless communication device useful in the network of FIG. 1.
[0015] FIG. 3 is a block diagram illustrating a wireless communication device in greater detail.
[0016] FIG. 4 is a block diagram illustrating a modem associated with a wireless communication device.
[0017] FIG. 5 is a bipartite diagram of an exemplary LDPC code.
[0018] FIG. 6A illustrates a parallel concatenated parity check (PCPC) generator matrix.
[0019] FIG. 6B illustrates a plot for the generator matrix of FIG. 6A.
[0020] FIG. 7 is a block diagram illustrating an exemplary PCPC encoder configured to generate LDPC codes.
[0021] FIG. 8 is diagram illustrating the general structure of an LDPC parity check matrix H.
[0022] FIG. 9A illustrates an exemplary LDPC parity check matrix H.
[0023] FIG. 9B illustrates a plot for the LDPC parity check matrix H of FIG. 9A.
[0024] FIG. 10 is a block diagram illustrating an exemplary embodiment of an
LDPC decoder architecture.
[0025] FIG. 11 is a block diagram illustrating the structure of a check to bit computation unit for computing messages from check to bit nodes.
[0026] FIG. 12 is a logic diagram illustrating an absolute value unit in the check to bit computation unit of FIG. 11.
[0027] FIG. 13 is a logic diagram illustrating a sign evaluation unit in the check to bit computation unit of FIG. 11.
[0028] FIG. 14A is a block diagram illustrating a minimum determination unit in the check to bit computation unit of FIG. 11.
[0029] FIG. 14B is a logic diagram illustrating the minimum determination unit of
FIG. 14A.
[0030] FIG. 15 A is a block diagram illustrating a comparator unit in the check to bit computation unit of FIG. 11.
[0031] FIG. 15B is a logic diagram illustrating the comparator unit of FIG. 15 A.
[0032] FIG. 16A is a block diagram illustrating a sign reconstruction unit in the check to bit computation unit of FIG. 11. [0033] FIG. 16B is a logic diagram illustrating the sign reconstruction unit of FIG.
16 A.
[0034] FIG. 17 is a block diagram illustrating the structure of a bit to check computation unit for computing messages from bit to check nodes.
[0035] FIG. 18 A is a block diagram illustrating a saturation unit for the bit to check computation unit of FIG. 17.
[0036] FIG. 18B is a logic diagram illustrating the saturation unit of FIG. 18 A in greater detail.
[0037] FIG. 19A is a block diagram illustrating a bit to check register in fully parallel mode.
[0038] FIG. 19B is a block diagram illustrating a bit to check register in half hardware sharing mode.
[0039] FIG. 19C is a block diagram illustrating a bit to check register in 1/k hardware sharing mode.
[0040] FIG. 20A is a block diagram illustrating a check to bit register in fully parallel mode.
[0041] FIG. 20B is a block diagram illustrating a check to bit register in half hardware sharing mode.
[0042] FIG. 20C is a block diagram illustrating a check to bit register in 1/k hardware sharing mode.
[0043] FIG. 21 is a graph illustrating floating precision simulation using a standard message-passing algorithm and 5-bit quantization precision using an approximation of the message-passing algorithm with a maximum iteration=10.
DETAILED DESCRIPTION
[0044] FIG. 1 is a block diagram illustrating a wireless communication network 10. As shown in FIG. 1, wireless communication network 10 may include one or more wireless access points 12 coupled to a wired network 14, e.g., via an Ethernet connection. Wireless access point 12 permits wireless communication between wired network 14 and one or more wireless communication devices 16A-16N (hereinafter 16).
[0045] Wireless access point 12 may integrate a hub, switch or router to serve multiple wireless communication devices 16. Wireless communication network 10 may be used to communicate data, voice, video and the like between devices 16 and network 14 according to a variety of different wireless transmission standards. For example, wireless communication network 10 may transmit signals based on a multi- carrier communication technique such as OFDM, e.g., as specified by IEEE 802.1 la. [0046] Wireless communication network 10 makes use of LDPC coding to support forward error correction of bit errors in symbols transmitted between access point 12 and devices 16. In accordance with the invention, access point 12, devices 16 or both may implement an LDPC decoder architecture that permits varying degrees of hardware sharing. Hardware sharing can be exploited to balance throughput, power consumption and area requirements, as will be described.
[0047] The decoding architectures implemented by access point 12 and devices 16 rely on an approximation of the standard message passing algorithm used for LDPC decoding. Instead of a fully parallel structure, this approximation permits at least a portion of the message passing structure between check and bit nodes to be implemented in a block-serial mode. A degree of block-serial mode implementation can reduce the area requirements of the decoder without substantial added latency. The structure of the decoder architecture will be described in greater detail below. Although the decoder architecture may be useful in wired networks, application within wireless communication network 10 will be described herein for purposes of illustration.
[0048] FIG. 2 is a block diagram illustrating a wireless communication device 16 in further detail. As shown in FIG. 2, wireless communication device 16 may include an RF receive antenna 18, RF transmit antenna 20, radio 22, modem 24, and media access controller 26 coupled to a host processor 26. Radio 22 and modem 24 function together as a wireless receiver. Wireless communication device 16 may take the form of a variety of wireless equipment, such as computers, personal computer cards, e.g., PCI or PCMCIA cards, personal digital assistants (PDAs), network audio or video appliances, and the like.
[0049] RF receive antenna 18 receives RF signals from access point 12, whereas RF transmit antenna 20 transmit RF signals to access point. In some embodiments, receive and transmit antennas 18, 20 may be realized by a common RF antenna used for both reception and transmission.
[0050] Radio 22 may include circuitry for upconverting transmitted signals to RF, and downconverting RF signals to baseband. In this sense, radio 20 may integrate both transmit and receive circuitry within a single transceiver component. In some cases, however, the transmit and receive circuitry may be formed by separate transmitter and receiver components. For purposes of illustration, the discussion herein will be generally limited to the receiver and demodulation aspects of radio 22 and modem 24.
[0051] Modem 24 encodes information in a baseband signal for upconversion to the RF band by radio 22 and transmission via a transmit antenna. Similarly, and more pertinent to the invention, modem 24 decodes information from RF signals received via antenna 18 and downconverted to baseband by radio 22. [0052] Media access controller 26 interacts with host processor 28 to facilitate communication between modem 24 and a host wireless communication device 16, e.g., a computer, PDA or the like. Hence, host processor 28 may be a CPU within a computer or some other device. Radio 22, modem 24 and media access controller 26 may be integrated on a common integrated circuit chip, or realized by discrete components.
[0053] FIG. 3 is a block diagram illustrating radio and modem circuitry within an access point 12 or wireless communication device 16. Similar radio and modem circuitry may be implemented in wireless access point 12. As shown in FIG. 3, radio 22 includes a downconverter 30 that receives an RF signal via antenna 18. Downconverter 30 mixes the received RF signal with a signal received from a frequency synthesizer 32 to convert the RF signal down to a baseband frequency. Radio 22 also may include a low noise amplifier and other signal conditioning circuitry (not shown in FIG. 3).
[0054] Modem 24 includes an analog-to-digital converter (ADC) 34 that produces a digital representation of the baseband signal. ADC 34 may include an amplifier (not shown in FIG. 3) that applies a gain to the analog baseband signal prior to conversion to a digital signal. Circuitry also may be provided to perform a number of functions, such as gain control, signal detection, frame synchronization and carrier frequency offset estimation and correction.
[0055] A fast Fourier transform (FFT) unit 36 receives the digital signal from ADC 34 and produces FFT outputs to demodulate the signal. A decoder 38 decodes the FFT outputs from FFT unit 36 to recover the information carried by the received signal. In particular, decoder 38 decodes the information carried by a given tone and produces a stream of serial data for transmission to host processor 28 via MAC 26 (FIG. 2). In addition, decoder 38 implements an LDPC decoder architecture as described herein.
[0056] FIG. 4 is a block diagram illustrating modem 24 and decoder 38. In addition to ADC 34 and FFT unit 36, modem 24 may include a soft demapper unit 40, deinterleaver unit 42 and LDPC decoder unit 44. Again, similar circuitry may be incorporated in wireless access point 12 or other devices within network 10. Soft demapper unit 40 processes observation samples produced by FFT unit 36 to generate soft decisions λ for the transmitted symbols. In particular, the soft decisions may be accompanied by, or take the form of, log likelihood ratios (LLRs). Deinterleaver unit 42 restores the outputs from soft demapper unit 40 to the original order of the symbols prior to transmission. LDPC decoder unit 44 accepts the log likelihood ratios from deinterleaver unit 42 and performs decoding according to the message passing algorithm.
[0057] FIG. 5 is a bipartite graph of an exemplary LDPC code. In particular, FIG. 5 illustrates the message passing algorithm implemented by LDPC decoder unit 44 to decode LDPC codes. One set of nodes x(l)-x(M) represents the codeword bits (bit nodes), and the other set of nodes c(l)-c(N) represents the parity-check constraints on the bits (check nodes). Edges in the bipartite graph of FIG. 5 connect check nodes c(l)-c(N) to bit nodes x(l)-x(N), and identify the bits that participate in each parity check.
[0058] A bit sequence is a codeword if and only if the modulo 2 sum of the bits that neighbor a check node is 0 for each check node. Thus, for a codeword, each bit neighboring a given check node is equal to the modulo 2 sum of the other neighbors. Each message represents an estimate of the bit associated with the particular edge carrying the message. For decoding, messages are exchanged along the edges of the graph and computations are performed at the nodes.
[0059] To obtain LDPC codes, the structure of the LDPC encoder at the transmit access point 12 or wireless communication device 16 should be considered. One disadvantage of LDPC codes is that the encoder is generally more complex than the encoder used for turbo codes. The sparse parity check provided by LDPC decoding is advantageous, but makes the LDPC encoder more complex. In particular, it is difficult to construct a sparse generator matrix from the sparse parity check matrix. To obtain a relatively simple encoder structure, a systematic parallel concatenated parity check (PCPC) encoder structure can be used.
[0060] An example of a suitable PCPC encoder structure is disclosed in Travis Oenning and J. Moon, "Low Density Generator Matrix Interpretation of Parallel Concatenated Single Bit Parity Codes," IEEE Transactions on Magnetics ,vol. 37, pp. 737 -741, March 2001. The encoding structure in the above-referenced paper is similar to that originally proposed for encoding of parallel-concatenated turbo codes, except that the recursive systematic component codes are replaced with single bit parity check block codes. Decoding still can be viewed from an LDPC perspective by considering the parity check matrix that corresponds to the encoding structure. [0061] FIG. 6A illustrates a generator matrix with (1536,1152) code and code rate=3/4. FIG. 6B illustrates a plot for the generator matrix of FIG. 6 A. A dot in the plot of FIG. 6B represents a l's element in the generator matrix of FIG. 6 A. The codewords are constructed by G*m where G is a generator matrix and m is a message. The parity check blocks operate independently on blocks much smaller than the codeword size to generate single parity bits and enforce either an odd or even parity constraint. Encoding is systematic and message bits can be interleaved using three randomly constructed interleavers denoted by FI,-, j = 1,2,3 , resulting in permutated sequences. Each submatrix is constructed as:
P2 = Hi (Ei ), E3 = Il2 (E! ), and P4 = H3(Pl). After interleaving, the parity check block codes generate single bits to enforce even or odd parity. Each of the single bit parity check component codes can be efficiently implemented using a simple logical XOR operation.
[0062] FIG. 7 is a block diagram illustrating an exemplary PCPC encoder 46 configured to generate LDPC codes. PCPC encoder 46 is based on the generator matrix G of FIG. 6A. In particular, PCPC encoder 46 includes three permutation units 48A, 48B, 48C, parity check blocks 50A, 50B, 50C, 50D, and a parallel-to-serial converter 52. In operation, PCPC encoder 46 concatenates, in parallel, multiple single bit parity check block codes. The coding scheme in FIG. 7 can be viewed as a low- density generator matrix and decoded as a low-density parity check code. Although encoder 46 is described herein for purposes of illustration, the decoding architecture contemplated by the invention is not limited to use with a particular encoding process or structure. [0063] The architecture implemented by LDPC decoding unit 44 will now be described in greater detail. In general, LDPC codes are linear block codes defined by parity check matrices where the number of non-zero entries is a small proportion of the matrix. FIG. 8 is a diagram illustrating the general structure of an exemplary LDPC parity check matrix H. As shown in FIG. 8, the matrix H has M rows and N columns, where N is the length of a codeword, and the location of a 1 in the parity check matrix indicates that a particular bit is involved in a parity check. The parity check matrix H has a column weight of j and a row weight of i. [0064] Each column of the parity check matrix H corresponds to a particular transmitted bit and each row corresponds to a particular parity checksum. The codeword x corresponds to column vectors that satisfy the parity check constraint.
Hx = 0
For purposes of example, the parity-check matrix H is assumed to have full row rank. For encoding, it is useful to put H into systematic form [P I], where I is the identity matrix of size M x M, and P is of size M x (N-M). This can be accomplished using Gaussian elimination. In this case, some rearrangement of the columns might be necessary. Then, the codeword x can be divided into messages and parity portions, so that systematic encoding is performed as follows:
[P I] = 0 (2) xp
and the generator matrix is given by G = LN-M Decoding the codeword can be
represented in terms of message passing on the bipartite graph representation of the parity check matrix in FIG. 5. Again, the bits and checks nodes are connected with edges in correspondence with ones in the parity check matrix. [0065] For decoding, it is necessary to determine the parity check matrix that corresponds to the generator matrix G. As can easily be verified, the parity check matrix H is given by H=[I P], where I denotes an identity matrix, and P is given by PT = [H! H2 ... Hp]. Note that H is already in systematic form so that the generator matrix G is given by Gτ = [P I] . FIG. 9A illustrates a parity check matrix H corresponding to P=4 and using the code rate 8/9. FIG. 9B illustrates a plot for the parity check matrix H of FIG. 9 A. A dot in the plot of FIG. 9B represents a 1 's element in the parity check matrix of FIG. 9 A. Note that not only is the parity check matrix H sparse (low-complexity), but the generator matrix G is sparse as well. The PCPC codes produced by generator matrix G are viewed as LDPC codes. Consequently, the PCPC codes can be decoded using the LDPC message-passing algorithm.
[0066] The LDPC decoding algorithm, also known as the message-passing algorithm or the sum-product algorithm, involves a cyclical passing of messages from bit nodes and check nodes, and vice-versa. The two major computational units, or blocks, in LDPC decoder 48 are (1) computation of bit-to-check message from bit nodes to parity check nodes, and (2) computation of check-to-bit messages from parity check nodes to bit nodes. In addition, due to the irregularity of the bipartite graph, LDPC decoder 44 typically will include memory to store intermediate messages between the computational blocks. The probabilities for binary variables can be represented in terms of log-likelihood ratios (LLR). The messages from checks c. to bits x{ are represented by
LLR(ct -> *,) = LLR(ry) = (3)
Figure imgf000012_0001
Also, the messages from bits x. to check ci are represented by
LLR(xi → ct) = LLR(qy) . (4)
Figure imgf000012_0002
The iterative decoding algorithm for LDPC 44 involves the following steps:
(1) Step 0. Initialize. LDPC decoder 44 begins with prior log-likelihood ratios for the bits x. , as indicated below:
LLRpnor ( . ) = log Pl . ) (A-)
(2) Step 1. Messages from bits to checks. LDPC decoder 44 processes LLR value summations from bits xι to checks c; as indicated below: LLR(ql}) = LLRprr(Xl) . (5)
Figure imgf000013_0001
(3) Step 2. Messages from checks to bits. LDPC decoder 44 processes LLR value summations from checks c< to bits xι as indicated below:
LLR(rlJ) =
Figure imgf000013_0002
(4) Step 3. Update the message. LDPC decoder 44 outputs the posterior LLR when the iterations are complete, as follows:
LLRposterιor(xl) = ∑LLR^ + LLRo ^,) . (7) j'εCol[,}
Note that the notation ϊ e Row[j] \ {/} identifies the indices f (1 < i' ≤ ή) of all bits in row j (1 < j ≤ m) which have value 1, excluding the current bit index, i . There are several criteria for deciding when to stop the message-passing algorithm for LDPC codes. For example, the iterations may continue for a fixed number of iterations or until the codewords are valid. Although the latter requires additional hardware cost to realize the validity checking algorithm, the average number of iterations can be significantly reduced. After each iteration, it is possible to make hard-decisions based on the log-likelihood ratios, as represented below:
1 if LLRposteno¥x,) > 0 X' ~ 0 if LLRposteπi) < 0 - (8)
To reduce computational complexity, in accordance with the invention, LDPC decoder 44 can be configured to carry out an approximation of equation (6) above. In particular, equation (6) can be simplified by observing that the summation is usually dominated by the minimum term, giving the approximation:
LLR(rβ) ~ min 1 |ϋΛtø,,)|- Hs&ι(LLR(ql,J)) * (-lf0W[Λ (9) ι'<=Rσw[j]\{ι) This approximation supports a method of reduced complexity decoding, and simplifies the associated decoding architecture. In particular, the approximate decoding algorithm (9) for LDPC codes can be implemented with a minimum set of functions, additions and some binary arithmetic. Moreover, the approximate decoding algorithm (9) can be applied directly to the AWGN channel without the need for an estimate of the noise variance of the channel.
[0067] The standard message-passing equation (6) generally requires look-up-tables for the realization of the non-linear function. Also, the function f(x) in the standard message-passing equation (6) is sensitive to the number of quantization bits because its slope decreases with increasing x. A good performance-complexity tradeoff can be achieved, however, using the approximation of the message-passing equation as set forth in equation (9) instead of using the standard message-passing equation (6). Accordingly, use of the approximation (9) of the message-passing equation in LDPC decoder 44 can provide significant computational performance advantages. [0068] Advantageously, the message-passing algorithm depicted on the bipartite graph of FIG. 5 maps extremely well to a parallel decoder architecture. The graph representation of an LDPC code shows that the computational dependencies for any node depend only on nodes of the opposite type, i.e., parity check node versus bit node. This characteristic allows bit nodes or check nodes to be updated in a block- parallel manner, enabling very high throughput. On the contrary, turbo decoding generally is realized using block-serial dependencies.
[0069] FIG. 10 is a block diagram illustrating an exemplary embodiment of LDPC decoder 44 in greater detail. The architecture of LDPC decoder 44 exploits hardware sharing techniques to share some computational nodes, leading to an area-efficient structure that is especially advantageous for small, mobile devices such as wireless communication devices 16. The architecture of LDPC decoder 44 carries out bit-to- check and check-to-bit computations that communicate with each other by passing messages. In accordance with the invention, LDPC decoder 44 may comprise several components including Block_Cell_A 54, Block_Cell_B 56, Reg_b2c 58, Reg_c2b 60, MUX 62, Inter_b2c 64, and Inter_c2b 66, each of which will be described in greater detail below. Block_Cell_A serves as a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm. Block_Cell_B serves as a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision. [0070] Block_Cell_B 56 computes messages from bit to check nodes, and Block_Cell_A 54 computes the messages from check to bit nodes. Following a number of iterations, Block_Cell B 56 produces a hard decoding decision (Hard_Limit). In the example of FIG. 10, LDPC decoder 44 is configured to handle (1536, 1152) LDPC codes with code rate 3/4. Note that each message is 5 bits long and there are 4992 edges, requiring 4992*5 bits=24960 bits. In a fully parallel mode, 384 Cell_As are needed in Block_Cell_A 56. In a hardware sharing mode, a lesser number of Cell_As can be used in Block_Cell_A 56 in order to reduce area requirements. The hardware sharing factor (HSF) is a function of the number of Cell_As in Block_Cell_A 56. Therefore, according to the architecture of FIG. 10, the number of Cell_As is made adjustable according to the area requirements. In particular, the number of Cell_As is scalable between 384 (fully parallel), 192, 96, 48, 24, 12, 6, 3, and 1 (fully serial). The hardware sharing technique contemplated herein serves to balance area and latency. [0071] LDPC decoder 44 begins by processing the initial soft information, λQ , which is a log-likelihood probability for each bit with the signed 2's complement representation as a sign bit and 4 magnitude bits. In particular, the messages from bit to check nodes are first computed in Block_Cell_B 56 in fully parallel mode. The computed messages then are interleaved by Inter_b2c 64, which rearranges the incoming messages independently according to the corresponding permutation pattern. Inter_b2c 64 is implemented by metal layers in LDPC decoder 44 according to the order of the permutation. The interleaved messages then are stored in register Reg_b2c 58, which may be realized by positive-edge triggered D flip-flops. [0072] Half of the messages in Reg_b2c 58 are fed into Block_Cell_A 54 for computing the message from check to bit nodes. According to this example, the messages computed by Block__Cell_A 54 then are stored in the upper half of register Reg_c2b 60 in one clock cycle. The remaining messages are processed in the same way as the previous messages in a subsequent clock cycle. The messages in Reg_c2b 60 are interleaved by Inter_c2b 64 in parallel mode and then fed back into Block_Cell_B 56 for further iterations. In this case, the required clock cycles to process a block with maximum iteration=8 is (1+8x3 )=25 Tclk ,where Tclk is the clock cycle.
[0073] A challenge for implementing LDPC decoder 44 is to construct the memory (Reg_b2c 58 and Reg_c2b 60) and interleavers (Inter_b2c 62 and Inter_c2b 64) efficiently because the memory requires significant area, and the interleaver causes routing congestion due to the need for several metal layers. If SRAM is used for memory instead of D flip-flops, the routing congestion can be avoided. However, SRAM generally requires more complex control logic and additional latency. [0074] FIG. 11 is a block diagram illustrating the structure of a Cell_A unit 68 within Block_Cell_A 54 for computing messages from check to bit nodes. According to this example, each parity check node in LDPC encoder 44 performs parity checks on thirteen bit nodes. The messages from checks to bits are evaluated by Block_Cell_A 54 according to the following equation:
LLR(rv
Figure imgf000016_0001
Again, the above equation serves as an approximation of the standard message- passing algorithm for LDPC decoding. As shown in FIG. 11, each Cell_A unit 68 may include multiple absolute value units (block- ABS) 70, a minimum determination unit 72, multiple comparator units (block-Comp) 74, multiple sign reconstruction units (block Sign-Reconstruct) 76, and a sign-evaluation unit (Sign_Evaluation) 78. [0075] In the example of FIG. 11, the LDPC block code has a total of 382 parity check nodes, where each parity check j in Cell_A check to bit unit 68 computes η ■ using entries from 13 bit nodes z , i2 ,..., ι13_ Using 2's complement representation, the most-significant bit (MSB) of the messages is a sign bit. Therefore, the product is computed in sign-evaluation unit 78, which may be realized by XOR gates. The summation in the message passing equation (6) is usually dominated by the minimum term. Therefore, the use of approximation (9) of the standard message-passing algorithm for computation of messages from check to bit nodes provides a method for reduced complexity decoding which can be constructed by finding the minimum value using minimum value unit 72.
[0076] Block-ABS 70 converts the signed 2's complement messages into unsigned messages to obtain the absolute value. To keep the computation parallel in finding the minimum value, it is desirable to retain the two lowest values, produced by minimum value unit 72, because the minimum value for each message is always one of the two lowest values. Finally, the minimum value for each message is evaluated in block-Comp 74, which selects one of two lowest values. The final messages from check to bit nodes, η . , are converted into the signed 2's complement number by block-Sign-Reconstruct 76 according to the result from sign evaluation unit 78. [0077] FIG. 12 is a logic diagram illustrating an absolute value unit 77 in the Cell_A check to bit unit 68 of FIG. 11. In particular, FIG. 12 illustrates an absolute value unit 77 for use in block- ABS 70 in processing one of the entries at bit nodes ix,i2,...,iXi .
As shown in FIG. 12, absolute value unit 77 includes a multiplexer 79 that receives an entry and an inverted entry via inverter 81. An adder 83 adds the output of multiplexer 79 to 0 to produce output |A|. In other words, absolute value unit 77 converts the signed 2's complement number A into the unsigned number |A|. If the most significant bit (MSB) of input A is equal to 0, the output |A| is the same as the input because the input is a positive number. Otherwise, the output is obtained by A + 0 + 1 = —A because the input is a negative number.
[0078] FIG. 13 is a logic diagram illustrating a sign evaluation unit 78 in the Cell_A check to bit unit 68 of FIG. 11. The function for evaluating the sign bit for all messages in Cell_A unit 68 can be defined by:
Ylsgp.(LLR(qPJ)) . (ii) i'<=Row[j]\{i]
The sign bit of each message is computed by performing an XOR function between the total sign bit and the sign bit of each message. As an example, the output of the expression sgn ( j ) = (x2 θ x3... ® x13 ) can be obtained by
( j θ x2 θ x3... @ x13) ® xv To implement this function, sign evaluation unit 78 includes XOR block 80 that operates on inputs 12:0 and an array of XOR units 82 that operates on the output of XOR block 80 and individual inputs 12:0. [0079] FIG. 14A is a block diagram illustrating minimum determination unit 72 in the Cell _A check to bit unit 68 of FIG. 11. FIG. 14B is a logic diagram illustrating minimum determination unit 72 of FIG. 14A in greater detail. As shown in FIG. 14B, minimum determination unit 72 may include a series of minimum value stages 86, 88, 90, 92, 94. In stages 86, 88, 90, 92, 94, minimum determination unit 72 finds the two lowest values of the messages in each group of three messages, so that one of the minimum values is selected for the final result. Hence, in the example of FIG. 14B, minimum determination unit 72 includes eleven 3 :2-Minimum blocks. Each 3 :2- Minimum block can be constructed by three comparators and multiplexers. One of the two lowest values is selected to obtain the final minimum value for each message. [0080] FIG. 15A is a block diagram illustrating comparator unit 96 within block- Comp 74. FIG. 15B is a logic diagram illustrating comparator unit 96 of FIG. 15A in greater detail. Comparator unit 96 compares the two lowest values output by minimum determination umt 72 with a respective input entry from block-ABS 70 to produce a minimum output. For example, each comparator unit 96 in block-COMP 74 may implement the algorithm represented by the following operations:
If (In== inl) &(In==Min2) then Out<= Min2 or (Mini); elseif (In==Minl) & (In~=Min2) then out<=Min2; elseif (In~=Minl) & (In==Min2) then out<=Minl; elseif (In~=Minl) & (In~=Min2) then out<=Minl;
As shown in FIG 15B, each comparator unit 96 may be implemented by a combination of inverters 100, 102, XOR gates 104, 106, AND gates 108, 110, and 4- to-1 multiplexer 111 that outputs the lowest of the two values Mini, Min 2. [0081] FIG. 16 A is a block diagram illustrating a sign reconstruction unit 112 in block Sign-Reconstruct 76 of FIG. 11. FIG. 16B is a logic diagram illustrating sign reconstruction unit 112 of FIG. 16A in greater detail. At the final stage in block- Cell_A 54, the positive messages are converted into the signed 2's complement numbers according to the sign bit from the block Sign-Evaluation 78. As shown in FIG. 16A, a sign reconstruction unit 112 within block Sign-Reconstruct 76 receives as inputs the output (hi) of a respective comparator unit 96 and the sign output (Sign) of sign evaluation unit 78. In equation (6), the final sign bit of a message is determined by:
Figure imgf000018_0001
The number of 1 's in a row in the parity matrix is 13, so the sign bit depends on the equation: πsgn(JJ ?tø,,)). (-l) . (13) i'<=Row[j]\{i] If the sign bit from the block-Sign-Evaluation 78 is equal to 0, the final sign bit must be 1. Otherwise, the final sign bit must be 0. As shown in FIG. 16B, the sign reconstruction function can be constructed using a five-bit adder 114, a 2-1 multiplexer 116, and inverters 118, 120. Multiplexer 116 passes either the block- Comp output or the inverted block-Comp output (via inverter 118) depending on the sign passed to control multiplexer 116 by inverter 120.
[0082] FIG. 17 is a block diagram illustrating the structure of Block_Cell_B bit to check unit 56 for computing messages from bit to check nodes. As shown in FIG. 17, Block_Cell_B 56 accommodates each of the 1536 bit nodes in LDPC decoder 44 to compute qtj using entries from four different check nodes and prior information.
The messages from bit nodes to check nodes are computed by:
LLR(qv) = YJLLR(rir) + LLR(Pprior(xi)) . (14) r≡coii j)
Block_Cell_B 56 may include an adder array and a saturation logic function. As shown in FIG. 17, for example, Block_Cell_B 56 may include an adder 124 that sums nodes rl and r2, an adder 126 that sums nodes r3 and r4, an adder 128 that sums the outputs of adders 124, 126, and an adder that sums the output of adder 128 with P(xi)pπor to produce the MSB for xi. A stage of adders 132 then sums the output of adder 128 with respective nodes rl, r2, r3, r4. In this manner, outgoing messages are formed as the group sum minus the input message of each individual edge through the adder array. If overflows occur, the intermediate value is saturated to the maximum possible value through the components identified as saturation units 134. With the structure illustrated in FIG. 17, hard-decision from soft information is decided by the MSB using the summation of all incoming messages.
[0083] FIG. 18 A is a block diagram illustrating a saturation unit 134 for the bit to check unit of FIG. 17. FIG. 18B is a logic diagram illustrating saturation unit 134 of FIG. 18A in greater detail. In this example, it is assumed that the quantization bits for the soft information is 5-bit. The intermediate result after summation is 8-bit long, resulting in saturation to the 5-bit level. If the sign-bit is 1 and the input value is larger than the output value, the result should be saturated to "10000." If the sign-bit is 0 and the input value is larger than the output value, the result should be saturated to "01111." Otherwise, the result should be the same as the input. As shown in FIG. 18B, the function of saturation unit 134 can be realized by AND gates 138, 140, OR gate 142, inverter 144 and 2:1 multiplexer 146.
[0084] FIG. 19A is a block diagram illustrating a bit to check register 148 in fully parallel mode. FIG. 19B is a block diagram illustrating a bit to check register in half hardware sharing mode, as indicated by registers 148, 150 and multiplexer 154. FIG. 19C is a block diagram illustrating a bit to check register in 1/k hardware sharing mode, as indicated by registers 152a through 152k and multiplexer 156. Each memory arrangement depicted in FIGS. 19A, 19B, and 19C is possible for implementation. One challenge when implementing the message-passing algorithm for decoding LDPC codes in LDPC decoder 44 is to design the memory to hold the messages. As the functionality of both the check and variable nodes is very simple, their respective realizations are straightforward. Implementing the message passing between the nodes results in very different challenges depending on whether a hardware sharing or parallel decoder architecture is determined.
[0085] Due to randomness of connectivity on the bipartite graph representing a parity check matrix, the two classes of computations over a single block of inputs, bit- to-check and check-to-bit, cannot be overlapped. To simplify the control logic, LDPC decoder 44 may incorporate memory is implemented by D flip-flops. The required memory for LDPC decoder 44 in a fully parallel mode, configured to handle (1536,1152) LDPC codes with code rate 3/4, is 5x4992=24960 D flip-flops for storing intermediate messages form check to bit nodes because there exist 4992 edges and message passing on an edge can be represented with a 5-bit value. The memory for LDPC decoder 44 includes a bit-to-check memory and a check-to-bit memory to hold intermediate messages, so the total number of registers required for LDPC is equal to 2x5x4992=49920 D flip-flops with the 5 quantization bits for soft information. [0086] The memory for each message from bit to check nodes can be implemented by D flip-flops 150, 152 and a multiplexer 154, as shown in FIG. 19B. For purposes of illustration, FIG. 19B illustrates a bit to check register in half hardware sharing mode, using two flip flops 148, 150. For increased hardware sharing, the number of flip flops can be scaled upward, as shown in the example of FIG. 19C. The memory from bit to check nodes accepts inputs in parallel, and generates outputs in parallel or serial according to the factor of hardware sharing. Figure 19A shows memory for the parallel architecture which is constructed using only D flip-flops 148 without a multiplexer. In this manner, the message from bit to check nodes can be processed in one clock cycle, so that the parallel architecture obtains high throughput. Alternatively, the memory arrangement contemplated by the half hardware sharing scheme of FIG. 19B is divided into two registers 150, 152, which accept inputs in parallel at the same time. During the first clock cycle, the messages of the upper register 150 are loaded through multiplexer 154, and the messages of the lower register 152 are loaded during the second clock cycle.
[0087] FIG. 20A is a block diagram illustrating a check to bit register 162 in fully parallel mode. FIG. 20B is a block diagram illustrating a check to bit register in half hardware sharing mode, as indicated by registers 164, 166 and demultiplexer 168. FIG. 20C is a block diagram illustrating a check to bit register in 1/k hardware sharing mode, as indicated by registers 170a through 170k and demultiplexer 172. Memory from check to bit nodes can be implemented by D flip-flops and demultiplexers as shown in FIGS. 20B and 20C. The memory from check to bit nodes accepts inputs in block-serial and generates outputs in parallel.
[0088] The memory arrangement in FIG. 20A provides a fully parallel architecture, which is constructed using only D flip-flops. Therefore, the message from check to bit nodes can be processed in one clock cycle, leading to high throughput. FIG. 20B presents the memory architecture using the half hardware sharing technique, which is involves an arrangement of two registers 164, 166 and a demultiplexer 168. One-half of all messages is stored in the upper register 164 during the first clock cycle, and the rest of the messages re stored in the lower register 166 during the second clock cycle. Demultiplexer 168 serves to accept the messages in block serial mode for distribution to registers 164, 166.
EXAMPLE [0089] As an example, an LDPC decoder conforming generally to the structure illustrated in FIG. 10 was implemented in a 0.18 μm , 1.8v UMC CMOS process using standard cells. TABLE 1 shows the area and propagation delay for each component for the LDPC decoder 44. The worst propagation delay of the Cell_A is 10.5ns. Consequently, the clock frequency can be 80MHz including a twenty percent safety- margin. TABLE 1
Serial
Parallel
Figure imgf000022_0001
Cell_A (check to bit) is a bottleneck in LDPC decoder 44 because it needs more area than Cell_B (bit to check). Therefore, it is efficient to reduce the area so that the number of Cell_As becomes a factor of hardware-sharing. TABLE 2 shows the total area, latency, and throughput according to the number of Cell_As, with a clock frequency=50MHz and maximum iteration=8. As indicated by TABLE 2, a fully parallel architecture for LDPC decoder 44 achieves high throughput but requires more area. Alternatively, a fully serial architecture for LDPC decoder 44 requires less area but produces low throughput. A balance between area and throughput can be achieved by providing a compromise between a fully parallel and fully serial architecture.
[0090] FIG. 21 is a graph illustrating a floating precision simulation for LDPC decoder 44 using a standard message-passing algorithm and 5 -bit quantization precision using an approximation (9) of the standard message-passing algorithm (6) with a maximum iteration=10.
[0091] An LDPC decoder 44, in accordance with the embodiments described herein, can provide certain advantages. For example, the use of LDPC coding can provide exceptional performance. For example, LDPC codes are characterized by good distance properties that reduce the likelihood of undetected errors. In addition, LDPC codes permit implementation of low complexity, highly parallelizable decoding algorithms. Parallel processing, in turn, promotes low power consumption, high throughput and simple control logic. Availability of different degrees of serial processing, however, reduces area. Also, the intermediate results on each node of the LDPC decoder tend to converge to a certain value, resulting in low power consumption due to reduced switching activity. Moreover, the architectures contemplated by the invention are capable of delivering such advantages while balancing throughput, power consumption and area, making LDPC coding more attractive, especially in a wireless communication system.

Claims

CLAIMS:
1. A low density parity check (LDPC) decoder comprising: a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm; and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
2. The LDPC decoder of claim 1 , wherein the first computation unit computes at least some of the messages in block serial mode using shared hardware.
3. The LDPC decoder of claim 2, wherein the first computation unit computes multiple sets of 1/k of the messages in block serial mode using corresponding sets of the shared hardware.
4. The LDPC decoder of claim 1 , wherein the first computation unit computes at least some of the messages in a less than fully parallel mode using shared hardware.
5. The LDPC decoder of claim 1, wherein the first computation unit computes the messages from check nodes to bit nodes according to an approximation of the LDPC message passing algorithm based on the following equation:
Figure imgf000024_0001
wherein min represents a minimum function, LLR represents a log likelihood ratio, qy represents a parity check bit value, i represents row weight of a parity check matrix, and j represents column weight of the parity check matrix, and wherein the first computation unit includes a minimum determination unit that evaluates min \LLR(qv ) in parallel mode.
6. The LDPC decoder of claim 1 , further comprising memory that stores intermediate messages produced by the first and second computation units, wherein the memory includes an array of k D flip-flop registers, and the first computation unit computes multiple sets of 1/k of the messages in block serial mode and stores each of the sets in one of the k D flip-flop registers.
7. A low density parity check (LDPC) decoding method comprising: iteratively computing messages for LDPC encoded information from check nodes to bit nodes based on an approximation of the LDPC message passing algorithm in a first computation unit; and responsive to the first computation unit, iteratively computing messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision in a second computation unit.
8. The method of claim 7, further comprising computing, in the first computation unit, at least some of the messages in block serial mode using shared hardware.
9. The method of claim 8, further comprising computing, in the first computation unit, multiple sets of 1 k of the messages in block serial mode using corresponding sets of the shared hardware.
10. The method of claim 7, further comprising computing, in the first computation unit, at least some of the messages in a less than fully parallel mode using shared hardware.
11. The method of claim 7, further comprising computing the messages from check nodes to bit nodes according to an approximation of the LDPC message passing algorithm based on the following equation:
Figure imgf000025_0001
wherein min represents a minimum function, LLR represents a log likelihood ratio, qjj represents a parity check bit value, i represents row weight of a parity check matrix, and j represents column weight of the parity check matrix.
12. The method of claim 11, further comprising evaluating in
Figure imgf000026_0001
a parallel mode.
13. The method of claim 7, further comprising storing intermediate messages produced by the first and second computation units in memory, wherein the memory includes an array of k D flip-flop registers, the method further comprising computing multiple sets of 1/k of the messages in block serial mode and storing each of the sets in one of the k D flip-flop registers
14. A low density parity check (LDPC) decoder comprising: a first computation unit that iteratively computes messages for LDPC encoded information from check nodes to bit nodes in block serial mode using shared hardware; and a second computation unit, responsive to the first computation unit, that iteratively computes messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision.
15. The LDPC decoder of claim 14, wherein the first computation unit computes multiple sets of 1/k of the messages in block serial mode using corresponding sets of the shared hardware.
16. The LDPC decoder of claim 14, wherein the first computation unit computes the messages from check nodes to bit nodes according to an approximation of the LDPC message passing algorithm based on the following equation:
■ π sgn(EERfø,,)) • (-l 0W[Λ| ,
Figure imgf000026_0002
PeRσwlM') wherein min represents a minimum function, LLR represents a log likelihood ratio, ij represents a parity check bit value, i represents row weight of a parity check matrix, and j represents column weight of the parity check matrix, wherein the first computation unit includes a minimum determination unit that evaluates min \LLR(q.,.)\ in parallel mode.
17. The LDPC decoder of claim 14, further comprising memory that stores intermediate messages produced by the first and second computation units, wherein the memory includes an array of k D flip-flop registers, and the first computation unit computes multiple sets of 1/k of the messages in block serial mode and stores each of the sets in one of the k D flip-flop registers.
18. A low density parity check (LDPC) decoding method comprising: iteratively computing messages for LDPC encoded information from check nodes to bit nodes in block serial mode using shared hardware in a first computation unit; and responsive to the first computation unit, iteratively computing messages for the LDPC encoded information from the bit nodes to the check nodes to produce a hard decoding decision in a second computation unit.
19. The method of claim 18, further comprising computing, in the first computation unit, multiple sets of 1/k of the messages in block serial mode using corresponding sets of the shared hardware.
20. The method of claim 18, further comprising computing the messages from check nodes to bit nodes according to an approximation of the LDPC message passing algorithm based on the following equation:
Figure imgf000027_0001
wherein min represents a minimum function, LLR represents a log likelihood ratio, qjj represents a parity check bit value, i represents row weight of a parity check matrix, and j represents column weight of the parity check matrix.
21. The method of claim 19, further comprising evaluating ) in
Figure imgf000027_0002
a parallel mode.
22. The method of claim 18, further comprising storing intermediate messages produced by the first and second computation units in memory, wherein the memory includes an array of k D flip-flop registers.
23. The method of claim 18, further comprising computing multiple sets of 1/k of the messages in block serial mode and storing each of the sets in one of the k D flip-flop registers.
PCT/US2002/028047 2001-09-01 2002-08-30 Decoding architecture for low density parity check codes WO2003021440A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US31647301P 2001-09-01 2001-09-01
US60/316,473 2001-09-01

Publications (1)

Publication Number Publication Date
WO2003021440A1 true WO2003021440A1 (en) 2003-03-13

Family

ID=23229203

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2002/028047 WO2003021440A1 (en) 2001-09-01 2002-08-30 Decoding architecture for low density parity check codes

Country Status (2)

Country Link
US (1) US7246304B2 (en)
WO (1) WO2003021440A1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1521372A1 (en) * 2003-05-13 2005-04-06 Sony Corporation Decoding method, decoding device, and program
EP1624581A1 (en) * 2003-05-13 2006-02-08 Sony Corporation Decoding device, decoding method, and program
FR2894738A1 (en) * 2005-12-09 2007-06-15 Interface Sarl R Low density parity code decoding complexity reducing method for communication channel, involves decomposing low density parity check code decoding function into sub-functions represented by check and bit node units and memory controller
US7760880B2 (en) * 2004-10-13 2010-07-20 Viasat, Inc. Decoder architecture system and method
US8595569B2 (en) 2004-07-21 2013-11-26 Qualcomm Incorporated LCPC decoding methods and apparatus
CN107425856A (en) * 2016-03-17 2017-12-01 慧荣科技股份有限公司 Low density parity check coding device and the method for power saving is carried out to it
WO2019099012A1 (en) * 2017-11-16 2019-05-23 Visa International Service Association Error determination in input values in non-linear format
CN110289863A (en) * 2015-10-13 2019-09-27 华为技术有限公司 Decoding equipment, method and signal transmission system

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383485B2 (en) * 2000-09-12 2008-06-03 Broadcom Corporation Fast min*- or max*-circuit in LDPC (low density parity check) decoder
US7107511B2 (en) 2002-08-15 2006-09-12 Broadcom Corporation Low density parity check (LDPC) code decoder using min*, min**, max* or max** and their respective inverses
US7031371B1 (en) * 2000-09-25 2006-04-18 Lakkis Ismail A CDMA/TDMA communication method and apparatus for wireless communication using cyclic spreading codes
JP3896822B2 (en) * 2001-11-12 2007-03-22 株式会社豊田自動織機 Swash plate compressor
US20050058180A1 (en) * 2001-12-06 2005-03-17 Ismail Lakkis Ultra-wideband communication apparatus and methods
US20050152483A1 (en) * 2001-12-06 2005-07-14 Ismail Lakkis Systems and methods for implementing path diversity in a wireless communication network
US7289494B2 (en) * 2001-12-06 2007-10-30 Pulse-Link, Inc. Systems and methods for wireless communication over a wide bandwidth channel using a plurality of sub-channels
US7406647B2 (en) * 2001-12-06 2008-07-29 Pulse-Link, Inc. Systems and methods for forward error correction in a wireless communication network
US8045935B2 (en) 2001-12-06 2011-10-25 Pulse-Link, Inc. High data rate transmitter and receiver
US7349439B2 (en) * 2001-12-06 2008-03-25 Pulse-Link, Inc. Ultra-wideband communication systems and methods
US7317756B2 (en) * 2001-12-06 2008-01-08 Pulse-Link, Inc. Ultra-wideband communication apparatus and methods
US7483483B2 (en) * 2001-12-06 2009-01-27 Pulse-Link, Inc. Ultra-wideband communication apparatus and methods
US7587659B2 (en) * 2002-05-31 2009-09-08 Broadcom Corporation Efficient front end memory arrangement to support parallel bit node and check node processing in LDPC (Low Density Parity Check) decoders
US7197690B2 (en) * 2002-05-31 2007-03-27 Broadcom Corporation Bandwidth efficient coded modulation scheme based on MLC (multi-level code) signals having multiple maps
US7139964B2 (en) 2002-05-31 2006-11-21 Broadcom Corporation Variable modulation with LDPC (low density parity check) coding
US7577207B2 (en) 2002-07-03 2009-08-18 Dtvg Licensing, Inc. Bit labeling for amplitude phase shift constellation used with low density parity check (LDPC) codes
US7020829B2 (en) 2002-07-03 2006-03-28 Hughes Electronics Corporation Method and system for decoding low density parity check (LDPC) codes
US6829308B2 (en) * 2002-07-03 2004-12-07 Hughes Electronics Corporation Satellite communication system utilizing low density parity check codes
AU2003249708A1 (en) * 2002-07-03 2004-01-23 Hughes Electronics Corporation Method and system for memory management in low density parity check (ldpc) decoders
US7864869B2 (en) * 2002-07-26 2011-01-04 Dtvg Licensing, Inc. Satellite communication system utilizing low density parity check codes
US20040019845A1 (en) * 2002-07-26 2004-01-29 Hughes Electronics Method and system for generating low density parity check codes
US7395487B2 (en) * 2002-08-15 2008-07-01 Broadcom Corporation Common circuitry supporting both bit node and check node processing in LDPC (Low Density Parity Check) decoder
US7409628B2 (en) 2002-08-15 2008-08-05 Broadcom Corporation Efficient design to implement LDPC (Low Density Parity Check) decoder
US7178080B2 (en) * 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
US7350130B2 (en) * 2002-08-15 2008-03-25 Broadcom Corporation Decoding LDPC (low density parity check) code with new operators based on min* operator
US7447985B2 (en) 2002-08-15 2008-11-04 Broadcom Corporation Efficient design to implement min**/min**- or max**/max**- functions in LDPC (low density parity check) decoders
US7216283B2 (en) * 2003-06-13 2007-05-08 Broadcom Corporation Iterative metric updating when decoding LDPC (low density parity check) coded signals and LDPC coded modulation signals
US7296216B2 (en) * 2003-01-23 2007-11-13 Broadcom Corporation Stopping and/or reducing oscillations in low density parity check (LDPC) decoding
US7162684B2 (en) * 2003-01-27 2007-01-09 Texas Instruments Incorporated Efficient encoder for low-density-parity-check codes
KR100906474B1 (en) * 2003-01-29 2009-07-08 삼성전자주식회사 Method of error-correction using a matrix for generating low density parity and apparatus thereof
US7139959B2 (en) * 2003-03-24 2006-11-21 Texas Instruments Incorporated Layered low density parity check decoding for digital communications
US7159170B2 (en) 2003-06-13 2007-01-02 Broadcom Corporation LDPC (low density parity check) coded modulation symbol decoding
US7383493B2 (en) 2003-06-13 2008-06-03 Broadcom Corporation LDPC (Low Density Parity Check) coded modulation hybrid decoding using non-Gray code maps for improved performance
US7185270B2 (en) * 2003-07-29 2007-02-27 Broadcom Corporation LDPC (low density parity check) coded modulation hybrid decoding
US7436902B2 (en) * 2003-06-13 2008-10-14 Broadcom Corporation Multi-dimensional space Gray code maps for multi-dimensional phase modulation as applied to LDPC (Low Density Parity Check) coded modulation
US7322005B2 (en) * 2003-06-13 2008-01-22 Broadcom Corporation LDPC (Low Density Parity Check) coded modulation symbol decoding using non-Gray code maps for improved performance
KR100955952B1 (en) * 2003-10-13 2010-05-19 삼성전자주식회사 Method and apparatus for space-time coding using lifting low density parity check codes in a wireless communication system
US7234098B2 (en) 2003-10-27 2007-06-19 The Directv Group, Inc. Method and apparatus for providing reduced memory low density parity check (LDPC) codes
KR100918763B1 (en) * 2003-11-14 2009-09-24 삼성전자주식회사 Interleaving apparatus and method in a channel coder using a parallel concatenated low density parity check code
EP1536568A1 (en) * 2003-11-26 2005-06-01 Matsushita Electric Industrial Co., Ltd. Belief propagation decoder cancelling the exchange of unreliable messages
KR100975061B1 (en) 2003-11-28 2010-08-11 삼성전자주식회사 Method for generating parity information using Low density parity check
US7383487B2 (en) * 2004-01-10 2008-06-03 Broadcom Corporation IPHD (iterative parallel hybrid decoding) of various MLC (multi-level code) signals
US7149953B2 (en) 2004-02-03 2006-12-12 Broadcom Corporation Efficient LDPC code decoding with new minus operator in a finite precision radix system
US20050193320A1 (en) * 2004-02-09 2005-09-01 President And Fellows Of Harvard College Methods and apparatus for improving performance of information coding schemes
US8374284B2 (en) * 2004-02-12 2013-02-12 Apple, Inc. Universal decoder
US7281192B2 (en) * 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7243287B2 (en) * 2004-05-03 2007-07-10 Broadcom Corporation Decoding LDPC (Low Density Parity Check) code and graphs using multiplication (or addition in log-domain) on both sides of bipartite graph
US7353444B2 (en) * 2004-05-07 2008-04-01 Comtech Aha Corporation LDPC architecture
US7814402B2 (en) 2004-05-14 2010-10-12 The Governors Of The University Of Alberta Method and apparatus for digit-serial communications for iterative digital processing algorithms
KR100762619B1 (en) * 2004-05-21 2007-10-01 삼성전자주식회사 Apparatus and Method for decoding symbol with Low Density Parity Check Code
JP4138700B2 (en) * 2004-05-31 2008-08-27 株式会社東芝 Decoding device and decoding circuit
FR2871965B1 (en) * 2004-06-17 2006-09-01 Turboconcept Soc Par Actions S METHOD AND DEVICE FOR DECODING ERROR CORRECTING CODES AND SYSTEMS EMPLOYING THEM
US7181676B2 (en) * 2004-07-19 2007-02-20 Texas Instruments Incorporated Layered decoding approach for low density parity check (LDPC) codes
EP1782540B1 (en) * 2004-07-27 2013-07-24 LG Electronics Inc. Method of encoding and decoding using low density parity check code
US7506238B2 (en) * 2004-08-13 2009-03-17 Texas Instruments Incorporated Simplified LDPC encoding for digital communications
US7559010B2 (en) * 2004-08-18 2009-07-07 Broadcom Corporation Short length LDPC (Low Density Parity Check) code and modulation adapted for high speed Ethernet applications
US7587008B2 (en) * 2004-08-25 2009-09-08 Broadcom Corporation Decoding error correcting codes transmitted through multiple wire twisted pair cables with uneven noise on the wires
US7515642B2 (en) * 2004-08-25 2009-04-07 Broadcom Corporation LDPC (Low Density Parity Check) coded 128 DSQ (Double Square QAM) constellation modulation and associated labeling
US7401283B2 (en) * 2004-09-28 2008-07-15 Broadcom Corporation Amplifying magnitude metric of received signals during iterative decoding of LDPC (Low Density Parity Check) code and LDPC coded modulation
US20060085720A1 (en) * 2004-10-04 2006-04-20 Hau Thien Tran Message passing memory and barrel shifter arrangement in LDPC (Low Density Parity Check) decoder supporting multiple LDPC codes
US7581159B2 (en) * 2004-11-23 2009-08-25 Texas Instruments Incorporated Simplified decoding using structured and punctured LDPC codes
US7631023B1 (en) * 2004-11-24 2009-12-08 Symantec Operating Corporation Performance-adjusted data allocation in a multi-device file system
US7617441B2 (en) 2005-07-18 2009-11-10 Broadcom Corporation Efficient construction of LDPC (Low Density Parity Check) codes with corresponding parity check matrix having CSI (Cyclic Shifted Identity) sub-matrices
US7617439B2 (en) * 2005-01-10 2009-11-10 Broadcom Corporation Algebraic construction of LDPC (Low Density Parity Check) codes with corresponding parity check matrix having CSI (Cyclic Shifted Identity) sub-matrices
US7536629B2 (en) 2005-01-10 2009-05-19 Broadcom Corporation Construction of LDPC (Low Density Parity Check) codes using GRS (Generalized Reed-Solomon) code
US7549105B2 (en) * 2005-01-10 2009-06-16 Broadcom Corporation Construction of irregular LDPC (low density parity check) codes using RS (Reed-Solomon) codes or GRS (generalized Reed-Solomon) code
US7516390B2 (en) * 2005-01-10 2009-04-07 Broadcom Corporation LDPC (Low Density Parity Check) coding and interleaving implemented in MIMO communication systems
US7500172B2 (en) * 2005-02-26 2009-03-03 Broadcom Corporation AMP (accelerated message passing) decoder adapted for LDPC (low density parity check) codes
US7447981B2 (en) * 2005-04-01 2008-11-04 Broadcom Corporation System correcting random and/or burst errors using RS (Reed-Solomon) code, turbo/LDPC (Low Density Parity Check) code and convolutional interleave
US7447984B2 (en) 2005-04-01 2008-11-04 Broadcom Corporation System correcting random and/or burst errors using RS (Reed-Solomon) code, turbo/LDPC (Low Density Parity Check) code and convolutional interleave
WO2006124071A1 (en) * 2005-05-18 2006-11-23 The Governors Of The University Of Alberta Decoder for low-density parity-check convolutional codes
US7761768B2 (en) * 2005-06-24 2010-07-20 Intel Corporation Techniques for reconfigurable decoder for a wireless system
JP4526450B2 (en) * 2005-06-30 2010-08-18 ルネサスエレクトロニクス株式会社 Decoding apparatus, method, and program
US7617442B2 (en) 2005-07-18 2009-11-10 Broadcom Corporation Efficient construction of LDPC (Low Density Parity Check) codes with corresponding parity check matrix having CSI (Cyclic Shifted Identity) sub-matrices
US7934147B2 (en) * 2005-08-03 2011-04-26 Qualcomm Incorporated Turbo LDPC decoding
US8196025B2 (en) 2005-08-03 2012-06-05 Qualcomm Incorporated Turbo LDPC decoding
WO2007019187A2 (en) * 2005-08-03 2007-02-15 Novowave, Inc. Systems and methods for a turbo low-density parity-check decoder
US7661055B2 (en) * 2005-12-05 2010-02-09 Broadcom Corporation Partial-parallel implementation of LDPC (Low Density Parity Check) decoders
US7617433B2 (en) * 2006-01-03 2009-11-10 Broadcom Corporation Implementation of LDPC (low density parity check) decoder by sweeping through sub-matrices
US7530002B2 (en) * 2006-01-03 2009-05-05 Broadcom Corporation Sub-matrix-based implementation of LDPC (Low Density Parity Check) decoder
US20070179760A1 (en) * 2006-01-06 2007-08-02 Intel Corporation Method of determining graph isomorphism in polynomial-time
US7631246B2 (en) * 2006-01-09 2009-12-08 Broadcom Corporation LDPC (low density parity check) code size adjustment by shortening and puncturing
EP1990932A1 (en) * 2006-02-27 2008-11-12 Matsushita Electric Industrial Co., Ltd. Radio communication device and relay transmission method
EP1981179B1 (en) * 2006-02-28 2018-01-10 Panasonic Intellectual Property Corporation of America Radio communication device and relay transmission method
US8091009B2 (en) 2006-03-23 2012-01-03 Broadcom Corporation Symbol by symbol map detection for signals corrupted by colored and/or signal dependent noise
CN101432970B (en) 2006-04-28 2012-11-14 英特尔公司 Multi-threshold message transmission decoding of low density parity check code using min-sum principle
US7689896B2 (en) * 2006-06-21 2010-03-30 Broadcom Corporation Minimal hardware implementation of non-parity and parity trellis
US7752529B2 (en) * 2006-07-26 2010-07-06 Broadcom Corporation Combined LDPC (low density parity check) encoder and syndrome checker
US7647548B2 (en) * 2006-07-31 2010-01-12 Agere Systems Inc. Methods and apparatus for low-density parity check decoding using hardware-sharing and serial sum-product architecture
US7644339B2 (en) * 2006-10-02 2010-01-05 Broadcom Corporation Overlapping sub-matrix based LDPC (low density parity check) decoder
US20080118229A1 (en) * 2006-11-20 2008-05-22 Broadcom Corporation ITERATIVE CODE SYSTEM FOR STREAMING HDDs
TW200838160A (en) * 2007-03-09 2008-09-16 Univ Nat Chiao Tung Cyclic comparison method of low density parity check decoder
US8151171B2 (en) * 2007-05-07 2012-04-03 Broadcom Corporation Operational parameter adaptable LDPC (low density parity check) decoder
US7958429B2 (en) * 2007-07-02 2011-06-07 Broadcom Corporation Distributed processing LDPC (low density parity check) decoder
US8010881B2 (en) * 2007-07-02 2011-08-30 Broadcom Corporation Multi-code LDPC (low density parity check) decoder
US20090013239A1 (en) * 2007-07-02 2009-01-08 Broadcom Corporation LDPC (Low Density Parity Check) decoder employing distributed check and/or variable node architecture
US20090252146A1 (en) * 2008-04-03 2009-10-08 Microsoft Corporation Continuous network coding in wireless relay networks
US8145986B2 (en) * 2008-09-22 2012-03-27 Broadcom Corporation Multi-CSI (Cyclic Shifted Identity) sub-matrix based LDPC (Low Density Parity Check) codes
US8560917B2 (en) 2009-01-27 2013-10-15 International Business Machines Corporation Systems and methods for efficient low density parity check (LDPC) decoding
US8972817B2 (en) * 2011-08-22 2015-03-03 Telex Maglorie Ngatched Nkouatchah Two low complexity decoding algorithms for LDPC codes
US9213593B2 (en) * 2013-01-16 2015-12-15 Maxlinear, Inc. Efficient memory architecture for low density parity check decoding
US8995302B1 (en) 2013-01-16 2015-03-31 Pmc-Sierra Us, Inc. Method and apparatus for translated routing in an interconnect switch
US9128858B1 (en) 2013-01-29 2015-09-08 Pmc-Sierra Us, Inc. Apparatus and method for adjusting a correctable raw bit error rate limit in a memory system using strong log-likelihood (LLR) values
US9092353B1 (en) 2013-01-29 2015-07-28 Pmc-Sierra Us, Inc. Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US8990661B1 (en) 2013-03-05 2015-03-24 Pmc-Sierra Us, Inc. Layer specific attenuation factor LDPC decoder
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US9397701B1 (en) 2013-03-11 2016-07-19 Microsemi Storage Solutions (Us), Inc. System and method for lifetime specific LDPC decoding
US8935598B1 (en) * 2013-03-12 2015-01-13 Pmc-Sierra Us, Inc. System and method for adaptive check node approximation in LDPC decoding
US8984376B1 (en) 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for avoiding error mechanisms in layered iterative decoding
US8984365B1 (en) 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for reduced memory storage in LDPC decoding
US9590656B2 (en) 2013-03-15 2017-03-07 Microsemi Storage Solutions (Us), Inc. System and method for higher quality log likelihood ratios in LDPC decoding
US9235467B2 (en) 2013-03-15 2016-01-12 Pmc-Sierra Us, Inc. System and method with reference voltage partitioning for low density parity check decoding
US9450610B1 (en) 2013-03-15 2016-09-20 Microsemi Storage Solutions (Us), Inc. High quality log likelihood ratios determined using two-index look-up table
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding
KR102241416B1 (en) * 2013-09-16 2021-04-16 삼성전자주식회사 Apparatus and method for decoding low density parity check(ldpc) codes in digital video broadcasting(dvb) system
US9417804B2 (en) 2014-07-07 2016-08-16 Microsemi Storage Solutions (Us), Inc. System and method for memory block pool wear leveling
US10332613B1 (en) 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
US10283215B2 (en) 2016-07-28 2019-05-07 Ip Gem Group, Llc Nonvolatile memory system with background reference positioning and local reference positioning
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
CN113742898A (en) * 2021-08-13 2021-12-03 华力智芯(成都)集成电路有限公司 LDPC decoder logic design method applied to low-earth-orbit satellite Internet system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295218A (en) * 1979-06-25 1981-10-13 Regents Of The University Of California Error-correcting coding system
US6088387A (en) 1997-12-31 2000-07-11 At&T Corp. Multi-channel parallel/serial concatenated convolutional codes and trellis coded modulation encoder/decoder
AU2335001A (en) * 1999-12-20 2001-07-03 Research In Motion Limited Hybrid automatic repeat request system and method
US6512739B1 (en) * 2000-01-07 2003-01-28 Ikanos Communications, Inc. Method and apparatus for down conversion within an X-DSL receiver
AU5948101A (en) * 2000-05-03 2001-11-12 Univ Southern California Reduced-latency soft-in/soft-out module
JP2004503979A (en) * 2000-06-16 2004-02-05 アウェア, インコーポレイテッド LDPC modulation system and method
US6965652B1 (en) * 2000-06-28 2005-11-15 Marvell International Ltd. Address generator for LDPC encoder and decoder and method thereof
US6857097B2 (en) * 2001-05-16 2005-02-15 Mitsubishi Electric Research Laboratories, Inc. Evaluating and optimizing error-correcting codes using a renormalization group transformation
US6895547B2 (en) * 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ENGLING YEO ET AL.: "VLSI architectures for iterative decoders in magnetic recording channels", IEEE TRANSACTIONS ON MAGNETICS, vol. 37, no. 2, March 2001 (2001-03-01), pages 748 - 755, XP002958229 *
FUTAKI H., OHTSUKI T.: "Low-densitiy parity-check (LPDC) coded OFDM systems", IEEE VEHICULAR TECHNOLOGY CONFERENCE 54TH, 2001 FALL, vol. 1, August 2001 (2001-08-01), pages 82 - 86, XP001113753 *
PO-HUI YANG, JINN-SHYAN WANG, YI-MING WANG: "A 1-GHz low-power transposition memory using new pulse-clocked D flip-flops", IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, vol. 5, May 2000 (2000-05-01), pages 665 - 668, XP002958230 *
XIAO-YU HU ET AL.: "Efficient implementations of the sum-product algorithm for decoding LDPC codes", IEEE GLOBAL TELECOMMUNICATIONS CONFERENCE, vol. 2, September 2001 (2001-09-01), pages 1036 - 1036E, XP001099262 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE44420E1 (en) 2003-05-13 2013-08-06 Sony Corporation Decoding apparatus, decoding method, and program to decode low density parity check codes
EP1624581A1 (en) * 2003-05-13 2006-02-08 Sony Corporation Decoding device, decoding method, and program
EP1521372A4 (en) * 2003-05-13 2008-07-02 Sony Corp Decoding method, decoding device, and program
EP1624581B1 (en) * 2003-05-13 2013-01-02 Sony Corporation Decoding device, decoding method, and program
EP1521372A1 (en) * 2003-05-13 2005-04-06 Sony Corporation Decoding method, decoding device, and program
US8595569B2 (en) 2004-07-21 2013-11-26 Qualcomm Incorporated LCPC decoding methods and apparatus
US8683289B2 (en) 2004-07-21 2014-03-25 Qualcomm Incorporated LDPC decoding methods and apparatus
US7760880B2 (en) * 2004-10-13 2010-07-20 Viasat, Inc. Decoder architecture system and method
FR2894738A1 (en) * 2005-12-09 2007-06-15 Interface Sarl R Low density parity code decoding complexity reducing method for communication channel, involves decomposing low density parity check code decoding function into sub-functions represented by check and bit node units and memory controller
CN110289863A (en) * 2015-10-13 2019-09-27 华为技术有限公司 Decoding equipment, method and signal transmission system
CN107425856A (en) * 2016-03-17 2017-12-01 慧荣科技股份有限公司 Low density parity check coding device and the method for power saving is carried out to it
CN107425856B (en) * 2016-03-17 2020-09-29 慧荣科技股份有限公司 Low density parity check decoder and method for saving power thereof
WO2019099012A1 (en) * 2017-11-16 2019-05-23 Visa International Service Association Error determination in input values in non-linear format

Also Published As

Publication number Publication date
US7246304B2 (en) 2007-07-17
US20030104788A1 (en) 2003-06-05

Similar Documents

Publication Publication Date Title
US7246304B2 (en) Decoding architecture for low density parity check codes
US20070089018A1 (en) Error correction decoder, method and computer program product for block serial pipelined layered decoding of structured low-density parity-check (LDPC) codes, including reconfigurable permuting/de-permuting of data values
Chen et al. Reduced-complexity decoding of LDPC codes
US7178080B2 (en) Hardware-efficient low density parity check code for digital communications
US20070089019A1 (en) Error correction decoder, method and computer program product for block serial pipelined layered decoding of structured low-density parity-check (LDPC) codes, including calculating check-to-variable messages
US7395487B2 (en) Common circuitry supporting both bit node and check node processing in LDPC (Low Density Parity Check) decoder
Sun et al. VLSI decoder architecture for high throughput, variable block-size and multi-rate LDPC codes
CN107919874B (en) Syndrome computation basic check node processing unit, method and computer program
US20090282316A1 (en) Memory Access in Low-Density Parity Check Decoders
Nadal et al. Parallel and flexible 5G LDPC decoder architecture targeting FPGA
Lacruz et al. Reduced-complexity nonbinary LDPC decoder for high-order Galois fields based on trellis min–max algorithm
Thi et al. Basic-set trellis min–max decoder architecture for nonbinary ldpc codes with high-order galois fields
Schläfer et al. Syndrome based check node processing of high order NB-LDPC decoders
US20090113174A1 (en) Sign Operation Instructions and Circuitry
US10355820B2 (en) Decoding method and apparatus in system using sequentially connected binary codes
Stark et al. Information bottleneck decoding of rate-compatible 5G-LDPC codes
Pham et al. Minimal-set trellis min-max decoder architecture for nonbinary LDPC codes
Tian et al. A 21.66 Gbps nonbinary LDPC decoder for high-speed communications
Choi et al. High-throughput non-binary LDPC decoder based on aggressive overlap scheduling
Kang et al. Memory efficient mutual information-maximizing quantized min-sum decoding for rate-compatible LDPC codes
Lee et al. Multi-Mode QC-LDPC Decoding Architecture With Novel Memory Access Scheduling for 5G New-Radio Standard
Schláfer et al. A new architecture for high throughput, low latency NB-LDPC check node processing
CN113595564A (en) Low-complexity multi-system LDPC code decoder device based on information truncation
Lu et al. Fully-parallel stochastic decoder for rate compatible modulation
Harb et al. Parallel cn-vn processing for nb-ldpc decoders

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BY BZ CA CH CN CO CR CU CZ DE DM DZ EC EE ES FI GB GD GE GH HR HU ID IL IN IS JP KE KG KP KR LC LK LR LS LT LU LV MA MD MG MN MW MX MZ NO NZ OM PH PL PT RU SD SE SG SI SK SL TJ TM TN TR TZ UA UG UZ VN YU ZA ZM

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ UG ZM ZW AM AZ BY KG KZ RU TJ TM AT BE BG CH CY CZ DK EE ES FI FR GB GR IE IT LU MC PT SE SK TR BF BJ CF CG CI GA GN GQ GW ML MR NE SN TD TG

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP