PUSCH demodulation reference signal
[
returns
the physical uplink shared channel (PUSCH) transmission demodulation
reference signal (DM-RS) antenna sequence values,antseq
,info
,layerseq
]
= ltePUSCHDRS(ue
,chs
)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.
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.
ue
— UE-specific settingsUE-specific settings, specified as a structure. ue
can
contain the following fields.
Parameter Field | Required or Optional | Values | Description |
---|---|---|---|
NCellID | Required | Nonnegative integer | Physical layer cell identity |
NSubframe | Required | 0 (default), nonnegative scalar integer | Subframe number |
CyclicPrefixUL | Optional |
| Cyclic prefix length for uplink. |
NTxAnts | Optional | 1 (default), 2, 4 | Number of transmission antennas. |
Hopping | Optional |
| Frequency hopping method. |
SeqGroup | Optional | 0 (default), integer from 0 to 29 |
PUSCH sequence group assignment (ΔSS). Used only if |
CyclicShift | Optional | 0 (default), integer from 0 to 7 | Number of cyclic shifts used for PUSCH DM-RS (yields ). |
NPUSCHID | Optional | 0 (default), nonnegative scalar integer from 0 to 509 | PUSCH virtual cell identity. If this field is not present, See note. |
NDMRSID | Optional | 0 (default), nonnegative scalar integer from 0 to 509 | DM-RS identity for cyclic shift hopping ().
If this field is not present, See note. |
Note
|
Data Types: struct
chs
— Channel transmission configuration PUSCH channel configuration, specified as a structure that can contain the following fields.
Parameter Field | Required or Optional | Values | Description |
---|---|---|---|
PRBSet | Required | 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 |
NLayers | Optional | 1 (default), 2, 3, 4 | Number of transmission layers. |
DynCyclicShift | Optional | 0 (default), integer from 0 to 7 | Cyclic shift for DM-RS (yields ). |
OrthoCover | Optional |
| Applies ( |
The following field is applicable
only when ue . NTxAnts is
set to 2 or 4 . | |||
PMI | Optional | 0 (default), integer from 0 to 23 | Scalar precoder matrix indication (PMI) used during precoding of the DM-RS reference symbols. |
Data Types: struct
antseq
— PUSCH DM-RS sequencePUSCH 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
info
— Information about PUSCH DM-RSInformation about PUSCH DM-RS, returned as a structure array, with one element per transmission layer, having the following fields.
Alpha
— Reference signal cyclic shiftReference signal cyclic shift for each slot, returned as a row vector. (α)
Alpha
is proportional to NCS
, .
Data Types: double
SeqGroup
— Base sequence group numberBase sequence group number for each slot, returned as a row vector. (u)
Data Types: double
SeqIdx
— Base sequence numberBase sequence number for each slot, returned as a row vector. (v)
Data Types: double
RootSeq
— Root Zadoff-Chu sequence index Root Zadoff-Chu sequence index for each slot, returned as a row vector. (q)
Data Types: double
NCS
— Cyclic shift values for each slotCyclic shift values for each slot, returned as a two-column vector ().
Data Types: double
NZC
— Zadoff-Chu sequence lengthZadoff-Chu sequence length, returned as an integer. ()
Data Types: double
N1DMRS
— Component of reference signal cyclic shiftComponent of the reference signal cyclic shift signaled from higher layers, returned as an integer. ()
Data Types: double
N2DMRS
— Component of the reference signal cyclic shiftComponent of the reference signal cyclic shift signaled from the most recent DCI format 0 message, returned as an integer. ()
Data Types: double
NPRS
— Cell-specific component of reference signal cyclic shiftCell-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
OrthSeq
— Orthogonal cover valueOrthogonal cover value for each slot, specified as a row vector. (w)
Data Types: double
Data Types: struct
layerseq
— PUSCH DM-RS sequence by layersPUSCH 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
ltePUSCH
| ltePUSCHDecode
| ltePUSCHDeprecode
| ltePUSCHDRSIndices
| ltePUSCHIndices
| ltePUSCHPrecode
| lteULPMIInfo
You have a modified version of this example. Do you want to open this example with your edits?