PSSCH DM-RS sidelink subframe timing estimate
performs
synchronization using PSSCH demodulation reference signal (DM-RS)
symbols for the time-domain waveform, offset
= lteSLFrameOffsetPSSCH(ue
,waveform
)waveform
,
given UE-specific settings, ue
.
The returned offset
indicates the number
of samples from the start of the input waveform to the position in
that waveform where the first subframe containing DM-RS begins.
Synchronize and demodulate a transmission that has been delayed by five samples. The transmission contains PSSCH demodulation reference signal (DM-RS) symbols that are used when estimating the waveform timing offset.
Create a UE configuration specifying 15 resource blocks, a sidelink identity of 1, a normal cyclic prefix, a PSSCH subframe number of 0, and a PRBSet
of 1.
ue = struct('NSLRB',15,'NSAID',1,'CyclicPrefixSL','Normal', ... 'NSubframePSSCH',0,'PRBSet',1);
Create a resource grid and modulate the waveform containing PSSCH DM-RS symbols.
txgrid = lteSLResourceGrid(ue); txgrid(ltePSSCHDRSIndices(ue)) = ltePSSCHDRS(ue); txwaveform = lteSLSCFDMAModulate(ue,txgrid);
Add a time delay of five samples.
rxwaveform = [zeros(5,1); txwaveform];
Calculate the timing offset in samples.
offset = lteSLFrameOffsetPSSCH(ue,rxwaveform)
offset = 5
Correct the timing offset and demodulate the received waveform.
rxGrid = lteSLSCFDMADemodulate(ue,rxwaveform(1+offset:end));
View the correlation peak for a transmission waveform that has been delayed by five samples. The transmission contains PSSCH demodulation reference signal (DM-RS) symbols available for estimating the waveform timing.
Create a UE configuration specifying 15 resource blocks, a sidelink identity of 1, a normal cyclic prefix, a PSSCH subframe number of 0, and a PRBSet
of 1.
ue = struct('NSLRB',15,'NSAID',1,'CyclicPrefixSL','Normal', ... 'NSubframePSSCH',0,'PRBSet',1);
Create a resource grid and modulate the waveform containing PSSCH DM-RS symbols.
txgrid = lteSLResourceGrid(ue); txgrid(ltePSSCHDRSIndices(ue)) = ltePSSCHDRS(ue); txwaveform = lteSLSCFDMAModulate(ue,txgrid);
Calculate the timing offset in samples.
[offset corr] = lteSLFrameOffsetPSSCH(ue,txwaveform);
Add a time delay of five samples.
rxwaveform = [zeros(5,1); txwaveform];
Calculate the timing offset in samples.
[offset corrDelayed] = lteSLFrameOffsetPSSCH(ue,rxwaveform);
Plot the correlation data before and after delay is added. Zoom in on the x-axis to view correlation peaks.
plot(corr) hold on plot(corrDelayed) hold off xlim([0 100])
Correct the timing offset and demodulate the received waveform.
rxGrid = lteSLSCFDMADemodulate(ue,rxwaveform(1+offset:end));
ue
— UE-specific settingsUser equipment settings, specified as a parameter structure containing these fields:
SidelinkMode
— Sidelink mode'D2D'
(default) | 'V2X'
| optionalSidelink mode, specified as 'D2D'
or
'V2X'
.
Data Types: char
| string
NSLRB
— Number of sidelink resource blocksNumber 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
NSAID
— Sidelink group destination identitySidelink group destination identity, specified as an integer scalar from 0 to 255. ()
NSAID
is the lower 8 bits of the full 24-bit ProSe Layer-2 group
destination ID. NSAID
and NSubframePSSCH
control the value of the scrambling sequence at the start of each
subframe.NSAID
is only required for D2D sidelink.
Data Types: double
NXID
— V2X scrambling identityV2X 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
CyclicPrefixSL
— Cyclic prefix length'Normal'
(default) | 'Extended'
| optionalCyclic prefix length, specified as 'Normal'
or 'Extended'
.
Data Types: char
| string
NSubframePSSCH
— PSSCH subframe numberPSSCH subframe number in the PSSCH subframe pool, specified as an integer scalar. ()
NSubframePSSCH
and NSAID
control the values of the
scrambling sequence. It is only required for D2D
sidelink.
Data Types: double
PRBSet
— Zero-based physical resource block indicesZero-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
waveform
— Modulated sidelink waveformModulated sidelink waveform, specified as an
NS-by-NR
numeric matrix, where NS is the number of
time-domain samples and NR is the number of
receive antennas. waveform
should be at least one subframe long and
contain the DM-RS signals.
You can generate this matrix by performing SC-FDMA modulation
on a resource matrix. To perform this modulation, use the lteSLSCFDMAModulate
function or one of the
channel model functions, such as lteFadingChannel
or lteMovingChannel
.
Data Types: double
Complex Number Support: Yes
offset
— Offset number of samplesOffset number of samples, returned as a scalar integer. This
output is the number of samples from the start of the waveform to
the position in that waveform where the first subframe containing
the DM-RS begins. offset
is computed by extracting
the timing of the peak of the correlation between waveform
and
internally generated reference waveforms containing DM-RS signals.
The correlation is performed separately for each antenna. The antenna
with the strongest correlation is used to compute offset
.
Note
offset
is the position of mod(max(abs(corr),LSF))
,
where LSF is the subframe
length.
corr
— Signal used to extract the timing offsetSignal used to extract the timing offset, returned as a complex
numeric matrix. corr
has the same dimensions
as waveform
.
You have a modified version of this example. Do you want to open this example with your edits?