Decode NPDSCH symbols
sym, the NB-IoT physical downlink shared channel
(NPDSCH) symbols, for cell-wide settings
channel-specific configuration structure
chs. The channel
decoding process comprises deprecoding, layer demapping, soft demodulation,
descrambling, and codeword recovery. The decoding inverts the NPDSCH channel
encoding process described in Section 10.2.3 of . The
function returns a codeword
cw of soft bits, the decoder state
stateout for reception of a bundle transmission, and the
received constellation symbols
Generate and Receive NPDSCH Symbols
Generate and receive the NPDSCH symbols subframe by subframe for a bundle of 12 subframes.
Specify the cell-wide settings and channel transmission configuration in parameter structures
enb.NNCellID = 0; enb.NBRefP = 1; enb.NFrame = 1; chs.NSF = 3; chs.NRep = 4; chs.RNTI = 0; chs.NPDSCHDataType = 'NotBCCH';
Set the output codeword length to 960 and generate the codeword bits. Do not provide the encoder or decoder states at the start of the bundle.
cwLen = 960; eState = ; statein = ; txcw = ones(cwLen,1);
Generate the NPDSCH symbols for each of the 12 subframes and then decode them.
for subframeIdx = 0:(chs.NSF*chs.NRep-1) enb.NSubframe = subframeIdx; [sym,eState] = lteNPDSCH(enb,chs,txcw,eState); [cw,stateout] = lteNPDSCHDecode(enb,chs,sym,statein); statein = stateout; end
The value of the field
CWSFCount in structure
dstate indicates that all three subframes in the codeword have been received four times.
4 4 4
enb — Cell-wide settings
Cell-wide settings, specified as a structure containing these fields:
|Name||Required or Optional||Values||Description||Data Types|
|Required||Nonnegative integer||Narrowband physical layer cell identity (PCI)|
|Required||Nonnegative integer||Subframe number|
|Required||Number of narrowband reference signal (NRS) antenna
ports. To indicate transmission on a single antenna port
(port 0) and use minimum mean squared error (MMSE)
equalization for reception, specify this field as
chs — Channel transmission configuration
Channel transmission configuration, specified as a structure that containing these fields:
|Name||Required or Optional||Values||Description||Dependencies||Data Types|
Type of data carried by the NPDSCH, specified as one of these values:
|See Dependencies column||Nonnegative integer||Number of subframes to which a codeword is mapped, not including repetitions|
|Required||Nonnegative integer||Number of repetitions||—|
|See Dependencies column||Nonnegative integer||16-bit radio network temporary identifier (RNTI)|
|Optional||Channel state information (CSI). To scale the soft
bits by CSI during the equalization process, specify
this field as ||—|
sym — Modulated NPDSCH symbols
Modulated NPDSCH symbols, specified as an NRE-by-NRxAnts complex-valued matrix, where:
NRE is the number of quadrature phase-shift keying (QPSK) symbols per antenna and per subframe assigned to the NPDSCH;
NRxAnts is the number of receive antennas.
Complex Number Support: Yes
statein — Initial encoder state
Input encoder state for the transmission of a bundle, specified as a
structure containing the fields listed in the
output. This argument can be empty only when no information is provided,
such as at the first subframe of a bundle.
hest — Channel estimate for a transmission layer
complex-valued 3-D array
Channel estimate for a transmission layer, specified as an NRE-by-NRxAnts-by-NNBRefP complex-valued array, where:
NRE is the number of encoded NPDSCH symbols per antenna and per subframe;
NRxAnts is the number of receive antennas;
NNBRefP is the number NRS antenna ports you specify in the
NBRefPfield of the
lteNPDSCHDecode function assumes that
this estimate uses the NRSs.
Complex Number Support: Yes
noiseest — Noise estimate
Noise estimate of the noise power spectral density per RE on the received subframe, specified as a nonnegative scalar.
cw — Codeword of soft bits
Codeword of soft bits, returned as an NSF-by-1 binary vector, where NSF is the number of subframes.
stateout — Output decoder state
Output decoder state for the next subframe, returned as a structure. This output contains the internal state of each transport block in these fields:
|integer in the interval [0, ||Index of a subframe within a bundle, in zero-based
form. The |
Frame number at initialization point of
scrambling sequence. When the subframe being
processed is at the initialization point, this field
is equal to the
Subframe number at initialization point. When
the subframe being processed is at the
initialization point, this field is equal to the
|NSF-by-1 binary vector||Buffer to store the soft-combined log-likelihood
ratio (LLR) bits after codeword descrambling. The length
of this field is the same as the length of the codeword,
|NSF-by-1 integer-valued vector||Repetition counter. The length of this field is the
same as the length of the codeword,
|Logical ||Codeword receipt indicator. The
|Logical ||End of bundle indicator. The
symbols — Received constellation symbols
Received constellation symbols, returned as a complex-valued vector.
To use this function for a bundle transmission, follow these steps:
lteNPDSCHDecodefunction again, specifying the
stateininput as the
stateoutoutput returned by the previous call to the function.
Repeat step 2 until the
lteNPDSCHDecodefunction returns the
EndOfTxfield of the
true), indicating the end of the bundle.
 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: https://www.3gpp.org.
 3GPP TS 36.321. “Medium Access Control (MAC) protocol specification.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL: https://www.3gpp.org.