Commit 3331654e authored by Your Name's avatar Your Name Committed by wf

fix sync bug and add amp

parent 402352da
...@@ -41,6 +41,8 @@ ...@@ -41,6 +41,8 @@
\param reset_freq_est if non-zero it resets the frequency offset estimation loop \param reset_freq_est if non-zero it resets the frequency offset estimation loop
*/ */
uint cal_amp(int16_t *dataIn, int len);
int slot_fep(PHY_VARS_UE *phy_vars_ue, int slot_fep(PHY_VARS_UE *phy_vars_ue,
unsigned char l, unsigned char l,
unsigned char Ns, unsigned char Ns,
......
...@@ -81,6 +81,8 @@ void nr_ue_layer_mapping(int16_t *mod_symbs, ...@@ -81,6 +81,8 @@ void nr_ue_layer_mapping(int16_t *mod_symbs,
\param Ns Slot number (0..19) \param Ns Slot number (0..19)
\param sample_offset offset within rxdata (points to beginning of subframe) \param sample_offset offset within rxdata (points to beginning of subframe)
*/ */
uint cal_amp(int16_t *dataIn, int len);
int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms,
int32_t *rxdata, int32_t *rxdata,
......
...@@ -34,6 +34,18 @@ ...@@ -34,6 +34,18 @@
#define LOG_I(A,B...) printf(A) #define LOG_I(A,B...) printf(A)
#endif*/ #endif*/
uint cal_amp(int16_t *dataIn, int len)
{
int i;
uint sumA = 0;
for(i=0;i<len;i++)
{
sumA += abs(dataIn[i]);
}
sumA = sumA/len;
return sumA;
}
int nr_slot_fep(PHY_VARS_NR_UE *ue, int nr_slot_fep(PHY_VARS_NR_UE *ue,
UE_nr_rxtx_proc_t *proc, UE_nr_rxtx_proc_t *proc,
unsigned char symbol, unsigned char symbol,
......
...@@ -2125,6 +2125,19 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB, ...@@ -2125,6 +2125,19 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB,
} }
stop_meas(&gNB->ulsch_llr_stats); stop_meas(&gNB->ulsch_llr_stats);
rxdataF_ext_offset += gNB->pusch_vars[ulsch_id]->ul_valid_re_per_slot[symbol]; rxdataF_ext_offset += gNB->pusch_vars[ulsch_id]->ul_valid_re_per_slot[symbol];
uint pusch_amp;
if (symbol == (rel15_ul->start_symbol_index + rel15_ul->nr_of_symbols - 1)) {
static int cnt = 0;
if (((cnt & 0x1F) == 0) && (cnt < 0x100))
{
pusch_amp = cal_amp(&gNB->pusch_vars[ulsch_id]->rxdataF_ext[0][symbol * nb_re_pusch], nb_re_pusch);
//LOG_I(PHY, "UL AMP frame %d %d, symbol %d, rbs %d, res %d, time %d, freq %d \n", frame, slot, symbol, nb_re_pusch/12, nb_re_pusch, g_ul_time_amp[symbol], g_ul_freq_amp[symbol], pusch_amp);
LOG_I(PHY, "UL AMP frame %d %d, symbol %d, rbs %d, res %d, pusch amp %d \n", frame, slot, symbol, nb_re_pusch/12, nb_re_pusch, pusch_amp);
}
cnt++;
}
} }
} // symbol loop } // symbol loop
} }
...@@ -748,18 +748,21 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain ...@@ -748,18 +748,21 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
} }
// computing absolute value of frequency offset // computing absolute value of frequency offset
*f_off = ffo_est*frame_parms->subcarrier_spacing; //*f_off = ffo_est*frame_parms->subcarrier_spacing;
for (int pss_index = 0; pss_index < NUMBER_PSS_SEQUENCE; pss_index++) for (int pss_index = 0; pss_index < NUMBER_PSS_SEQUENCE; pss_index++)
avg[pss_index]/=(length/4); avg[pss_index]/=(length/4);
*eNB_id = pss_source; *eNB_id = pss_source;
LOG_I(PHY,"[UE] nr_synchro_time: Sync source = %d, Peak found at pos %d, val = %llu (%d dB) avg %d dB, ffo %lf\n", pss_source, peak_position, (unsigned long long)peak_value, dB_fixed64(peak_value),dB_fixed64(avg[pss_source]),ffo_est);
if (peak_value < 5*avg[pss_source]) if (peak_value < 5*avg[pss_source])
{
LOG_I(PHY,"[UE] %d nr_synchro_time invalid: Sync source = %d, Peak found at pos %d, val = %llu (%d dB) avg %llu (%d dB), ffo %lf, %d hz\n", is, pss_source, peak_position, (unsigned long long)peak_value, dB_fixed64(peak_value), (unsigned long long)avg[pss_source], dB_fixed64(avg[pss_source]),ffo_est, *f_off);
return(-1); return(-1);
}
*f_off = ffo_est*frame_parms->subcarrier_spacing;
LOG_I(PHY,"[UE] %d nr_synchro_time valid: Sync source = %d, Peak found at pos %d, val = %llu (%d dB) avg %llu (%d dB), ffo %lf, %d hz\n", is, pss_source, peak_position, (unsigned long long)peak_value, dB_fixed64(peak_value), (unsigned long long)avg[pss_source], dB_fixed64(avg[pss_source]),ffo_est, *f_off);
#ifdef DBG_PSS_NR #ifdef DBG_PSS_NR
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment