CSI reference signals (CSI-RS)#
This module contains classes related to transmission and reception of channel state information reference signals (CSI-RS).
- class aerial.phy5g.csirs.csirs_api.CsiRsTxPipeline#
A base class for CSI-RS transmitter pipeline implementations.
- class aerial.phy5g.csirs.csirs_api.CsiRsRxPipeline#
A base class for CSI-RS receiver pipeline implementations.
- class aerial.phy5g.csirs.csirs_api.CsiRsConfig#
CSI-RS parameters.
The RRC parameters for CSI-RS. Used together with PDSCH Tx and CSI-RS Tx and Rx. See TS 38.211 section 7.4.1.5.3 and in particular table 7.4.1.5.3-1 for exact definitions of the fields.
- Parameters:
start_prb (int) – PRB where this CSI resource starts. Expected value < 273.
num_prb (int) – Number of PRBs across which this CSI resource spans. Expected value <= 273 - start_prb.
freq_alloc (List[int]) – Bitmap defining frequency domain allocation. Counting is started from least significant bit (first element of the list). This corresponds to the frequencyDomainAllocation field in CSI-RS RRC parameters.
row (int) – Row entry into the CSI-RS resource location table. Valid values 1-18.
symb_L0 (int) – Time domain location L0. This corresponds to the firstOFDMSymbolInTimeDomain field in CSI-RS RRC parameters.
symb_L1 (int) – Time domain location L1. This corresponds to the firstOFDMSymbolInTimeDomain2 field in CSI-RS RRC parameters.
freq_density (int) –
The density field, p and comb offset (for dot5),
0: dot5 (even RB)
1: dot5 (odd RB)
2: one
3: three.
scramb_id (int) – Scrambling ID of CSI-RS.
idx_slot_in_frame (int) – Slot index in frame.
cdm_type (int) –
CDM Type.
0: noCDM
1: fd-CDM2
2: cdm4-FD2-TD2
3: cdm8-FD2-TD4
beta (float) – Power scaling factor
enable_precoding (bool) – Enable/disable precoding.
precoding_matrix_index (int) – Index of the precoding matrix to use. The list of precoding matrices needs to be given separately.
- class aerial.phy5g.csirs.csirs_api.CsiRsTxConfig#
CSI-RS transmission configuration.
- Parameters:
csirs_configs (List[List[CsiRsConfig]]) – A list of CSI-RS RRC parameters, one list per cell. See CsiRsConfig.
precoding_matrices (List[np.ndarray]) – A list of precoding matrices. This list gets indexed by the precoding_matrix_index field in CsiRsConfig.
- class aerial.phy5g.csirs.csirs_api.CsiRsRxConfig#
CSI-RS reception configuration.
- Parameters:
csirs_configs (List[List[CsiRsConfig]]) – A list of CSI-RS RRC parameters, one list per cell. See CsiRsConfig.
ue_cell_association (List[int]) – Association of UEs to cells. Index of the cell per UE, used to index csirs_configs.
- class aerial.phy5g.csirs.csirs_tx.CsiRsTx#
CSI-RS transmitter.
This class implements CSI-RS transmission within a slot.
- __init__(num_prb_dl_bwp, cuda_stream=None)#
Initialize CsiRsTx.
- Parameters:
num_prb_dl_bwp (List[int]) – Number of PRBs in DL BWP.
cuda_stream (int) – The CUDA stream. If not given, one will be created.
- Return type:
None
- run(csirs_configs, tx_buffers, precoding_matrices=None)#
Run CSI-RS transmission.
Fills CSI-RS into the transmit buffers given as input, based on given CSI-RS parameters.
The method can be called using either Numpy or CuPy arrays. In case the input arrays are located on the GPU (CuPy), the output will be on the GPU (CuPy). So the return type shall be the same as used for tx_buffers when calling the method.
- Parameters:
csirs_configs (List[List[CsiRsConfig]]) – A list of CSI-RS RRC parameters, one list per cell. See CsiRsConfig.
tx_buffers (List[Array]) – A list of transmit slot buffers, one per cell. These represent the slot buffers prior to inserting the CSI-RS.
precoding_matrices (List[np.ndarray]) – A list of precoding matrices. This list gets indexed by the precoding_matrix_index field in CsiRsConfig.
- Returns:
Transmit buffers for the slot for each cell after inserting CSI-RS.
- Return type:
List[Array]
- __call__(config, tx_buffers, **kwargs)#
Run CSI-RS transmission.
Note: This implements the base class abstract method.
- Parameters:
config (CsiRsTxConfig) – CSI-RS transmission configuration.
tx_buffers (List[Array]) – A list of transmit slot buffers, one per cell. These represent the slot buffers prior to inserting the CSI-RS.
kwargs (Any)
- Returns:
Transmit buffers for the slot for each cell after inserting CSI-RS.
- Return type:
List[Array]
- class aerial.phy5g.csirs.csirs_rx.CsiRsRx#
CSI-RS receiver.
This class implements CSI-RS reception within a slot.
- __init__(num_prb_dl_bwp, cuda_stream=None)#
Initialize CsiRsRx.
- Parameters:
num_prb_dl_bwp (List[int]) – Number of PRBs in DL BWP.
cuda_stream (int) – The CUDA stream. If not given, one will be created.
- Return type:
None
- run(csirs_configs, rx_data, ue_cell_association)#
Run CSI-RS reception.
The method can be called using either Numpy or CuPy arrays. In case the input arrays are located on the GPU (CuPy), the output will be on the GPU (CuPy). So the return type shall be the same as used for rx_data when calling the method.
- Parameters:
csirs_configs (List[List[CsiRsConfig]]) – A list of CSI-RS RRC parameters, one list per cell. See CsiRsConfig.
rx_data (List[Array]) – A list of received data buffers, one per UE. The Rx data is given frequency x time x Rx antenna arrays.
ue_cell_association (List[int]) – Association of UEs to cells. Index of the cell per UE, used to index csirs_configs.
- Returns:
Channel estimation buffers for the slot for each UE.
- Return type:
List[List[[Array]]
- __call__(rx_data, config, **kwargs)#
Run CSI-RS reception.
Note: This implements the base class abstract method.
- Parameters:
rx_data (List[Array]) – A list of received data buffers, one per UE. The Rx data is given frequency x time x Rx antenna arrays.
config (CsiRsRxConfig) – CSI-RS reception configuration.
kwargs (Any)
- Returns:
Channel estimation buffers for the slot for each UE.
- Return type:
List[List[Array]]