PSCCH DM-RS sidelink subframe timing estimate
performs
synchronization using PSCCH demodulation reference signal (DM-RS)
symbols for the time-domain waveform, offset
= lteSLFrameOffsetPSCCH(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 PSCCH demodulation reference signal (DM-RS) symbols that are used when estimating the waveform timing offset.
Create a UE configuration specifying 15 resource blocks, a normal cyclic prefix, and a PRBSet
of 1.
ue = struct('NSLRB',15,'CyclicPrefixSL','Normal','PRBSet',1);
Create a resource grid and modulate the waveform containing PSCCH DM-RS symbols.
txgrid = lteSLResourceGrid(ue); txgrid(ltePSCCHDRSIndices(ue)) = ltePSCCHDRS; txwaveform = lteSLSCFDMAModulate(ue,txgrid);
Add a time delay of five samples.
rxwaveform = [zeros(5,1); txwaveform];
Calculate the timing offset in samples.
offset = lteSLFrameOffsetPSCCH(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 PSCCH demodulation reference signal (DM-RS) symbols available for estimating the waveform timing.
Create a UE configuration specifying 15 resource blocks, a normal cyclic prefix, and a PRBSet
of 1.
ue = struct('NSLRB',15,'CyclicPrefixSL','Normal','PRBSet',1);
Create a resource grid and modulate the waveform containing PSCCH DM-RS symbols.
txgrid = lteSLResourceGrid(ue); txgrid(ltePSCCHDRSIndices(ue)) = ltePSCCHDRS; txwaveform = lteSLSCFDMAModulate(ue,txgrid);
Calculate the timing offset in samples.
[offset corr] = lteSLFrameOffsetPSCCH(ue,txwaveform);
Add a time delay of five samples.
rxwaveform = [zeros(5,1); txwaveform];
Calculate the timing offset in samples.
[offset corrDelayed] = lteSLFrameOffsetPSCCH(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
CyclicPrefixSL
— Cyclic prefix length'Normal'
(default) | 'Extended'
| optionalCyclic prefix length, specified as 'Normal'
or 'Extended'
.
Data Types: char
| string
PRBSet
— Zero-based physical resource block indexZero-based physical resource block (PRB) index, specified as an integer, an integer column vector, or a two-column integer matrix.
For D2D sidelink, the PSCCH is intended to be transmitted in a single PRB in a subframe and
therefore, specifying PRBSet
as a scalar PRB index is recommended.
For V2X sidelink, the PSCCH is intended to be transmitted in a pair of consecutive PRB
in a subframe, therefore PRBSet
must be a column vector containing
two consecutive indices. However, for a more general nonstandard multi-PRB allocation,
PRBSet
can be a set of indices specified as an integer column
vector or as a two-column integer matrix corresponding to slot-wise resource allocations
for PSCCH.
Data Types: double
CyclicShift
— Cyclic shift for DM-RS3,6,9
| optionalCyclic shift for DM-RS, specified as 0, 3, 6 or 9. It only applies for V2X sidelink.
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?