5G/NR - SRS

 

 

 

SRS in a Nutshell

SRS is the uplink counterpart of CSI-RS, and the four points below summarise the whole topic. The rest of this page takes them one at a time. If you read only one of them, read the last one. In TDD the gNB reuses an uplink measurement to make downlink decisions, and that is why SRS carries far more weight in NR than it did in LTE.

  • What is this for ?  It is a special physical signal for uplink radio channel estimation.  
  • Difference from PUSCH DMRS ? PUSCH DMRS can be configured only within the resources allocated for PUSCH, but SRS is configured outside of PUSCH even when PUSCH is not transmitted. SRS is usually (not mandatory) configured across the whole channel band to allow gNB to perform UL channel estimate over the whole frequency span regardless of the existence of PUSCH.
  • Several different usages : beamManagement, codebook, nonCodebook, antennaSwitching
  • Often (with antennaSwitching) it is used for gNB to figure out appropriate MIMO/Precoding for downlink in TDD. Since we can assume the channel property for downlink and uplink is same (channel reciprocity) in TDD, the channel estimation result for uplink based on SRS can be utilized for optimizing downlink process.

SRS in Detail

SRS stands for Sounding Reference Signal. High level concept of NR SRS is same as in LTE SRS and some of lower level parameter are very similar to LTE SRS lower layer parameter. I would suggest you to go through LTE SRS first if you are new to this concept and then read this page since I would not explain on those basic concepts that are explained in LTE SRS.

Simply put, SRS is a kind of reference signal for Uplink (i.e, transmitted by UE) so that gNB can perform channel quality estimation for uplink. gNB can perform UL channel estimation from PUSCH DMRS, but PUSCH DMRS is transmitted only when PUSCH is scheduled and only with the bandwidth in which PUSCH is scheduled. On the contrary, SRS can be transmitted independantly of PUSCH scheduling and PUSCH bandwidth(number of PUSCH RB).

In short, the role of SRS is similar to CSI RS. CSI-RS is a reference signal for downlink channel quality estimation independent of PDSCH DMRS and SRS is a reference signal for uplink channel quality estimation independent of PUSCH DMRS

SRS plays more important role in NR because TDD is dominant mode of deployment. In TDD, gNB can utilize the channel estimation result from SRS not only for UL scheduling but also for DL scheduling as well based on channel reciprocity in TDD.

One thing the summary above leaves implicit is that SRS is not a single purpose signal. Every SRS resource set carries a usage field, and the four values it can take are four different jobs: beamManagement, codebook, nonCodebook and antennaSwitching. The gNB sets usage per resource set rather than per UE, so one UE can be sounding for two different reasons at the same time.

Those four split into two groups. The first three, beamManagement, codebook and nonCodebook, all serve the uplink directly. With codebook the gNB reads the sounding and then tells the UE which precoder to use, chosen from a fixed codebook. With nonCodebook the UE picks its own precoder instead, and the ASN.1 further down shows how it is guided. The resource set carries an associated NZP-CSI-RS, present only in the nonCodebook case, and the UE measures that to work out what to send.

antennaSwitching is the exception, and it is the reason SRS carries so much weight in TDD. It sounds the uplink in order to learn about the downlink. Everything in the Antenna Switching section further down follows from that single inversion.

  • usage is configured per resource set : one UE can hold several SRS resource sets with different usage values, so sounding for beam management and sounding for antenna switching can run side by side.
  • Three of the four usages serve the uplink : beamManagement selects the uplink beam, and codebook and nonCodebook decide the uplink precoder between them.
  • codebook and nonCodebook differ in who chooses : the gNB chooses from a codebook in the first case. In the second the UE chooses for itself, guided by an associated NZP-CSI-RS that only that case configures.
  • antennaSwitching points the other way : it uses an uplink measurement to configure the downlink, which only works because TDD puts both directions on the same frequency.

How SRS works ?

In short, the way SRS works can be illustrated as follows. Four phases carry the whole procedure, and each one is a separate problem. The gNB has to configure the resource. The UE has to transmit a signal the gNB already knows. The gNB has to compare what arrived against what it expected, and something has to be done with the difference.

Phase I - RRC Configuration for SRS

    This is the phase where gNB determines about SRS configuration (e.g, SRS physical resources, usage, report period timing etc) and notifies the configuration to UE via RRC messages (e.g, RRCSetup, RRCReconfiguration).

Phase II - SRS transmission from UE:

    In this phase, the UE transmits the SRS, which is a predefined signal with known characteristics, at a specific time and frequency. The SRS configuration is provided to the UE by the gNB, and it may vary depending on the cell's conditions and traffic requirements. The UE sends the SRS periodically or aperiodically, as instructed by the gNB, on the uplink (UL) channel.

    NOTE : gNB can configure UE to transmit the srs across the full band at once or can configure UE to transmit the srs for a certain segment of the frequency band using the parameter explaind in Bandwidth Configuration.

    NOTE : gNB configures how often and at which timing UE should send SRS. gNB would get better and more accurate information as it let UE to transmit more often for wider frequency span, but overhead caused by srs transmission would get higher.

Phase III - SRS reception at gNB and Analysis:

    Upon receiving the SRS from the UE, the gNB measures and analyzes the received signal. It estimates the channel state information (CSI) by comparing the received SRS with the known reference signal. The gNB evaluates various parameters, such as the path loss, propagation delay(phase delay), and received signal strength, to understand the current radio environment and channel conditions between the gNB and the UE.

Phase IV - Utilization of SRS by gNB:

    Once the gNB has estimated the channel state based on the SRS, it uses this information to optimize its resource allocation and scheduling decisions. This can involve adjusting transmission parameters (such as modulation and coding schemes) or selecting the most appropriate MIMO settings to enhance the overall system capacity and improve the user experience. By leveraging the SRS, the gNB can adapt to the dynamic nature of the radio environment and provide more efficient and reliable communication services.

    NOTE: The main usage of SRS is for optimzing UL data communication, but in case of TDD gNB can use the information for optimizing DL data communication as well because in TDD the DL and UL use the same frequency and we can assume that the radio channel state for DL and UL would almost same.

Parameters defining SRS resources within a slot.

SRS resource mean the location of SRS in time and frequency domain in the resource grid. Following is the illustration for SRS Resource allocation based on 38.211-6.4.1.4.

NOTE : For more detailed example of SRS resource element allocation, refer to this page with Matlab 5G Toolbox.

Followings are breakdown and description for the digram shown above. It is a detailed explanation of how the allocation works in the time and frequency domains.

SRS Maximum Length in Time Domain

  • The maximum duration of SRS in the time domain is 4 symbols within a slot.
  • Each slot contains 14 OFDM symbols.
  • SRS symbols are allocated in the last 6 symbols of the slot (range: l0 = 8 to 13).

Formula for l0 (Starting Position)

  • The starting position of SRS symbols is calculated as:
  • l0 = Nslot_symbol - 1 - loffset

    • Nslot_symbol: Total symbols in a slot (14 symbols).
    • loffset: Offset value, defined in SRS-Resource.resourceMapping.startPosition. Possible values: {0, 1, 2, 3, 4, 5}.

Number of Resource Blocks (PRBs)

  • The number of PRBs allocated for SRS transmission is denoted as mSRS,b.
  • It is calculated using the formula:
  • MRSSC = mSRS,b × NRBSC / KTC

    • NRBSC: Number of subcarriers per PRB (12 in 5G).
    • KTC: Transmission comb parameter, defined in SRS-Resource.transmissionComb (n2, n4).

Standards Reference

  • Details are specified in 38.211 Table 6.4.1.4.3-1, including:
    • Possible values for the number of OFDM symbols: {n1, n2, n4}.
    • Configurations for KTC and MRSSC.

Here goes the detailed algorithm and parameters of SRS RE mapping based on 38.211-6.4.1.4.3

    NOTE : from the equation for k(pi), you would notice that the multiple SRS port (i.e, 1001 ~ 1003} is interleaving in frequency domain within the same OFDM symbol.

Here's an explanation of the components:

The following describes the algorithm and parameters for Sounding Reference Signal (SRS) Resource Element (RE) mapping in 5G NR.

Resource Element Mapping Equation

  • The scaling factor for each RE is defined as:
  • α(p,i)(k', l') =(1/√Nap) βSRS(pi)(k', l') for k' = 0, 1, ..., MRSSC - 1 and l' = 0, 1, ..., NSRSsymb - 1

  • 0 otherwise.

Subcarrier Mapping Formula (k0(p,i))

  • The starting subcarrier is calculated as:
  • k0(pi) = kŻ0pi + Σb=0BSRS - 1 KTC MRSSC,b nb

Subcarrier Hopping Pattern (nb)

  • The hopping pattern is defined as:
  • nb =

    • Case 1 : ⌊4nRRC / mSRS,b⌋ mod Nb if b ≥ Bhop
    • Case 2 : Fb(nSRS) + ⌊4nRRC / mSRS,b⌋ mod Nb if b < Bhop

Transmission Comb (kŻ(pi)TC)

  • Comb-based subcarrier mapping is:
    • (pi)TC = (kŻTC + KTC / 2) mod KTC

  • KTC: Transmission comb parameter (n2, n4).
  • Ensures interleaving in frequency domain.

Resource Parameters

  • Subcarriers for SRS blocks are calculated as:
    • MRSSC = mSRS,b × (NRBSC / KTC)

  • mSRS,b: Number of PRBs.
  • NRBSC: Subcarriers per PRB (12 in 5G).

 

Followings are some of the examples showing the key parameters of SRS resource allocation.

 

 

Since SRS resources are positioned in a certain interval in frequency domain as shown above, we can interleave (multiplex) multiple SRS along the frequency domain accupying the same OFDM symbols as shown below.

In case of comb2 configuration, you can multiplex two SRS signal as shown below.

In case of comb4 configuration, you can multiplex maximum 4 SRS signals as shown below.

SRS Bandwidth Configuration

Some of important factors defining the location and bandwith of SRS are defined by 38.211-Table 6.4.1.4.3-1. A couple of RRC parameter determines which row of the table is used for a specific SRS Resource set as indicated below.

NOTE :  Refer to this page for the SRS resource allocation by Matlab Toolbox and it would help you with intuitive understandings on the meaning of each of these parameters.

The drawing above shows how the three fields reach the table. All three sit inside the freqHopping group of SRS-Resource, and each one indexes a different part of 38.211 Table 6.4.1.4.3-1. The first, c-SRS, selects the row, and its range of INTEGER (0..63) is exactly the number of rows the table has. The second, b-SRS, selects which of the four column pairs is read, so its range of INTEGER (0..3) matches the four B-SRS groups across the top. The third is b-hop, which controls hopping rather than bandwidth.

Each cell of the table holds two numbers rather than one, and the pair is what makes the lookup useful. The first number, m-SRS, is the sounding bandwidth in resource blocks. The second, N, is the number of parts that bandwidth is divided into at that level. One pattern is visible down the whole table. N is always 1 in the B-SRS equals 0 column, so the widest level is always a single undivided block, and the finer levels are what subdivide it.

The practical consequence is a trade the gNB has to make. A wide sounding bandwidth gives a channel estimate across the whole carrier in one transmission, and it costs the uplink more. A narrow one costs less per transmission, and the gNB has to collect several of them before it knows the whole band. The two worked examples at the end of this page sit on opposite sides of that trade, at 4 and 24 resource blocks.

  • Three RRC fields, one table lookup : c-SRS chooses the row and b-SRS chooses the column pair. The cell where they meet gives the sounding bandwidth, and b-hop controls hopping without entering that lookup.
  • The ASN.1 ranges and the table dimensions agree : c-SRS is INTEGER (0..63) against 64 rows, and b-SRS is INTEGER (0..3) against four column pairs. Neither field can point outside the table.
  • Each cell carries a bandwidth and a division count : m-SRS is the sounding bandwidth in resource blocks, and N says how many parts it is split into. In the B-SRS equals 0 column N is always 1.
  • Bandwidth is an overhead decision, not just a coverage one : sounding the whole carrier at once is the fastest way to a full channel estimate. It is also the most expensive use of uplink symbols.

< 38.211-Table 6.4.1.4.3-1: SRS bandwidth configuration. >

UE Capabilities

SRS related UE capability is pretty complicated topic and I still don't have complete understandings on this. I am just adding small items as I learn more on this issue.

I think the most fundamental UE capability about SRS is following (38.214-621)

    The UE may be configured with one or more Sounding Reference Signal (SRS) resource sets as configured by the higher layer parameter SRS-ResourceSet or SRS-PosResourceSet. For each SRS resource set configured by SRSResourceSet, a UE may be configured with K ≥ 1SRS resources (higher layer parameter SRS-Resource), where the maximum value of K is indicated by UE capability

The UE capability of this statement is described in supportedSRS-Resources in 38.306.

An example of UE capability information from a commercial device is as follows : (The protocol log is captured by Amarisoft Callbox and a Commercial UE).

Decoded RRC, JER format. These are values from a live capture, not from the specification.

