From a7bdbc4d6f52935c7f748390b3acbd23e532681c Mon Sep 17 00:00:00 2001 From: Hongzhi Wang Date: Wed, 28 Nov 2018 10:47:52 +0100 Subject: [PATCH] activate nr pbch procedure --- openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 85 ++++++++------------- 1 file changed, 33 insertions(+), 52 deletions(-) diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index 77abd91a5a..e594b9a747 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -2906,14 +2906,15 @@ void restart_phy(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc, uint8_t eNB_id,uint //ue->bitrate[eNB_id] = 0; //ue->total_received_bits[eNB_id] = 0; } +#endif //(0) - -void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc, uint8_t abstraction_flag) +void nr_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc, uint8_t abstraction_flag) { // int i; - int pbch_tx_ant=0; - uint8_t pbch_phase; + //int pbch_tx_ant=0; + //uint8_t pbch_phase; + int ret = 0; uint16_t frame_tx; static uint8_t first_run = 1; uint8_t pbch_trials = 0; @@ -2925,49 +2926,36 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_IN); - pbch_phase=(frame_rx%4); + /*pbch_phase=(frame_rx%4); if (pbch_phase>=4) - pbch_phase=0; + pbch_phase=0;*/ for (pbch_trials=0; pbch_trials<4; pbch_trials++) { //for (pbch_phase=0;pbch_phase<4;pbch_phase++) { //LOG_I(PHY,"[UE %d] Frame %d, Trying PBCH %d (NidCell %d, eNB_id %d)\n",ue->Mod_id,frame_rx,pbch_phase,ue->frame_parms.Nid_cell,eNB_id); if (abstraction_flag == 0) { - pbch_tx_ant = rx_pbch(ue, proc, + ret = nr_rx_pbch(ue, proc, ue->pbch_vars[eNB_id], &ue->frame_parms, eNB_id, - ue->frame_parms.mode1_flag==1?SISO:ALAMOUTI, - ue->high_speed_flag, - pbch_phase); - - - + SISO, + ue->high_speed_flag); } -#ifdef PHY_ABSTRACTION - else { - pbch_tx_ant = rx_pbch_emul(ue, - eNB_id, - pbch_phase); - } - -#endif - - if ((pbch_tx_ant>0) && (pbch_tx_ant<=4)) { + if (ret==0) { break; } - pbch_phase++; + /*pbch_phase++; if (pbch_phase>=4) - pbch_phase=0; + pbch_phase=0;*/ } - if ((pbch_tx_ant>0) && (pbch_tx_ant<=4)) { + if (ret==0) { if (opt_enabled) { static uint8_t dummy[3]; @@ -2980,17 +2968,10 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro ue->Mod_id, nr_tti_rx); } - if (pbch_tx_ant>2) { - LOG_W(PHY,"[openair][SCHED][SYNCH] PBCH decoding: pbch_tx_ant>2 not supported\n"); - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_OUT); - return; - } - - ue->pbch_vars[eNB_id]->pdu_errors_conseq = 0; - frame_tx = (((int)(ue->pbch_vars[eNB_id]->decoded_output[2]&0x03))<<8); + /*frame_tx = (((int)(ue->pbch_vars[eNB_id]->decoded_output[2]&0x03))<<8); frame_tx += ((int)(ue->pbch_vars[eNB_id]->decoded_output[1]&0xfc)); - frame_tx += pbch_phase; + frame_tx += pbch_phase;*/ //if (ue->mac_enabled==1) { //mac_xface->dl_phy_sync_success(ue->Mod_id,frame_rx,eNB_id,first_run); @@ -3011,13 +2992,11 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro ue->proc.proc_rxtx[th_id].frame_rx = proc->frame_rx; ue->proc.proc_rxtx[th_id].frame_tx = proc->frame_tx; - printf("[UE %d] frame %d, nr_tti_rx %d: Adjusting frame counter (PBCH ant_tx=%d, frame_tx=%d, phase %d, rx_offset %d) => new frame %d\n", + printf("[UE %d] frame %d, nr_tti_rx %d: Adjusting frame counter (PBCH frame_tx=%d, rx_offset %d) => new frame %d\n", ue->Mod_id, ue->proc.proc_rxtx[th_id].frame_rx, nr_tti_rx, - pbch_tx_ant, frame_tx, - pbch_phase, ue->rx_offset, proc->frame_rx); } @@ -3027,14 +3006,12 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro } else if (((frame_tx & 0x03FF) != (proc->frame_rx & 0x03FF))) { //(pbch_tx_ant != ue->frame_parms.nb_antennas_tx)) { - LOG_D(PHY,"[UE %d] frame %d, nr_tti_rx %d: Re-adjusting frame counter (PBCH ant_tx=%d, frame_rx=%d, frame%%1024=%d, phase %d).\n", + LOG_D(PHY,"[UE %d] frame %d, nr_tti_rx %d: Re-adjusting frame counter (PBCH frame_rx=%d, frame%%1024=%d).\n", ue->Mod_id, proc->frame_rx, nr_tti_rx, - pbch_tx_ant, frame_tx, - frame_rx & 0x03FF, - pbch_phase); + frame_rx & 0x03FF); proc->frame_rx = (proc->frame_rx & 0xFFFFFC00) | (frame_tx & 0x000003FF); proc->frame_tx = proc->frame_rx; @@ -3049,16 +3026,12 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro } #ifdef DEBUG_PHY_PROC - LOG_D(PHY,"[UE %d] frame %d, nr_tti_rx %d, Received PBCH (MIB): mode1_flag %d, tx_ant %d, frame_tx %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6!\n", + LOG_D(PHY,"[UE %d] frame %d, nr_tti_rx %d, Received PBCH (MIB): frame_tx %d. N_RB_DL %d\n", ue->Mod_id, frame_rx, nr_tti_rx, - ue->frame_parms.mode1_flag, - pbch_tx_ant, frame_tx, - ue->frame_parms.N_RB_DL, - ue->frame_parms.phich_config_common.phich_duration, - ue->frame_parms.phich_config_common.phich_resource); + ue->frame_parms.N_RB_DL); #endif } else { @@ -3109,7 +3082,6 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *pro } -#endif //(0) unsigned int get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb) { @@ -5816,10 +5788,19 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN //LOG_D(PHY," ------ end FFT/ChannelEst/PDCCH slot 1: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx); - /*if ( (nr_tti_rx == 0) && (ue->decode_MIB == 1)) + if ( (nr_tti_rx == 0) && (ue->decode_MIB == 1)) { - ue_pbch_procedures(eNB_id,ue,proc,abstraction_flag); - }*/ + for (int i=0; i<3; i++) + nr_slot_fep(ue, + (5+i), //mu=1 case B + nr_tti_rx, + 0, + 0, + 1, + NR_PBCH_EST); + + nr_ue_pbch_procedures(eNB_id,ue,proc,abstraction_flag); + } // do procedures for C-RNTI LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx);