Open LteDemoSRS.m in the editor

Sounding Reference Signal (SRS) Configuration Example

This example demonstrates how to configure UE and cell-specific SRS aspects. It generates a frame containing PUCCH Format 1 transmissions using appropriate shortening according to a cell-specific SRS configuration. The generated frame also contain an SRS transmission configured by a particular UE-specific SRS configuration.

 

Overview

In this example the cell-specific SRS configuration is 5ms periodicity with an offset of 0 (signalled by srs.SubframeConfig=3 per Table 5.5.3.3-1of TS36.211) and the UE-specific SRS configuration is 10ms periodicity with an offset of 0 (signalled by srs.ConfigIdx=7 per Table 8.2-1 of TS36.213). The cell-specific configuration means that for this cell, two opportunities for SRS transmission exist within each frame, subframes 0 and 5. All UEs in the cell must shorten their PUCCH transmissions during these subframes to allow for SRS reception without interference, even if they are not transmitting SRS themselves. The UE-specific configuration means that this UE is configured to generate SRS only in subframe 0. The output at the MATLAB command window when running this example shows PUCCH transmission in all 10 subframes, with shortenening in subframes 0 and 5, and an SRS transmission in subframe 0. The figure produced shows the number of active subcarriers in each SC-FDMA symbol of the frame. All SC-FDMA symbols contain 12 active subcarriers corresponding to the single resource block bandwidth of the PUCCH except:

*       symbol 13, the last symbol of subframe 0 which has 48 active subcarriers corresponding to an 8 resource block SRS transmission;

*       symbol 83, the last symbol of subframe 5 which has 0 active subcarriers corresponding to the shortened PUCCH (last symbol empty) to allow for potential SRS transmission by another UE in this cell.

 

UE configuration

Firstly we create a configuration structure for the UE:

 

% UE configuration 

    ue.NULRB=9;

    ue.NCellID=10;

    ue.Hopping='Off';

    ue.CyclicPrefixUL='Normal';

    ue.DuplexMode='FDD';

    ue.NTxAnts=1;

 

 

SRS configuration

Now we create a configuration structure for the SRS:

 

% SRS configuration

    srs.NTxAnts=1;

    srs.SubframeConfig=3;      % cell-specific
                                % SRS period=5ms, offset=0

    srs.BWConfig=6;

    srs.BW=0;

    srs.HoppingBW=0;

    srs.SeqGroup=0;

    srs.SeqIdx=0;

    srs.TxComb=0;

    srs.FreqPosition=0;

    srs.ConfigIdx=7;            % UE-specific

                                % SRS period=10ms, offset=0

    srs.CyclicShift=0;

 

 

There are two important aspects to this configuration from the perspective of SRS timing:

*       The cell-specific SRS configuration is 5ms periodicity with an offset of 0 (signalled by srs.SubframeConfig=3 per Table 5.5.3.3-1of TS36.211)

*       The UE-specific SRS configuration is 10ms periodicity with an offset of 0 (signalled by srs.ConfigIdx=7 per Table 8.2-1 of TS36.213).

The cell-specific configuration means that for this cell, two opportunities for SRS transmission exist within each frame, subframes 0 and 5. All UEs in the cell must shorten their PUCCH transmissions during these subframes to allow for SRS reception without interference, even if they are not transmitting SRS themselves. The UE-specific configuration means that this UE is configured to generate SRS only in subframe 0.

The other parameters define other aspects of the SRS, specifically the locations in frequency and the particular SRS sequence that is used.

 

Subframe loop

We now configure 10 subframes (1 frame) in a loop, concatenating the subframe txSubframe created each time round the loop into an overall resource grid txgrid. Our loop is indexed by i=1…10, so the current 0-based subframe number as used by the Toolbox is i-1.

 

Subframe number configuration

The first simple step in the loop is to configure the subframe number in the UE settings structure ue, and display the subframe number at the console:

 