featureSetsUplink {
  {
    featureSetListPerUplinkCC {
      1
    },
    supportedSRS-Resources {
      maxNumberAperiodicSRS-PerBWP n16,
      maxNumberAperiodicSRS-PerBWP-PerSlot 6,
      maxNumberPeriodicSRS-PerBWP n16,
      maxNumberPeriodicSRS-PerBWP-PerSlot 6,
      maxNumberSemiPersistentSRS-PerBWP n2,
      maxNumberSemiPersistentSRS-PerBWP-PerSlot 2,
      maxNumberSRS-Ports-PerResource n1
    }
  },
  {
    featureSetListPerUplinkCC {
      2
    },
    supportedSRS-Resources {
      maxNumberAperiodicSRS-PerBWP n16,
      maxNumberAperiodicSRS-PerBWP-PerSlot 6,
      maxNumberPeriodicSRS-PerBWP n16,
      maxNumberPeriodicSRS-PerBWP-PerSlot 6,
      maxNumberSemiPersistentSRS-PerBWP n2,
      maxNumberSemiPersistentSRS-PerBWP-PerSlot 2,
      maxNumberSRS-Ports-PerResource n1
    }
  },

Followings are for UE Capability Information

 

Following is based on 38.331 v19.3.0 (Release 19)

FeatureSetUplink ::=                SEQUENCE {
    featureSetListPerUplinkCC           SEQUENCE (SIZE (1.. maxNrofServingCells)) OF FeatureSetUplinkPerCC-Id,
    scalingFactor                       ENUMERATED {f0p4, f0p75, f0p8}                                          OPTIONAL,
    dummy3                              ENUMERATED {supported}                                                  OPTIONAL,
    intraBandFreqSeparationUL           FreqSeparationClass                                                     OPTIONAL,
    searchSpaceSharingCA-UL             ENUMERATED {supported}                                                  OPTIONAL,
    dummy1                              DummyI                                                                  OPTIONAL,
    supportedSRS-Resources              SRS-Resources                                                           OPTIONAL,
    twoPUCCH-Group                      ENUMERATED {supported}                                                  OPTIONAL,
    dynamicSwitchSUL                    ENUMERATED {supported}                                                  OPTIONAL,
    simultaneousTxSUL-NonSUL            ENUMERATED {supported}                                                  OPTIONAL,
    pusch-ProcessingType1-DifferentTB-PerSlot SEQUENCE {
        scs-15kHz                                 ENUMERATED {upto2, upto4, upto7}                                  OPTIONAL,
        scs-30kHz                                 ENUMERATED {upto2, upto4, upto7}                                  OPTIONAL,
        scs-60kHz                                 ENUMERATED {upto2, upto4, upto7}                                  OPTIONAL,
        scs-120kHz                                ENUMERATED {upto2, upto4, upto7}                                  OPTIONAL
    }                                                                                                           OPTIONAL,
    dummy2                               DummyF                                                                 OPTIONAL
}

Three of those fields carry a name they did not start with. The fields dummy3, dummy1 and dummy2 were crossCarrierScheduling-OtherSCS, srs-TxSwitch and csi-ReportFramework in the Release 15 text. 3GPP does not delete a field once it is published, so a deprecated one is renamed and left in place to hold its position in the encoding. Of the three, dummy1 is the one that matters here, because it is the old home of the antenna switching capability.

The live capability moved into BandParameters instead, and the capture further down confirms it by showing srs-TxSwitch inside bandList-v1540. Two details changed with the move. The field txSwitchImpactToRx became an INTEGER (1..32) rather than a flag, and the value list gained t1r1, t2r2, t4r4 and notSupported. Release 16 then added the combined values, and Release 17 extended the whole thing past four receive antennas with an 11 bit string.

Following is based on 38.331 v19.3.0 (Release 19)

BandParameters-v1540 ::=            SEQUENCE {
    srs-CarrierSwitch                   CHOICE {
        nr                                  SEQUENCE {
            srs-SwitchingTimesListNR            SEQUENCE (SIZE (1..maxSimultaneousBands)) OF SRS-SwitchingTimeNR
        },
        eutra                               SEQUENCE {
            srs-SwitchingTimesListEUTRA         SEQUENCE (SIZE (1..maxSimultaneousBands)) OF SRS-SwitchingTimeEUTRA
        }
    }                                                                              OPTIONAL,
    srs-TxSwitch                    SEQUENCE {
        supportedSRS-TxPortSwitch       ENUMERATED {t1r2, t1r4, t2r4, t1r4-t2r4, t1r1, t2r2, t4r4, notSupported},
        txSwitchImpactToRx              INTEGER (1..32)                            OPTIONAL,
        txSwitchWithAnotherBand         INTEGER (1..32)                            OPTIONAL
    }                                                                              OPTIONAL
}

# ---- BandParameters-v1610 : 38.331 v19.3.0 (Release 19) ----

BandParameters-v1610 ::=         SEQUENCE {
    srs-TxSwitch-v1610               SEQUENCE {
        supportedSRS-TxPortSwitch-v1610  ENUMERATED {t1r1-t1r2, t1r1-t1r2-t1r4, t1r1-t1r2-t2r2-t2r4, t1r1-t1r2-t2r2-t1r4-t2r4,
                                                         t1r1-t2r2, t1r1-t2r2-t4r4}
    }                                                                              OPTIONAL
}

# ---- BandParameters-v1710 : 38.331 v19.3.0 (Release 19) ----

BandParameters-v1710 ::=         SEQUENCE {
    -- R1 23-8-3SRS Antenna switching for >4Rx
    srs-AntennaSwitchingBeyond4RX-r17                     SEQUENCE {
        -- 1. Support of SRS antenna switching xTyR with y>4
        supportedSRS-TxPortSwitchBeyond4Rx-r17                BIT STRING (SIZE (11)),
        -- 2. Report the entry number of the first-listed band with UL in the band combination that affects this DL
        entryNumberAffectBeyond4Rx-r17                        INTEGER (1..32)      OPTIONAL,
        -- 3. Report the entry number of the first-listed band with UL in the band combination that switches together with this UL
        entryNumberSwitchBeyond4Rx-r17                        INTEGER (1..32)      OPTIONAL
    }                                                                              OPTIONAL
}

# ---- DummyI : 38.331 v19.3.0 (Release 19) ----

DummyI ::=               SEQUENCE {
    supportedSRS-TxPortSwitch           ENUMERATED {t1r2, t1r4, t2r4, t1r4-t2r4, tr-equal},
    txSwitchImpactToRx                  ENUMERATED {true}                                       OPTIONAL
}

 

Example 01 > UE Capability Information - t1r2

The capture below is the part of a real UE capability message that carries the antenna switching capability. Notice where it sits. The field srs-TxSwitch appears inside bandList-v1540, which is per band rather than per feature set, and that placement is the point the listing above makes.

Decoded RRC, JER format. These are values from a live capture, not from the specification.

supportedBandCombinationList-v1540 {
  {
    bandList-v1540 {
      {
        srs-TxSwitch {
          supportedSRS-TxPortSwitch t1r2
        }
      }
    },
    ca-ParametersNR-v1540 {
      csi-RS-IM-ReceptionForFeedbackPerBandComb {
        maxNumberSimultaneousNZP-CSI-RS-ActBWP-AllCC 8,
        totalNumberPortsSimultaneousNZP-CSI-RS-ActBWP-AllCC 64
      },
      simultaneousCSI-ReportsAllCC 8
    }
  },
  ....
 }

Antenna Switching

Following RRC parameter is to configure UE to do SRS antenna switching The idea behind it is worth stating before the parameter arrives. A UE with more receive chains than transmit chains cannot sound every antenna at once. So it sounds them in turn, moving its transmitter across the antennas over successive SRS symbols, and the gNB assembles one picture of the downlink channel out of the pieces.

        SRS-ResourceSet.usage = antennaSwitching

UE performs antenna switching in various way depending on RRC parameter setting in SRS-ResourceSet as described in 38.214 6.2.1.2.  Which of the following case should be applied ? It depends on UE capability on supportedSRS-TxPortSwitch which can be 1T2R or 1T4R or 2T4R or T=R

 

< Case 1 > 1T2R

  •   Number of SRS ResourceSet =up to two
  •   Each ResourceSet hastwo SRS Resources transmitting at different symbols
  •   Each SRS Resource in a ResourceSet  consists ofsingle SRS port  and the SRS port of the second resource in the set is associated with a different UE antenna port than the SRS port of the first resource in the same set
  •   SRS-ResourceSet.resourceType : configured (aperiodic / semi-persistent / periodic)

 

< Case 2 > 2T4R

  •   Number of SRS ResourceSet =up to two
  •   Each ResourceSet hastwo SRS Resources transmitting at different symbols
  •   Each SRS Resource in a ResourceSet  consists oftwo SRS ports  and the SRS port pair of the second resource in the set is associated with a different UE antenna port pair than the SRS port of the first resource in the same
  •   SRS-ResourceSet.resourceType : configured (aperiodic / semi-persistent / periodic)

 

< Case 3 > 1T4R

  •   Number of SRS ResourceSet =zero or one
  •   Each ResourceSet hasfour SRS Resources transmitting at different symbols
  •   Each SRS Resource in a ResourceSet  consists ofsingle SRS ports  and the SRS port of each resource is associated with a different UE antenna port
  •   SRS-ResourceSet.resourceType : configured (periodic / semi-persistent)

 

< Case 4 > : 2T4R

  • Number of SRS ResourceSet =zero or two
  • Each ResourceSet hasfour SRS Resources transmitting at different symbols of two different slot
  • SRS port of each SRS resource in given two sets is associated with a different UE antenna port
  • The two sets are each configured with two SRS resources, or one set is configured with one SRS resource and the other set is configured with three SRS resources.
  • SRS-ResourceSet.resourceType : configured (aperiodic)

 

< Case 5 > 1T=1R, or 2T=2R, or 4T=4R

  •   Number of SRS ResourceSet =upto two
  •   number of SRS ports for each resource is equal to 1, 2, or 4.

 

Does this description make clear sense to you ? I think I have read this part in 38.214 almost 10 times, but still not clear to me. It is extremly difficult to read those short section of the specification without falling asleep :). Then I gave up reading 38.214 and start trying to find TDocs with some picture and tables. With following tables and pictures from TDocs, finally the description on 38.214 start making sense.

 

