Main Content

nrPUCCHDMRSIndices

Generate PUCCH DM-RS resource element indices

    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')

    Figure contains an axes object. The axes object with title Carrier Grid Containing DM-RS of PUCCH Format 2 contains an object of type image.

    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')

    Figure contains an axes object. The axes object with title Carrier Grid Containing DM-RS of PUCCH Format 4 contains an object of type image.

    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 format 0, the function returns an empty value.

    Name-Value Arguments

    Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

    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

    Introduced in R2021a