% configure subframe number

    ue.NSubframe=i-1;

    disp(sprintf('Subframe %d:',ue.NSubframe));

 

 

SRS dimension information

By calling LteSRSDims, we can establish the effect of the cell-specific SRS configuration in this subframe:

 

% establish if this subframe is a cell-specific SRS subframe,

% and if so configure the PUCCH for shortened transmission.

    srsDims=LteSRSDims(ue,srs);

    pucch.Shortened=srsDims.IsSRSSubframe;  

 

The IsSRSSubframe field of the structure srsDims returned from the LteSRSDims call indicates if the current subframe (given by ue.NSubframe) is a cell-specific SRS subframe. IsSRSSubframe=1 indicates that the subframe is a cell-specific SRS subframe, otherwise IsSRSSubframe=0.

The value of this field is then copied into the Shortened field of the PUCCH configuration structure pucch. Doing this ensures that the subsequent PUCCH generation will correctly respect the cell-specific SRS configuration for all subframes, omitting the last symbol of the PUCCH in the cell-specific SRS subframes.

Subframe creation

A resource grid for the current subframe txSubframe is created:

 

% create empty uplink subframe   

    txSubframe=LteULResourceGrid(ue);

 

PUCCH 1 DRS transmission

Now we create the PUCCH 1 DRS signal and map it to the resource grid:

 

% transmit PUCCH1 DRS   

    drsIndices=LtePUCCH1DRSIndices(ue,pucch);

    drsSymbols=LtePUCCH1DRS(ue,pucch);

    txSubframe(drsIndices)=drsSymbols;

 

The DRS signal is located in the 3rd, 4th and 5th symbols of each slot and therefore never has the potential to collide with the SRS.

 

PUCCH 1 transmission

Unlike the DRS, the PUCCH 1 transmission has the potential to occupy the last symbol of the subframe but because we have already configured the Shortened field of the PUCCH configuration structure pucch in accordance with the cell-specific SRS configuration, the last symbol of the subframe will be left empty in the appropriate subframes:

 

 

% transmit PUCCH1    

    pucchIndices=LtePUCCH1Indices(ue,pucch);

    HI=[0 1];

    pucchSymbols=LtePUCCH1(ue,pucch,HI);

    txSubframe(pucchIndices)=pucchSymbols;

    if (pucch.Shortened)

        disp('Transmitting shortened PUCCH');

    else

        disp('Transmitting full-length PUCCH');

    end

 

A message is displayed to the console indicating whether the PUCCH was transmitted with full length or shortened length.

SRS transmission

Here we transmit an SRS according to the ue-specific SRS configuration. Both the LteSRSIndices and LteSRS functions use the fields ue.NSubframe and srs.ConfigIdx to determine if the current subframe is configured for SRS transmission; if not, the output of both functions is empty and therefore unconditionally mapping the potentially empty transmission into the resource grid results in the SRS being present or absent as appropriate:

 

% transmit SRS (if active under UE-specific SRS configuration)

   [srsIndices,srsIndicesDims]=LteSRSIndices(ue,srs);

   srsSymbols=LteSRS(ue,srs);

   if (srs.NTxAnts==1)                        

      txSubframe(offsetIndices(ue,srsIndices,srsIndicesDims.Port))=

      srsSymbols;

   else

      txSubframe(srsIndices)=srsSymbols;

   end

   if(~isempty(srsIndices))

      disp('Transmitting SRS');

   end

 

The field srs.NTxAnts is checked and if only 1 transmission antenna is used then the function offsetIndices is used to address the appropriate transmit antenna for transmit antenna selection diversity. The antenna is specified by srsIndicesDims.Port. Note that srsIndicesDims.Port is always zero for the case of ue.NTxAnts=1 as no transmit antenna selection diversity applies. For srs.NTxAnts>1, Spatial Orthogonal Resource Transmit Diversity (SORTD) is used.

