Documentation

ltePUSCHDRS

PUSCH demodulation reference signal

Syntax

  • [seq,info,layers] = ltePUSCHDRS(ue,chs)
    example

Description

example

[seq,info,layers] = ltePUSCHDRS(ue,chs) returns complex matrices, seq, and layers containing PUSCH Demodulation Reference Signal (DRS) values, and information structure, info, for UE-specific settings, ue, and channel transmission configuration, chs. seq is of size M-by-P. Where M is the number of DRS symbols per antenna and P is the number of transmission antennas. When P is greater than 1, the DRS is precoded using spatial multiplexing. layers is a matrix of size M-by-NU, where M is the number of DRS symbols per layer and NU is the number of transmission layers.

For short base reference sequences, such as those used with PUSCH allocations of 1 or 2 PRBs, Zadoff-Chu sequences are not used. In this case, RootSeq and NZC are set to –1. If seq output is empty, such as when the input PRBSet is empty, the info structure contains all fields, but each field is either empty for vector fields or –1 for scalar fields.

Examples

collapse all

Generate PUSCH DRS

Generated the PUSCH Demodulation Reference Signal (DRS) values for UE-specific settings.

Initialize UE specific (ue) and channel (chs) configuration structures. Generate PUSCH DRS values.

ue.NCellID = 1;
ue.NSubframe = 0;
ue.CyclicPrefixUL = 'Normal';
ue.Hopping = 'Off';
ue.SeqGroup = 0;
ue.CyclicShift = 0;
ue.NTxAnts = 1;

chs.PRBSet = (0:5).';
chs.NLayers = 1;
chs.OrthCover = 'Off';
chs.DynCyclicShift = 0;

puschSeq = ltePUSCHDRS(ue,chs);
puschSeq(1:10)
ans =

   1.0000 + 0.0000i
  -0.0810 + 0.9967i
  -0.9610 + 0.2766i
  -0.8839 - 0.4677i
  -0.6886 - 0.7251i
  -0.7692 - 0.6390i
  -0.9912 - 0.1324i
  -0.6447 + 0.7645i
   0.6779 + 0.7352i
   0.4872 - 0.8733i

Generate PUSCH DRS Using Alternate IDs

Demonstrate Uplink Release 11 cooordinated multipoint (CoMP) operation. Intercell interference can be avoided by using a virtual cell identity and a distinct DMRS cyclic shift hopping identity for a potentially interfering UE in a neighboring cell.

Configuration for UE of interest, UE 1 in cell 1

ue1.NCellID = 1;
ue1.NSubframe = 0;
ue1.CyclicPrefixUL = 'Normal';
ue1.NTxAnts = 1;
ue1.Hopping = 'Off';
ue1.SeqGroup = 0;
ue1.CyclicShift = 0;

chs1.PRBSet = (0:5).';
chs1.NLayers = 1;
chs1.DynCyclicShift = 0;
chs1.OrthCover = 'Off';

Configuration for interferer, UE 2 in cell 2

ue2.NCellID = 2;
ue2.NSubframe = 0;
ue2.CyclicPrefixUL = 'Normal';
ue2.NTxAnts = 1;
ue2.Hopping = 'Off';
ue2.SeqGroup = 0;
ue2.CyclicShift = 0;

chs2.PRBSet = (0:5).';
chs2.NLayers = 1;
chs2.DynCyclicShift = 0;
chs2.OrthCover = 'Off';

Measure the interference between the DRS signals:

interferenceNoCoMP = abs(sum(ltePUSCHDRS(ue1,chs1).*conj(ltePUSCHDRS(ue2,chs2))))
interferenceNoCoMP =

   21.3188

Reconfigure for CoMP operation: use virtual cell identity equal to the cell identity for the UE of interest, and configure the two UEs with different cyclic shift hopping patterns via the DMRS identity parameter:

ue1.NDMRSID = 1;
ue2.NPUSCHID = ue1.NCellID;
ue2.NDMRSID = 2;

Measure the interference between the DRS signals when using CoMP:

interferenceUsingCoMP = abs(sum(ltePUSCHDRS(ue1,chs1).*conj(ltePUSCHDRS(ue2,chs2))))
interferenceUsingCoMP =

   1.0426e-13

Compare the correlations between the DRS signals for two UEs with and without CoMP, interferenceUsingCoMP and interferenceNoCoMP respectively. With CoMP, the interference is reduced to effectively zero.

Input Arguments

collapse all

ue — UE-specific settingsstructure

UE-specific configuration, specified as a structure. ue can contain the following fields.

Parameter FieldRequired or OptionalValuesDescription
NULRBRequired

6, 15, 25, 50, 75, 100

Number of uplink (UL) resource blocks (RBs)

NCellIDRequired

Nonnegative scalar integer

Physical layer cell identity

NSubframeRequired

Nonnegative scalar integer

Subframe number

CyclicPrefixULOptional

'Normal' (default), 'Extended'

