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