5G/NR

 

 

 

CSI Framework

CSI Framework is one of the most complicated structure and process in NR. I have posted three separate notes with different aspect of this topic. I thought I need to write a page which can consolidate the three separate notes and this page is the one.

Before any of the machinery, it helps to be clear about the problem being solved, because it is a simple one. A gNB transmitting downlink has no direct way of knowing what the channel looks like from where the UE is standing. Only the UE can see that.

So the network sends something known, and asks. It places reference signals in the resource grid and tells the UE where they are. Then it says what to measure and when to answer, and the UE reports back. Everything on this page is one of those four things.

The awkward part is that 3GPP did not build one procedure for this. It built a construction kit. Resources, sets of resources, configurations that point at sets, and reports that point at configurations, each layer separately configurable. That is where the complexity comes from. It is also why one framework covers beam management, tracking loops and closed loop MIMO without needing three designs.

Where to Start ? How to Move forward ?

If you have arrived here wanting a reading order rather than a reference, this section is the one to follow. The rest of the page is the map.

What makes it super difficult to understand 5G CSI Framework is due to its extreme flexibility. Actually flexibility itself would not make things difficult of understanding, but in most cases 'flexibility' tend to make configuration very complicated. It is this Complexity to give us hard time to understand 5G CSI. Unfortunately, there is no way to make the 'complexity' simple. What I am trying to do in this section is to give the readers some tips on how to break down the framework and how to tackle each of those broken-down components and move on. This is just based on my personal experience, it may or may not apply to you. Just my two cents.

Following is where I started and how to move forward.

  • i) Understand the meaning of < 38.211-Table 7.4.1.5.3-1: CSI-RS locations within a slot > to the point where you can visualize the table onto NR resource grid. (This note on CSI-RS would help you with this)
  • ii) Learn how to convert the CSI RS on Resource Grid (the outcome of the step i) to RRC Configuration
  • iii) With the practice of step i) and ii), try to configure CSI-RS for TRS before you move further. You may need some study and practice on step [1] and [2] in Overall CSI Framework Structure. I am recommending this because this configuration would not require ReportConfig
  • iv) Understand the meaning of this table <Type 1 Single Panel : Based on 38.214 v15.3-Table 5.2.2.2.1-2: Supported configurations of (N1,N2) and (O1,O2)> and learn how to visualize it.  (This note would help you with this)
  • v) Learn how to convert the visualized structure (the outcome of step iv) into RRC message. (This note would help you with this)
  • vi) [This is optional] If you are interested in more details on the configuration of the antenna panel (e.g, Mathematical structure of each pannel structure), check on this, this, this and this.
  • vii) Once you get familiar with all the steps mentioned above, check if you can configure by yourself (or at least understand) a full RRC parameters for a CSI report (You have to go through step [1][2] and [3] in Overall CSI Framework Structure.
  • viii) Once you got familiar with steps mentioned above, move forward to multi-pannel and codebook type II.
  • ix) If you want to see how the various CSI configurations are tested and get some working protocol log, check out this (Amarisoft TechAcademy)

Overall Structure of the CSI Framework

Five steps, and the first three all belong to the network configuring things before anything is measured at all. Only step four involves the UE doing any work, and step five is the network acting on what came back.

Overall procedure for CSI-RS operation can be described as follows and I put the link for the notes which lead you to the details of each step.  

[1] NW

CSI-RS

.

Configure/Define CSI Reference signal at physical resource grid. See CSI-RS page for the details

 

 

 

[2] NW

CSI-ResourceSet

CSI-ResourceConfig

 

Combine one or more CSI-RS into a higher level structure for a specific purpose. See CSI-Report page for the details.

 

 

 

[3] NW

CSI-ReportConfig

Define/Configure the Report Criteria (Report Period, Quantity, Trigger condition, Codebook Configuration etc). See CSI-Report page for the details of Report Period, Quantiy and overall structure of CSI Framework. See CSI Codebook page for the details of CSI Codebook (Precoding Matrix).

 

 

 

[4] UE

Perform Measurement and Report

 

UE perform the measurement as instructed by Network and report the result to the network.

 

 

 

[5] NW

Adjust PHY/MAC parameters

 

Based on the report from UE, NW would adjust PHY/MAC parameters like MCS, Antenna Configuration, CSI Codebook etc.

 

   
 

Get some hands-on Test

 

Of course, this is not a part of the protocol itself. But if you get to have some chance to try various working scenario, it would be the best way to learn. You can take a peek into a test setup and working protocol log here (Amarisoft TechAcademy)

Two things about that sequence are worth saying out loud, because they are easy to miss when the steps are listed neatly.

  • Steps 1 to 3 are pure configuration and can all arrive in a single RRC message. Nothing has been measured, nothing has been reported, and the UE has done nothing except store what it was told.
  • Step 5 is not specified anywhere. What the network does with a CSI report is entirely up to the scheduler. The standard defines what the UE must send and how, and then stops. Two vendors receiving identical reports may behave completely differently, and both are compliant.

The rest of this page fills in the parts the table above points at but does not explain. What the objects in steps 1 to 3 actually are, what comes back in step 4, and when any of it is allowed to happen.

How the RRC Objects Point at Each Other

The five steps above are the procedure. This is the data structure underneath it, and I found the framework much easier once I had drawn this out once.

One thing to fix in your head before looking. These objects are not nested inside each other in the RRC message. They all sit as flat lists inside CSI-MeasConfig, and the relationships are identifiers, not containment. A CSI-ReportConfig does not hold a resource config. It holds its number.

Who points at whom, inside CSI-MeasConfig NZP-CSI-RS-Resource the pattern of REs in the grid CSI-IM-Resource a deliberately empty pattern SSB borrowed as a measurement resource NZP-CSI-RS-ResourceSet repetition, trs-Info CSI-IM-ResourceSet CSI-SSB-ResourceSet CSI-ResourceConfig bwp-Id + resourceType : periodic / semiPersistent / aperiodic referenced by id, up to three times CSI-ReportConfig resourcesForChannelMeasurement -> a CSI-ResourceConfig csi-IM-ResourcesForInterference -> a CSI-ResourceConfig (optional) nzp-CSI-RS-ResourcesForInterference -> a CSI-ResourceConfig (optional) Nothing contains anything. Every link above is an identifier looked up in a list.

That distinction is what makes the framework flexible and also what makes it hard to read in a log. One resource set can be referenced by several resource configs. One resource config can be referenced by several report configs. Nothing is owned by anything.

Here is what each level actually decides.

Object

What it decides

NZP-CSI-RS-Resource

Where the signal physically sits. RE pattern, number of ports, density, periodicity and offset, transmit power, scrambling, and the QCL source that tells the UE which beam to expect it on.

NZP-CSI-RS-ResourceSet

What a group of them is for, and two flags carry most of that meaning. Setting repetition to on means the resources in the set are the same beam repeated, which is how P3 beam refinement works. The trs-Info flag marks the set as a tracking reference signal.

CSI-IM-Resource
CSI-IM-ResourceSet

The same idea for interference. Its own section is below.

CSI-ResourceConfig

Which sets, on which bandwidth part, and whether they are periodic, semi-persistent or aperiodic. Note that the timing lives here rather than on the resource itself.

CSI-ReportConfig

Everything about the answer. What to measure, what to report, in what frequency granularity, how often, and on which uplink channel. Also the codebook, when a PMI is being asked for.

CSI-AperiodicTriggerStateList

Which report configs a given DCI code point sets off. Without this list an aperiodic report has no way of being asked for.

What the UE Actually Reports

Step 4 in the table above says the UE performs the measurement and reports the result. This is what is actually in that report, and I find it the reassuring part of the topic. The list is much shorter than the configuration machinery suggests.

Quantity

Stands for

What the UE is saying

CRI

CSI-RS Resource Indicator

Which resource in the set I liked best. In practice, which beam.

RI

Rank Indicator

How many layers I think this channel will carry. Not how many the antenna could send, how many I can separate.

PMI

Precoding Matrix Indicator

Which precoder from the agreed codebook you should use. An index, not a matrix, which is the entire point of having a codebook.

CQI

Channel Quality Indicator

The highest modulation and coding I could decode at roughly ten percent block error. It is a recommendation about MCS, not a measurement of SNR.