Cyclic prefix length for uplink, specified as a string.

NTxAntsOptional

1 (default), 2, 4

Number of transmission antennas

HoppingOptional

'Off' (default), 'Group', or 'Sequence'

Frequency hopping method

SeqGroupOptional

0 (default), 0 ... 29, Nonnegative scalar integer.

PUSCH sequence group assignment (delta_SS)

Only used if NDMRSID or NPUSCHID is absent
CyclicShiftOptional

0 (default), 0 ... 7, Nonnegative scalar integer.

Number of cyclic shifts used for PUSCH DRS (yields n1_DMRS)

NPUSCHIDOptional

0 (default), Nonnegative scalar integer from 0 to 509.

PUSCH virtual cell identity. If this field is not present, NCellID is used for group hopping sequence-shift pattern initialization.

See footnote 1

NDMRSIDOptional

0 (default), Nonnegative scalar integer from 0 to 509.

DMRS identity for cyclic shift hopping (Ncsh_DMRSID). If this field is not present, NCellID is used for cyclic shift hopping initialization.

See footnote 1

  1. The pseudo-random sequence generator for cyclic shift hopping is initialized according to NDMRSID, if present, otherwise it is initialized according to the cell identity NCellID and the sequence group assignment SeqGroup. Similarly, the sequence-shift pattern for group hopping is initialized according to NPUSCHID, if present, otherwise it is initialized according to NCellID and SeqGroup.

Data Types: struct

chs — Channel transmission configuration structure

PUSCH channel settings, specified as a structure that can contain the following fields.

Parameter FieldRequired or OptionalValuesDescription
PRBSetRequired

1- or 2-column integer matrix

Physical resource block set, specified as a 1-column or 2-column matrix. This parameter field contains the zero-based physical resource block (PRB) indices corresponding to the slot-wise resource allocations for this PUSCH.

If PRBSet is a column vector, the resource allocation is the same in both slots of the subframe. To specify differing PRBs for each slot in a subframe, use a 2-column matrix. The PRB indices are zero based.

NLayersOptional1 (default), 2, 3, 4Number of transmission layers
DynCyclicShiftOptional

0 (default), 0 ... 7, Nonnegative scalar integer.

Cyclic shift for DMRS (yields n2_DMRS)

OrthoCoverOptional

'Off' (default), 'On'

Applies ('On'), or does not apply ('Off'), orthogonal cover sequence, w (Activate-DMRS-with OCC)

The following field is required only when ue.NTxAnts is set to 2 or 4.
PMIOptional

nonnegative scalar integer (0...23)

0 (default)

Scalar precoder matrix indication (PMI) to be used during precoding

of the DRS reference symbols

Data Types: struct

Output Arguments

collapse all

seq — PUSCH DRS sequenceM-by-P complex-valued matrix

PUSCH DRS sequence values, returned as an M-by-P complex-valued matrix. Where M is the number of DRS symbols per antenna and P is the number of transmission antennas.

Data Types: double
Complex Number Support: Yes

info — Information about PUSCH DRSstructure array

Information about PUSCH DRS, returned as a structure array, with one element per transmission layer, having the following fields.

Alpha — Reference signal cyclic shiftrow vector

Reference signal cyclic shift (alpha) for each slot, specified as a row vector.

Data Types: double

SeqGroup — Base sequence group numberrow vector

Base sequence group number (u) for each slot, specified as a row vector.

Data Types: double

SeqIdx — Base sequence numberrow vector

Base sequence number (v) for each slot, specified as a row vector.

Data Types: double

RootSeq — Root Zadoff-Chu sequence index row vector

Root Zadoff-Chu sequence index (q) for each slot, specified as a row vector.

Data Types: double

NZC — Zadoff-Chu sequence lengthinteger

Zadoff-Chu sequence length (NRS_ZC), specified as an integer.

Data Types: double

N1DMRS — Component of reference signal cyclic shiftinteger

Component of the reference signal cyclic shift signaled from higher layers, specified as an integer. (n1_DMRS)

Data Types: double

N2DMRS — Component of the reference signal cyclic shiftinteger

Component of the reference signal cyclic shift signalled from the most recent DCI format 0 message, specified as an integer. (n2_DMRS)

Data Types: double

NPRS — Cell-specific component of reference signal cyclic shiftrow vector

Cell-specific component of the reference signal cyclic shift (n_PRS) for each slot, specified as a row vector.

Data Types: double

OrthSeq — Orthogonal cover valuerow vector

Vector containing the orthogonal cover value (w) for each slot, specified as a row vector.

Data Types: double

Data Types: struct

layers — PUSCH DRS sequence by layersM-by-NU complex-valued matrix

PUSCH DRS sequence by layers, returned as an M-by-NU complex matrix. Where M is the number of DRS symbols per layer and NU is the number of transmission layers. If P is greater than 1, the DRS is precoded using spatial multiplexing.

Data Types: double
Complex Number Support: Yes

Introduced in R2013b

Was this topic helpful?