Followings are the figure from R1-1800116

< Illustration of 1T4R antenna switching for aperiodic SRS >

 

Examples : Antenna Switching

Examples in this section are the tables from R1-1800090 or other personal contributers. Here the terminology may sounda little confiusing. Let me try (at least try :) to clarify it.

  • xTyR : x indicates the Number of Tx port and y indicates the number of Rx port. The Tx and Rx are from the point of UE. So Tx mean Uplink and Rx mean Downlink.
  • UE antenna port : This indicates UE's Rx antenna port
  • SRS port : This indicates the srs port. Each of srs port is mapped to separate resource grid.
  • Number of SRS port is determined by the number of UL antenna.

NOTE : If you want to see the contents of full log for antenna switching with Amarisoft Log viewer, go to LogAnalysis section and click on 'Sample Log' in this tutorial of Amarisoft TechAcademy.

Example 01 > 1T2R

Typical example of this case is DL 2x2 MIMO (2R UE's from point of view) and UL SISO(1T UE's from point of view). One transmit chain has to cover two receive antennas, so the sounding needs two SRS symbols with a switch between them.

< Association between SRS ports and UE antenna ports for 1T2R >

SRS Ports

UE Antenna Ports

SRS port 0 of the first SRS resource

UE antenna port 0

SRS port 0 of the second SRS resource

UE antenna port 1

 

Example 02 > 2T4R

Typical example of this case is DL 4x4 MIMO (4R UE's from point of view) and UL 2x2 MIMO(2T UE's from point of view). Two transmit chains cover four antennas here, so each chain takes two of them and two SRS symbols are still enough.

< Association between SRS ports and UE antenna ports for 2T4R >

SRS Ports

UE Antenna Ports

SRS port 0 of the first SRS resource

UE antenna port 0

SRS port 1 of the first SRS resource

UE antenna port 1

SRS port 0 of the second SRS resource

UE antenna port 2

SRS port 1 of the second SRS resource

UE antenna port 3

 

Example 03 > 1T4R

Typical example of this case is DL 4x4 MIMO (4R UE's from point of view) and UL SISO(1T UE's from point of view). One transmit chain has to cover four antennas this time, so four SRS symbols are needed and they no longer fit inside a single slot.

< Association between SRS ports and UE antenna ports for 1T4R >

SRS Ports

UE Antenna Ports

SRS port 0 of the first SRS resource

UE antenna port 0

SRS port 0 of the second SRS resource

UE antenna port 1

SRS port 0 of the third SRS resource

UE antenna port 2

SRS port 0 of the fourth SRS resource

UE antenna port 3

 

Example 04 > 1T4R

This example is shared by Sean. He is an ardent reader of sharetechnote and an experts on many subjects related to real deployment. He has been giving me a lot of insight on many topics and this example is one of them.

Following diagram shows SRS resource allocation at slot level. This would give you an idea on how SRS can be allocated with TDD UL-DL configuration. Of course, this is not the only possible way, you can come up with various other configuration depending on UE capability, Network capability/requirement.

In this example, you would notice that SRS is allocated in Flexible slot and the overall repetition cycle is 40 ms.

Following diagram shows the Antenna selection status for each slot where SRS is transmitted.

 

RRC Parameters

Everything the earlier sections describe arrives in the IEs below, and they nest from the outside in. BWP-UplinkDedicated is where an SRS configuration hangs off an uplink BWP. SRS-Config holds the resource sets and the resources. SRS-Resource is where the bandwidth and hopping fields that the worked examples use are finally defined.

Following is based on 38.331 v19.3.0 (Release 19)

