Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Uplink shared channel decoding

```
[trblkout,blkcrc,stateout]
= lteULSCHDecode(ue,chs,trblklen,cwin,statein)
```

`[`

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.

[1] 3GPP TS 36.211. "Physical Channels
and Modulation." *3rd Generation Partnership Project;
Technical Specification Group Radio Access Network; Evolved Universal
Terrestrial Radio Access (E-UTRA)*. URL: http://www.3gpp.org.

`ltePUSCHDecode`

| `lteULSCH`

| `lteULSCHDeinterleave`

| `lteULSCHInfo`

Was this topic helpful?