Main Content

nrPUCCHDMRS

Generate PUCCH DM-RS symbols

    Description

    example

    sym = nrPUCCHDMRS(carrier,pucch) generates sym, which contains demodulation reference signal (DM-RS) symbols 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 formats 1, 3, and 4, setting the GroupHopping property of pucch is set to 'disable' enables sequence hopping. In this case, the function selects a sequence number, which might be inappropriate for short base sequences. For PUCCH format 0, the function returns an empty value for sym.

    example

    sym = nrPUCCHDMRS(carrier,pucch,'OutputDataType',datatype) specifies the data type of the PUCCH symbols.

    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.

    Data type of the output symbols, specified as 'double' or 'single'.

    Data Types: char | string

    Output Arguments

    collapse all

    PUCCH DM-RS modulation symbols, returned as a complex matrix. For PUCCH format 0, this output is empty.

    Data Types: single | double
    Complex Number Support: Yes

    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