From 87b53883b27a472f26e9135f557bd37d3f5c001c Mon Sep 17 00:00:00 2001 From: Thomas Schlichter Date: Wed, 21 Apr 2021 13:38:57 +0200 Subject: [PATCH] HACK: cut PUSCH and PDSCH OFDM symbol after complete CP Currently we cute the PUSCH and PDSCH OFDM symbols starting within the last 1/8th of the CP to avoid ISI. This time shift leads to a rotation in frequency domain. The current PRB based channel estimation does not compensate for the rotation _within_ a PRB, leading to bad performance. This commit should _not_ make it into develop branch, it is just for testing! Instead, we should do some compensating rotation before channel estimation. --- openair1/PHY/MODULATION/slot_fep_nr.c | 4 ++-- openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c | 2 +- openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openair1/PHY/MODULATION/slot_fep_nr.c b/openair1/PHY/MODULATION/slot_fep_nr.c index 0be635ba0b..bcd20e06f3 100644 --- a/openair1/PHY/MODULATION/slot_fep_nr.c +++ b/openair1/PHY/MODULATION/slot_fep_nr.c @@ -107,7 +107,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, rx_offset += frame_parms->ofdm_symbol_size * symbol; // use OFDM symbol from within 1/8th of the CP to avoid ISI - rx_offset -= nb_prefix_samples / 8; + //rx_offset -= nb_prefix_samples / 8; #ifdef DEBUG_FEP // if (ue->frame <100) @@ -296,7 +296,7 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, // offset of n-th OFDM symbol rxdata_offset += symbol * (frame_parms->ofdm_symbol_size + nb_prefix_samples); // use OFDM symbol from within 1/8th of the CP to avoid ISI - rxdata_offset -= nb_prefix_samples / 8; + //rxdata_offset -= nb_prefix_samples / 8; int16_t *rxdata_ptr; diff --git a/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c b/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c index d3e33a91a8..5ac5a5fa35 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c +++ b/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c @@ -45,7 +45,7 @@ int nr_est_timing_advance_pusch(PHY_VARS_gNB* gNB, int UE_id) NR_gNB_PUSCH *gNB_pusch_vars = gNB->pusch_vars[UE_id]; int32_t **ul_ch_estimates_time = gNB_pusch_vars->ul_ch_estimates_time; - int sync_pos = frame_parms->nb_prefix_samples / 8; + int sync_pos = 0; // frame_parms->nb_prefix_samples / 8; for (i = 0; i < frame_parms->ofdm_symbol_size; i++) { int temp = 0; diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c index 0318ed6478..475d418083 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c @@ -82,7 +82,7 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms, // do not filter to have proactive timing adjustment //max_pos_fil = max_pos; - diff = max_pos_fil - (frame_parms->nb_prefix_samples>>3); + diff = max_pos_fil; // - (frame_parms->nb_prefix_samples>>3); if (frame_parms->freq_range==nr_FR2) sync_offset = 2;