Documentation

lteRateRecoverTurbo

Turbo rate recovery

Syntax

  • out = lteRateRecoverTurbo(in,trblklen,rv)
    example
  • out = lteRateRecoverTurbo(in,trblklen,rv,chs,cbsbuffers)

Description

example

out = lteRateRecoverTurbo(in,trblklen,rv) performs rate recovery of the input vector, in, creating a cell array of vectors, out. out represents the turbo encoded code blocks before concatenation. This function is the inverse of the rate matching operation for turbo encoded data. For more information, see lteRateMatchTurbo and TS 36.212, Section 5.1.4.1 [1]. This function includes the inverses of the subblock interleaving, bit collection, and bit selection and pruning stages. The dimensions of out are deduced from trblklen, which represents the length of the original encoded transport block. This parameterization is required to recover the original number of code blocks, their encoded lengths, and the locations of any filler bits. The parameter rv controls the redundancy version of the output. The bit selection recovery assumes a QPSK transmission mapped onto a single layer. It also assumes no restriction on the number of soft bits, as in an uplink UL-SCH transport channel.

out = lteRateRecoverTurbo(in,trblklen,rv,chs,cbsbuffers) specifies two additional inputs. The chs input structure allows additional control of the bit selection recovery stage through parameters for the soft buffer size and physical channel configuration. The cbsbuffers input allows combining with pre-existing soft information for the HARQ process.

Examples

collapse all

Perform Turbo Rate Recovery

Create a codeword from a transport block then rate recover the codeword back into a set of coded code blocks. The transport block is originally segmented into a single code block so the rateRecovered output variable is a cell array containing a single turbo coded code block.

Define the transport block length prior to CRC and turbo coding, code word length, redundancy version, and CRC polynomial. Use these parameters to perform coding operations.

trBlkLen = 135;
codewordLen = 450;
rv = 0;
crcPoly = '24A';
trblockwithcrc = lteCRCEncode(zeros(trBlkLen,1),crcPoly);
codeblocks = lteCodeBlockSegment(trblockwithcrc);
turbocodedblocks = lteTurboEncode(codeblocks);
codeword = lteRateMatchTurbo(turbocodedblocks,codewordLen,rv);
rateRecovered = lteRateRecoverTurbo(codeword,trBlkLen,rv)
rateRecovered = 

    [492x1 int8]

rateRecovered is a cell array with a single coded code block of size indicated above.

Further turbo decoding, desegmentation and CRC decoding of rateRecovered would result in a decoded transport block of length equal to the original transport block. Note that the trBlkLen parameter of the lteRateRecoverTurbo function is the transport block length before CRC and turbo coding, not the length after turbo coding or rate matching.

Input Arguments

collapse all

in — Input datanumeric vector

Input data, specified as a numeric vector.

Data Types: double | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

trblklen — Length of original encoded transport block before encodingnumeric value

Length of the original encoded transport block before encoding, specified as a numeric value.

Data Types: double

rv — Redundancy version used to recover data0 | 1 | 2 | 3

Redundancy version used to recover data, specified as 0, 1, 2, or 3.

Data Types: double

chs — Channel transmission configurationstructure

Channel transmission configuration, specified as a structure. It allows additional control of the bit selection stage through parameters for the soft buffer size and physical channel configuration.

For downlink turbo coded transport channels, you can control the soft buffer dimensions by including either NIR or the combined set of NSoftbits, TxScheme, and DuplexMode. If DuplexMode is 'TDD', also specify TDDConfig. If included, NIR, takes precedence for controlling the soft buffer dimensions. When neither of these optional chs fields (NIR or the set including NSoftbits) are present, the function assumes an uplink turbo coded transport channel and places no limit on the number of soft bits.

chs can contain the following fields.

Modulation — Modulation scheme'QPSK' | '16QAM' | '64QAM' | '256QAM'

Modulation scheme, specified as a string. Accepted values are 'QPSK', '16QAM', '64QAM', and '256QAM'.

Data Types: char

NLayers — Number of transmission layers for transport block1 (default) | 2 | 3 | 4

Number of transmission layers for transport block, specified as 1 (default), 2, 3, or 4. Not necessary if TxScheme is set to 'Port0', 'TxDiversity', or 'Port5'.

Data Types: double

TxScheme — Transmission scheme'Port0' (default) | optional | 'TxDiversity' | 'CDD' | 'SpatialMux' | 'MultiUser' | 'Port5' | 'Port7-8' | 'Port8' | 'Port7-14'

Downlink rate matching only. Transmission scheme, specified as a string. Optional. Accepted values and their descriptions are shown in the following table

Transmission schemeDescription
'Port0'Single antenna port, port 0. Default
'TxDiversity'Transmit diversity
'CDD'Large delay CDD
'SpatialMux'Closed loop spatial multiplexing
'MultiUser'Multi-user MIMO
'Port5'Single-antenna port, Port 5
'Port7-8'Single-antenna port, port 7, if NLayers is set to 1. Dual layer transmission, port 7 and 8, if NLayers is set to 2.
'Port8'Single-antenna port, Port 8
'Port7-14'Up to eight layer transmission, ports 7–14

Data Types: char

NIR — Soft buffer size for entire input transport blocknonnegative integer

Soft buffer size for entire input transport block, specified as a nonnegative integer.

Data Types: double

NSoftbits — Total number of soft channel bitsnonnegative integer

Total number of soft channel bits, specified as a nonnegative integer.

Data Types: double

DuplexMode — Duplex mode'FDD' (default) | optional | 'TDD'

Duplex mode, specified as a string. Optional. Accepted values are 'FDD' and 'TDD'.

Data Types: char

TDDConfig — Uplink or downlink configuration0 (default) | optional | nonnegative scalar integer (0...6)

Uplink or downlink configuration, specified as a nonnegative scalar integer from 0 through 6. Optional. Only required if DuplexMode is set to 'TDD'.

Data Types: double

Data Types: struct

cbsbuffers — Code block soft information bufferscell array of numeric vectors | empty cell array | cell array of numeric scalar elements

Code block soft information buffers, specified as a cell array. This input argument represents any pre-existing code block-oriented soft information to be additively combined with the recovered turbo encoded code blocks. It allows the direct soft combining of consecutive HARQ retransmissions and is typically returned by a previous call to the function to recover an earlier transmission of the same transport block. The cbsbuffers cell array either:

  • dimensionally matches the output code blocks, out

  • can be empty to represent the processing of an initial HARQ transmission

  • or can be scalar to add a constant offset to all the deinterleaved soft data in a code block.

Data Types: cell

Output Arguments

collapse all

out — Turbo encoded code blocks before concatenationcell array of numeric column vectors

Turbo encoded code blocks before concatenation, returned as a cell array of numeric column vectors. The dimensions of out are deduced from trblklen, which represents the length of the original encoded transport block.

Data Types: cell

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: http://www.3gpp.org.

Introduced in R2013b

Was this topic helpful?