NR UE: introduce orbit propagation to improve N_UE_TA_adj accuracy
Instead of trying to estimate N_UE_TA_adj with a second degree polynomial, we introduce orbit propagation to calculate N_UE_TA_adj with higher accuracy. When we receive the satellite ephemeris data consisting of the satellite position vector and the satellite velocity vector, we calculate parameters for orbit propagation, assuming a circular orbit in the plane created by the satellite position vector and the satellite velocity vector. This is done in the function prepare_ue_sat_ta(). Every millisecond, we use these parameters together with the time since epoch to calculate the satellite position on that orbit and from this the reound-trip-time between UE and the satellite, what corresponds to N_UE_TA_adj. This is done in the function apply_ntn_timing_advance().
This commit is contained in:
committed by
francescomani
parent
43722e6bac
commit
59af5e4ad2
@@ -98,10 +98,17 @@ static void configure_ntn_params(PHY_VARS_NR_UE *ue, fapi_nr_dl_ntn_config_comma
|
||||
ue->ntn_config_message->ntn_config_params.epoch_hfn = ntn_params_message->epoch_hfn;
|
||||
ue->ntn_config_message->ntn_config_params.epoch_sfn = ntn_params_message->epoch_sfn;
|
||||
ue->ntn_config_message->ntn_config_params.epoch_subframe = ntn_params_message->epoch_subframe;
|
||||
|
||||
ue->ntn_config_message->ntn_config_params.omega = ntn_params_message->omega;
|
||||
ue->ntn_config_message->ntn_config_params.pos_sat_0 = ntn_params_message->pos_sat_0;
|
||||
ue->ntn_config_message->ntn_config_params.pos_sat_90 = ntn_params_message->pos_sat_90;
|
||||
|
||||
ue->ntn_config_message->ntn_config_params.N_common_ta_adj = ntn_params_message->N_common_ta_adj;
|
||||
ue->ntn_config_message->ntn_config_params.N_common_ta_drift = ntn_params_message->N_common_ta_drift;
|
||||
ue->ntn_config_message->ntn_config_params.N_common_ta_drift_variant = ntn_params_message->N_common_ta_drift_variant;
|
||||
|
||||
ue->ntn_config_message->ntn_config_params.cell_specific_k_offset = ntn_params_message->cell_specific_k_offset;
|
||||
ue->ntn_config_message->ntn_config_params.ntn_total_time_advance_ms = ntn_params_message->ntn_total_time_advance_ms;
|
||||
ue->ntn_config_message->ntn_config_params.ntn_total_time_advance_drift = ntn_params_message->ntn_total_time_advance_drift;
|
||||
ue->ntn_config_message->ntn_config_params.ntn_total_time_advance_drift_variant = ntn_params_message->ntn_total_time_advance_drift_variant;
|
||||
|
||||
ue->ntn_config_message->update = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user