mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
feature: Estimate CFO from CSI-RS tracking signal
TRS resources if configured by gnb, is present in two consequtive slots and two symbols per slot. LS estimates from the first symbol is saved and in second symbol frequency offset and time offset is estimated. The estimated FO is saved in UE global structure which is used in the last TRS slot. If the FO is above a threshold, the radio's center frequency is adjusted. Time offset is estimated but not used because time is already tracked using PBCH DMRS. Signed-off-by: Sakthivel Velumani <s.velumani@northeastern.edu>
This commit is contained in:
@@ -215,9 +215,8 @@ static void UE_synch(void *arg) {
|
||||
((ret.rx_offset << 1) / fp->samples_per_subframe * fp->slots_per_subframe)
|
||||
+ round((float)((ret.rx_offset << 1) % fp->samples_per_subframe) / fp->samples_per_slot0);
|
||||
|
||||
if (get_nrUE_params()->cont_fo_comp) {
|
||||
UE->freq_offset = freq_offset - UE->dl_Doppler_shift;
|
||||
} else {
|
||||
UE->freq_offset = freq_offset - UE->dl_Doppler_shift;
|
||||
if (!get_nrUE_params()->cont_fo_comp) {
|
||||
// rerun with new cell parameters and frequency-offset
|
||||
nrue_ru_set_freq(UE, ul_carrier, dl_carrier, freq_offset);
|
||||
}
|
||||
@@ -711,6 +710,18 @@ static inline int get_readBlockSize(uint16_t slot, const NR_DL_FRAME_PARMS *fp)
|
||||
return rem_samples + next_slot_first_symbol;
|
||||
}
|
||||
|
||||
void trs_freq_correction(PHY_VARS_NR_UE *ue, int cfo)
|
||||
{
|
||||
if (abs(cfo) > TRS_CFO_THRESH) {
|
||||
LOG_A(PHY, "CFO estimated (%d) from TRS exceeded threshold (%d). Adjusting radio CF\n", cfo, TRS_CFO_THRESH);
|
||||
ue->freq_offset += cfo;
|
||||
uint64_t dl_carrier;
|
||||
uint64_t ul_carrier;
|
||||
nr_get_carrier_frequencies(ue, &dl_carrier, &ul_carrier);
|
||||
nrue_ru_set_freq(ue, ul_carrier, dl_carrier, ue->freq_offset);
|
||||
}
|
||||
}
|
||||
|
||||
void *UE_thread(void *arg)
|
||||
{
|
||||
//this thread should be over the processing thread to keep in real time
|
||||
|
||||
Reference in New Issue
Block a user