BWP-UplinkDedicated ::=             SEQUENCE {
    pucch-Config                        SetupRelease { PUCCH-Config }                                           OPTIONAL,   -- Need M
    pusch-Config                        SetupRelease { PUSCH-Config }                                           OPTIONAL,   -- Need M
    configuredGrantConfig               SetupRelease { ConfiguredGrantConfig }                                  OPTIONAL,   -- Need M
    srs-Config                          SetupRelease { SRS-Config }                                             OPTIONAL,   -- Need M
    beamFailureRecoveryConfig           SetupRelease { BeamFailureRecoveryConfig }                              OPTIONAL,   -- Cond SpCellOnly
    ...,
    [[
    sl-PUCCH-Config-r16                 SetupRelease { PUCCH-Config }                                           OPTIONAL,   -- Need M
    cp-ExtensionC2-r16                  INTEGER (1..28)                                                         OPTIONAL,   -- Need R
    cp-ExtensionC3-r16                  INTEGER (1..28)                                                         OPTIONAL,   -- Need R
    useInterlacePUCCH-PUSCH-r16         ENUMERATED {enabled}                                                    OPTIONAL,   -- Need R
    pucch-ConfigurationList-r16         SetupRelease { PUCCH-ConfigurationList-r16 }                            OPTIONAL,   -- Need M
    lbt-FailureRecoveryConfig-r16       SetupRelease { LBT-FailureRecoveryConfig-r16 }                          OPTIONAL,   -- Need M
    configuredGrantConfigToAddModList-r16                 ConfiguredGrantConfigToAddModList-r16                 OPTIONAL,   -- Need N
    configuredGrantConfigToReleaseList-r16                ConfiguredGrantConfigToReleaseList-r16                OPTIONAL,   -- Need N
    configuredGrantConfigType2DeactivationStateList-r16   ConfiguredGrantConfigType2DeactivationStateList-r16   OPTIONAL    -- Need R
    ]],
    [[
    ul-TCI-StateList-r17                CHOICE {
        explicitlist                        SEQUENCE {
            ul-TCI-ToAddModList-r17             SEQUENCE (SIZE (1..maxUL-TCI-r17)) OF TCI-UL-State-r17          OPTIONAL,   -- Need N
            ul-TCI-ToReleaseList-r17            SEQUENCE (SIZE (1..maxUL-TCI-r17)) OF TCI-UL-StateId-r17        OPTIONAL    -- Need N
        },
        unifiedTCI-StateRef-r17         ServingCellAndBWP-Id-r17
    }                                                                                                           OPTIONAL,  -- Need R
    ul-powerControl-r17                Uplink-powerControlId-r17                                                OPTIONAL,  -- Cond NoTCI-PC
    pucch-ConfigurationListMulticast1-r17  SetupRelease { PUCCH-ConfigurationList-r16 }                         OPTIONAL,  -- Need M
    pucch-ConfigurationListMulticast2-r17  SetupRelease { PUCCH-ConfigurationList-r16 }                         OPTIONAL   -- Need M
    ]],
    [[
    pucch-ConfigMulticast1-r17          SetupRelease { PUCCH-Config }                                           OPTIONAL,  -- Need M
    pucch-ConfigMulticast2-r17          SetupRelease { PUCCH-Config }                                           OPTIONAL   -- Need M
    ]],
    [[
    pathlossReferenceRSToAddModList-r17     SEQUENCE (SIZE (1..maxNrofPathlossReferenceRSs-r17)) OF PathlossReferenceRS-r17
                                                                                                                OPTIONAL, -- Need N
    pathlossReferenceRSToReleaseList-r17    SEQUENCE (SIZE (1..maxNrofPathlossReferenceRSs-r17)) OF PathlossReferenceRS-Id-r17
                                                                                                                OPTIONAL  -- Need N
    ]],
    [[
    sbfd-Config2-Transmission-r19       ENUMERATED {enabled}                                                    OPTIONAL,   -- Need S
    sbfd-Config2-PUSCH-RB-Offset-r19    INTEGER(0..maxNrofPhysicalResourceBlocks-1)                             OPTIONAL,   -- Need R
    ul-Muting-NonSBFD-Symbol-r19        ENUMERATED {enabled}                                                    OPTIONAL,   -- Need S
    twoTA-Without-MultiDCI-MultiTRP-r19  ENUMERATED {enabled}                                                   OPTIONAL   -- Need R
    ]]
}

SRS-Config hangs off the uplink BWP through srs-Config above, so an SRS configuration belongs to one bandwidth part rather than to the cell. The IEs below are what that SetupRelease actually carries.

Following is based on 38.331 v19.3.0 (Release 19)

SRS-Config ::=                          SEQUENCE {
    srs-ResourceSetToReleaseList            SEQUENCE (SIZE(1..maxNrofSRS-ResourceSets)) OF SRS-ResourceSetId        OPTIONAL, -- Need N
    srs-ResourceSetToAddModList             SEQUENCE (SIZE(1..maxNrofSRS-ResourceSets)) OF SRS-ResourceSet          OPTIONAL, -- Need N
    srs-ResourceToReleaseList               SEQUENCE (SIZE(1..maxNrofSRS-Resources)) OF SRS-ResourceId              OPTIONAL, -- Need N
    srs-ResourceToAddModList                SEQUENCE (SIZE(1..maxNrofSRS-Resources)) OF SRS-Resource                OPTIONAL, -- Need N
    tpc-Accumulation                        ENUMERATED {disabled}                                                   OPTIONAL, -- Need S
    ...,
    [[
    srs-RequestDCI-1-2-r16                  INTEGER (1..2)                                                          OPTIONAL, -- Need S
    srs-RequestDCI-0-2-r16                  INTEGER (1..2)                                                          OPTIONAL, -- Need S
    srs-ResourceSetToAddModListDCI-0-2-r16  SEQUENCE (SIZE(1..maxNrofSRS-ResourceSets)) OF SRS-ResourceSet          OPTIONAL, -- Need N
    srs-ResourceSetToReleaseListDCI-0-2-r16 SEQUENCE (SIZE(1..maxNrofSRS-ResourceSets)) OF SRS-ResourceSetId        OPTIONAL, -- Need N
    srs-PosResourceSetToReleaseList-r16     SEQUENCE (SIZE(1..maxNrofSRS-PosResourceSets-r16)) OF SRS-PosResourceSetId-r16
                                                                                                                    OPTIONAL, -- Need N
    srs-PosResourceSetToAddModList-r16      SEQUENCE (SIZE(1..maxNrofSRS-PosResourceSets-r16)) OF SRS-PosResourceSet-r16        OPTIONAL,-- Need N
    srs-PosResourceToReleaseList-r16        SEQUENCE (SIZE(1..maxNrofSRS-PosResources-r16)) OF SRS-PosResourceId-r16            OPTIONAL,-- Need N
    srs-PosResourceToAddModList-r16         SEQUENCE (SIZE(1..maxNrofSRS-PosResources-r16)) OF SRS-PosResource-r16  OPTIONAL  -- Need N
    ]],
    [[
    dci-TriggeringPosResourceSetLink-r18    ENUMERATED { enabled }                                                  OPTIONAL  -- Need R
    ]],
    [[
    srs-TwoSeparatePowerControlAdjustmentStates-r19   ENUMERATED {enabled}                                          OPTIONAL, -- Need R
    tpc-OfSRS-ClosedLoopIndexInDCI-1-1-r19            ENUMERATED {enabled}                                          OPTIONAL, -- Need R
    srs-ClosedLoopIndexIndicatorInDCI-1-1-r19         ENUMERATED {enabled}                                          OPTIONAL  -- Need R
    ]]
}

