Main Content

LTE CRC Decoder

Detect errors in input samples using checksum

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

  • LTE CRC Decoder block

Description

TheLTE CRC Decoderblock calculates a cyclic redundancy check (CRC) and compares it with the appended checksum, for each frame of streaming data samples. You can select from the polynomials specified by LTE standard TS 36.212[1]. The block provides a hardware-optimized architecture and interface.

This block uses a streaming sample interface with a bus for related control signals. This interface enables the block to operate independently of frame size, and to connect easily with other Wireless HDL Toolbox™ blocks. The block accepts and returns a value representing a single sample, and a bus containing three control signals. These signals indicate the validity of each sample and the boundaries of the frame. To convert a matrix into a sample stream and these control signals, use theFrame To Samplesblock or thewhdlFramesToSamplesfunction. For a full description of the interface, seeStreaming Sample Interface.

Ports

Input

expand all

Input sample, specified as a binary scalar, unsigned integer scalar, or binary vector. The vector size must be less than or equal to the length of the polynomial. The CRC length also must be divisible by the vector size. For example, for polynomial typeCRC24A, the valid vector sizes are 24, 12, 8, 6, 4, 3, 2, and 1. An integer input is interpreted as a binary word. For example, vector input[0 0 0 1 0 0 1 1]相当于uint8input19.

doubleandsingleare supported for simulation but not for HDL code generation.

Data Types:single|double|Boolean|ufix1|uint8|uint16|uint32

Control signals accompanying the sample stream, specified as asamplecontrolbus. The bus includes thestart,end, andvalidcontrol 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 inputdataport is valid

佛r more details, seeSample Control Bus.

Data Types:bus

Output

expand all

Output sample, returned a binary scalar, unsigned integer scalar, or binary vector of the same data type and size as the input samples. The checksum is removed from the end of the frame.

doubleandsinglebinary values are supported for simulation but not for HDL code generation.

Data Types:single|double|Boolean|ufix1|uint8|uint16|uint32|ufixN

Control signals accompanying the sample stream, returned as asamplecontrolbus. The bus includes thestart,end, andvalidcontrol 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 outputdataport is valid

佛r more details, seeSample Control Bus.

Data Types:bus

Indicator of checksum mismatch, returned as a binary scalar or an integer scalar. If you selectFull checksum mismatch, this port returns the integer XOR result of the calculated checksum against the appended checksum. Theerrvalue is valid whenctrl.endis 1 (true). The data type of this port matches the data type of the input samples.

Data Types:single|double|Boolean|ufix1|uint8|uint16|uint32|ufixN

Parameters

expand all

The encode polynomial options are the four CRC types described in the LTE standard TS 36.212[1], Section 5.1.1.

When this parameter is not selected, theerrport returns a Boolean value indicating whether any checksum bits are mismatched, after applyingCRC Mask. When this parameter is selected, theerrport returns an integer that represents the locations of bit mismatches in the checksum.

Mask applied to checksum, specified as an integer representing a binary word from 0 to 2CRCLength– 1. This mask is typically a Radio Network Temporary Identifier (RNTI).

Dependencies

This parameter appears whenFull checksum mismatchis cleared.

Algorithms

expand all

When you use vector or integer input, the block implements a parallel CRC algorithm[2]. The implementation is the same as the algorithm used by the Communications Toolbox™ blocksGeneral CRC Generator HDL OptimizedandGeneral CRC Syndrome Detector HDL Optimized.

To provide high throughput for modern communications systems, the block implements the CRC algorithm with a parallel architecture. This architecture recursively calculatesMbits of a CRC checksum for eachWinput bits. At the end of the frame, the final checksum result is appended to the message. For a polynomial length ofM, the recursive checksum calculation forWbits in parallel is

X ' = F W ( × ) X ( + ) D .

FWis anM-by-Mmatrix that selects elements of the current state for the polynomial calculation with the new input bits.Dis anM-element vector that provides the new input bits, ordered in relation to the generator polynomial and padded with zeros. The block implements the (×) with logical AND and (+) with logical XOR.

References

[1] 3GPP TS 36.212. "Multiplexing and channel coding."3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL:https://www.3gpp.org.

[2] Campobello, Giuseppe, Giuseppe Patane, and Marco Russo. "Parallel CRC Realization."IEEE计算机. Vol. 52, No. 10, October 2003, pp. 1312–1319.

Extended Capabilities

Version History

Introduced in R2017b

See Also

Blocks

Functions