Main Content

ltePMCHDecode

R2026b

Physical multicast channel decoding

Since R2026b

Description

[cw,symbols] = ltePMCHDecode(enb,chs,tbs,sym) performs physical multicast channel (PMCH) decoding on the vector of modulated PMCH symbols sym, using cell-wide settings enb, PMCH channel configuration chs, and transport block size tbs. The channel inverse processing includes optional frequency deinterleaving, soft demodulation, descrambling, and optional time interleaving cyclic shifting as defined in TS 36.211, Section 6.5. It returns a vector of codeword soft bits cw and a vector of received constellation symbols symbols.

example

[cw,symbols] = ltePMCHDecode(enb,chs,tbs,sym,hest,noiseest) performs MMSE equalization on the input symbols before decoding, given channel estimate hest and noise estimate noiseest. By default, cw is scaled by channel state information (CSI) calculated during the equalization process.

example

Examples

collapse all

Create a cell-wide settings structure. Specify a subcarrier spacing of 1.25 kHz, an MBSFN area identity of 10, and subframe number 1.

enb = struct();
enb.SubcarrierSpacing = 1.25;
enb.NMBSFNID = 10;
enb.NSubframe = 1;

Create a PMCH channel configuration structure with time-frequency interleaving.

chs = struct();
chs.Modulation = "QPSK";
chs.PMCHTimeInterleavingN = 16;
chs.RV = 0;
chs.CyclicShiftAlpha = 1;
chs.PMCHFreqInterleaving = "on";

Specify a transport block size of 45352 and generate a random codeword of length 9600. Generate PMCH symbols.

tbs = 45352;
txCW= randi([0 1],[9600 1]);
sym = ltePMCH(enb,chs,tbs,txCW);

Pass the symbols through an AWGN channel with a signal-to-noise ratio of 20 dB.

sym = awgn(sym,20);

Decode the PMCH symbols. Convert the recovered soft bits to hard bits and compare with the transmitted bits.

[cw,symbols] = ltePMCHDecode(enb,chs,tbs,sym);
isequal(txCW,cw > 0)
ans = logical
   1

Create a cell-wide settings structure. Specify a subcarrier spacing of 1.25 kHz, an MBSFN area identity of 15, and subframe number 5.

enb = struct();
enb.SubcarrierSpacing = 1.25;
enb.NMBSFNID = 15;
enb.NSubframe = 5;

Create a PMCH channel configuration structure.

chs = struct();
chs.Modulation = "QPSK";

Specify a transport block size of 45352 and generate a random codeword of length 9600. Generate PMCH symbols.

tbs = 45352;
txCW = randi([0 1], [9600 1]);
sym = ltePMCH(enb,chs,tbs,txCW);

Generate a random channel for two receive antennas. Add AWGN with a signal-to-noise ratio of 20 dB.

nSym = length(sym);
NRxAnts = 2;
SNRdB = 20;
h = (randn(nSym,NRxAnts) + 1i*randn(nSym,NRxAnts));
[sym,noiseest] = awgn(h.*sym,SNRdB,"measured");

Assume perfect channel knowledge by setting the channel estimate equal to the channel you created.

hest = h;

Decode with MMSE equalization and display the bit error rate.

[cw,symbols] = ltePMCHDecode(enb,chs,tbs,sym,hest,noiseest);
BER = sum(txCW ~= (cw > 0))/length(cw);
disp(BER)
     0

Input Arguments

collapse all

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

Parameter FieldRequired or OptionalValuesDescription
NMBSFNIDRequiredinteger in the range [0, 255]MBSFN area identity
NSubframeRequirednonnegative integerSubframe number. For 0.37 kHz subcarrier spacing, this value represents the 3 ms slot number.
NFrameOptionalnonnegative integer (default 0)Frame number
CyclicPrefixOptional'Extended' (default)Cyclic prefix length. If present, must be set to 'Extended'.
SubcarrierSpacingOptional15 (default), 7.5, 2.5, 1.25, 0.37Subcarrier spacing in kHz for MBSFN subframes or slots
NonMBSFNRegionLengthOptional1, 2 (default)Number of OFDM symbols in the non-MBMS region of the subframe. Applies only to 15 kHz subcarrier spacing.

Data Types: struct

PMCH channel transmission configuration, specified as a structure containing these fields.

Parameter FieldRequired or OptionalValuesDescription
ModulationRequired'QPSK', '16QAM', '64QAM', '256QAM'Modulation scheme
PMCHTimeInterleavingNOptional[] (default), integer in the range [1, 16]Number of PMCH transmissions of a single transport block in a time-interleaved PMCH set. If absent, set to [], or set to 1, time interleaving is not enabled.
PMCHFreqInterleavingOptional'off' (default), 'on'Frequency interleaving
CSIOptional'On' (default), 'Off'Determines whether soft bits are scaled by channel state information. Applies only when you specify hest and noiseest.

The following parameters are required when PMCHTimeInterleavingN is greater than 1 or not equal to [] (time interleaving enabled).

RVRequiredinteger in the range [0, PMCHTimeInterleavingN–1]Redundancy version and index of the PMCH in the time-interleaved PMCH set
CyclicShiftAlphaOptional1 (default), 2, 3Cyclic shift alpha value for PMCH time interleaving

Data Types: struct

Transport block size of the payload associated with the received data, specified as a nonnegative integer. The function uses this value to derive the number of code blocks for time-frequency deinterleaving calculations.

Data Types: double

Modulated PMCH symbols, specified as a complex vector or complex matrix. Specify this input as a matrix if you specify hest and noiseest. Otherwise, specify it as a vector. The vector has N elements, where N is the number of symbols per antenna assigned to the PMCH. When you specify hest and noiseest, specifysym as an N-by-NRxAnts matrix, where NRxAnts is the number of receive antennas.

Data Types: double
Complex Number Support: Yes

Channel estimate, specified as a complex matrix. The size of the matrix is N-by-NRxAnts, where N is the number of symbols per antenna assigned to the PMCH and NRxAnts is the number of receive antennas.

Data Types: double
Complex Number Support: Yes

Noise estimate, specified as a nonnegative scalar.

Data Types: double

Output Arguments

collapse all

Codeword soft bits, returned as a real column vector. If CSI weighting is enabled and you specify hest and noiseest, the soft bits are scaled by channel state information.

Data Types: double

Received constellation symbols, returned as a complex column vector. If you specify hest and noiseest, these are the MMSE-equalized symbols.

Data Types: double
Complex Number Support: Yes

References

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

Version History

Introduced in R2026b