Main Content

nrPUCCHDMRSIndices

Generate PUCCH DM-RS resource element indices

Since R2021a

Description

example

ind = nrPUCCHDMRSIndices(carrier,pucch) generates ind, which contains demodulation reference signal (DM-RS) resource element (RE) indices of a physical uplink control channel (PUCCH), as defined in TS 38.211 Section 6.4.1.3 [1], for all PUCCH formats. carrier specifies the carrier configuration. pucch specifies the PUCCH configuration. For PUCCH format 0, the function returns an empty value for sym.

example

ind = nrPUCCHDMRSIndices(carrier,pucch,Name,Value) specifies output formatting options using one or more name-value arguments.

Examples

collapse all

Create a default carrier configuration object.

carrier = nrCarrierConfig;

Specify the number of RBs in the carrier resource grid as 50, the start of the carrier resource grid relative to CRB 0 as 120, and the slot number as 25.

carrier.NSizeGrid = 50;
carrier.NStartGrid = 120;
carrier.NSlot = 25;

Create a default PUCCH format 2 configuration object.

pucch2 = nrPUCCH2Config;

Specify the first symbol index in the PUCCH transmission slot as 7 and the number of allocated PUCCH symbols as 2. Set the PRBs allocated for the PUCCH to range from 40 to 45. Enable intraslot frequency hopping and set the starting PRB index of the second hop to 20. Specify the DM-RS scrambling identity as 1005.

pucch2.SymbolAllocation = [7 2];
pucch2.PRBSet = 40:45;
pucch2.FrequencyHopping = 'intraSlot';
pucch2.SecondHopStartPRB = 20;
pucch2.NID0 = 1005;

Generate the DM-RS symbols of PUCCH format 2.

sym = nrPUCCHDMRS(carrier,pucch2)
sym = 48×1 complex

   0.7071 - 0.7071i
  -0.7071 + 0.7071i
  -0.7071 - 0.7071i
   0.7071 - 0.7071i
  -0.7071 - 0.7071i
   0.7071 - 0.7071i
   0.7071 - 0.7071i
   0.7071 - 0.7071i
   0.7071 - 0.7071i
  -0.7071 + 0.7071i
      ⋮

Generate the DM-RS RE indices of PUCCH format 2.

ind = nrPUCCHDMRSIndices(carrier,pucch2)
ind = 48x1 uint32 column vector

   4682
   4685
   4688
   4691
   4694
   4697
   4700
   4703
   4706
   4709
      ⋮

Plot the generated symbols and REs in the carrier resource grid.

resGrid = nrResourceGrid(carrier);
resGrid(ind) = sym;
imagesc(abs(resGrid))
axis xy
xlabel('OFDM Symbols')
ylabel('Subcarriers')
title('Carrier Grid Containing DM-RS of PUCCH Format 2')

Create a default carrier configuration object.

carrier = nrCarrierConfig;

Specify the number of RBs in the carrier resource grid to 10.

carrier.NSizeGrid = 10;

Create a default PUCCH format 4 configuration object.

pucch4 = nrPUCCH4Config;

Set the first symbol index in the PUCCH transmission slot to 2 and the number of allocated PUCCH symbols to 12. Enable group hopping and the additional DM-RS configuration flag. Specify the hopping identity as 120, the spreading factor as 4, and the orthogonal cover code index (OCCI) as 3.

pucch4.SymbolAllocation = [2 12];
pucch4.GroupHopping = 'enable';
pucch4.HoppingID = 120;
pucch4.SpreadingFactor = 4;
pucch4.OCCI = 3;
pucch4.AdditionalDMRS = 1;

Generate the DM-RS symbols of PUCCH format 4 with data type single.

sym = nrPUCCHDMRS(carrier,pucch4, 'OutputDataType','single')
sym = 48x1 single column vector

   0.7071 - 0.7071i
   0.7071 - 0.7071i
   0.7071 - 0.7071i
  -0.7071 - 0.7071i
  -0.7071 - 0.7071i
   0.7071 - 0.7071i
   0.7071 + 0.7071i
  -0.7071 - 0.7071i
   0.7071 + 0.7071i
   0.7071 + 0.7071i
      ⋮

Generate the DM-RS RE indices of PUCCH format 4.

ind = nrPUCCHDMRSIndices(carrier,pucch4)
ind = 48x1 uint32 column vector

   361
   362
   363
   364
   365
   366
   367
   368
   369
   370
      ⋮

Plot the generated symbols and REs in the carrier resource grid.

resGrid = nrResourceGrid(carrier);
resGrid(ind) = sym;
imagesc(abs(resGrid))
axis xy
xlabel('OFDM Symbols')
ylabel('Subcarriers')
title('Carrier Grid Containing DM-RS of PUCCH Format 4')

Input Arguments

collapse all

Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig object. This function only uses these nrCarrierConfig object properties.

PUCCH configuration parameters, specified as one of these options.

For PUCCH formats 1 to 3 and operation with shared spectrum channel access for frequency range 1 (FR1), set the corresponding Interlacing property to true, and use the RBSetIndex and InterlaceIndex object properties to specify the allocated frequency resources. In addition, for PUCCH formats 2 and 3, you can use the SpreadingFactor and OCCI properties with single-interlace configurations. (since R2023b)

Note

For PUCCH format 0, the function returns an empty value.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: 'IndexStyle','subscript' specifies the RE indexing form of the output.

RE indexing form, specified as one of these values:

  • 'index' — The indices are in linear index form.

  • 'subscript' — The indices are in [subcarrier, symbol, antenna] subscript row form.

Data Types: char | string

RE indexing base, specified as one of these values:

  • '1based' — The index counting starts from 1.

  • '0based' — The index counting starts from 0.

Data Types: char | string

RE indexing orientation, specified as one of these values:

  • 'carrier' — Indices are referenced with respect to the carrier grid.

  • 'bwp' — Indices are referenced with respect to the BWP.

Data Types: char | string

Output Arguments

collapse all

PUCCH DM-RS RE indices, returned as one of these values.

  • Column vector — The function returns this type of value when you set the IndexStyle name-value argument to 'index'.

  • M-by-3 matrix — The function returns this type of value when you set the IndexStyle name-value argument to 'subscript'. The matrix rows correspond to the [subcarrier, symbol, antenna] subscripts based on the number of subcarriers, OFDM symbols, and number of antennas, respectively.

Depending on the value of IndexBase, the function returns either 1-based or 0-based indices. Depending on the value of IndexOrientation, the function returns either carrier-oriented indices or BWP-oriented indices.

For PUCCH format 0, this output is empty.

Data Types: uint32

References

[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2021a

expand all