SRS-ResourceSet ::=                     SEQUENCE {
    srs-ResourceSetId                       SRS-ResourceSetId,
    srs-ResourceIdList                      SEQUENCE (SIZE(1..maxNrofSRS-ResourcesPerSet)) OF SRS-ResourceId    OPTIONAL, -- Cond Setup
    resourceType                            CHOICE {
        aperiodic                               SEQUENCE {
            aperiodicSRS-ResourceTrigger            INTEGER (1..maxNrofSRS-TriggerStates-1),
            csi-RS                                  NZP-CSI-RS-ResourceId                                  OPTIONAL, -- Cond NonCodebook
            slotOffset                              INTEGER (1..32)                                        OPTIONAL, -- Need S
            ...,
            [[
            aperiodicSRS-ResourceTriggerList            SEQUENCE (SIZE(1..maxNrofSRS-TriggerStates-2))
                                                            OF INTEGER (1..maxNrofSRS-TriggerStates-1)     OPTIONAL  -- Need M
            ]]
        },
        semi-persistent                         SEQUENCE {
            associatedCSI-RS                        NZP-CSI-RS-ResourceId                                  OPTIONAL, -- Cond NonCodebook
            ...
        },
        periodic                                SEQUENCE {
            associatedCSI-RS                        NZP-CSI-RS-ResourceId                                  OPTIONAL, -- Cond NonCodebook
            ...
        }
    },
    usage                                   ENUMERATED {beamManagement, codebook, nonCodebook, antennaSwitching},
    alpha                                   Alpha                                                          OPTIONAL, -- Need S
    p0                                      INTEGER (-202..24)                                             OPTIONAL, -- Cond Setup
    pathlossReferenceRS                     PathlossReferenceRS-Config                                     OPTIONAL, -- Need M
    srs-PowerControlAdjustmentStates        ENUMERATED { sameAsFci2, separateClosedLoop}                   OPTIONAL, -- Need S
    ...,
    [[
    pathlossReferenceRSList-r16             SetupRelease { PathlossReferenceRSList-r16}                    OPTIONAL  -- Need M
    ]],
    [[
    usagePDC-r17                            ENUMERATED {true}                                              OPTIONAL, -- Need R
    availableSlotOffsetList-r17             SEQUENCE (SIZE(1..4)) OF AvailableSlotOffset-r17               OPTIONAL, -- Need R
    followUnifiedTCI-StateSRS-r17           ENUMERATED {enabled}                                           OPTIONAL  -- Need R
    ]],
    [[
    applyIndicatedTCI-State-r18             ENUMERATED {first, second}                                     OPTIONAL  -- Cond FollowUTCI
    ]],
    [[
    symbolType-r19                          ENUMERATED {sbfd, non-sbfd}                                    OPTIONAL, -- Need R
    associatedCSI-RS-Set-r19                NZP-CSI-RS-ResourceSetId                                       OPTIONAL, -- Need R
    srs-PortGrouping-r19                    ENUMERATED {enabled}                                           OPTIONAL, -- Need R
    fourPortSRS-3Tx-r19                     ENUMERATED {enabled}                                           OPTIONAL  -- Need R
    ]]
}

SRS-ResourceSetId ::=                   INTEGER (0..maxNrofSRS-ResourceSets-1)

SRS-Resource ::=                        SEQUENCE {
    srs-ResourceId                          SRS-ResourceId,
    nrofSRS-Ports                           ENUMERATED {port1, ports2, ports4},
    ptrs-PortIndex                          ENUMERATED {n0, n1 }                                           OPTIONAL,   -- Need R
    transmissionComb                        CHOICE {
        n2                                      SEQUENCE {
            combOffset-n2                           INTEGER (0..1),
            cyclicShift-n2                          INTEGER (0..7)
        },
        n4                                      SEQUENCE {
            combOffset-n4                           INTEGER (0..3),
            cyclicShift-n4                          INTEGER (0..11)
        }
    },
    resourceMapping                         SEQUENCE {
        startPosition                           INTEGER (0..5),
        nrofSymbols                             ENUMERATED {n1, n2, n4},
        repetitionFactor                        ENUMERATED {n1, n2, n4}
    },
    freqDomainPosition                      INTEGER (0..67),
    freqDomainShift                         INTEGER (0..268),
    freqHopping                             SEQUENCE {
        c-SRS                                   INTEGER (0..63),
        b-SRS                                   INTEGER (0..3),
        b-hop                                   INTEGER (0..3)
    },
    groupOrSequenceHopping                  ENUMERATED { neither, groupHopping, sequenceHopping },
    resourceType                            CHOICE {
        aperiodic                               SEQUENCE {
            ...
        },
        semi-persistent                         SEQUENCE {
            periodicityAndOffset-sp                     SRS-PeriodicityAndOffset,
            ...
        },
        periodic                                SEQUENCE {
            periodicityAndOffset-p                      SRS-PeriodicityAndOffset,
            ...
        }
    },
    sequenceId                              INTEGER (0..1023),
    spatialRelationInfo                     SRS-SpatialRelationInfo                                        OPTIONAL,   -- Need R
    ...,
    [[
    resourceMapping-r16                     SEQUENCE {
        startPosition-r16                       INTEGER (0..13),
        nrofSymbols-r16                         ENUMERATED {n1, n2, n4},
        repetitionFactor-r16                    ENUMERATED {n1, n2, n4}
    }                                                                                                      OPTIONAL    -- Need R
    ]],
    [[
    spatialRelationInfo-PDC-r17             SetupRelease { SpatialRelationInfo-PDC-r17 }                   OPTIONAL,   -- Need M
    resourceMapping-r17                     SEQUENCE {
        startPosition-r17                       INTEGER (0..13),
        nrofSymbols-r17                         ENUMERATED {n1, n2, n4, n8, n10, n12, n14},
        repetitionFactor-r17                    ENUMERATED {n1, n2, n4, n5, n6, n7, n8, n10, n12, n14}
    }                                                                                                      OPTIONAL,   -- Need R
    partialFreqSounding-r17                 SEQUENCE {
        startRBIndexFScaling-r17                CHOICE{
            startRBIndexAndFreqScalingFactor2-r17   INTEGER (0..1),
            startRBIndexAndFreqScalingFactor4-r17   INTEGER (0..3)
        },
        enableStartRBHopping-r17                ENUMERATED {enable}                                        OPTIONAL    -- Need R
    }                                                                                                      OPTIONAL,   -- Need R
    transmissionComb-n8-r17                 SEQUENCE {
        combOffset-n8-r17                       INTEGER (0..7),
        cyclicShift-n8-r17                      INTEGER (0..5)
    }                                                                                                      OPTIONAL,   -- Need R
    srs-TCI-State-r17                       CHOICE {
        srs-UL-TCI-State                        TCI-UL-StateId-r17,
        srs-DLorJointTCI-State                  TCI-StateId
    }                                                                                                      OPTIONAL    -- Need R
    ]],
    [[
    repetitionFactor-v1730                  ENUMERATED {n3}                                                OPTIONAL,   -- Need R
    srs-DLorJointTCI-State-v1730            SEQUENCE {
        cellAndBWP-r17                          ServingCellAndBWP-Id-r17
    }                                                                                                 OPTIONAL -- Cond DLorJointTCI-SRS
    ]],
    [[
    nrofSRS-Ports-n8-r18                    ENUMERATED {ports8, ports8tdm}                                 OPTIONAL,   -- Need R
    combOffsetHopping-r18                   SEQUENCE {
        hoppingId-r18                           INTEGER (0..1023)                                          OPTIONAL,   -- Need R
        hoppingSubset-r18                       CHOICE {
          transmissionComb-n4                       BIT STRING (SIZE (4)),
          transmissionComb-n8                       BIT STRING (SIZE (8))
        }                                                                                                  OPTIONAL,   -- Need R
        hoppingWithRepetition-r18               ENUMERATED {symbol, repetition}                            OPTIONAL    -- Need R
    }                                                                                                      OPTIONAL,   -- Need R
    cyclicShiftHopping-r18                  SEQUENCE {
        hoppingId-r18                           INTEGER (0..1023)                                          OPTIONAL,   -- Need R
        hoppingSubset-r18                       CHOICE {
          transmissionComb-n2                       BIT STRING (SIZE (8)),
          transmissionComb-n4                       BIT STRING (SIZE (12)),
          transmissionComb-n8                       BIT STRING (SIZE (6))
        }                                                                                                  OPTIONAL,   -- Need R
        hoppingFinerGranularity-r18             ENUMERATED {enable}                                        OPTIONAL    -- Need R
    }                                                                                                      OPTIONAL    -- Need R
    ]]
}

