Turbo rate recovery
out = lteRateRecoverTurbo(in,trblklen,rv)
out = lteRateRecoverTurbo(in,trblklen,rv,chs,cbsbuffers)
rate recovery of the input vector,
out = lteRateRecoverTurbo(
a cell array of vectors,
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
TS 36.212, Section 18.104.22.168 .
This function includes the inverses of the subblock interleaving,
bit collection, and bit selection and pruning stages. The dimensions
out are deduced from
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.
two additional inputs. The
out = lteRateRecoverTurbo(
chs input structure
allows additional control of the bit selection recovery stage through
parameters for the soft buffer size and physical channel configuration.
cbsbuffers input allows combining with pre-existing
soft information for the HARQ process.
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.
in— Input datanumeric vector
Input data, specified as a numeric vector.
Length of the original encoded transport block before encoding, specified as a numeric value.
rv— Redundancy version used to recover data0 | 1 | 2 | 3
Redundancy version used to recover data, specified as 0, 1, 2, or 3.
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
the combined set of
TDDConfig. If included,
takes precedence for controlling the soft buffer dimensions. When
neither of these optional
chs fields (
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
Modulation scheme, specified as a string. Accepted values are
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— Transmission scheme
'Port0'(default) | optional |
Downlink rate matching only. Transmission scheme, specified as a string. Optional. Accepted values and their descriptions are shown in the following table
|Single antenna port, port 0. Default|
|Large delay CDD|
|Closed loop spatial multiplexing|
|Single-antenna port, Port 5|
|Single-antenna port, port 7, if |
|Single-antenna port, Port 8|
|Up to eight layer transmission, ports 7–14|
NIR— Soft buffer size for entire input transport blocknonnegative integer
Soft buffer size for entire input transport block, specified as a nonnegative integer.
NSoftbits— Total number of soft channel bitsnonnegative integer
Total number of soft channel bits, specified as a nonnegative integer.
DuplexMode— Duplex mode
'FDD'(default) | optional |
Duplex mode, specified as a string. Optional. Accepted values
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
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
cbsbuffers cell array either:
dimensionally matches the output code blocks,
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.
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
trblklen, which represents the length
of the original encoded transport block.
 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.