LI

Layer Indicator

Which of those layers is the strongest. Used when choosing which DMRS port carries what.

L1-RSRP
L1-SINR

Received power, and quality

Plain strength measurements per beam. These are the beam management reports rather than the MIMO ones, and L1-SINR arrived in Release 16.

 

The combinations are not free. The reportQuantity field in CSI-ReportConfig is a choice with a fixed list. You pick one whole combination rather than assembling your own.

reportQuantity

When you would use it

none

Report nothing at all. Odd until you meet it, and then obvious. The report config exists only so the UE has a reason to keep receiving the resource, which is exactly what a tracking reference signal needs.

cri-RI-PMI-CQI

The classic full report for closed loop MIMO. If you have seen one CSI report, it was probably this one.

cri-RI-i1
cri-RI-i1-CQI

Only the wideband half of the PMI. Cheaper on uplink overhead, and enough when the network mainly wants beam direction.

cri-RI-CQI

Rank and quality but no precoder. This is what you configure when the network works out its own precoding, typically from uplink sounding in a TDD deployment.

cri-RI-LI-PMI-CQI

The full report plus the layer indicator.

cri-RSRP
ssb-Index-RSRP

Beam management. Which beam, and how strong. No rank, no precoder, no CQI, because none of that is the question being asked.

cri-SINR
ssb-Index-SINR

The same, but reporting quality rather than raw power. Added in Release 16, because a strong beam full of interference is not a good beam.

 

Reading that list top to bottom is a decent way to see the framework's range. The same CSI-ReportConfig structure covers a tracking loop that reports nothing, a beam sweep that reports one number, and a full rank adaptive MIMO report.

Periodic, Semi-Persistent and Aperiodic

Two separate settings in the framework use these three words, and I have watched that cause a lot of confusion, including my own. They are not the same setting.

  • resourceType in CSI-ResourceConfig says how the reference signal is transmitted.
  • reportConfigType in CSI-ReportConfig says how the report comes back.

They are configured independently, but they are not independent. A report cannot be more persistent than the thing it measures, which gives the table its diagonal shape.

CSI-RS is ...

Periodic report

Semi-persistent report

Aperiodic report

Periodic

Nothing to trigger. Both sides just run.

MAC CE on PUCCH, DCI on PUSCH

DCI

Semi-persistent

not supported

MAC CE on PUCCH, DCI on PUSCH

DCI

Aperiodic

not supported

not supported

DCI

 

Where the report travels follows from the same choice, and it is worth knowing before you go looking for one in a log.

  • A periodic report always goes on PUCCH, and the config carries a pucch-CSI-ResourceList to say which resource.
  • A semi-persistent report can go on either, and the two cases are separate branches in the ASN.1, semiPersistentOnPUCCH and semiPersistentOnPUSCH.
  • An aperiodic report always goes on PUSCH. It was asked for by a DCI, so an uplink grant already exists to carry it.

The practical shape of a real configuration usually follows from that. Periodic reporting keeps a coarse picture alive at low cost. An aperiodic report gets triggered when the scheduler is about to do something that depends on the answer.

Measuring Interference

CQI is a statement about signal quality, and quality needs two numbers. How strong the wanted signal is, and how much everything else is getting in the way. The framework measures those separately, on different resources.

That is why CSI-ReportConfig has three pointers rather than one. The channel comes from resourcesForChannelMeasurement, and interference comes from one of the other two.

  • CSI-IM is a resource where nothing is transmitted, deliberately. The UE measures the received power in those REs, and whatever it finds there is by definition not from this cell. Interference and noise, measured directly.
  • nzp-CSI-RS-ResourcesForInterference takes the opposite approach. A real signal is transmitted, and the UE is told to treat it as interference. This is how a network estimates what a UE would suffer if it were paired with another user on the same resources.

The second one only makes sense for multi user MIMO, and that is exactly what it exists for. The network is asking a hypothetical question. If I put somebody else on this beam, what CQI would you report then ?

Both pointers are optional in the ASN.1. A report configured with neither still works, and the UE falls back on measuring interference wherever it can. That is one reason CQI from different implementations is not always comparable.