update time tracking
This commit is contained in:
+3
-3
@@ -695,12 +695,12 @@ void *UE_thread(void *arg) {
|
|||||||
//LOG_I(PHY,"Process slot %d thread Idx %d total gain %d\n", slot_nr, thread_idx, UE->rx_total_gain_dB);
|
//LOG_I(PHY,"Process slot %d thread Idx %d total gain %d\n", slot_nr, thread_idx, UE->rx_total_gain_dB);
|
||||||
|
|
||||||
#ifdef OAI_ADRV9371_ZC706
|
#ifdef OAI_ADRV9371_ZC706
|
||||||
uint32_t total_gain_dB_prev = 0;
|
/*uint32_t total_gain_dB_prev = 0;
|
||||||
if (total_gain_dB_prev != UE->rx_total_gain_dB) {
|
if (total_gain_dB_prev != UE->rx_total_gain_dB) {
|
||||||
total_gain_dB_prev = UE->rx_total_gain_dB;
|
total_gain_dB_prev = UE->rx_total_gain_dB;
|
||||||
openair0_cfg[0].rx_gain[0] = UE->rx_total_gain_dB-20;
|
openair0_cfg[0].rx_gain[0] = UE->rx_total_gain_dB;
|
||||||
UE->rfdevice.trx_set_gains_func(&UE->rfdevice,&openair0_cfg[0]);
|
UE->rfdevice.trx_set_gains_func(&UE->rfdevice,&openair0_cfg[0]);
|
||||||
}
|
}*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
for (int i=0; i<UE->frame_parms.nb_antennas_rx; i++)
|
||||||
|
|||||||
@@ -199,7 +199,6 @@ int nr_pbch_dmrs_correlation(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
|
|
||||||
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||||
int frame_rx,
|
|
||||||
uint8_t eNB_offset,
|
uint8_t eNB_offset,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
unsigned char symbol,
|
unsigned char symbol,
|
||||||
@@ -463,17 +462,15 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
slot_pbch = is_pbch_in_slot(pbch_config, frame_rx, Ns, ssb_periodicity, ue->frame_parms.slots_per_frame);
|
if( symbol == 3)
|
||||||
|
|
||||||
if ((ue->decode_MIB == 1) && slot_pbch)
|
|
||||||
{
|
{
|
||||||
// do ifft of channel estimate
|
// do ifft of channel estimate
|
||||||
for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++)
|
for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++)
|
||||||
for (p=0; p<ue->frame_parms.nb_antenna_ports_eNB; p++) {
|
for (p=0; p<ue->frame_parms.nb_antenna_ports_eNB; p++) {
|
||||||
if (ue->pbch_vars[eNB_offset]->dl_ch_estimates[(p<<1)+aarx])
|
if (ue->pbch_vars[eNB_offset]->dl_ch_estimates[(p<<1)+aarx])
|
||||||
{
|
{
|
||||||
LOG_D(PHY,"Channel Impulse Computation Slot %d ThreadId %d Symbol %d \n", Ns, ue->current_thread_id[Ns], symbol);
|
LOG_D(PHY,"Channel Impulse Computation Slot %d ThreadId %d Symbol %d ch_offset %d\n", Ns, ue->current_thread_id[Ns], symbol, ch_offset);
|
||||||
idft((int16_t*) &ue->pbch_vars[eNB_offset]->dl_ch_estimates[(p<<1)+aarx][0],
|
idft((int16_t*) &ue->pbch_vars[eNB_offset]->dl_ch_estimates[(p<<1)+aarx][ch_offset],
|
||||||
(int16_t*) ue->pbch_vars[eNB_offset]->dl_ch_estimates_time[(p<<1)+aarx],1);
|
(int16_t*) ue->pbch_vars[eNB_offset]->dl_ch_estimates_time[(p<<1)+aarx],1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ int nr_pbch_dmrs_correlation(PHY_VARS_NR_UE *ue,
|
|||||||
NR_UE_SSB *current_ssb);
|
NR_UE_SSB *current_ssb);
|
||||||
|
|
||||||
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||||
int frame_rx,
|
|
||||||
uint8_t eNB_offset,
|
uint8_t eNB_offset,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
unsigned char symbol,
|
unsigned char symbol,
|
||||||
|
|||||||
@@ -726,7 +726,7 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
ch_offset = ue->frame_parms.ofdm_symbol_size*2;
|
ch_offset = ue->frame_parms.ofdm_symbol_size*2;
|
||||||
|
|
||||||
printf("testing measurements\n");
|
//printf("testing measurements\n");
|
||||||
// signal measurements
|
// signal measurements
|
||||||
|
|
||||||
for (eNB_id=0; eNB_id<ue->n_connected_eNB; eNB_id++) {
|
for (eNB_id=0; eNB_id<ue->n_connected_eNB; eNB_id++) {
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
|
|||||||
#endif
|
#endif
|
||||||
// computing channel estimation for selected best ssb
|
// computing channel estimation for selected best ssb
|
||||||
for(int i=pbch_initial_symbol; i<pbch_initial_symbol+3;i++)
|
for(int i=pbch_initial_symbol; i<pbch_initial_symbol+3;i++)
|
||||||
nr_pbch_channel_estimation(ue,0,0,0,i,i-pbch_initial_symbol,temp_ptr->i_ssb,temp_ptr->n_hf);
|
nr_pbch_channel_estimation(ue,0,0,i,i-pbch_initial_symbol,temp_ptr->i_ssb,temp_ptr->n_hf);
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->dlsch_channel_estimation_stats);
|
stop_meas(&ue->dlsch_channel_estimation_stats);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -589,8 +589,8 @@ void phy_scope_nrUE(FD_phy_scope_nrue *form,
|
|||||||
time = calloc(samples_per_frame,sizeof(float));
|
time = calloc(samples_per_frame,sizeof(float));
|
||||||
corr = calloc(samples_per_frame,sizeof(float));
|
corr = calloc(samples_per_frame,sizeof(float));
|
||||||
|
|
||||||
chest_t = (int16_t**) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_time;
|
chest_t = (int16_t**) phy_vars_ue->pbch_vars[eNB_id]->dl_ch_estimates_time;
|
||||||
chest_f = (int16_t**) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates;
|
chest_f = (int16_t**) phy_vars_ue->pbch_vars[eNB_id]->dl_ch_estimates;
|
||||||
|
|
||||||
pbch_llr = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->llr;
|
pbch_llr = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->llr;
|
||||||
pbch_comp = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0];
|
pbch_comp = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0];
|
||||||
@@ -697,8 +697,8 @@ void phy_scope_nrUE(FD_phy_scope_nrue *form,
|
|||||||
if (chest_f[(atx<<1)+arx] != NULL) {
|
if (chest_f[(atx<<1)+arx] != NULL) {
|
||||||
for (k=0; k<frame_parms->ofdm_symbol_size; k++) {
|
for (k=0; k<frame_parms->ofdm_symbol_size; k++) {
|
||||||
freq[ind] = (float)ind;
|
freq[ind] = (float)ind;
|
||||||
Re = (float)(chest_f[(atx<<1)+arx][(2*k)]);
|
Re = (float)(chest_f[(atx<<1)+arx][6144+(2*k)]);
|
||||||
Im = (float)(chest_f[(atx<<1)+arx][(2*k)+1]);
|
Im = (float)(chest_f[(atx<<1)+arx][6144+(2*k)+1]);
|
||||||
|
|
||||||
chest_f_abs[ind] = (short)10*log10(1.0+((double)Re*Re + (double)Im*Im));
|
chest_f_abs[ind] = (short)10*log10(1.0+((double)Re*Re + (double)Im*Im));
|
||||||
ind++;
|
ind++;
|
||||||
|
|||||||
@@ -4165,6 +4165,43 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
|
|||||||
}
|
}
|
||||||
uint16_t coreset_nb_rb = 6 * coreset_count;
|
uint16_t coreset_nb_rb = 6 * coreset_count;
|
||||||
uint16_t coreset_start_rb = 6 * coreset_start;
|
uint16_t coreset_start_rb = 6 * coreset_start;
|
||||||
|
|
||||||
|
slot_pbch = is_pbch_in_slot(pbch_config, frame_rx, nr_tti_rx, ssb_periodicity, ue->frame_parms.slots_per_frame);
|
||||||
|
|
||||||
|
// looking for pbch only in slot where it is supposed to be
|
||||||
|
if ((ue->decode_MIB == 1) && slot_pbch)
|
||||||
|
{
|
||||||
|
LOG_I(PHY," ------ PBCH ChannelComp/LLR: frame.slot %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
|
||||||
|
|
||||||
|
for (int i=1; i<4; i++) {
|
||||||
|
|
||||||
|
nr_slot_fep(ue,
|
||||||
|
(ue->symbol_offset+i)%(ue->frame_parms.symbols_per_slot),
|
||||||
|
nr_tti_rx,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
|
||||||
|
#if UE_TIMING_TRACE
|
||||||
|
start_meas(&ue->dlsch_channel_estimation_stats);
|
||||||
|
#endif
|
||||||
|
nr_pbch_channel_estimation(ue,0,nr_tti_rx,(ue->symbol_offset+i)%(ue->frame_parms.symbols_per_slot),i-1,(pbch_config->ssb_index)&7,pbch_config->half_frame_bit);
|
||||||
|
#if UE_TIMING_TRACE
|
||||||
|
stop_meas(&ue->dlsch_channel_estimation_stats);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
nr_ue_pbch_procedures(eNB_id,ue,proc,0);
|
||||||
|
|
||||||
|
if (ue->no_timing_correction==0) {
|
||||||
|
LOG_I(PHY,"start adjust sync slot = %d no timing %d\n", nr_tti_rx, ue->no_timing_correction);
|
||||||
|
nr_adjust_synch_ue(&ue->frame_parms,
|
||||||
|
ue,
|
||||||
|
eNB_id,
|
||||||
|
nr_tti_rx,
|
||||||
|
0,
|
||||||
|
16384);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef NR_PDCCH_SCHED
|
#ifdef NR_PDCCH_SCHED
|
||||||
nr_gold_pdcch(ue, 0, 2);
|
nr_gold_pdcch(ue, 0, 2);
|
||||||
@@ -4299,44 +4336,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_RA, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_RA, VCD_FUNCTION_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
slot_pbch = is_pbch_in_slot(pbch_config, frame_rx, nr_tti_rx, ssb_periodicity, ue->frame_parms.slots_per_frame);
|
|
||||||
|
|
||||||
// looking for pbch only in slot where it is supposed to be
|
|
||||||
if ((ue->decode_MIB == 1) && slot_pbch)
|
|
||||||
{
|
|
||||||
LOG_I(PHY," ------ PBCH ChannelComp/LLR: frame.slot %d.%d ------ \n", frame_rx%1024, nr_tti_rx);
|
|
||||||
|
|
||||||
for (int i=1; i<4; i++) {
|
|
||||||
|
|
||||||
nr_slot_fep(ue,
|
|
||||||
(ue->symbol_offset+i)%(ue->frame_parms.symbols_per_slot),
|
|
||||||
nr_tti_rx,
|
|
||||||
0,
|
|
||||||
0);
|
|
||||||
|
|
||||||
#if UE_TIMING_TRACE
|
|
||||||
start_meas(&ue->dlsch_channel_estimation_stats);
|
|
||||||
#endif
|
|
||||||
nr_pbch_channel_estimation(ue,frame_rx,0,nr_tti_rx,(ue->symbol_offset+i)%(ue->frame_parms.symbols_per_slot),i-1,(pbch_config->ssb_index)&7,pbch_config->half_frame_bit);
|
|
||||||
#if UE_TIMING_TRACE
|
|
||||||
stop_meas(&ue->dlsch_channel_estimation_stats);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
|
||||||
nr_ue_pbch_procedures(eNB_id,ue,proc,0);
|
|
||||||
|
|
||||||
if (ue->no_timing_correction==0) {
|
|
||||||
LOG_D(PHY,"start adjust sync slot = %d no timing %d\n", nr_tti_rx, ue->no_timing_correction);
|
|
||||||
nr_adjust_synch_ue(&ue->frame_parms,
|
|
||||||
ue,
|
|
||||||
eNB_id,
|
|
||||||
nr_tti_rx,
|
|
||||||
0,
|
|
||||||
16384);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// do procedures for C-RNTI
|
// do procedures for C-RNTI
|
||||||
if (ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active == 1) {
|
if (ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active == 1) {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user