free5GRAN
V1.0
|
Functions | |
void | channelEstimation (complex< float > *pilots, complex< float > *reference_pilot, vector< vector< int >> &pilot_indexes, vector< vector< complex< float >>> &coefficients, float &snr, int num_sc, int num_symbols, int pilot_size) |
void | hard_demodulation (vector< complex< float >> signal, int *bits, int signal_length, int modulation_scheme) |
void | soft_demodulation (vector< complex< float >> signal, double *soft_bits, int signal_length, int modulation_scheme) |
void | compute_fine_frequency_offset (vector< complex< float >> input_signal, int symbol_duration, int fft_size, int cp_length, int scs, float &output, int num_symbols) |
void | transpose_signal (vector< complex< float >> *input_signal, float freq_offset, int sample_rate, int input_length) |
void | channel_demapper (vector< vector< complex< float >>> &input_signal, vector< vector< vector< int >>> &ref, complex< float > **output_channels, vector< vector< vector< int >>> &output_indexes, int num_channels, int num_symbols, int num_sc) |
double | compute_freq_from_gscn (int gscn) |
free5GRAN::pdcch_t0ss_monitoring_occasions | compute_pdcch_t0_ss_monitoring_occasions (int pdcch_config, int pbch_scs, int common_scs, int i) |
void | compute_rb_start_lrb_dci (int RIV, int n_size_bwp, int &lrb, int &rb_start) |
void | get_pdsch_dmrs_symbols (const string &type, int duration, int additionnal_position, int l0, int **output, int &size) |
void | compute_cp_lengths (int scs, int nfft, int is_extended_cp, int num_symb_per_subframes, int *cp_lengths, int *cum_sum_cp_lengths) |
void | compute_phase_decomp (int *cp_lengths, int *cum_sum_symb, float sampling_rate, float f0, int num_symb_per_subframes, complex< float > *phase_decomp_factor) |
int | compute_nre (int num_symb_pdsch, int num_dmrs_symb) |
void | fft (vector< complex< float >> time_domain_signal, vector< vector< complex< float >>> &output_signal, int fft_size, int *cp_lengths, int *cum_sum_symb, int num_symbols, int num_sc_output, int first_symb_index, int offset) |
void | get_candidates_frames_indexes (vector< vector< int >> &frame_indexes, int *frame_numbers, int sfn, int index_first_pss, int num_samples_before_pss, int frame_size) |
void free5GRAN::phy::signal_processing::channel_demapper | ( | vector< vector< complex< float >>> & | input_signal, |
vector< vector< vector< int >>> & | ref, | ||
complex< float > ** | output_channels, | ||
vector< vector< vector< int >>> & | output_indexes, | ||
int | num_channels, | ||
int | num_symbols, | ||
int | num_sc | ||
) |
Consumes an input signal and returns different channels containing corresponding data, based on ref indexes
[in] | input_signal | Input signal to be de-mapped |
[in] | ref | Array containing the indexes of the different channels inside the OFDM grid |
[in] | channel_sizes | Array containing the outpu transport_channel sizes |
[out] | output_channels | Channels symbols |
[out] | output_indexes | Indexes of the output_channels elements |
[in] | num_channels | Number of channels |
[in] | num_symbols | Number of symbols in the OFDM grid |
[in] | num_sc | Number of subcarriers in the OFDM grid |
Definition at line 298 of file libphy.cpp.
void free5GRAN::phy::signal_processing::channelEstimation | ( | complex< float > * | pilots, |
complex< float > * | reference_pilot, | ||
vector< vector< int >> & | pilot_indexes, | ||
vector< vector< complex< float >>> & | coefficients, | ||
float & | snr, | ||
int | num_sc, | ||
int | num_symbols, | ||
int | pilot_size | ||
) |
Estimate channel coefficients for equalization
[in] | pilots | Signal received pilots |
[in] | reference_pilot | Generated pilots |
[in] | pilot_indexes | Pilot indexes in the signal |
[out] | coefficients | Channel coefficient returned by the function |
[out] | snr | Computed SNR |
[in] | num_sc | Number of subcarriers in the signal |
[in] | num_symbols | Number of symbols in the signal |
[in] | pilot_size | Pilot size |
Definition at line 27 of file libphy.cpp.
void free5GRAN::phy::signal_processing::compute_cp_lengths | ( | int | scs, |
int | nfft, | ||
int | is_extended_cp, | ||
int | num_symb_per_subframes, | ||
int * | cp_lengths, | ||
int * | cum_sum_cp_lengths | ||
) |
Compute cyclic prefix size
3GPP standard: TS38.211 V15.2.0 Section 5.3
[in] | scs | Subcarrier spacing |
[in] | nfft | FFT/iFFT size |
[in] | is_extended_cp | True if current CP is extended CP |
[in] | num_symb_per_subframes | Number of symbols per subframe |
[out] | cp_lengths | Returned CP |
[out] | cum_sum_cp_lengths | Cumulative CP sum |
Definition at line 483 of file libphy.cpp.
void free5GRAN::phy::signal_processing::compute_fine_frequency_offset | ( | vector< complex< float >> | input_signal, |
int | symbol_duration, | ||
int | fft_size, | ||
int | cp_length, | ||
int | scs, | ||
float & | output, | ||
int | num_symbols | ||
) |
Compute fine frequency offset of a received signal by computing phase offset between cyclic prefix and corresponding symbol data.
[in] | input_signal | Received signal |
[in] | symbol_duration | Number of samples per symbol |
[in] | fft_size | Number of samples in a symbol, after removing cyclic prefix |
[in] | cp_length | Cyclic prefix size |
[in] | scs | Subcarrier spacing |
[out] | output | Frequency offset in Hertz |
[in] | num_symbols | Number of symbols in the signal |
Definition at line 247 of file libphy.cpp.
double free5GRAN::phy::signal_processing::compute_freq_from_gscn | ( | int | gscn | ) |
Computing frequency from received GSCN
3GPP standard: TS38.104 V15.2.0 Table 5.4.3.1-1
[in] | gscn | Input GSCN |
Definition at line 338 of file libphy.cpp.
int free5GRAN::phy::signal_processing::compute_nre | ( | int | num_symb_pdsch, |
int | num_dmrs_symb | ||
) |
Compute number of PDSCH RE per RB
[in] | num_symb_pdsch | Number of PDSCH symbols |
[in] | num_dmrs_symb | Number of DMRS symbols |
Definition at line 532 of file libphy.cpp.
free5GRAN::pdcch_t0ss_monitoring_occasions free5GRAN::phy::signal_processing::compute_pdcch_t0_ss_monitoring_occasions | ( | int | pdcch_config, |
int | pbch_scs, | ||
int | common_scs, | ||
int | i | ||
) |
Compute PDCCH monitoring occasion informations
3GPP standard: TS38.213 V15.2.0 Section 13
[in] | pdcch_config | PDCCH config received from MIB |
[in] | pbch_scs | PBCH subcarrier spacing |
[in] | common_scs | BWP subcarrier spacing |
[in] | i | SSB index |
Definition at line 369 of file libphy.cpp.
void free5GRAN::phy::signal_processing::compute_phase_decomp | ( | int * | cp_lengths, |
int * | cum_sum_symb, | ||
float | sampling_rate, | ||
float | f0, | ||
int | num_symb_per_subframes, | ||
complex< float > * | phase_decomp_factor | ||
) |
Compute phase decompensation vector from frequency
3GPP standard: TS38.211 V15.2.0 Section 5.3
[in] | cp_lengths | CP lengths |
[in] | cum_sum_symb | CP lengths cumulative sum |
[in] | sampling_rate | RF device sample rate |
[in] | f0 | Frequency in Hz |
[in] | num_symb_per_subframes | Number of symbols per subframes |
[out] | phase_decomp_factor | Phase de-compensator vector |
Definition at line 511 of file libphy.cpp.
void free5GRAN::phy::signal_processing::compute_rb_start_lrb_dci | ( | int | RIV, |
int | n_size_bwp, | ||
int & | lrb, | ||
int & | rb_start | ||
) |
Compute RB start and LRB from DCI
3GPP standard: TS38.214 V15.2.0 Section 5.1.2.2.2
[in] | RIV | Frequency domain resource allocation |
[in] | n_size_bwp | Active BWP size (in RB) |
[out] | lrb | Number of PDSCH RB |
[out] | rb_start | First PDSCH RB index in BWP |
Definition at line 419 of file libphy.cpp.
void free5GRAN::phy::signal_processing::fft | ( | vector< complex< float >> | time_domain_signal, |
vector< vector< complex< float >>> & | output_signal, | ||
int | fft_size, | ||
int * | cp_lengths, | ||
int * | cum_sum_symb, | ||
int | num_symbols, | ||
int | num_sc_output, | ||
int | first_symb_index, | ||
int | offset | ||
) |
Perform FFT on time domain signal to recover frequency domain signal (= RE grid)
[in] | time_domain_signal | Input time domain signal |
[out] | output_signal | Output RE grid |
[in] | fft_size | FFT size (Number of samples per symbol, excluding CP) |
[in] | cp_lengths | Array of CP lengths for 1 subframe (= 1ms) |
[in] | cum_sum_symb | Cumulative sum of symbols length in one subframe |
[in] | num_symbols | Number of symbols in output RE grid (= Number of rows of output_signal) |
[in] | num_sc_output | Number of subcarriers in output RE grid (= Number of columns of output_signal). |
[in] | first_symb_index | Index of first symbol to be extracted in frame. |
[in] | offset | Number of amples to be left before extracting. Can be used while extracting specific slots in a radio frame. |
Definition at line 543 of file libphy.cpp.
void free5GRAN::phy::signal_processing::get_candidates_frames_indexes | ( | vector< vector< int >> & | frame_indexes, |
int * | frame_numbers, | ||
int | sfn, | ||
int | index_first_pss, | ||
int | num_samples_before_pss, | ||
int | frame_size | ||
) |
Definition at line 580 of file libphy.cpp.
void free5GRAN::phy::signal_processing::get_pdsch_dmrs_symbols | ( | const string & | type, |
int | duration, | ||
int | additionnal_position, | ||
int | l0, | ||
int ** | output, | ||
int & | size | ||
) |
Retrieve DMRS symbols
3GPP standard: TS38.211 V15.2.0 Table 7.4.1.1.2-3
[in] | additionnal_position | Number of additional positions |
[in] | l0 | First DMRS symbol |
[out] | output | DMRS symbols array |
[out] | size | Number of DMRS symbols |
Definition at line 438 of file libphy.cpp.
void free5GRAN::phy::signal_processing::hard_demodulation | ( | vector< complex< float >> | signal, |
int * | bits, | ||
int | signal_length, | ||
int | modulation_scheme | ||
) |
Samples hard demodulation
[in] | signal | Input IQ data to be demodulated |
[in] | signal_length | Number of symbols to be demodulated |
[in] | modulation_scheme | Modulation used (0: BPSK, 1: QPSK) |
[out] | bits | Output hard bits |
Definition at line 166 of file libphy.cpp.
void free5GRAN::phy::signal_processing::soft_demodulation | ( | vector< complex< float >> | signal, |
double * | soft_bits, | ||
int | signal_length, | ||
int | modulation_scheme | ||
) |
Samples soft demodulation
[in] | signal | Input IQ data to be demodulated |
[out] | bits | Output LLR bits |
[in] | signal_length | Number of symbols to be demodulated |
[in] | modulation_scheme | Modulation used (0: BPSK, 1: QPSK) |
Definition at line 203 of file libphy.cpp.
void free5GRAN::phy::signal_processing::transpose_signal | ( | vector< complex< float >> * | input_signal, |
float | freq_offset, | ||
int | sample_rate, | ||
int | input_length | ||
) |
Shift signal in frequency domain by a frequency offset
[in] | input_signal | Input signal to be shifted |
[in] | freq_offset | Frequency offset |
[in] | sample_rate | Signal sample rate |
[in] | input_length | Input signal length |
Definition at line 282 of file libphy.cpp.