5G/NR - CSI Report                                       Home : www.sharetechnote.com






At high level, the concept of CSI Report (Channel State Information) in NR is similar to CSI Report in LTE, but the details especially on the resource application of various reference signal and scheduing of the report is extremely complex than LTE. In this page, I will describe on high level view on CSI report mechanism and I would need to create many separate pages to describe the details like sequence generation and  resource element mapping of those referenec signals.




Component of CSI and Hierarcies in CSI Framework


As in LTE, there are several components of CSI in NR(i.e, severl different types of CSI). The difference is that the number of the comonents are larger and operating mechanism is much complicated than in LTE. Followings are the components on CSI in NR (Based on 38.214 - 5.2.1) .

  • CQI(Channel Qulity Information)
  • PMI(Precoding Matrix Indicator)
  • CRI(CRS-RS Resource Indicator)
  • SSBRI(SS/PBCH Resource Block Indicator)
  • LI(Layer Indicator)
  • RI(Rank Indicator) an/or L1-RSRP




Higher Layer Framework of CSI Report


CSI Report framework is made up of two large parts. One is for the configuration and the other one is for Triggering States which are associated a specific configuration as illustrated below (based on 38.214 - 5.2.1).


Following is overall description on the framework and the relationships among each components.

  • Physical layer parameters for signal generation and resource element mapping for the CSI related reference signal is configured by the following RRC parameters. These physical layer parameter set is configured and stored as a kind of data base. CSI ResourceConfig select a specific parameter set configured here. The detailed physical layer description for generation and resource element mapping is described in another page linked here.
    • PDSCH-Config
    • CSI-MeasConfig
      • nzp-CSI-RS-ResourceToAddModList -> NZP-CSI-RS-Resource -> CSI-RS-ResourceMapping
      • csi-IM-ResourceToAddModList -> CSI-IM-Resource
      • csi-SSB-ResourceSetToAddModList -> CSI-SSB-ResourceSet -> SSB-Index
  • CSI ResourceCondig specifies on what type of reference signal(nzp-CSI-RS-SSB, csi-IM-Resource) is to be used. It also configures the types of the resources (periodic, aperiodic, semipersistent).
  • CSI ReportConfig specifies which of CSI ResourceConfig to be used for the measurement. It has the mapping table between the measurement type and the corresponding CSR ResourceConfig ID.


The description mentioned above can be illustrated as below.




Here goes the another diagram showing the structure (relashionship) of all of these components.



The RRC Structure for CSI Report is the most complicated one in NR and I don't have any efficient way to get all of you to understand just by writing this kind of note. Understanding this structure would require some efforts from each of you. What I can give you is just some guidelines or tips to help you get some big picture.


For those who have some degree of interest but does not need the detailed understanding : Advice for those is 'realize this is super complicated structure and process and try to get some high level image (as shown above) in your brain and stop there'.


For those who need to understand every details : Again, be aware that this is super complicated and you would need a lot of effort to reach a certain level of the detailed understanding. First, you would need to understand the overal structure of the hierarchy of CSI framework in RRC message and the relationship among them. Following is the illustration of the framework based on my understanding. If you have any experience with relational database design, you would be pretty familiar with this type of diagram. If you have any experience with OOP(Object Oriented Programming) and drawing class diagrams, this would make sense to you. If you don't have any experience with relational database nor with OOP, use your own imagination -:). It would not take long to make sense out of this diagram. Then look into RRC message structure for each of these elements (click on the link for RRC ASN listed above) and refer to 38.331 and trying to understand what it says. In most case, 38.331 would not give you full details and would suggest you to look into 38.214, 38.211 etc. It would not be easy to understand the details in 38.214... but you need to overcome the hurdle and get clear understandings on 38.214.





Which signal to use for CSI report ?


There are two types of signal you can use for CSI report. One is SSB and the other one is CSI-RS and each of them has its own advantage and disadvantage.


SSB : Advantage of using SSB would be obvious. These are being used for initial access meaning that Network is always transmitting this signal (even if not every possible SSB burst is always being transmitted, at least some of possible SSB burst should be transmitted all the time). So using these for CSI report does not cause any additional overhead. On the other hand, the disadvantage (drawback) of using SSB as CSI report seems obvious as well. First, in most cases SSB would can cover only part of the channel bandwidth since SSB can cover only 20 RB in frequency domain, where as CSI-RS can be configured for any frequency range. Also, depending on the purpose of CSI report, you may need to configure the time interval for CSI measurement in a specific way, but with SSB you don't have much flexibility to control the time domain interval of SSB.


CSI-RS : Disadvantage of using CSI-RS would seem obvious. It is causing overhead. However, advantage of uisng using CSI-RS is also obvious. It is very flexible in terms of time domain and frequency domain resource allocation. You can configure any frequency range and you can put them on any OFDM symbols within a slot.   




How to configure Report Setting /Structure of CSI-ReportConfig


How to configure CSI Report setting ? The simple answer is 'Look at CSI-ReportConfig', but it is too many parameters and too complicated. So in this section, I will try to give you some big picture of the structure of this configuration based on 38.214-


The overall structure of CSI-ReportConfig can be summarized as follows.

  • reportConfigType : this parameter indicates the scheduling method of the report. It can be periodic, aperiodic and semiPersistent as listed below.
    • aperiodic
    • semiPersistentOnPUCCH
    • semiPersistentOnPUSCH
    • periodic
  • reportQuantity : this parameter indicates what to measure. The type of quatities can be grouped into two types as listed below.
    • CSI-related quantities
    • L1-RSRP-related quantities
  • reportFreqConfiguration : this indicates the reporting granularity in frequency domain. It can be wideband or subband.
  • timeRestrictionForChannelMeasurements  : It indicates whether to put the restriction on channel measurement in time domain or not.
  • timeRestrictionForInterferenceMeasurements : It indicates whether to put the restriction on interferencel measurement in time domain or not.
  • codebookConfig : It configures the parameters for type 1 and type 2.
    • Type I
    • Type II




