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.