nrPUSCHDecode
Decode PUSCH modulation symbols
Syntax
Description
[
returns soft bits cw
,symbols
] = nrPUSCHDecode(sym
,mod
,nid
,rnti
)cw
and constellation symbols
symbols
resulting from the inverse operation of physical uplink
shared channel (PUSCH) processing from TS 38.211 Section 6.3.1 [1]. The decoding consists of
layer demapping, demodulation of symbols sym
with modulation scheme
mod
, and descrambling with scrambling identity
nid
. The input rnti
is the radio network
temporary identifier (RNTI) of the user equipment (UE). In this syntax, multi-input
multi-output (MIMO) deprecoding and transform deprecoding are disabled and the function
assumes that the input symbols contain data symbols only.
[
also specifies transform deprecoding as a logical value and the number of allocated PUSCH
resource blocks. When cw
,symbols
] = nrPUSCHDecode(sym
,mod
,nid
,rnti
,nVar
,transformPrecode
,mrb
)transformPrecode
is set to
true
, the function applies the inverse of transform precoding defined
in TS 38.211 Section 6.3.1.4. mrb
specifies the allocated number of
PUSCH resource blocks. The MIMO deprecoding is disabled. When you use this syntax, the
function assumes the input symbols contain data symbols only.
[
also specifies the transmission scheme. When cw
,symbols
] = nrPUSCHDecode(sym
,mod
,nid
,rnti
,nVar
,transformPrecode
,mrb
,txScheme
,nLayers
,tpmi
)txScheme
is set to
'codebook'
, the function performs MIMO deprecoding based on the
specified number of transmission layers nLayers
and transmitted
precoding matrix indicator (TPMI) tpmi
. When you use this syntax, the
function assumes the input symbols contain data symbols only.
[
returns soft bits cw
,symbols
] = nrPUSCHDecode(carrier
,pusch
,sym
,nVar
)cw
and constellation symbols
symbols
for the specified carrier configuration
carrier
and PUSCH configuration pusch
. The input
sym
is the received PUSCH symbols for each layer and
nVar
specifies the noise variance scaling factor of the soft bits.
When you use this syntax with transform precoding, the function assumes the input symbols
contain data and PT-RS symbols (if applicable) and uses only data symbols for further
processing.
[
specifies target code rate cw
,symbols
] = nrPUSCHDecode(carrier
,pusch
,tcr
,tbs
,oack
,ocsi1
,ocsi2
,sym
,nVar
)tcr
, transport block size
tbs
, and uplink control information. oack
is the
hybrid automatic repeat request acknowledgment (HARQ-ACK) payload length.
ocsi1
is the channel state information (CSI) part 1 payload length.
ocsi2
is the CSI part 2 payload length. When you use this syntax with
transform precoding, the function assumes that the input symbols contain data and PT-RS
symbols (if applicable) and uses only data symbols for further processing. The function also
handles the UCI placeholders when descrambling.
[
specifies the format of the cw
,symbols
] = nrPUSCHDecode(___,UniformCellOutput=celloutput
)cw
and symbols
outputs
in addition to the input arguments in any of the previous syntaxes. Use this syntax with
UniformCellOutput=true
to enable C++ code generation when the number of
layers is greater than 4. In this case, the function returns cw
and
symbols
as a cell array irrespective of the number of layers. (since R2024a)
Examples
Input Arguments
Output Arguments
References
[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.