Sounding reference signals (SRS)#
This module contains classes related to transmission and reception of sounding reference signals (SRS).
- class aerial.phy5g.srs.srs_api.SrsTxPipeline#
A base class for SRS transmitter pipeline implementations.
- class aerial.phy5g.srs.srs_api.SrsRxPipeline#
A base class for SRS receiver pipeline implementations.
- class aerial.phy5g.srs.srs_api.SrsOutput#
An empty base class for all SRS output data classes.
- class aerial.phy5g.srs.srs_api.SrsConfig#
SRS transmission configuration.
- Parameters:
num_ant_ports (int) – Number of SRS antenna ports. 1,2, or 4.
num_syms (int) – Number of SRS symbols. 1,2, or 4.
num_repetitions (int) – Number of repetitions. 1,2, or 4.
comb_size (int) – SRS comb size. 2 or 4.
start_sym (int) – Starting SRS symbol. 0 - 13.
sequence_id (int) – SRS sequence ID. 0 - 1023.
config_idx (int) – SRS bandwidth configuration index. 0 - 63.
bandwidth_idx (int) – SRS bandwidth index. 0 - 3.
comb_offset (int) – SRS comb offset. 0 - 3.
cyclic_shift (int) – Cyclic shift. 0 - 11.
frequency_position (int) – Frequency domain position. 0 - 67.
frequency_shift (int) – Frequency domain shift. 0 - 268.
frequency_hopping (int) – Frequency hopping options. 0 - 3.
resource_type (int) –
Type of SRS allocation.
0: Aperiodic.
1: Semi-persistent.
2: Periodic.
periodicity (int) – SRS periodicity in slots. 0, 2, 3, 5, 8, 10, 16, 20, 32, 40, 64, 80, 160, 320, 640, 1280, 2560.
offset (int) – Slot offset value. 0 - 2569.
group_or_sequence_hopping (int) –
Hopping configuration.
0: No hopping.
1: Group hopping.
2: Sequence hopping.
- class aerial.phy5g.srs.srs_api.SrsTxConfig#
SRS transmitter pipeline configuration for a slot.
- Parameters:
slot (int) – Slot number.
frame (int) – Frame number.
srs_configs (List[SrsConfig]) – SRS configuration for each UE.
- class aerial.phy5g.srs.srs_api.SrsRxUeConfig#
SRS receiver configuration corresponding to a single UE in a slot.
- Parameters:
cell_idx (int) – Index of the cell that this UE is attached to. This index indexes the SrsRxCellConfig list of cell configurations, as well as the list of Rx data slots given to the SRS receiver pipeline.
srs_config (SrsConfig) – SRS configuration for this UE.
srs_ant_port_to_ue_ant_map (np.array) – Mapping between SRS antenna ports and UE antennas in channel estimation buffer: Store estimates for SRS antenna port i in srs_ant_port_to_ue_ant_map[i].
prg_size (int) – Number of PRBs per PRB group.
start_prg (int) – Starting PRB group.
num_prgs (int) – Number of PRB groups.
- class aerial.phy5g.srs.srs_api.SrsRxCellConfig#
SRS receiver configuration for a single cell in a slot.
- Parameters:
slot (int) – Slot number.
frame (int) – Frame number.
srs_start_sym (int) – SRS start symbol in this slot (all UEs).
num_srs_sym (int) – Number of SRS symbols in this slot (all UEs).
- class aerial.phy5g.srs.srs_api.SrsRxConfig#
SRS receiver pipeline configuration for a slot.
- Parameters:
srs_cell_configs (List[SrsRxCellConfig]) – List of cell configurations for this slot.
srs_ue_configs (List[SrsRxUeConfig]) – List of UE SRS configurations for this slot.
- class aerial.phy5g.srs.srs_api.SrsReport#
SRS output report.
This report is returned by the SRS receiver pipeline.
- Parameters:
ch_est (np.ndarray) – The channel estimates.
ch_est_to_L2 (np.ndarray) – The channel estimates as returned to L2.
to_est_ms (np.float32) – Time offset estimate in microseconds.
wideband_snr (np.float3) – Wideband SNR.
wideband_noise_energy (np.float32) – Wideband noise energy.
wideband_signal_energy (np.float32) – Wideband signal energy.
wideband_sc_corr (np.complex64) – Wideband subcarrier correlation.
wideband_cs_corr_ratio_db (np.float32)
wideband_cs_corr_use (np.float32)
wideband_cs_corr_not_use (np.float32)
high_density_ant_port_flag (bool)
- class aerial.phy5g.srs.srs_tx.SrsTx#
SRS transmitter pipeline.
This class implements the sounding reference signal transmission. The signals can be generated for multiple UEs with a single API call.
- __init__(
- num_max_srs_ues,
- num_slot_per_frame,
- num_symb_per_slot,
- cuda_stream=None,
Initialize SrsTx.
- Parameters:
num_max_srs_ues (int) – Maximum number of SRS UEs that this pipeline will handle. Memory allocation is based on this number.
num_slot_per_frame (int) – Number of slots per frame.
num_symb_per_slot (int) – Number of symbols in a slot.
cuda_stream (int) – The CUDA stream to run the pipeline. If not given, one will be created.
- Return type:
None
- __call__(config, copy_to_cpu=False, **kwargs)#
Run SRS transmission.
Note: This implements the base class abstract method.
- Parameters:
config (SrsTxConfig) – SRS transmission configuration. See SrsTxConfig.
copy_to_cpu (bool) – Whether to copy the transmit buffers to host memory as Numpy arrays. Default: False.
kwargs (Any)
- Returns:
The SRS transmit buffers per UE.
- Return type:
List[Array]
- class aerial.phy5g.srs.srs_rx.SrsRx#
SRS receiver pipeline.
This class implements the sounding reference signal reception pipeline. The SRS transmissions can be received from multiple cells with a single API call.
- __init__(
- num_rx_ant,
- chest_algo_idx=0,
- enable_delay_offset_correction=1,
- chest_params=None,
- num_max_srs_ues=192,
- cuda_stream=None,
Initialize SrsRx.
- Parameters:
num_rx_ant (List[int]) – Number of receive antennas per cell.
chest_algo_idx (int) –
Channel estimation algorithm. Default: 0 (MMSE).
0: MMSE
1: RKHS
enable_delay_offset_correction (int) – Enable/disable delay offset correction. Default: 1 (enabled).
chest_params (dict) – Dictionary of channel estimation filters and parameters. Set to None to use defaults.
num_max_srs_ues (int) – Maximum number of SRS UEs. This number is used in memory allocations. Default: 192.
cuda_stream (int) – The CUDA stream. If not given, one will be created.
- Return type:
None
- __call__(rx_data, config, **kwargs)#
Run SRS reception.
Note: This implements the base class abstract method.
- Parameters:
rx_data (List[Array]) – Received data slot as an Array (Numpy or CuPy).
config (SrsRxConfig) – SRS reception configuration. See SrsRxConfig.
kwargs (Any)
- Returns:
The SRS reports per UE, see SrsReport.
- Return type:
List[SrsReport]