Channel State Information Reference Sequence (CSI-RS)

The channel state information reference signal (CSI-RS) is used in 5G-NR systems to estimate the channel state information in downlink (DL). The reference signal is generated using the scrambling ID (scramblingID), slot-index (slotNumber) and, OFDM symbol index (ofdmSymbolNumber). The implementation details of CSI-RS are provided in section 7.4.1.5 of 3GPP TS 38.211 [3GPPTS38211_CSIRS].

Important

  • The seed (\(c_{init}\)) value is computed using scramblingID, slotNumber and ofdmSymbolNumber.

If slotNumber and symbolNumber are scalar:

scramblingID     = 198  # scrambling ID
slotNumber       = 5    # slot Index where CSIRS is loaded
ofdmSymbolNumber = 4    # ofdm symbol Index
csirsLength      = 600  # CSIRS length per ofdm symbol Index

csirsObject      = CSIRS(scramblingID, slotNumber, ofdmSymbolNumber)
csirsSequence    = csirsObject(csirsLength)

If slotNumber is scalar and symbolNumber is NumPy Array:

scramblingID     = 1075                  # DL CSIRS ID
slotNumber       = 5                     # slot Index where CSIRS is loaded
ofdmSymbolNumber = np.array([2,3,4,5,6]) # ofdm symbol Index
csirsLength      = 600                   # CSIRS length per ofdm symbol Index

csirsObject      = CSIRS(scramblingID, slotNumber, ofdmSymbolNumber)
csirsSequence    = csirsObject(csirsLength)

If slotNumber and symbolNumber are NumPy Array:

scramblingID     = 187                   # DL CSIRS ID
slotNumber       = np.array([0,0,1,1])   # slot Index where CSIRS is loaded
ofdmSymbolNumber = np.array([2,3,4,5]) # ofdm symbol Index
csirsLength      = 864                   # CSIRS length per ofdm symbol Index

csirsObject      = CSIRS(scramblingID, slotNumber, ofdmSymbolNumber)
csirsSequence    = csirsObject(csirsLength)

The details about the input-output interface of the SSS implementation is provided below.

class toolkit5G.SequenceGeneration.CSIRS(scramblingID, slotNumber, ofdmSymbolNumber)[source]

Generates the channel state information reference sequence (CSI-RS) for 5G system. The constructor expects scramblingID, slot index and, symbol index. The call method expect the length to be generated for the PRS and returns 1 or multiple CSI-RS based on the size of slot index and symbol index passed as input. The details about the implementation of the sequence are provided in section 7.4.1.7 of [3GPPTS38211_CSIRS].

Parameters:
  • scramblingID (int) – Defines the scramblingID \(\in \{0,1,...,4095\}\).

  • slotNumber (int or NumPy array, np.integer) – Defines the slot number within a frame \(n_{s,f}^{\mu} \in \{0,1,2,..,10*2^{\mu}-1\}\) where \({\mu = \frac{\Delta f}{15 kHz}}\).

  • ofdmSymbolNumber (int or NumPy array, np.integer) – Defines the OFDM symbol number (\(l\)), within the slot \(\in \{0,1,2,..,13\}\).

Input:

length (int) – Defines length of the PN Sequence

Output:

[…, length], np.int8 – Channel state information reference sequence (PRS).

Raises:
  • ValueError – [Error-CSIRS]: length of PN Sequence must be a positive (>0) integer!

  • ValueError – [Error-CSIRS]: scramblingID must be in interval [0 4095]!

  • ValueError – [Error-CSIRS]: scramblingID must be integer!

  • ValueError – [Error-CSIRS]: slotNumber must be an integer or NumPy array of integers!

  • ValueError – [Error-CSIRS]: slotNumber must be non-negative!

  • ValueError – [Error-CSIRS]: symbolNumber (OFDM symbol number) must be integer or ndarray of int!

  • ValueError – [Error-CSIRS]: symbolNumber (OFDM symbol number) must be in the range [0-13]!

  • ValueError – [Error-CSIRS]: Size of symbolNumber and symbolNumber is inconsistent!

References:
[3GPPTS38211_CSIRS] (1,2)

3GPP TS 38.211 “Physical channels and modulation (Release 17)”, V17.1.0 (2022-03).