NR LDPC Decoder

Decode LDPC code using layered belief propagation with min-sum or normalized min-sum approximation algorithm

  • Library:
  • Wireless HDL Toolbox / Error Detection and Correction

  • NR LDPC Decoder block

Description

The NR LPDC Decoder block implements a low-density parity-check (LDPC) decoder with hardware-friendly control signals. The block accepts punctured log-likelihood ratio (LLR) values, a stream of control signals, a base graph number, and lifting sizes. The block outputs decoded bits, a stream of control signals, lifting sizes, and a signal that indicates when the block is ready to accept new inputs.

This block provides an option to implement layered belief propagation with either the normalized min-sum approximation algorithm or the min-sum approximation algorithm. This implementation matches that of the function nrLDPCDecode (5G Toolbox). You can use this block for channel coding of downlink and uplink shared channels and paging channel according to 5G new radio (NR) standard TS 38.212 [1].

The block supports scalar and vector inputs. The block provides an architecture suitable for HDL code generation and hardware deployment. For more information, see Algorithms.

Ports

Input

expand all

Input log-likelihood ratio (LLR) values, specified as a scalar or a column vector of size 64.

The data type of this input must be a signed fixed-point data type with a word length from 4 to 16 bits. For more information on how to specify vector input data, see Specifying Vector Input.

Data Types: int8 | int16 | fixed point

Control signals accompanying the sample stream, specified as a samplecontrol bus. The bus includes the start, end, and valid control signals, which indicate the boundaries of the frame and the validity of the samples.

  • start — Indicates the start of the input frame

  • end — Indicates the end of the input frame

  • valid — Indicates that the data on the input data port is valid

For more detail, see Sample Control Bus.

Data Types: bus

Base graph number, specified as a scalar. When this value is 0, the block applies bgn 1. When this value is 1, the block applies bgn 2. For more information about bgn 1 and bgn 2, see section 5.3.2, of TS 38.212 [1].

Data Types: Boolean

Input lifting size, specified as a scalar.

For an invalid liftingSize value, the block discards the current frame and waits for the new frame.

For more information about the supported lifting size values, see section 5.3.2, of TS 38.212 [1].

Data Types: uint16

Number of iterations, specified as a integer scalar in the range from 1 to 63.

If you specify iter as a value greater than 63, the block automatically sets the iter value to 8 and performs the decoding operation.

Dependencies

To enable this port, set the Source for number of iterations parameter to Input port.

Data Types: uint8

Output

expand all

Decoded output data bits, returned as a scalar or a column vector of size 64.

The block outputs data bits in a similar format as the input LLR values. Extract these output data bits in a similar format for further processing.

Data Types: Boolean

Control signals accompanying the sample stream, returned as a samplecontrol bus. The bus includes the start, end, and valid control signals, which indicate the boundaries of the frame and the validity of the samples.

  • start — Indicates the start of the output frame

  • end — Indicates the end of the output frame

  • valid — Indicates that the data on the output data port is valid

For more detail, see Sample Control Bus.

Data Types: bus

Output lifting size, returned as a scalar.

Data Types: uint16

The block sets this signal to 1 when the block is ready to accept the start of the next frame. If the block receives an input start signal while nextFrame is 0, the block discards the frame in progress and begins processing the new data.

For more information, see Using the nextFrame Output Signal.

Data Types: Boolean

Parameters

expand all

Select the type of algorithm. For more information, see Algorithm (5G Toolbox).

Specify the scaling factor.

Dependencies

To enable this parameter, set the Algorithm parameter to Normalized min-sum.

Select the source for specifying the number of iterations.

You can set number of iterations with an input port or by specifying a value for the parameter.

  • Select Property to enable the Source for number of iterations parameter.

  • Select Input port to enable the iter port.

Specify the number of iterations.

Dependencies

To enable this parameter, set the Source for number of iterations parameter to Property.

More About

expand all

Algorithms

expand all

This figure shows the architecture block diagram of the NR LDPC Decoder block. The Functional Processing Unit block calculates the variable node (VN) messages and check node (CN) messages based on the layered belief propagation with either the normalized min-sum approximation algorithm or the min-sum approximation algorithm. For more information, see Algorithm (5G Toolbox).

The implementation of the block matches the performance of the function nrLDPCDecode (5G Toolbox). This plot shows the performance of the block for a 4-bit LLR input when the Algorithm parameter is set to Min-sum.

This plot shows the performance of the block for a 4-bit LLR input when the Algorithm parameter is set to Normalized min-sum.

References

[1] 3GPP TS 38.212. “NR; Multiplexing and Channel Coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] Gallager, R. “Low-Density Parity-Check Codes.” IEEE Transactions on Information Theory 8, no. 1 (January 1962): 21–28. www.doi.org/10.1109/TIT.1962.1057683.

Extended Capabilities

See Also

Blocks

Functions

Introduced in R2020a