SRS-PosResource-r16::=                  SEQUENCE {
    srs-PosResourceId-r16                   SRS-PosResourceId-r16,
    transmissionComb-r16                    CHOICE {
        n2-r16                                  SEQUENCE {
            combOffset-n2-r16                       INTEGER (0..1),
            cyclicShift-n2-r16                      INTEGER (0..7)
        },
        n4-r16                                  SEQUENCE {
            combOffset-n4-r16                        INTEGER (0..3),
            cyclicShift-n4-r16                      INTEGER (0..11)
        },
        n8-r16                                  SEQUENCE {
            combOffset-n8-r16                       INTEGER (0..7),
            cyclicShift-n8-r16                      INTEGER (0..5)
        },
    ...
    },
    resourceMapping-r16                       SEQUENCE {
        startPosition-r16                           INTEGER (0..13),
        nrofSymbols-r16                             ENUMERATED {n1, n2, n4, n8, n12}
    },
    freqDomainShift-r16                       INTEGER (0..268),
    freqHopping-r16                           SEQUENCE {
        c-SRS-r16                                 INTEGER (0..63),
        ...
    },
    groupOrSequenceHopping-r16                ENUMERATED { neither, groupHopping, sequenceHopping },
    resourceType-r16                          CHOICE {
        aperiodic-r16                             SEQUENCE {
            slotOffset-r16                            INTEGER (1..32)                                      OPTIONAL,   -- Need S
            ...
        },
        semi-persistent-r16                       SEQUENCE {
            periodicityAndOffset-sp-r16               SRS-PeriodicityAndOffset-r16,
            ...,
            [[
            periodicityAndOffset-sp-Ext-r16           SRS-PeriodicityAndOffsetExt-r16                      OPTIONAL    -- Need R
            ]],
            [[
            srs-PosPeriodicConfigHyperSFN-Index-r18   ENUMERATED {even0, odd1}                             OPTIONAL     --Need R
           ]]
        },
        periodic-r16                              SEQUENCE {
            periodicityAndOffset-p-r16                SRS-PeriodicityAndOffset-r16,
            ...,
            [[
            periodicityAndOffset-p-Ext-r16            SRS-PeriodicityAndOffsetExt-r16                      OPTIONAL    -- Need R
            ]],
            [[
            srs-PosPeriodicConfigHyperSFN-Index-r18   ENUMERATED {even0, odd1}                             OPTIONAL     --Need R
            ]]
        }
    },
    sequenceId-r16                            INTEGER (0..65535),
    spatialRelationInfoPos-r16                SRS-SpatialRelationInfoPos-r16                               OPTIONAL,   -- Need R
    ...,
    [[
    txHoppingConfig-r18                       TxHoppingConfig-r18                                          OPTIONAL    --Need R
    ]]
}

SRS-SpatialRelationInfo ::=     SEQUENCE {
    servingCellId                       ServCellIndex                                                      OPTIONAL,   -- Need S
    referenceSignal                     CHOICE {
        ssb-Index                           SSB-Index,
        csi-RS-Index                        NZP-CSI-RS-ResourceId,
        srs                                 SEQUENCE {
            resourceId                          SRS-ResourceId,
            uplinkBWP                           BWP-Id
        }
    }
}

SRS-ResourceId ::=                      INTEGER (0..maxNrofSRS-Resources-1)

SRS-PeriodicityAndOffset ::=            CHOICE {
    sl1                                     NULL,
    sl2                                     INTEGER(0..1),
    sl4                                     INTEGER(0..3),
    sl5                                     INTEGER(0..4),
    sl8                                     INTEGER(0..7),
    sl10                                    INTEGER(0..9),
    sl16                                    INTEGER(0..15),
    sl20                                    INTEGER(0..19),
    sl32                                    INTEGER(0..31),
    sl40                                    INTEGER(0..39),
    sl64                                    INTEGER(0..63),
    sl80                                    INTEGER(0..79),
    sl160                                   INTEGER(0..159),
    sl320                                   INTEGER(0..319),
    sl640                                   INTEGER(0..639),
    sl1280                                  INTEGER(0..1279),
    sl2560                                  INTEGER(0..2559)
}

