lteULSCHDecode
Uplink shared channel decoding
Description
[ returns
the information bits trblkout,blkcrc,stateout]
= lteULSCHDecode(ue,chs,trblklen,cwin,statein)trblkout decoded from the
input soft LLR codewords data cwin. The UL-SCH
decoder includes channel deinterleaver, rate recovery, turbo decoding,
block concatenation and CRC calculations. The function also returns
the type-24A transport block CRC decoding result in blkcrc and
the HARQ process decoding state in stateout.
The initial HARQ process state can be input via the optional statein parameter.
The function is capable of processing both a single codeword or pairs
of codewords, contained in a cell array, for the case of spatial multiplexing
schemes transmitting two codewords. The type of the return variable trblkout is
the same as input cwin. If cwin is
a cell array containing one or two codewords, trblkout returns
a cell array of one or two transport blocks. If cwin is
a vector of soft data, trblkout returns a vector
too. If decoding a pair of codewords, pairs of modulation schemes
and RV indicators are required to be defined in the associated parameter
fields below. This function only decodes the information bits, but
supports the presence of UCI data, CQI, RI, and HARQ-ACK, in the input
codeword. UCI should be demultiplexed then decoded separately.
Strictly speaking, because all the fields in structure ue are
optional, it is legal for this parameter to be an empty structure.
Multiple codewords can be parameterized by two different forms
of the chs structure. Each codeword can be defined
by separate elements of a 1-by-2 structure array, or the codeword
parameters can be combined together in the fields of a single scalar,
or 1-by-1, structure. Any scalar field values apply to both codewords
and a scalar NLayers is the total number. See UL-SCH Parameterization for
more details.
trblklen is an input vector (one or two
elements in length) defining the transport block lengths that the
input code blocks should be rate recovered and decoded to.
cwin is an input parameter containing the
floating point soft LLR data of the codewords to be decoded. It can
either be a single vector or a cell array containing one or two vectors.
If the latter, then all rate matching calculations assume that the
pair were transmitting on a single PUSCH, distributed across the total
number of layers defined in chs, as per TS 36.211 [1].
statein is an optional input structure
array (empty or one or two elements) which can input the current decoder
buffer state for each transport block in an active HARQ process. If statein is
not an empty array and it contains a non-empty field CBSBuffers then
this field should contain a cell array of vectors representing the
LLR soft buffer states for the set of code blocks at the input to
the turbo decoder i.e. after explicit rate recovery. The updated buffer
states after decoding are returned in the CBSBuffers field
in the output parameter stateout. The statein array
would normally be generated and recycled from the stateout of
previous calls to lteULSCHDecode as part of a sequence of HARQ transmissions.
trblkout is the output parameter containing
the decoded information bits. It is either a single vector or a cell
array containing one or two vectors, depending on the class and dimensionality
of cwin.
blkcrc is an output array (one or two elements)
containing the result of the type-24A transport block CRC decoding
for the transport blocks.
stateout, the final output parameter, is
a one element structure array containing the internal state of each
transport block decoder in the fields CBSBuffers, CBSCRC, blkcrc.
The stateout array would normally be reapplied
via the statein variable of subsequent lteULSCHDecode function
calls as part of a sequence of HARQ retransmissions.
Examples
Input Arguments
Output Arguments
References
[1] 3GPP TS 36.211. “Evolved Universal Terrestrial Radio Access (E-UTRA); Physical Channels and Modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network. URL: https://www.3gpp.org.
Version History
Introduced in R2014a
See Also
lteULSCH | lteULSCHDeinterleave | ltePUSCHDecode | lteULSCHInfo