Reporting Parameters and dependencies


Each of Reporting Parameters are calculated from one or more other parameters(dependencies) as listed below (38.214-


Reporting Parameters













Trigger Mapping between Resource Configuration and Report Configuration


Following table is based on 38.214 Table Triggering/Activation of CSI Reporting for the possible CSI-RS Configurations

Resource Configuration

Report Configuration

CSI-RS Configuration

Periodic CSI

Semi-Persistent CSI

Aperiodic CSI

Periodic CSI-RS

No dynamic


Reporting on PUCCH :        Triggering by MAC CE

Reporting on PUSCH :

      Triggering by DCI

Triggered by DCI, additionally by MAC CE

Semi Periodic CSI-RS

Not Supported

Reporting on PUCCH :        Triggering by MAC CE

Reporting on PUSCH :

      Triggering by DCI

Triggered by DCI, additionally by MAC CE

Aperiodic CSI-RS

Not Supported Not Supported

Triggered by DCI, additionally by MAC CE


How to interpret the above table ? You can interpret this table in several different ways depending on where to put focus.


When you take Report Configuration as a kind of independent variable and Resource Configuration as a dependent variable. You may interpret the table as follows.

  • When Report configuration is Periodic, the Resource Configuration(CSI-RS Configuration = NZP CSI RS or CSI-IM) shall be Periodic as well.
  • When Report configuration is Semi-persistent, the Resource Configuration(CSI-RS Configuration = NZP CSI RS or CSI-IM) can be periodic or Semi Periodic.
  • When Report configuration is aperiodic, the Resource Configuration(CSI-RS Configuration = NZP CSI RS or CSI-IM) can be any type (i.e, periodic, semi periodic or aperiodic)


When you take Resource Configuration as a kind of independent variable and Report Configuration as a dependent variable. You may interpret the table as follows.

  • When the Resource Configuration(CSI-RS Configuration = NZP CSI RS or CSI-IM) is periodic, the Report Configuration can set to be any type (periodic, semi-persistent or aperiodic).
  • When the Resource Configuration(CSI-RS Configuration = NZP CSI RS or CSI-IM) is semi-periodic, the Report Configuration can be Semi-persistent or Aperiodic.
  • When the Resource Configuration(CSI-RS Configuration = NZP CSI RS or CSI-IM) is aperiodic, the Report Configuration can only be Aperiodic.




CSI Report Sequence Flow



How these configuration works can be illustrated as below. Periodic and Aperiodic method would be obvious as shown below. Semi-Persistent can be regarded as a kind of mix of Periodic and Aperiodic. The first cycle would be similar to aperiodic, but once the cycle is triggered the CSI RS transmission and CSI Report would happen periodically.



NOTE : X and Y in this illustration is defined as follows in 38.802

  • aperiodic CSI-RS timing offset X refers to the time gap between aperiodic CSI-RS triggering and aperiodic CSI-RS transmission with regard to the number of slots
  • aperiodic CSI reporting timing offset Y refers to the time gap between aperiodic CSI reporting triggering and aperiodic CSI reporting with regard to the number of slots.




The periodicity shown in the diagram is configured by RRC message. Depending on the physical channel and report periodicity type, different RRC parameter is used for the periodicity as shown in the following table.


Report Periodicity Type

Report Physical Channel

RRC Parameter to determin the periodicty








NOTE : reportSlotOffsetList defines a list (table) of reportslotOffsets, the index of the list to be applied for each report instance is decided by "CSI Request" field of DCI 0_1.




RRC Parameters for CSI Report



PDSCH-Config ::=                        SEQUENCE {

    dataScramblingIdentityPDSCH             INTEGER (0..1007)    OPTIONAL,

    dmrs-DownlinkForPDSCH-MappingTypeA      SetupRelease { DMRS-DownlinkConfig }  OPTIONAL,   

    dmrs-DownlinkForPDSCH-MappingTypeB      SetupRelease { DMRS-DownlinkConfig }  OPTIONAL,  

    tci-StatesToAddModList                  SEQUENCE (SIZE(1..maxNrofTCI-States))

                                                OF TCI-State    OPTIONAL,   -- Need N

    tci-StatesToReleaseList                 SEQUENCE (SIZE(1..maxNrofTCI-States))

                                                OF TCI-StateId  OPTIONAL,   -- Need N

    vrb-ToPRB-Interleaver                   ENUMERATED {n2, n4},

    resourceAllocation                      ENUMERATED { resourceAllocationType0,



    pdsch-AllocationList                    SEQUENCE (SIZE(1..maxNrofDL-Allocations))

                                                OF PDSCH-TimeDomainResourceAllocation ,

    pdsch-AggregationFactor                 ENUMERATED { n2, n4, n8 } OPTIONAL, 

    rateMatchPatternToAddModList            SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                                 OF RateMatchPattern    OPTIONAL, -- Need N

    rateMatchPatternToReleaseList           SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                                 OF RateMatchPatternId     OPTIONAL, -- Need N

    rateMatchPatternGroup1                  SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                                 OF RateMatchPatternId     OPTIONAL, -- Need R

    rateMatchPatternGroup2                  SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))

                                                 OF RateMatchPatternId     OPTIONAL, -- Need R

    rbg-Size                                ENUMERATED {config1, config2},

    mcs-Table                               ENUMERATED {qam64, qam256},

    maxNrofCodeWordsScheduledByDCI          ENUMERATED {n1, n2} OPTIONAL,   -- Need R

    prb-BundlingType                    CHOICE {

        static                                  SEQUENCE {

            bundleSize                              ENUMERATED { n4, wideband }  OPTIONAL  


        dynamic                                 SEQUENCE {

            bundleSizeSet1                          ENUMERATED { n4,




                                                                }  OPTIONAL,   -- Need S

            bundleSizeSet2                          ENUMERATED { n4,


                                                                } OPTIONAL    -- Need S



    zp-CSI-RS-ResourceToAddModList          SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources))

                                                OF ZP-CSI-RS-Resource   OPTIONAL,   -- Need N

    zp-CSI-RS-ResourceToReleaseList         SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources))

                                                OF ZP-CSI-RS-ResourceId OPTIONAL,   -- Need M

    aperiodic-ZP-CSI-RS-ResourceSetsToAddModList    SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets))

                                                OF ZP-CSI-RS-ResourceSet   OPTIONAL, -- Need N

    aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList   SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets))

                                                OF ZP-CSI-RS-ResourceSetId   OPTIONAL, -- Need N

    sp-ZP-CSI-RS-ResourceSetsToAddModList   SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets))

                                                OF ZP-CSI-RS-ResourceSet     OPTIONAL, -- Need N

    sp-ZP-CSI-RS-ResourceSetsToReleaseList  SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets))

                                                OF ZP-CSI-RS-ResourceSetId   OPTIONAL, -- Need N






CSI-MeasConfig ::= SEQUENCE {

   nzp-CSI-RS-ResourceToAddModList          SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-Resources))

                                                OF NZP-CSI-RS-Resource OPTIONAL,

   nzp-CSI-RS-ResourceToReleaseList         SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-Resources))

                                                OF NZP-CSI-RS-ResourceId OPTIONAL,

   nzp-CSI-RS-ResourceSetToAddModList       SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourceSets))

                                                OF NZP-CSI-RS-ResourceSet OPTIONAL,

   nzp-CSI-RS-ResourceSetToReleaseList      SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourceSets))

                                                OF NZP-CSI-RS-ResourceSetId OPTIONAL,

   csi-IM-ResourceToAddModList              SEQUENCE (SIZE (1..maxNrofCSI-IM-Resources))

                                                OF CSI-IM-Resource OPTIONAL,

   csi-IM-ResourceToReleaseList             SEQUENCE (SIZE (1..maxNrofCSI-IM-Resources))

                                                OF CSI-IM-ResourceId OPTIONAL,

   csi-IM-ResourceSetToAddModList           SEQUENCE (SIZE (1..maxNrofCSI-IM-ResourceSets))

                                                OF CSI-IM-ResourceSet OPTIONAL,

   csi-IM-ResourceSetToReleaseList          SEQUENCE (SIZE (1..maxNrofCSI-IM-ResourceSets))

                                                OF CSI-IM-ResourceSetId OPTIONAL,

   csi-SSB-ResourceSetToAddModList          SEQUENCE (SIZE (1..maxNrofCSI-SSB-ResourceSets))

                                                OF CSI-SSB-ResourceSet OPTIONAL,

   csi-SSB-ResourceSetToAddReleaseList      SEQUENCE (SIZE (1..maxNrofCSI-SSB-ResourceSets))

                                                OF CSI-SSB-ResourceSetId OPTIONAL,

   csi-ResourceConfigToAddModList           SEQUENCE (SIZE (1..maxNrofCSI-ResourceConfigurations))

                                                OF CSI-ResourceConfig OPTIONAL,

   csi-ResourceConfigToReleaseList          SEQUENCE (SIZE (1..maxNrofCSI-ResourceConfigurations))

                                                OF CSI-ResourceConfigId OPTIONAL,

   csi-ReportConfigToAddModList             SEQUENCE (SIZE (1..maxNrofCSI-ReportConfigurations))

                                                OF CSI-ReportConfig OPTIONAL,

   csi-ReportConfigToReleaseList            SEQUENCE (SIZE (1..maxNrofCSI-ReportConfigurations))

                                                OF CSI-ReportConfigId OPTIONAL,

   reportTriggerSize                        INTEGER (0..6) OPTIONAL,

   aperiodicTriggerStateList                SetupRelease { CSI-AperiodicTriggerStateList },

   semiPersistentOnPUSCH-TriggerStateList   SetupRelease {


                                            } OPTIONAL,





