Main Content

ltePUSCHDRS

PUSCH demodulation reference signal

Description

[antseq,info,layerseq] = ltePUSCHDRS(ue,chs) returns the physical uplink shared channel (PUSCH) transmission demodulation reference signal (DM-RS) antenna sequence values,antseq, the layer sequence values, layerseq, and the information structure, info, given input structures containing UE-specific settings, and the channel transmission configuration settings.

When the number of transmission antennas is greater than one, the DM-RS is precoded using spatial multiplexing.

For short base reference sequences, such as those used with PUSCH allocations of 1 or 2 PRBs, and when chs.PRBSet is empty, Zadoff-Chu sequences are not used. In this case, RootSeq and NZC are set to –1. If antseq 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.

example

Examples

collapse all

Generate the PUSCH Demodulation Reference Signal (DM-RS) values for UE-specific settings.

Initialize UE specific (ue) and channel (chs) configuration structures. Generate PUSCH DM-RS 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 = 10×1 complex

   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

Demonstrate Uplink Release 11 coordinated multipoint (CoMP) operation. To avoid intercell interference, use a virtual cell identity (NPUSCHID) and a distinct DM-RS cyclic shift hopping identity (NDMRSID) for a potentially interfering UE in a neighboring cell.

Configure the 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';

Configure the 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 DM-RS signals.

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

Reconfigure for CoMP operation. Use a virtual cell identity equal to the cell identity for the UE of interest. Configure the two UEs with different cyclic shift hopping patterns using the DM-RS identity parameter.

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

Measure the interference between the DM-RS signals when using CoMP.

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

Compare the correlations between the DM-RS signals for the two UEs with and without CoMP, interferenceUsingCoMP and interferenceNoCoMP, respectively.

interferenceUsingCoMP
interferenceUsingCoMP = 
1.0499e-13
interferenceNoCoMP
interferenceNoCoMP = 
21.3188

With CoMP, the interference is reduced to effectively zero.

Input Arguments

collapse all

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

Parameter FieldRequired or OptionalValuesDescription
NCellIDRequired

Nonnegative integer

Physical layer cell identity

NSubframeRequired

0 (default), nonnegative scalar integer

Subframe number

CyclicPrefixULOptional

'Normal' (default), 'Extended'

Cyclic prefix length for uplink.

NTxAntsOptional

1 (default), 2, 4

Number of transmission antennas.

HoppingOptional

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

Frequency hopping method.

SeqGroupOptional

0 (default), integer from 0 to 29

PUSCH sequence group assignment (ΔSS).

Used only if NDMRSID or NPUSCHID is absent.

CyclicShiftOptional

0 (default), integer from 0 to 7

Number of cyclic shifts used for PUSCH DM-RS (yields nDMRS(1)).

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 note.

NDMRSIDOptional

0 (default), nonnegative scalar integer from 0 to 509

DM-RS identity for cyclic shift hopping (nIDcsh_DMRS). If this field is not present, NCellID is used for cyclic shift hopping initialization.

See note.

Note

  1. The pseudorandom 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

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

Parameter FieldRequired or OptionalValuesDescription
PRBSetRequired

Integer column vector or two-column matrix

Physical resource block set, specified as an integer column vector or two-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 two-column matrix. The PRB indices are zero-based.

NLayersOptional

1 (default), 2, 3, 4

Number of transmission layers.

DynCyclicShiftOptional

0 (default), integer from 0 to 7

Cyclic shift for DM-RS (yields nDMRS(2)).

OrthoCoverOptional

'Off' (default), 'On'

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

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

0 (default), integer from 0 to 23

Scalar precoder matrix indication (PMI) used during precoding of the DM-RS reference symbols.

Data Types: struct

Output Arguments

collapse all

PUSCH DM-RS sequence values, returned as an M-by-P complex-valued matrix. M is the number of DM-RS symbols per antenna, and P is the number of transmission antennas. When P is greater than one, the DM-RS is precoded using spatial multiplexing.

Data Types: double
Complex Number Support: Yes

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

Reference signal cyclic shift for each slot, returned as a row vector. (α)

Alpha is proportional to NCS, α=2πncs,λ12.

Data Types: double

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

Data Types: double

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

Data Types: double

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

Data Types: double

Cyclic shift values for each slot, returned as a two-column vector (ncs,λ).

Data Types: double

Zadoff-Chu sequence length, returned as an integer. (NZCRS)

Data Types: double

Component of the reference signal cyclic shift signaled from higher layers, returned as an integer. (nDMRS(1))

Data Types: double

Component of the reference signal cyclic shift signaled from the most recent DCI format 0 message, returned as an integer. (nDMRS(2))

Data Types: double

Cell-specific component of the reference signal cyclic shift for each slot, returned as a row vector. (nPRS in LTE Release 8 and 9, nPN in LTE Release 10 and beyond)

Data Types: double

Orthogonal cover value for each slot, specified as a row vector. (w)

Data Types: double

Data Types: struct

PUSCH DM-RS sequence by layers, returned as an M-by-NU complex matrix. M is the number of DM-RS symbols per layer, and NU is the number of transmission layers. If the number of transmission antennas is greater than one, the DM-RS is precoded using spatial multiplexing.

Data Types: double
Complex Number Support: Yes

Version History

Introduced in R2013b