The SRS indices srsIndices are checked for being empty; if not then a message is displayed at the console indicating that the SRS is being transmitted.

Concatenation

The final step inside the loop is to concatenate the current subframe txSubframe onto the overall resource grid txGrid:

 

% store subframe into overall multi-subframe grid

    txGrid=[txGrid txSubframe];

 

Plotting the number of active subcarriers

The last step in the example is to plot the number of active subcarriers in each SC-FDMA symbol across the 140 symbols in txGrid:

 

% plot number of active subcarriers in each SC-FDMA symbol.

    figure;

    for i=1:ue.NTxAnts

        subplot(ue.NTxAnts,1,i);

        plot([0:size(txGrid,2)-1],sum(abs(txGrid(:,:,i))~=0),'r:o')

        xlabel('symbol number');

        ylabel('active subcarriers');

        title(sprintf('Antenna %d',i-1));

    end

 

The resulting plot looks as follows:

The number of active subcarriers is generally 12, corresponding to the one resource block extent in frequency of the PUCCH and PUCCH 1 DRS. The two exceptions are:

*       symbol 13, the last symbol of the first subframe, where the SRS is transmitted on 48 subcarriers (8 resource blocks wide, half the subcarriers are used by the SRS) and the PUCCH 1 is shortened so the last symbol is absent;

*       symbol 83, the last symbol of the fifth subframe, where the PUCCH 1 is shortened so the last symbol is absent.

The distinction between these two cases is that both subframe 0 and 5 are cell-specific SRS subframes and therefore the PUCCH is transmitted with shortened length, but the ue-specific SRS configuration dictates that only subframe 0 is used for SRS transmission.

Console output

When the demo is run the following console output is produced:

 

Subframe 0:

Transmitting shortened PUCCH

Transmitting SRS

Subframe 1:

Transmitting full-length PUCCH

Subframe 2:

Transmitting full-length PUCCH

Subframe 3:

Transmitting full-length PUCCH

Subframe 4:

Transmitting full-length PUCCH

Subframe 5:

Transmitting shortened PUCCH

Subframe 6:

Transmitting full-length PUCCH

Subframe 7:

Transmitting full-length PUCCH

Subframe 8:

Transmitting full-length PUCCH

Subframe 9:

Transmitting full-length PUCCH

 

This clearly shows the transmission of shortened PUCCH in subframes 0 and 5 and the transmission of the SRS in subframe 0.

SRS transmit antenna selection can be demonstrated by setting ue.NTxAnts=2 and examining the subplots produced for each antenna; the SRS is transmitted on antenna 0 while the PUCCH is shortened on both (all) antennas:

 

% UE configuration 

   

    ue.NTxAnts=1;

 

 

A pattern of antenna selection across this one-frame run can be shown by further configuring srs.SubframeConfig=0 and srs.ConfigIdx=0. This configures a cell-specific SRS configuration of 2ms periodicity with an offset of 0 (signalled by srs.SubframeConfig=0) and also a UE-specific SRS configuration of 2ms periodicity with an offset of 0 (signalled by srs.ConfigIdx=0). In this case an SRS is transmitted by this UE on even subframes, and the transmit antenna alternates with each transmission:

 

% SRS configuration

    srs.NTxAnts=1;

    srs.SubframeConfig=0;      % cell-specific
                                % SRS period=2ms, offset=0

   

    srs.ConfigIdx=0;            % UE-specific

                                % SRS period=2ms, offset=0

   

 

 

 

SRS transmission on multiple antennas using resource diversity can be shown by setting ue.NTxAnts=2 and srs.NTxAnts=2; in this case the SRS is always transmitted on both (all) antennas with orthogonal resources (SORTD) on each antenna:

 

% UE configuration 

   

    ue.NTxAnts=2;

 

 

 

% SRS configuration

    srs.NTxAnts=2;

   

   

 

 

© Copyright 2010-2012 Steepest Ascent Ltd.