TCI-State ::= SEQUENCE {

   tci-StateId                       TCI-StateId,

   qcl-Type1                         QCL-Info,

   qcl-Type2                         QCL-Info OPTIONAL, -- Need R




QCL-Info ::=               SEQUENCE {

   cell                                   ServCellIndex OPTIONAL, -- Need R

   bwp-Id                              BWP-Id OPTIONAL, -- Cond CSI-RS-Indicated

   referenceSignal         CHOICE {

      csi-rs                            NZP-CSI-RS-ResourceId,

      ssb                               SSB-Index


   qcl-Type                  ENUMERATED {typeA, typeB, typeC, typeD},





ZP-CSI-RS-Resource ::= SEQUENCE {

   zp-CSI-RS-ResourceId        ZP-CSI-RS-ResourceId,

   resourceMapping             CSI-RS-ResourceMapping,

   periodicityAndOffset        CSI-ResourcePeriodicityAndOffset OPTIONAL,




ZP-CSI-RS-ResourceSet ::= SEQUENCE {

   zp-CSI-RS-ResourceSetId    ZP-CSI-RS-ResourceSetId,

   zp-CSI-RS-ResourceIdList   SEQUENCE (SIZE(1..maxNrofZP-CSI-RS-ResourcesPerSet))

                                OF ZP-CSI-RS-ResourceId,





NZP-CSI-RS-Resource ::= SEQUENCE {

   nzp-CSI-RS-ResourceId      NZP-CSI-RS-ResourceId,

   resourceMapping            CSI-RS-ResourceMapping,

   powerControlOffset         INTEGER (-8..15),

   powerControlOffsetSS       ENUMERATED{db-3, db0, db3, db6} OPTIONAL, -- Need R

   scramblingID               ScramblingId,

   periodicityAndOffset       CSI-ResourcePeriodicityAndOffset OPTIONAL,-

   qcl-InfoPeriodicCSI-RS     TCI-StateId OPTIONAL, -- Cond Periodic





NZP-CSI-RS-ResourceSet ::= SEQUENCE {

   nzp-CSI-ResourceSetId     NZP-CSI-RS-ResourceSetId,

   nzp-CSI-RS-Resources      SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourcesPerSet))

                                  OF NZP-CSI-RS-ResourceId,

   repetition                ENUMERATED { on, off } OPTIONAL,

   aperiodicTriggeringOffset INTEGER(0..4) OPTIONAL,

   trs-Info                  ENUMERATED {true} OPTIONAL,





CSI-RS-ResourceMapping ::= SEQUENCE {

   frequencyDomainAllocation CHOICE {

      row1     BIT STRING (SIZE (4)),

      row2     BIT STRING (SIZE (12)),

      row4     BIT STRING (SIZE (3)),

      other    BIT STRING (SIZE (6))


   nrofPorts                       ENUMERATED {p1,p2,p4,p8,p12,p16,p24,p32},

   firstOFDMSymbolInTimeDomain     INTEGER (0..13),

   firstOFDMSymbolInTimeDomain2    INTEGER (2..12) OPTIONAL, -- Need R

   cdm-Type                        ENUMERATED {noCDM, fd-CDM2, cdm4-FD2-TD2, cdm8-FD2-TD4},

   density CHOICE {

     dot5      ENUMERATED {evenPRBs, oddPRBs},

     one       NULL,

     three     NULL,

     spare     NULL


   freqBand    CSI-FrequencyOccupation,





CSI-ResourcePeriodicityAndOffset ::= CHOICE {

   slots4       INTEGER (0..3),

   slots5       INTEGER (0..4),

   slots8       INTEGER (0..7),

   slots10      INTEGER (0..9),

   slots16      INTEGER (0..15),

   slots20      INTEGER (0..19),

   slots32      INTEGER (0..31),

   slots40      INTEGER (0..39),

   slots64      INTEGER (0..63),

   slots80      INTEGER (0..79),

   slots160     INTEGER (0..159),

   slots320     INTEGER (0..319),

   slots640     INTEGER (0..639)




CSI-FrequencyOccupation ::= SEQUENCE {

   startingRB    INTEGER (0..maxNrofPhysicalResourceBlocks-1),

   nrofRBs       INTEGER (24..maxNrofPhysicalResourceBlocksPlus1),





CSI-IM-Resource ::= SEQUENCE {

   csi-IM-ResourceId                   CSI-IM-ResourceId,

   csi-IM-ResourceElementPattern       CHOICE {

      pattern0 SEQUENCE {

         subcarrierLocation-p0         ENUMERATED { s0, s2, s4, s6, s8, s10 },

         symbolLocation-p0             INTEGER (0..12)


      pattern1 SEQUENCE {

         subcarrierLocation-p1         ENUMERATED { s0, s4, s8 },

         symbolLocation-p1             INTEGER (0..13)


   } OPTIONAL, -- Need M

   freqBand                            CSI-FrequencyOccupation OPTIONAL,

   periodicityAndOffset                CSI-ResourcePeriodicityAndOffset OPTIONAL,






CSI-IM-ResourceSet ::= SEQUENCE {

   csi-IM-ResourceSetId              CSI-IM-ResourceSetId,

   csi-IM-Resources                  SEQUENCE (SIZE(1..maxNrofCSI-IM-ResourcesPerSet))

                                         OF CSI-IM-ResourceId,





CSI-SSB-ResourceSet ::= SEQUENCE {

   csi-SSB-ResourceSetId            CSI-SSB-ResourceSetId,

   csi-SSB-ResourceList             SEQUENCE (SIZE(1..maxNrofCSI-SSB-ResourcePerSet))

                                        OF SSB-Index,





CSI-ResourceConfig ::= SEQUENCE {

   csi-ResourceConfigId           CSI-ResourceConfigId,

   csi-RS-ResourceSetList         CHOICE {

      nzp-CSI-RS-SSB                 SEQUENCE {

         nzp-CSI-RS-ResourceSetList   SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourceSetsPerConfig))

                                              OF NZP-CSI-RS-ResourceSetId OPTIONAL,

         csi-SSB-ResourceSetList      SEQUENCE (SIZE (1..maxNrofCSI-SSB-ResourceSetsPerConfig))

                                              OF CSI-SSB-ResourceSetId OPTIONAL


      csi-IM-ResourceSetList          SEQUENCE (SIZE (1..maxNrofCSI-IM-ResourceSetsPerConfig))

                                             OF CSI-IM-ResourceSetId


   bwp-Id                         BWP-Id,

   resourceType                   ENUMERATED { aperiodic, semiPersistent, periodic },





CSI-ReportConfig ::= SEQUENCE {

   reportConfigId                         CSI-ReportConfigId,

   carrier                                ServCellIndex OPTIONAL,

   resourcesForChannelMeasurement         CSI-ResourceConfigId,

   csi-IM-ResourcesForInterference        CSI-ResourceConfigId OPTIONAL,

   nzp-CSI-RS-ResourcesForInterference    CSI-ResourceConfigId OPTIONAL,

   reportConfigType                       CHOICE {

      periodic SEQUENCE {

         reportSlotConfig                 CSI-ReportPeriodicityAndOffset,

         pucch-CSI-ResourceList           SEQUENCE (SIZE (1..maxNrofBWPs)) OF PUCCH-CSI-Resource


      semiPersistentOnPUCCH SEQUENCE {

         reportSlotConfig                 CSI-ReportPeriodicityAndOffset,

         pucch-CSI-ResourceList           SEQUENCE (SIZE (1..maxNrofBWPs)) OF PUCCH-CSI-Resource


      semiPersistentOnPUSCH SEQUENCE {

         reportSlotConfig                 ENUMERATED {sl5, sl10, sl20, sl40, sl80, sl160, sl320},

         reportSlotOffsetList             SEQUENCE (SIZE (1.. maxNrofUL-Allocations))

                                               OF INTEGER(0..32),

      p0alpha                             P0-PUSCH-AlphaSetId


      aperiodic SEQUENCE {

         reportSlotOffsetList             SEQUENCE (SIZE (1..maxNrofUL-Allocations))

                                               OF INTEGER(0..32)



   reportQuantity CHOICE {

      none NULL,

      cri-RI-PMI-CQI                      NULL,

      cri-RI-i1                           NULL,

      cri-RI-i1-CQI                       SEQUENCE {

         pdsch-BundleSizeForCSI                ENUMERATED {n2, n4} OPTIONAL


      cri-RI-CQI                          NULL,

      cri-RSRP                            NULL,

      ssb-Index-RSRP                      NULL,

      cri-RI-LI-PMI-CQI                   NULL


   reportFreqConfiguration SEQUENCE {

      cqi-FormatIndicator                 ENUMERATED { widebandCQI, subbandCQI } OPTIONAL,

      pmi-FormatIndicator                 ENUMERATED { widebandPMI, subbandPMI } OPTIONAL,

      csi-ReportingBand CHOICE {

         subbands3                        BIT STRING(SIZE(3)),

         subbands4                        BIT STRING(SIZE(4)),

         subbands5                        BIT STRING(SIZE(5)),

         subbands6                        BIT STRING(SIZE(6)),

         subbands7                        BIT STRING(SIZE(7)),

         subbands8                        BIT STRING(SIZE(8)),

         subbands9                        BIT STRING(SIZE(9)),

         subbands10                       BIT STRING(SIZE(10)),

         subbands11                       BIT STRING(SIZE(11)),

         subbands12                       BIT STRING(SIZE(12)),

         subbands13                       BIT STRING(SIZE(13)),

         subbands14                       BIT STRING(SIZE(14)),

         subbands15                       BIT STRING(SIZE(15)),

         subbands16                       BIT STRING(SIZE(16)),

         subbands17                       BIT STRING(SIZE(17)),

         subbands18                       BIT STRING(SIZE(18)),


         subbands19-v1530                 BIT STRING(SIZE(19))

      } OPTIONAL


   timeRestrictionForChannelMeasurements          ENUMERATED {configured, notConfigured},

   timeRestrictionForInterferenceMeasurements     ENUMERATED {configured, notConfigured},

   codebookConfig                                 CodebookConfig OPTIONAL,

   nrofCQIsPerReport                              ENUMERATED {n1, n2} OPTIONAL,

   groupBasedBeamReporting                CHOICE {

      enabled                                 NULL,

      disabled                            SEQUENCE {

         nrofReportedRS                          ENUMERATED {n1, n2, n3, n4} OPTIONAL



   cqi-Table                           ENUMERATED {table1, table2, table3, spare1} OPTIONAL,

   subbandSize                         ENUMERATED {value1, value2},

   non-PMI-PortIndication              SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourcesPerConfig))

                                                OF PortIndexFor8Ranks OPTIONAL,



   semiPersistentOnPUSCH-v1530 SEQUENCE {

      reportSlotConfig-v1530             ENUMERATED {sl4, sl8, sl16}






CSI-ReportPeriodicityAndOffset ::= CHOICE {

   slots4          INTEGER(0..3),

   slots5          INTEGER(0..4),

   slots8          INTEGER(0..7),

   slots10         INTEGER(0..9),

   slots16         INTEGER(0..15),

   slots20         INTEGER(0..19),

   slots40         INTEGER(0..39),

   slots80         INTEGER(0..79),

   slots160        INTEGER(0..159),

   slots320        INTEGER(0..319)





   uplinkBandwidthPartId         BWP-Id,

   pucch-Resource                PUCCH-ResourceId




PortIndexFor8Ranks ::= CHOICE {

   portIndex8    SEQUENCE{

      rank1-8         PortIndex8 OPTIONAL, -- Need R

      rank2-8         SEQUENCE(SIZE(2)) OF PortIndex8 OPTIONAL, -- Need R

      rank3-8         SEQUENCE(SIZE(3)) OF PortIndex8 OPTIONAL, -- Need R

      rank4-8         SEQUENCE(SIZE(4)) OF PortIndex8 OPTIONAL, -- Need R

      rank5-8         SEQUENCE(SIZE(5)) OF PortIndex8 OPTIONAL, -- Need R

      rank6-8         SEQUENCE(SIZE(6)) OF PortIndex8 OPTIONAL, -- Need R

      rank7-8         SEQUENCE(SIZE(7)) OF PortIndex8 OPTIONAL, -- Need R

      rank8-8         SEQUENCE(SIZE(8)) OF PortIndex8 OPTIONAL -- Need R


   portIndex4    SEQUENCE{

      rank1-4         PortIndex4 OPTIONAL, -- Need R

      rank2-4         SEQUENCE(SIZE(2)) OF PortIndex4 OPTIONAL, -- Need R

      rank3-4         SEQUENCE(SIZE(3)) OF PortIndex4 OPTIONAL, -- Need R

      rank4-4         SEQUENCE(SIZE(4)) OF PortIndex4 OPTIONAL -- Need R


   portIndex2    SEQUENCE{

      rank1-2         PortIndex2 OPTIONAL, -- Need R

      rank2-2         SEQUENCE(SIZE(2)) OF PortIndex2 OPTIONAL -- Need R


   portIndex1         NULL




CodebookConfig ::= SEQUENCE {

   codebookType CHOICE {

      type1 SEQUENCE {

         subType CHOICE {

            typeI-SinglePanel SEQUENCE {

                  nrOfAntennaPorts CHOICE {

                     two SEQUENCE {

                        twoTX-CodebookSubsetRestriction BIT STRING (SIZE (6))


                     moreThanTwo SEQUENCE {

                        n1-n2 CHOICE {

                           two-one-TypeI-SinglePanel-Restriction        BIT STRING (SIZE (8)),

                           two-two-TypeI-SinglePanel-Restriction        BIT STRING (SIZE (64)),

                           four-one-TypeI-SinglePanel-Restriction       BIT STRING (SIZE (16)),

                           three-two-TypeI-SinglePanel-Restriction      BIT STRING (SIZE (96)),

                           six-one-TypeI-SinglePanel-Restriction        BIT STRING (SIZE (24)),

                           four-two-TypeI-SinglePanel-Restriction       BIT STRING (SIZE (128)),

                           eight-one-TypeI-SinglePanel-Restriction      BIT STRING (SIZE (32)),

                           four-three-TypeI-SinglePanel-Restriction     BIT STRING (SIZE (192)),

                           six-two-TypeI-SinglePanel-Restriction        BIT STRING (SIZE (192)),

                           twelve-one-TypeI-SinglePanel-Restriction     BIT STRING (SIZE (48)),

                           four-four-TypeI-SinglePanel-Restriction      BIT STRING (SIZE (256)),

                           eight-two-TypeI-SinglePanel-Restriction      BIT STRING (SIZE (256)),

                           sixteen-one-TypeI-SinglePanel-Restriction    BIT STRING (SIZE (64))


                     typeI-SinglePanel-codebookSubsetRestriction-i2     BIT STRING (SIZE (16))



               typeI-SinglePanel-ri-Restriction BIT STRING (SIZE (8))


            typeI-MultiPanel SEQUENCE {

                  ng-n1-n2 CHOICE {

                     two-two-one-TypeI-MultiPanel-Restriction          BIT STRING (SIZE (8)),

                     two-four-one-TypeI-MultiPanel-Restriction         BIT STRING (SIZE (16)),

                     four-two-one-TypeI-MultiPanel-Restriction         BIT STRING (SIZE (8)),

                     two-two-two-TypeI-MultiPanel-Restriction          BIT STRING (SIZE (64)),

                     two-eight-one-TypeI-MultiPanel-Restriction        BIT STRING (SIZE (32)),

                     four-four-one-TypeI-MultiPanel-Restriction        BIT STRING (SIZE (16)),

                     two-four-two-TypeI-MultiPanel-Restriction         BIT STRING (SIZE (128)),

                     four-two-two-TypeI-MultiPanel-Restriction         BIT STRING (SIZE (64))


                  ri-Restriction BIT STRING (SIZE (4))



         codebookMode INTEGER (1..2)


      type2 SEQUENCE {

         subType CHOICE {

            typeII SEQUENCE {

               n1-n2-codebookSubsetRestriction CHOICE {

                  two-one               BIT STRING (SIZE (16)),

                  two-two               BIT STRING (SIZE (43)),

                  four-one              BIT STRING (SIZE (32)),

                  three-two             BIT STRING (SIZE (59)),

                  six-one               BIT STRING (SIZE (48)),

                  four-two              BIT STRING (SIZE (75)),

                  eight-one             BIT STRING (SIZE (64)),

                  four-three            BIT STRING (SIZE (107)),

                  six-two               BIT STRING (SIZE (107)),

                  twelve-one            BIT STRING (SIZE (96)),

                  four-four             BIT STRING (SIZE (139)),

                  eight-two             BIT STRING (SIZE (139)),

                  sixteen-one           BIT STRING (SIZE (128))


               typeII-RI-Restriction    BIT STRING (SIZE (2))


            typeII-PortSelection SEQUENCE {

               portSelectionSamplingSize              ENUMERATED {n1, n2, n3, n4} OPTIONAL,

               typeII-PortSelectionRI-Restriction     BIT STRING (SIZE (2))



         phaseAlphabetSize                            ENUMERATED {n4, n8},

         subbandAmplitude                             BOOLEAN,

         numberOfBeams                                ENUMERATED {two, three, four}







CSI-AperiodicTriggerStateList ::= SEQUENCE (SIZE (1..maxNrOfCSI-AperiodicTriggers))

                                     OF CSI-AperiodicTriggerState


CSI-AperiodicTriggerState ::= SEQUENCE {

   associatedReportConfigInfoList      SEQUENCE (SIZE(1..maxNrofReportConfigPerAperiodicTrigger))

                                             OF CSI-AssociatedReportConfigInfo,




CSI-AssociatedReportConfigInfo ::= SEQUENCE {

   reportConfigId                     CSI-ReportConfigId,

   resourcesForChannel                CHOICE {

      nzp-CSI-RS SEQUENCE {

         resourceSet                  INTEGER (1..maxNrofNZP-CSI-RS-ResourceSetsPerConfig),

         qcl-info                     SEQUENCE (SIZE(1..maxNrofAP-CSI-RS-ResourcesPerSet))

                                             OF TCI-StateId OPTIONAL -- Cond Aperiodic


      csi-SSB-ResourceSet             INTEGER (1..maxNrofCSI-SSB-ResourceSetsPerConfig)


   csi-IM-ResourcesForInterference        INTEGER(1..maxNrofCSI-IM-ResourceSetsPerConfig),

   nzp-CSI-RS-ResourcesForInterference    INTEGER (1..maxNrofNZP-CSI-RS-ResourceSetsPerConfig)






               ::= SEQUENCE(SIZE (1..maxNrOfSemiPersistentPUSCH-Triggers))

                       OF CSI-SemiPersistentOnPUSCH-TriggerState


CSI-SemiPersistentOnPUSCH-TriggerState ::= SEQUENCE {

   associatedReportConfigInfo              CSI-ReportConfigId,






MeasurementReport ::= SEQUENCE {

   criticalExtensions            CHOICE {

      measurementReport                MeasurementReport-IEs,

      criticalExtensionsFuture         SEQUENCE {}




MeasurementReport-IEs ::= SEQUENCE {

   measResults                         MeasResults,

   lateNonCriticalExtension            OCTET STRING OPTIONAL,

   nonCriticalExtension                SEQUENCE{} OPTIONAL




MeasResults ::= SEQUENCE {

   measId                              MeasId,

   measResultServingMOList             MeasResultServMOList,

   measResultNeighCells   CHOICE {

      measResultListNR                 MeasResultListNR,


      measResultListEUTRA              MeasResultListEUTRA






MeasResultServMOList ::= SEQUENCE (SIZE (1..maxNrofServingCells)) OF MeasResultServMO


MeasResultServMO ::= SEQUENCE {

   servCellId                    ServCellIndex,

   measResultServingCell         MeasResultNR,

   measResultBestNeighCell       MeasResultNR OPTIONAL,




MeasResultListNR ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultNR


MeasResultNR ::= SEQUENCE {

   physCellId                           PhysCellId OPTIONAL,

   measResult SEQUENCE {

      cellResults SEQUENCE{

         resultsSSB-Cell                MeasQuantityResults OPTIONAL,

         resultsCSI-RS-Cell             MeasQuantityResults OPTIONAL


      rsIndexResults SEQUENCE{

      resultsSSB-Indexes                ResultsPerSSB-IndexList OPTIONAL,

      resultsCSI-RS-Indexes             ResultsPerCSI-RS-IndexList OPTIONAL

      } OPTIONAL




   cgi-Info                             CGI-Info OPTIONAL




MeasResultListEUTRA ::= SEQUENCE (SIZE (1..maxCellReport)) OF MeasResultEUTRA


MeasResultEUTRA ::= SEQUENCE {

   physCellId                           PhysCellId,

   measResult                           MeasQuantityResultsEUTRA,

   cgi-Info SEQUENCE {

      cgi-info-EPC SEQUENCE {

         cgi-info-EPC-legacy            CellAccessRelatedInfo-EUTRA-EPC,

         cgi-info-EPC-list              SEQUENCE (SIZE (1..maxPLMN))

                                                  OF CellAccessRelatedInfo-EUTRA-EPC OPTIONAL

      } OPTIONAL,

   cgi-info-5GC                         SEQUENCE (SIZE (1..maxPLMN))

                                                  OF CellAccessRelatedInfo-EUTRA-5GC OPTIONAL,

   freqBandIndicator                    FreqBandIndicatorEUTRA,

   multiBandInfoList                    MultiBandInfoListEUTRA OPTIONAL,

   freqBandIndicatorPriority            ENUMERATED {true} OPTIONAL





CellAccessRelatedInfo-EUTRA-EPC ::= SEQUENCE {

   plmn-IdentityList-eutra-epc         PLMN-IdentityList-EUTRA-EPC,

   trackingAreaCode-eutra-epc          BIT STRING (SIZE (16)),

   cellIdentity-eutra-epc              BIT STRING (SIZE (28))



PLMN-IdentityList-EUTRA-EPC::= SEQUENCE (SIZE (1..maxPLMN)) OF PLMN-Identity


PLMN-Identity ::= SEQUENCE {

   mcc                                MCC OPTIONAL, -- Cond MCC

   mnc                                MNC



CellAccessRelatedInfo-EUTRA-5GC ::= SEQUENCE {

   plmn-IdentityList-eutra-5gc       PLMN-IdentityList-EUTRA-5GC,

   trackingAreaCode-eutra-5gc        TrackingAreaCode,

   ranac-5gc                         RAN-AreaCode OPTIONAL,

   cellIdentity-eutra-5gc            CellIdentity-EUTRA-5GC



PLMN-IdentityList-EUTRA-5GC::= SEQUENCE (SIZE (1..maxPLMN)) OF PLMN-Identity-EUTRA-5GC


PLMN-Identity-EUTRA-5GC ::= CHOICE {

   plmn-Identity-EUTRA-5GC         PLMN-Identity,

   plmn-index                      INTEGER (1..maxPLMN)



CellIdentity-EUTRA-5GC ::= CHOICE {

   cellIdentity-EUTRA              BIT STRING (SIZE (28)),

   cellId-index                    INTEGER (1..maxPLMN)



MultiBandInfoListEUTRA ::= SEQUENCE (SIZE (1..maxMultiBands)) OF FreqBandIndicatorEUTRA


MeasQuantityResults ::= SEQUENCE {

   rsrp                                 RSRP-Range OPTIONAL,

   rsrq                                 RSRQ-Range OPTIONAL,

   sinr                                 SINR-Range OPTIONAL



MeasQuantityResultsEUTRA ::= SEQUENCE {

   rsrp                                 RSRP-RangeEUTRA OPTIONAL,

   rsrq                                 RSRQ-RangeEUTRA OPTIONAL,

   sinr                                 SINR-RangeEUTRA OPTIONAL



ResultsPerSSB-IndexList::= SEQUENCE (SIZE (1..maxNrofIndexesToReport2)) OF ResultsPerSSB-Index


ResultsPerSSB-Index ::= SEQUENCE {

   ssb-Index                           SSB-Index,

   ssb-Results                         MeasQuantityResults OPTIONAL




ResultsPerCSI-RS-IndexList::= SEQUENCE (SIZE (1..maxNrofIndexesToReport2))

                                        OF ResultsPerCSI-RS-Index


ResultsPerCSI-RS-Index ::= SEQUENCE {

   csi-RS-Index                        CSI-RS-Index,

   csi-RS-Results                      MeasQuantityResults OPTIONAL




maxNrofIndexesToReport                INTEGER ::= 32

maxNrofIndexesToReport2               INTEGER ::= 64

maxMultiBands                         INTEGER ::= 8

maxCellReport                         INTEGER ::= 8

maxNrofServingCells                   INTEGER ::= 32




RRC Examples



< 38.508-1 Table 4.6.3-38: CSI-MeasConfig >

CSI-MeasConfig::= SEQUENCE {
  nzp-CSI-RS-ResourceToAddModList SEQUENCE { 1 entry
  NZP-CSI-RS-Resource[1] NZP-CSI-RS-Resource
  nzp-CSI-RS-ResourceToReleaseList Not present
  nzp-CSI-RS-ResourceSetToAddModList SEQUENCE { 1 entry
    NZP-CSI-RS-ResourceSet[1] NZP-CSI-RS-ResourceSet
  nzp-CSI-RS-ResourceSetToReleaseList Not present
  csi-IM-ResourceToAddModList SEQUENCE { 1 entry
    CSI-IM-Resource[1] CSI-IM-Resource
  csi-IM-ResourceToReleaseList Not present
  csi-IM-ResourceSetToAddModList SEQUENCE { 1 entry
  CSI-IM-ResourceSet[1] CSI-IM-ResourceSet
  csi-IM-ResourceSetToReleaseList Not present
  csi-SSB-ResourceSetToAddModList SEQUENCE { 1 entry
  CSI-SSB-ResourceSet[1] CSI-SSB-ResourceSet
  csi-SSB-ResourceSetToAddReleaseList Not present
  csi-ResourceConfigToAddModList SEQUENCE { 1 entry
  CSI-ResourceConfig[1] CSI-ResourceConfig
  csi-ResourceConfigToReleaseList  Not present
  csi-ReportConfigToAddModList 1 entry
  CSI-ReportConfig[1] CSI-ReportConfig
  csi-ReportConfigToReleaseList Not present


  aperiodicTriggerStateList SetupRelease {
    setup CSI-AperiodicTriggerStateList
  semiPersistentOnPUSCH-TriggerStateList Not present



< 38.508-1 Table 4.6.3-41: CSI-ResourceConfig >

CSI-ResourceConfig ::= SEQUENCE {
  csi-ResourceConfigId CSI-ResourceConfigId
  csi-RS-ResourceSetList   CHOICE {
      nzp-CSI-RS-ResourceSetList SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourceSetsPerConfig)) OF { 2 entries
        NZP-CSI-RS-ResourceSetId[0] 0
        NZP-CSI-RS-ResourceSetId[1] 1
      csi-SSB-ResourceSetList Not present
  bwp-Id BWP-Id
  resourceType periodic



< 38.508-1 Table 4.6.3-32: CSI-AperiodicTriggerStateList >





CSI-AperiodicTriggerStateList ::= SEQUENCE (SIZE (1..maxNrOfCSI-AperiodicTriggers)) OF { 1 entry
  CSI-AperiodicTriggerState[1] SEQUENCE (SIZE(1..maxNrofReportConfigPerAperiodicTrigger)) OF { [1 entry]
    reportConfigId[1] CSI-ReportConfigId
    resourcesForChannel[1] CHOICE {
      nzp-CSI-RS SEQUENCE {
        resourceSet   8 16
        qcl-info SEQUENCE (SIZE(1..maxNrofAP-CSI-RS-ResourcesPerSet)) OF { 1 entry
          TCI-StateId[1] TCI-StateId
    csi-IM-ResourcesforInteference[1]   8 16
    nzp-CSI-RS-ResourcesforInterference[1]   8 16



< 38.508-1 Table 4.6.3-85: NZP-CSI-RS-Resource >

NZP-CSI-RS-Resource ::= SEQUENCE {
  nzp-CSI-RS-ResourceId NZP-CSI-RS-ResourceId
  resourceMapping  CSI-RS-ResourceMapping


  powerControlOffsetSS  Not present
  scramblingID ScramblingId
  periodicityAndOffset CSI-ResourcePeriodicityAndOffset
  qcl-InfoPeriodicCSI-RS TCI-StateId



< 38.508-1 Table 4.6.3-43: CSI-ResourcePeriodicityAndOffset >

CSI-ResourcePeriodicityAndOffset ::= CHOICE {    
  slots80 10 FR1
  slots320 40 FR2



< 38.508-1 Table 4.6.3-87: NZP-CSI-RS-ResourceSet>





NZP-CSI-RS-ResourceSet ::= SEQUENCE {



  nzp-CSI-RS-Resources SEQUENCE (SIZE (1..maxNrofNZP-CSI-RS-ResourcesPerSet)) OF {

[1 entry]







Not present









< 38.508-1 Table 4.6.3-34: CSI-IM-Resource >

CSI-IM-Resource ::= SEQUENCE { FR1 FR2
  csi-IM-ResourceId CSI-IM-ResourceId
  csi-IM-ResourceElementPattern CHOICE {
    pattern1 SEQUENCE {
      subcarrierLocation-p1  s4
      symbolLocation-p1   3 4
  freqBand CSI-FrequencyOccupation
  periodicityAndOffset Not present 



< 38.508-1 Table 4.6.3-36: CSI-IM-ResourceSet >

CSI-IM-ResourceSet ::= SEQUENCE {
  csi-IM-ResourceSetId CSI-IM-ResourceSetId
  csi-IM-Resources SEQUENCE (SIZE(1..maxNrofCSI-IM-ResourcesPerSet)) { 1 entry
    CSI-IM-ResourceId[1] CSI-IM-ResourceId



< 38.508-1 Table 4.6.3-39: CSI-ReportConfig >

CSI-ReportConfig ::= SEQUENCE {
  reportConfigId CSI-ReportConfigId
  carrier ServCellIndex 
  resourcesForChannelMeasurement CSI-ResourceConfigId
  csi-IM-ResourcesForInterference CSI-ResourceConfigId 
  nzp-CSI-RS-ResourcesForInterference CSI-ResourceConfigId 
  reportConfigType CHOICE {
    aperiodic SEQUENCE {
      reportSlotOffsetList 14
  reportQuantity CHOICE {
    cri-RI-PMI-CQI NULL,  FR1
  reportFreqConfiguration  SEQUENCE {
    cqi-FormatIndicator  widebandCQI
    pmi-FormatIndicator  widebandPMI
    csi-ReportingBand Not present
  timeRestrictionForChannelMeasurements notConfigured
  timeRestrictionForInterferenceMeasurements notConfigured
  codebookConfig CodebookConfig
  dummy Not present
  groupBasedBeamReporting CHOICE {
    disabled  SEQUENCE {
      nrofReportedRS n1
  cqi-Table table2 FR1
table1 FR2
  subbandSize  value2
  non-PMI-PortIndication Not present



< 38.508-1 Table 4.6.3-190: TCI-State >

TCI-State ::= SEQUENCE {
  tci-StateId TCI-StateId
  qcl-Type1 SEQUENCE {
    cell Not present
    bwp-Id Not present
    referenceSignal CHOICE {
      ssb SSB-Index
    qcl-Type typeD
  qcl-Type2 Not present