SRS-PeriodicityAndOffset-r16 ::=        CHOICE {
    sl1                                     NULL,
    sl2                                     INTEGER(0..1),
    sl4                                     INTEGER(0..3),
    sl5                                     INTEGER(0..4),
    sl8                                     INTEGER(0..7),
    sl10                                    INTEGER(0..9),
    sl16                                    INTEGER(0..15),
    sl20                                    INTEGER(0..19),
    sl32                                    INTEGER(0..31),
    sl40                                    INTEGER(0..39),
    sl64                                    INTEGER(0..63),
    sl80                                    INTEGER(0..79),
    sl160                                   INTEGER(0..159),
    sl320                                   INTEGER(0..319),
    sl640                                   INTEGER(0..639),
    sl1280                                  INTEGER(0..1279),
    sl2560                                  INTEGER(0..2559),
    sl5120                                  INTEGER(0..5119),
    sl10240                                 INTEGER(0..10239),
    sl40960                                 INTEGER(0..40959),
    sl81920                                 INTEGER(0..81919),
    ...
}

...    -- the SRS-Pos* variants of these IEs configure positioning SRS, which is a
       -- different topic, and the auxiliary types they reference are not shown here

}

Examples : Periodic SRS   

NOTE : If you want to see the contents of full log with Amarisoft Log viewer, go to LogAnalysis section and click on 'Sample Log' in this tutorial of Amarisoft TechAcademy.

Example 01 >  Periodic 80 ms, c-SRS 11, b-SRS 3, b-hop 0

This is an example of Periodic SRS captured by Amari Callbox and commercial UE. The three numbers in the heading are the ones to follow through the log. The first, c-SRS 11, picks a row of 38.211 Table 6.4.1.4.3-1. The second, b-SRS 3, picks a column within that row, and the pair resolves to a sounding bandwidth of 4 resource blocks. The third is b-hop, the hopping parameter, and the figures below trace all three through the table.

 

SIB 1 :

Decoded RRC, JER format. These are values from a live capture, not from the specification.

servingCellConfigCommon {
  downlinkConfigCommon {
    frequencyInfoDL {
      frequencyBandList {
        {
          freqBandIndicatorNR 78
        }
      },
      offsetToPointA 24,
      scs-SpecificCarrierList {
        {
          offsetToCarrier 0,
          subcarrierSpacing kHz30,
          carrierBandwidth 51
        }
      }
    },

 

RrcSetup :

Decoded RRC, JER format. These are values from a live capture, not from the specification.

srs-Config setup: {
  srs-ResourceSetToAddModList {
    {
      srs-ResourceSetId 0,
      srs-ResourceIdList {
        0
      },
      resourceType periodic: {
      },
      usage codebook,
      p0 -76,
      pathlossReferenceRS ssb-Index: 0
    }
  },
  srs-ResourceToAddModList {
    {
      srs-ResourceId 0,
      nrofSRS-Ports port1,
      transmissionComb n2: {
        combOffset-n2 0,
        cyclicShift-n2 4
      },
      resourceMapping {
        startPosition 0,
        nrofSymbols n1,
        repetitionFactor n1
      },
      freqDomainPosition 0,
      freqDomainShift 5,
      freqHopping {
        c-SRS 11,
        b-SRS 3,
        b-hop 0
      },
      groupOrSequenceHopping neither,
      resourceType periodic: {
        periodicityAndOffset-p sl80: 7
      },
      sequenceId 500
    }
  }
}

 

According to the Rrc Configuration shown above, following bandwidth configuration is used. This indicates that one SRS will transmit the reference signal in 4 consecutive PRBs.

Following is the result of SRS received and measured by Amari Callbox. You would notice that each SRS transmit the signal across 4 consecutive PRB, each SRS is transmitted with 4 radio frames (40 ms, 800 slots). It takes 80 radio frames (40 ms, 800 slots) to transmit SRS across the whole bandwidth. The pattern in red box (40 radio frames) repeats

Example 02 > Periodic 80 ms, c-SRS 13, b-SRS 1, b-hop 0

This is an example of Periodic SRS captured by Amari Callbox and commercial UE. It is worth reading next to the one above, because only the table lookup differs. The pair c-SRS 13 and b-SRS 1 lands on a different cell of the same table, and the sounding bandwidth that comes out is 24 resource blocks rather than 4.

 

SIB 1 :

Decoded RRC, JER format. These are values from a live capture, not from the specification.

servingCellConfigCommon {
  downlinkConfigCommon {
    frequencyInfoDL {
      frequencyBandList {
        {
          freqBandIndicatorNR 78
        }
      },
      offsetToPointA 24,
      scs-SpecificCarrierList {
        {
          offsetToCarrier 0,
          subcarrierSpacing kHz30,
          carrierBandwidth 51
        }
      }
    },

 

RrcSetup :

Decoded RRC, JER format. These are values from a live capture, not from the specification.

srs-Config setup: {
  srs-ResourceSetToAddModList {
    {
      srs-ResourceSetId 0,
      srs-ResourceIdList {
        0
      },
      resourceType periodic: {
      },
      usage codebook,
      p0 -76,
      pathlossReferenceRS ssb-Index: 0
    }
  },
  srs-ResourceToAddModList {
    {
      srs-ResourceId 0,
      nrofSRS-Ports port1,
      transmissionComb n2: {
        combOffset-n2 0,
        cyclicShift-n2 4
      },
      resourceMapping {
        startPosition 0,
        nrofSymbols n1,
        repetitionFactor n1
      },
      freqDomainPosition 0,
      freqDomainShift 5,
      freqHopping {
        c-SRS 13,
        b-SRS 1,
        b-hop 0
      },
      groupOrSequenceHopping neither,
      resourceType periodic: {
        periodicityAndOffset-p sl80: 7
      },
      sequenceId 500
    }
  }
}

 

According to the Rrc Configuration shown above, following bandwidth configuration is used. This indicates that one SRS will transmit the reference signal in 24 consecutive PRBs.

Following is the result of SRS received and measured by Amari Callbox. You would notice that each SRS transmit the signal across 24 consecutive PRB. It takes 4 radio frames (40 ms, 80 slots) to transmit SRS across the whole bandwidth. The pattern in red box (4 radio frames) repeats

Reference

[1] 3GPP TSG RAN WG1 Ad Hoc-1801 Meeting : R1-1801085 - Summary of SRS

[2] 3GPP TSG RAN WG1 Ad Hoc Meeting    : R1-1800090 - Summary of remaining details of SRS design

[3] 3GPP TSG RAN WG1 Meeting AH 1801  : R1-1800370 - Clarification on intra-slot hopping for aperiodic SRS

[4] 3GPP TSG RAN WG1 Meeting AH 1801  : R1-1800439 - Issues on SRS

[5] 3GPP TSG RAN WG1 Meeting AH 1801  : R1-1800116 - Remaining details on SRS