|
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.