Main Content

lteSLChannelEstimatePSSCH

PSSCH sidelink channel estimation

Description

[hest] = lteSLChannelEstimatePSSCH(ue,rxgrid) returns an estimate for the channel by averaging the least squares estimates of the reference symbols across time and copying these estimates across the allocated resource elements within the time frequency grid. The channel estimation configuration uses the method described in TS 36.101 [1], Annex F.

example

[hest] = lteSLChannelEstimatePSSCH(ue,cec,rxgrid) also accepts the channel estimator configuration structure, cec, to adjust the default method and parameters defined for estimating the channel.

example

[hest,noiseest] = lteSLChannelEstimatePSSCH(___) also returns an estimate of the noise power spectral density for the channel. This syntax supports input options from prior syntaxes.

example

Examples

collapse all

Estimate the channel characteristics given the PSSCH-received resource grid containing PSSCH DM-RS symbols. Use the default channel estimation configuration method, as defined in TS 36.101, Annex F.

Configure UE Settings

Define UE-specific settings in a parameter structure.

ue = struct('NSLRB',50,'CyclicPrefixSL','Normal','NSAID',255, ...
           'Modulation','QPSK','NSubframePSSCH',0,'PRBSet',(30:39)');

Populate Subframe with PSSCH Symbols

Create the subframe grid and indices for the subframe. Create shared channel and demodulation reference signal (DM-RS) symbols. Populate the subframe with the shared channel and DM-RS symbols.

subframe = lteSLResourceGrid(ue);
[psschIndices,psschInfo] = ltePSSCHIndices(ue);

psschSymbols = ltePSSCH(ue,zeros(psschInfo.G,1));
subframe(psschIndices) = psschSymbols;

subframe(ltePSSCHDRSIndices(ue)) = ltePSSCHDRS(ue); 

Estimate Channel Characteristics

Estimate the channel characteristics by using the received resource grid containing PSSCH DM-RS symbols.

  • Perform sidelink SC-FDMA modulation

  • No channel impairment is applied, so set the received waveform equal to the transmit waveform

  • Perform sidelink SC-FDMA demodulation and channel estimation

txWaveform = lteSLSCFDMAModulate(ue,subframe);

rxWaveform = txWaveform;

rxGrid = lteSLSCFDMADemodulate(ue,rxWaveform);
hest = lteSLChannelEstimatePSSCH(ue,rxGrid);

Estimate the channel characteristics given the PSSCH-received resource grid containing PSSCH DM-RS symbols.

Create Parameter Structures

Define UE-specific settings and channel estimation configuration settings in parameter structures.

ue = struct('NSLRB',50,'CyclicPrefixSL','Normal','NSAID',255, ...
           'Modulation','QPSK','NSubframePSSCH',0,'PRBSet',(30:39)');
cec = struct('FreqWindow',7,'TimeWindow',1,'InterpType','cubic', ...
            'PilotAverage','UserDefined');

Populate Subframe with PSSCH Symbols

Create the subframe grid and indices for the subframe. Create shared channel and demodulation reference signal (DM-RS) symbols. Populate the subframe with shared channel and DM-RS symbols.

subframe = lteSLResourceGrid(ue);
[psschIndices,psschInfo] = ltePSSCHIndices(ue);

psschSymbols = ltePSSCH(ue,zeros(psschInfo.G,1));
subframe(psschIndices) = psschSymbols;

subframe(ltePSSCHDRSIndices(ue)) = ltePSSCHDRS(ue); 

Estimate Channel Characteristics

Estimate the channel characteristics by using the received resource grid containing PSSCH DM-RS symbols.

  • Perform sidelink SC-FDMA modulation

  • No channel impairment is applied, so set the received waveform equal to the transmit waveform

  • Perform sidelink SC-FDMA demodulation and channel estimation

txWaveform = lteSLSCFDMAModulate(ue,subframe);

rxWaveform = txWaveform;

rxGrid = lteSLSCFDMADemodulate(ue,rxWaveform);
hest = lteSLChannelEstimatePSSCH(ue,cec,rxGrid);

Estimate the channel characteristics and noise power spectral density given the PSSCH-received resource grid containing PSSCH DM-RS symbols.

Create Parameter Structures

Define UE-specific settings and channel estimation configuration settings in parameter structures.

ue = struct('NSLRB',50,'CyclicPrefixSL','Normal','NSAID',255, ...
     'Modulation','QPSK','NSubframePSSCH',0,'PRBSet',(30:39)');
cec = struct('FreqWindow',7,'TimeWindow',1,'InterpType','cubic', ...
     'PilotAverage','UserDefined');

Populate Subframe with PSSCH Symbols

Create the subframe grid and indices for the subframe. Create shared channel and demodulation reference signal (DM-RS) symbols. Populate the subframe with shared channel and DM-RS symbols.

subframe = lteSLResourceGrid(ue);

[psschIndices,psschInfo] = ltePSSCHIndices(ue);
psschSymbols = ltePSSCH(ue,zeros(psschInfo.G,1));

subframe(psschIndices) = psschSymbols;

Create the control DM-RS and indices. Add the PSSCH DM-RS symbols to the subframe.

subframe(ltePSSCHDRSIndices(ue)) = ltePSSCHDRS(ue);

Estimate Channel Characteristics

Estimate the channel characteristics by using the received resource grid containing PSSCH DM-RS symbols.

  • Perform sidelink SC-FDMA modulation

  • Add noise to the transmitted signal

  • Perform sidelink SC-FDMA demodulation and channel estimation

  • View the noise estimate

txWaveform = lteSLSCFDMAModulate(ue,subframe);

rxWaveform = awgn(txWaveform,15,'measured');

rxGrid = lteSLSCFDMADemodulate(ue,rxWaveform);
[hest,noiseest] = lteSLChannelEstimatePSSCH(ue,cec,rxGrid);

noiseest
noiseest = 
0.0027

Input Arguments

collapse all

User equipment settings, specified as a structure containing these fields.

Sidelink mode, specified as 'D2D' or 'V2X'.

Data Types: char | string

Number of sidelink resource blocks, specified as an integer scalar from 6 to 110.

Example: 6, which corresponds to a channel bandwidth of 1.4 MHz.

Data Types: double

Sidelink group destination identity, specified as an integer in the interval [0, 255].

This field is the lower eight bits of the full 24-bit ProSe Layer-2 group destination ID. This field and the NSubframePSSCH field control the value of the scrambling sequence at the start of each subframe. This field is required only for D2D sidelink.

Data Types: double

Cyclic prefix length, specified as 'Normal' or 'Extended'.

Data Types: char | string

V2X scrambling identity, specified as an integer scalar. NXID is the 16 bit CRC associated with the PSCCH SCI grant. It is only required for V2X sidelink.

Data Types: double

PSSCH subframe number in the PSSCH subframe pool, specified as an integer scalar (nssfPSSCH).

NSubframePSSCH and NSAID control the values of the scrambling sequence. It is only required for D2D sidelink.

Data Types: double

Zero-based physical resource block (PRB) indices, specified as an integer column vector or a two-column integer matrix.

The PSSCH is intended to be transmitted in the same PRB in each slot of a subframe. Therefore, specifying PRBSet as a single column of PRB indices is recommended. However, for a nonstandard slot-hopping PRB allocation, PRBSet can be specified as a two-column matrix of indices corresponding to slot-wise resource allocations for PSSCH.

Data Types: double

Data Types: struct

Received resource element grid, specified as an NSC-by-NSym-by-NR array of complex symbols.

  • NSC is the number of subcarriers.

  • NSym = NSF × NSymPerSF = 1 × NSymPerSF

    • NSF is the total number of subframes. For this function rxgrid must contain one subframe.

    • NSymPerSF is the number of SC-FDMA symbols per subframe.

      • For normal cyclic prefix, a subframe contains 14 SC-FDMA symbols.

      • For extended cyclic prefix, a subframe contains 12 SC-FDMA symbols.

    • NR is the number of receive antennas.

Data Types: double
Complex Number Support: Yes

PSSCH channel estimation settings, specified as a structure that can contain these fields.

Size of frequency window, specified as an integer that is odd or a multiple of 12. FreqWindow is the number of resource elements (REs) used to average over frequency.

Data Types: double

Size of time window, specified as an odd integer. TimeWindow is the number of resource elements (REs) used to average over time.

Data Types: double

Type of 2-D interpolation used during interpolation, specified as one of these supported choices.

ValueDescription
'nearest'Nearest neighbor interpolation
'linear'Linear interpolation
'natural'Natural neighbor interpolation
'cubic'Cubic interpolation
'v4'MATLAB® 4 griddata method
'none'Disables interpolation

For details, see griddata.

Data Types: char | string

Type of pilot averaging, specified as 'UserDefined' or 'TestEVM'.

The 'UserDefined' pilot averaging uses a rectangular kernel of size cec.FreqWindow-by-cec.TimeWindow and performs a 2-D filtering operation on the pilots. Pilots near the edge of the resource grid are averaged less because they have no neighbors outside of the grid.

For cec.FreqWindow = 12×X (that is, any multiple of 12) and cec.TimeWindow = 1, the estimator enters a special case where an averaging window of (12×X)-in-frequency is used to average the pilot estimates. The averaging is always applied across (12×X) subcarriers, even at the upper and lower band edges. Therefore, the first (6×X) symbols at the upper and lower band edge have the same channel estimate. This operation ensures that averaging is always done on 12 (or a multiple of 12) symbols. The 'TestEVM' pilot averaging ignores other structure fields in cec, and for the transmitter EVM testing, it follows the method described in TS 36.101, Annex F.

Data Types: char | string

Data Types: struct

Output Arguments

collapse all

Channel estimate between each transmit and receive antenna, returned as an NSC-by-NSym-by-NR array of complex symbols. NSC is the total number of subcarriers, NSym is the number of SC-FDMA symbols, and NR is the number of receive antennas.

For cec.InterpType = 'none',

  • No interpolation between the pilot symbol estimates is performed and no virtual pilots are created

  • hest contains channel estimates in the locations of transmitted DM-RS symbols for each received antenna and all other elements of hest are 0

  • The averaging of pilot symbol estimates, described by cec.TimeWindow and cec.FreqWindow, is still performed

Noise estimate, returned as a numeric scalar. When cec.PilotAverage is 'UserDefined', this output is the power spectral density of the noise present on the estimated channel response coefficients. Otherwise, noiseest returns 0.

References

[1] 3GPP TS 36.101. “Evolved Universal Terrestrial Radio Access (E-UTRA); User Equipment (UE) Radio Transmission and Reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network. URL: https://www.3gpp.org.

Version History

Introduced in R2017a