#include <phy.h>
Definition at line 27 of file phy.h.
◆ phy() [1/2]
phy::phy |
( |
rf * |
rf_dev, |
|
|
double |
ssb_period, |
|
|
int |
fft_size, |
|
|
int |
scs, |
|
|
free5GRAN::band |
band_obj |
|
) |
| |
- Parameters
-
[in] | rf_dev | RF device. (Only USRP B210 is currently supported) |
[in] | ssb_period | SSB periodicity. Default value is 0.02 (20 ms) |
[in] | fft_size | FFT/iFFT size. Represents the total number of os subcarriers to be decoded |
[in] | scs | Subcarrier spacing |
[in] | band_obj | Band object for getting Lmax value |
Definition at line 41 of file phy.cpp.
◆ phy() [2/2]
◆ cell_synchronization()
int phy::cell_synchronization |
( |
float & |
received_power | ) |
|
Perform time synchronization
- PSS cross-correlation to retrieve N_ID_2
- SSS correlation to retrieve N_ID_1
- PCI computation based on N_ID_1 and N_ID_2
- Parameters
-
[in] | received_power | PSS received power. Used for power ramping. |
Definition at line 60 of file phy.cpp.
◆ extract_pbch()
int phy::extract_pbch |
( |
| ) |
|
Time resynchronization, frequency synchronization, PBCH extraction and decoding.
- Getting 3ms signal from RF device
- PSS cross-correlation to retrieve N_ID_2
- SSS correlation to retrieve N_ID_1
- PCI computation based on N_ID_1 and N_ID_2
- Function ends if recomputed PCI differs from to initially computed one
- Fine frequency synchronization by correlating cyclic prefixes and corresponding symbol part
- Signal extraction and FFT
- Resource element de-mapper
- Channel estimation based on different values of i_ssb
- Channel equalization based on best SNR value
- PBCH decoding
- BCH decoding
- MIB parsing
Definition at line 188 of file phy.cpp.
◆ extract_pdsch()
void phy::extract_pdsch |
( |
| ) |
|
PDSCH extraction, PDSCH decoding, DL-SCH decoding and SIB1 parsing
- Parameters extraction from DCI and standard
- Phase de-compensation. Looping over different possible phase compensation:
- Signal extraction, FFT and resource element de-mapper
- Channel estimation & equalization
- PDSCH decoding
- DL-SCH decoding
- If CRC is validated, phase de-compensation is validated and functions continues. Otherwise, another phase de-compensation is tried.
- SIB1 parsing using ASN1C
Definition at line 894 of file phy.cpp.
◆ getSib()
BCCH_DL_SCH_Message_t * phy::getSib |
( |
| ) |
|
◆ getSIB1RV()
◆ parse_dci_1_0_si_rnti()
Parse DCI informations
- Parameters
-
[in] | dci_bits | DCI decoded bits |
[in] | freq_domain_ra_size | Number of bits used for frequency allocation in DCI |
[out] | dci | Filled DCI object |
Definition at line 861 of file phy.cpp.
◆ print_cell_info()
void phy::print_cell_info |
( |
| ) |
|
Print cells global informations and MIB.
Definition at line 476 of file phy.cpp.
◆ print_dci_info()
void phy::print_dci_info |
( |
| ) |
|
Print DCI decoded informations
Definition at line 841 of file phy.cpp.
◆ print_sib1()
◆ reconfigure()
void phy::reconfigure |
( |
int |
fft_size | ) |
|
◆ search_pdcch()
void phy::search_pdcch |
( |
bool & |
validated | ) |
|
PDCCH config extraction, PDCCH blind search and DCI decoding
3GPP standard: TS 38.213 13
- Read PDCCH config from MIB
- Detect frame beginning
- Select frame containing PDCCH and PDSCH based of SFN
- Frequency calibration to retrieve center on CORESET0
- Compute CCE to REG mapping
- Blind search DCI decoding over different candidates:
- Select a candidate
- Perform resource element de-mapping and FFT
- Channel estimation & equalization
- PDCCH decoding
- DCI decoding
- If CRC is validated, candidate is selected and function ends
- Otherwise, function continues with another candidates
- Parameters
-
[out] | dci_found | returns true if blind decode succeeds. |
Definition at line 515 of file phy.cpp.
◆ band_object
Definition at line 39 of file phy.h.
◆ buff
std::vector<std::complex<float> > phy::buff |
|
private |
Definition at line 43 of file phy.h.
◆ cell_confirmed
Definition at line 35 of file phy.h.
◆ common_cp_length
int phy::common_cp_length |
|
private |
Definition at line 32 of file phy.h.
◆ crc_validated
Definition at line 35 of file phy.h.
◆ dci_1_0_si_rnti
Definition at line 40 of file phy.h.
◆ fft_size
Definition at line 34 of file phy.h.
◆ frame_data
std::vector<std::complex<float> > phy::frame_data |
|
private |
Definition at line 37 of file phy.h.
◆ frame_size
Definition at line 32 of file phy.h.
◆ freq_offset
Definition at line 36 of file phy.h.
◆ i_b_ssb
Definition at line 32 of file phy.h.
◆ i_ssb
Definition at line 32 of file phy.h.
◆ index_first_pss
Definition at line 32 of file phy.h.
◆ is_extended_cp
Definition at line 32 of file phy.h.
◆ l_max
Definition at line 32 of file phy.h.
◆ max_snr
Definition at line 36 of file phy.h.
◆ mib_bits
Definition at line 32 of file phy.h.
◆ mib_object
Definition at line 38 of file phy.h.
◆ mu
Definition at line 32 of file phy.h.
◆ n_id_1
Definition at line 32 of file phy.h.
◆ n_id_2
Definition at line 32 of file phy.h.
◆ n_size_bwp
Definition at line 32 of file phy.h.
◆ num_slots_per_frame
int phy::num_slots_per_frame |
|
private |
Definition at line 32 of file phy.h.
◆ pci
Definition at line 32 of file phy.h.
◆ pdcch_ss_mon_occ
Definition at line 41 of file phy.h.
◆ rf_device
Definition at line 31 of file phy.h.
◆ scs
Definition at line 32 of file phy.h.
◆ sib1
BCCH_DL_SCH_Message_t* phy::sib1 =0 |
|
private |
Definition at line 44 of file phy.h.
◆ ss_pwr
Definition at line 45 of file phy.h.
◆ ssb_period
Definition at line 33 of file phy.h.
◆ time_first_pss
std::chrono::time_point<std::chrono::high_resolution_clock> phy::time_first_pss |
|
private |
Definition at line 42 of file phy.h.
The documentation for this class was generated from the following files: