Main Content

lteNPDCCHDecode

Decode NPDCCH symbols

Description

[cw,stateout,symbols] = lteNPDCCHDecode(enb,chs,sym) decodes sym, the NB-IoT physical downlink control channel (NPDCCH) symbols, for cell-wide settings enb and channel-specific configuration structure chs. The channel decoding comprises deprecoding, layer demapping, soft demodulation, descrambling, and codeword recovery. The decoding inverts the NPDCCH channel encoding process described in 3GPP TS 36.211 Section 10.2.5 of [1]. The function returns a codeword cw of soft bits, the decoder state stateout for reception of a bundle (full set of repeated transmissions of a single downlink control information), and the received constellation symbols symbols.

[___] = lteNPDCCHDecode(enb,chs,sym,statein) decodes the NPDCCH symbols for the initial decoder state statein.

example

[___] = lteNPDCCHDecode(enb,chs,sym,hest,noiseest) decodes the NPDCCH symbols for the channel estimate hest and noise estimate noiseest.

[___] = lteNPDCCHDecode(enb,chs,sym,hest,noiseest,statein) decodes the NPDCCH symbols for the channel estimate, noise estimate, and initial decoder state.

Examples

collapse all

Generate and receive the NPDCCH symbols subframe by subframe for a bundle of 10 subframes.

Specify the cell-wide settings and channel transmission configuration parameter structures enb and chs.

enb.NNCellID = 0;
enb.NBRefP = 1;
chs.NRep = 10;

Set the output codeword length to 320 and generate the codeword bits. Specify the encoder and decoder state as empty at the start of the bundle.

cwLen = 320;
cw = ones(cwLen,1); % Codeword bits
estate = []; 
dstate = []; 

Generate the NPDCCH symbols for each of the 10 subframes and then decode them.

for nsf = 0:chs.NRep-1
       enb.NSubframe = nsf;
       [sym,estate] = lteNPDCCH(enb,chs,cw,estate);
       [rxcw,dstate] = lteNPDCCHDecode(enb,chs,sym,dstate);
end

The value of the field CWSFCount in structure dstate indicates that NPDCCH subframe has been received ten times.

dstate.EndOfTx
ans = logical
   1

dstate.CWSFCount
ans = 
10

Input Arguments

collapse all

Cell-wide settings, specified as a structure containing these fields.

NameRequired or OptionalValuesDescriptionData Types
NNCellIDRequiredNonnegative integerNarrowband physical layer cell identity double
NBRefPRequired1, 2Number of narrowband reference signal (NRS) antenna ports.double
NSubframeRequiredNonnegative integerSubframe numberdouble

Data Types: struct

Channel transmission configuration, specified as a structure that containing these fields.

NameRequired or OptionalValuesDescriptionData Types
NRepRequiredNonnegative integerNumber of repetitionsdouble
CSIOptional'On' (default), 'Off'Channel state information (CSI). To scale the soft bits by CSI during the equalization process, specify this field as 'On'. Otherwise, specify this field as 'Off'.char, string

Data Types: struct

Modulated NPDCCH 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 NPDCCH.

  • NRxAnts is the number of receive antennas.

Data Types: double
Complex Number Support: Yes

Initial encoder state for transmission of a bundle, specified as a structure containing the fields listed in the stateout output. At the start of the bundle transmission, set statein to empty. The lteNPDCCHDecode function manages the state during subsequent calls for the transmissions of the bundle and resets it automatically at the end of the bundle.

Data Types: struct

Channel estimate, specified as an NRE-by-NRxAnts-by-NNBRefP complex-valued array, where:

  • NRE is the number of QPSK symbols per antenna and per subframe.

  • NRxAnts is the number of receive antennas.

  • NNBRefP is the number NRS antenna ports you specify in the NBRefP field of the enb input.

The lteNPDCCHDecode function assumes that this estimate uses the NRSs.

Data Types: double
Complex Number Support: Yes

Noise estimate of the noise power spectral density per resource element on the received subframe, specified as a numeric scalar. This estimate is provided by the lteDLChannelEstimate function.

Data Types: double

Output Arguments

collapse all

Codeword of soft bits, returned as a numeric column vector.

Data Types: double

Output decoder state for the next subframe, returned as a structure. This output contains the internal state of each transport block in these fields.

NameValuesDescriptionData Types
SubframeIdx

0 (default),

integer in the interval [0, chs. NRep – 1]

Index of a subframe within a bundle, in zero-based form. The lteNPDCCHDecode function returns this field as the SubframeIdx field of the statein input increased by one. When the input value of SubframeIdx in the statein input reaches its maximum value, the function returns this field as 0. If no input exists in statein, the default input is 0. A value of 0 indicates that the transmission has reached the end of a bundle, which the function also indicates by setting the EndOfTx field to 1 (true).double
InitNSubframeNonnegative integer

Subframe number, either at the initialization point of the scrambling sequence or reinitialization point of the sequence done at every 4th NPDCCH subframe. When the subframe being processed is at the initialization or reinitialization point, this field is equal to the mod(enb.Nsubframe,10). Otherwise, it is equal to the input in statein. If input to statein is not provided, the InitNSubframe is equal to mod(enb.NSubframe,10).

double
CWBufferNumeric column vectorBuffer 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, cw. At the beginning of a bundle, the lteNPDCCHDecode function resets this field.double
CWSFCount

0 (default),

nonnegative integer

Repetition counter which indicates how many repetitions of cw the CWBuffer field has recovered. At the beginning of a bundle, the lteNPDCCHDecode function resets this field.double
EndOfCWLogical 1 (true) or 0 (false)Codeword receipt indicator. The lteNPDCCHDecode function returns this field as 1 (true) when the entire codeword has been received and the CWSFCount field is as least 1. At the beginning of a bundle, the lteNPDCCHDecode function resets this field.logical
EndOfTxLogical 1 (true) or 0 (false)End of bundle indicator. The lteNPDCCHDecode function returns this field as 1 (true) when the transmission reaches the end of a bundle. Otherwise, the lteNPDCCHDecode function returns this field as 0 (false). At the beginning of a bundle, the lteNPDCCHDecode function resets this field.logical

Data Types: struct

Received constellation symbols, returned as a complex-valued vector.

Data Types: double
Complex Number Support: Yes

Tips

To use this function for transmission of a bundle, follow these steps:

  1. Call the lteNPDCCHDecode function and specify the initial encoder state using the statein input. The stateout output represents the output decoder state of the first transmission of the bundle.

  2. Call the lteNPDCCHDecode function again and specify the statein input as the stateout output returned by the previous call to the function.

  3. Repeat step 2 until the lteNPDCCHDecode function returns the EndOfTx field of the stateout output as 1 (true), indicating the end of the bundle. The lteNPDCCHDecode automatically resets the state at the end of the bundle transmission.

References

[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: https://www.3gpp.org.

Version History

Introduced in R2019b