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
andsymbolNumber
is inconsistent!
- References: