GNSS-SDR  0.0.19
An Open Source GNSS Software Defined Receiver
Public Member Functions | List of all members
Fpga_Multicorrelator_8sc Class Reference

Class that implements carrier wipe-off and correlators. More...

#include <fpga_multicorrelator.h>

Public Member Functions

 Fpga_Multicorrelator_8sc (int32_t n_correlators, int32_t *ca_codes, int32_t *data_codes, uint32_t code_length_chips, bool track_pilot, uint32_t code_samples_per_chip)
 Constructor. More...
 
 ~Fpga_Multicorrelator_8sc ()
 Destructor. More...
 
void set_output_vectors (gr_complex *corr_out, gr_complex *Prompt_Data)
 Configure pointers to the FPGA multicorrelator results. More...
 
void set_local_code_and_taps (float *shifts_chips, float *prompt_data_shift, int32_t PRN)
 Configure the local code in the FPGA multicorrelator. More...
 
void update_local_code ()
 Configure code phase and code rate parameters in the FPGA. More...
 
void Carrier_wipeoff_multicorrelator_resampler (float rem_carrier_phase_in_rad, float phase_step_rad, float carrier_phase_rate_step_rad, float rem_code_phase_chips, float code_phase_step_chips, float code_phase_rate_step_chips, int32_t signal_length_samples)
 Perform a multicorrelation. More...
 
bool free ()
 Stop the correlation process in the FPGA and free code phase and code rate parameters. More...
 
void open_channel (const std::string &device_io_name, uint32_t channel)
 Open the FPGA device driver. More...
 
void set_initial_sample (uint64_t samples_offset)
 Set the initial sample number where the tracking process begins. More...
 
uint64_t read_sample_counter ()
 Read the sample counter in the FPGA. More...
 
void lock_channel ()
 Start the tracking process in the FPGA. More...
 
void unlock_channel ()
 finish the tracking process in the FPGA More...
 
void set_secondary_code_lengths (uint32_t secondary_code_0_length, uint32_t secondary_code_1_length)
 Set the secondary code length in the FPGA. This is only used when extended coherent integration is enabled in the FPGA. If tracking the pilot is enabled then secondary_code_0_length is the length of the pilot secondary code and secondary_code_1_length is the length of the data secondary code. If tracking the pilot is disabled then secondary_code_0_length is the length of the data secondary code, and secondary_code_1_length must be set to zero. More...
 
void initialize_secondary_code (uint32_t secondary_code, std::string *secondary_code_string)
 Initialize the secondary code in the FPGA. If tracking the pilot is enabled then the pilot secondary code is configured when secondary_code = 0 and the data secondary code is configured when secondary_code = 1. If tracking the pilot is disabled then the data secondary code is configured when secondary code = 0. More...
 
void update_prn_code_length (uint32_t first_prn_length, uint32_t next_prn_length)
 Set the PRN length in the FPGA in number of samples. This function is only used then extended coherent integration is enabled in the FPGA. The FPGA allows for the configuration of two PRN lengths. When the length of the extended coherent integration is bigger than the length of the PRN code, the FPGA uses the first_length_secondary_code as the length of the PRN code immediately following the beginning of the extended coherent integration, and the next_length_secondary_code as the length of the remaining PRN codes. The purpose of this is to have the option to allow the FPGA to compensate for a possible deviation between the nominal value of the PRN code length and the measured PRN code length in the PRN immediately following the start of the coherent integration only. If this option is not used then write the same value to first_length_secondary_code and next_length_secondary_code. More...
 
void enable_secondary_codes ()
 Enable the use of secondary codes in the FPGA. More...
 
void disable_secondary_codes ()
 Disable the use of secondary codes in the FPGA. More...
 

Detailed Description

Class that implements carrier wipe-off and correlators.

Definition at line 40 of file fpga_multicorrelator.h.

Constructor & Destructor Documentation

◆ Fpga_Multicorrelator_8sc()

Fpga_Multicorrelator_8sc::Fpga_Multicorrelator_8sc ( int32_t  n_correlators,
int32_t *  ca_codes,
int32_t *  data_codes,
uint32_t  code_length_chips,
bool  track_pilot,
uint32_t  code_samples_per_chip 
)

Constructor.

◆ ~Fpga_Multicorrelator_8sc()

Fpga_Multicorrelator_8sc::~Fpga_Multicorrelator_8sc ( )

Destructor.

Member Function Documentation

◆ Carrier_wipeoff_multicorrelator_resampler()

void Fpga_Multicorrelator_8sc::Carrier_wipeoff_multicorrelator_resampler ( float  rem_carrier_phase_in_rad,
float  phase_step_rad,
float  carrier_phase_rate_step_rad,
float  rem_code_phase_chips,
float  code_phase_step_chips,
float  code_phase_rate_step_chips,
int32_t  signal_length_samples 
)

Perform a multicorrelation.

◆ disable_secondary_codes()

void Fpga_Multicorrelator_8sc::disable_secondary_codes ( )

Disable the use of secondary codes in the FPGA.

◆ enable_secondary_codes()

void Fpga_Multicorrelator_8sc::enable_secondary_codes ( )

Enable the use of secondary codes in the FPGA.

◆ free()

bool Fpga_Multicorrelator_8sc::free ( )

Stop the correlation process in the FPGA and free code phase and code rate parameters.

◆ initialize_secondary_code()

void Fpga_Multicorrelator_8sc::initialize_secondary_code ( uint32_t  secondary_code,
std::string *  secondary_code_string 
)

Initialize the secondary code in the FPGA. If tracking the pilot is enabled then the pilot secondary code is configured when secondary_code = 0 and the data secondary code is configured when secondary_code = 1. If tracking the pilot is disabled then the data secondary code is configured when secondary code = 0.

◆ lock_channel()

void Fpga_Multicorrelator_8sc::lock_channel ( )

Start the tracking process in the FPGA.

◆ open_channel()

void Fpga_Multicorrelator_8sc::open_channel ( const std::string &  device_io_name,
uint32_t  channel 
)

Open the FPGA device driver.

◆ read_sample_counter()

uint64_t Fpga_Multicorrelator_8sc::read_sample_counter ( )

Read the sample counter in the FPGA.

◆ set_initial_sample()

void Fpga_Multicorrelator_8sc::set_initial_sample ( uint64_t  samples_offset)

Set the initial sample number where the tracking process begins.

◆ set_local_code_and_taps()

void Fpga_Multicorrelator_8sc::set_local_code_and_taps ( float *  shifts_chips,
float *  prompt_data_shift,
int32_t  PRN 
)

Configure the local code in the FPGA multicorrelator.

◆ set_output_vectors()

void Fpga_Multicorrelator_8sc::set_output_vectors ( gr_complex *  corr_out,
gr_complex *  Prompt_Data 
)

Configure pointers to the FPGA multicorrelator results.

◆ set_secondary_code_lengths()

void Fpga_Multicorrelator_8sc::set_secondary_code_lengths ( uint32_t  secondary_code_0_length,
uint32_t  secondary_code_1_length 
)

Set the secondary code length in the FPGA. This is only used when extended coherent integration is enabled in the FPGA. If tracking the pilot is enabled then secondary_code_0_length is the length of the pilot secondary code and secondary_code_1_length is the length of the data secondary code. If tracking the pilot is disabled then secondary_code_0_length is the length of the data secondary code, and secondary_code_1_length must be set to zero.

◆ unlock_channel()

void Fpga_Multicorrelator_8sc::unlock_channel ( )

finish the tracking process in the FPGA

◆ update_local_code()

void Fpga_Multicorrelator_8sc::update_local_code ( )

Configure code phase and code rate parameters in the FPGA.

◆ update_prn_code_length()

void Fpga_Multicorrelator_8sc::update_prn_code_length ( uint32_t  first_prn_length,
uint32_t  next_prn_length 
)

Set the PRN length in the FPGA in number of samples. This function is only used then extended coherent integration is enabled in the FPGA. The FPGA allows for the configuration of two PRN lengths. When the length of the extended coherent integration is bigger than the length of the PRN code, the FPGA uses the first_length_secondary_code as the length of the PRN code immediately following the beginning of the extended coherent integration, and the next_length_secondary_code as the length of the remaining PRN codes. The purpose of this is to have the option to allow the FPGA to compensate for a possible deviation between the nominal value of the PRN code length and the measured PRN code length in the PRN immediately following the start of the coherent integration only. If this option is not used then write the same value to first_length_secondary_code and next_length_secondary_code.


The documentation for this class was generated from the following file: