changing n_ssb_crb to n_rb_dl-20 re-centers the SSB and PDCCH and UE can decode PDCCH again
This commit is contained in:
@@ -384,7 +384,7 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB,int N_RB_DL,int N_RB_UL,int mu)
|
|||||||
gNB_config->rf_config.ul_carrier_bandwidth.value = N_RB_UL;
|
gNB_config->rf_config.ul_carrier_bandwidth.value = N_RB_UL;
|
||||||
gNB_config->sch_config.half_frame_index.value = 0;
|
gNB_config->sch_config.half_frame_index.value = 0;
|
||||||
gNB_config->sch_config.ssb_subcarrier_offset.value = 0;
|
gNB_config->sch_config.ssb_subcarrier_offset.value = 0;
|
||||||
gNB_config->sch_config.n_ssb_crb.value = (N_RB_DL-20)>>1;
|
gNB_config->sch_config.n_ssb_crb.value = (N_RB_DL-20);
|
||||||
gNB_config->sch_config.ssb_subcarrier_offset.value = 0;
|
gNB_config->sch_config.ssb_subcarrier_offset.value = 0;
|
||||||
|
|
||||||
|
|
||||||
@@ -419,7 +419,7 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config)
|
|||||||
gNB_config->rf_config.ul_carrier_bandwidth.value = phy_config->cfg->rf_config.ul_carrier_bandwidth.value;//106;
|
gNB_config->rf_config.ul_carrier_bandwidth.value = phy_config->cfg->rf_config.ul_carrier_bandwidth.value;//106;
|
||||||
gNB_config->sch_config.half_frame_index.value = 0;
|
gNB_config->sch_config.half_frame_index.value = 0;
|
||||||
gNB_config->sch_config.ssb_subcarrier_offset.value = phy_config->cfg->sch_config.ssb_subcarrier_offset.value;//0;
|
gNB_config->sch_config.ssb_subcarrier_offset.value = phy_config->cfg->sch_config.ssb_subcarrier_offset.value;//0;
|
||||||
gNB_config->sch_config.n_ssb_crb.value = (phy_config->cfg->rf_config.dl_carrier_bandwidth.value-20)>>1;
|
gNB_config->sch_config.n_ssb_crb.value = (phy_config->cfg->rf_config.dl_carrier_bandwidth.value-20);
|
||||||
gNB_config->sch_config.physical_cell_id.value = phy_config->cfg->sch_config.physical_cell_id.value;
|
gNB_config->sch_config.physical_cell_id.value = phy_config->cfg->sch_config.physical_cell_id.value;
|
||||||
|
|
||||||
if (phy_config->cfg->subframe_config.duplex_mode.value == 0) {
|
if (phy_config->cfg->subframe_config.duplex_mode.value == 0) {
|
||||||
|
|||||||
@@ -655,7 +655,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
|
|||||||
int i,j,k,l;
|
int i,j,k,l;
|
||||||
int eNB_id;
|
int eNB_id;
|
||||||
int th_id;
|
int th_id;
|
||||||
int n_ssb_crb=(fp->N_RB_DL-20)>>1;
|
int n_ssb_crb=(fp->N_RB_DL-20);
|
||||||
abstraction_flag = 0;
|
abstraction_flag = 0;
|
||||||
fp->nb_antennas_tx = 1;
|
fp->nb_antennas_tx = 1;
|
||||||
fp->nb_antennas_rx=1;
|
fp->nb_antennas_rx=1;
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
//#define NR_LTE_PDCCH_DCI_SWITCH
|
//#define NR_LTE_PDCCH_DCI_SWITCH
|
||||||
#define NR_PDCCH_DCI_RUN // activates new nr functions
|
#define NR_PDCCH_DCI_RUN // activates new nr functions
|
||||||
//#define NR_PDCCH_DCI_DEBUG // activates NR_PDCCH_DCI_DEBUG logs
|
#define NR_PDCCH_DCI_DEBUG // activates NR_PDCCH_DCI_DEBUG logs
|
||||||
#define NR_NBR_CORESET_ACT_BWP 3 // The number of CoreSets per BWP is limited to 3 (including initial CORESET: ControlResourceId 0)
|
#define NR_NBR_CORESET_ACT_BWP 3 // The number of CoreSets per BWP is limited to 3 (including initial CORESET: ControlResourceId 0)
|
||||||
#define NR_NBR_SEARCHSPACE_ACT_BWP 10 // The number of SearSpaces per BWP is limited to 10 (including initial SEARCHSPACE: SearchSpaceId 0)
|
#define NR_NBR_SEARCHSPACE_ACT_BWP 10 // The number of SearSpaces per BWP is limited to 10 (including initial SEARCHSPACE: SearchSpaceId 0)
|
||||||
#define PDCCH_TEST_POLAR_TEMP_FIX
|
#define PDCCH_TEST_POLAR_TEMP_FIX
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
|
|||||||
int rx_power=0; //aarx,
|
int rx_power=0; //aarx,
|
||||||
//nfapi_nr_config_request_t* config;
|
//nfapi_nr_config_request_t* config;
|
||||||
|
|
||||||
int n_ssb_crb=(fp->N_RB_DL-20)>>1;
|
int n_ssb_crb=(fp->N_RB_DL-20);
|
||||||
// First try TDD normal prefix, mu 1
|
// First try TDD normal prefix, mu 1
|
||||||
fp->Ncp=NORMAL;
|
fp->Ncp=NORMAL;
|
||||||
fp->frame_type=TDD;
|
fp->frame_type=TDD;
|
||||||
@@ -213,12 +213,12 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
|
|||||||
|
|
||||||
nr_gold_pdcch(ue,0, 2);
|
nr_gold_pdcch(ue,0, 2);
|
||||||
/*
|
/*
|
||||||
int nb_prefix_samples0 = frame_parms->nb_prefix_samples0;
|
int nb_prefix_samples0 = fp->nb_prefix_samples0;
|
||||||
frame_parms->nb_prefix_samples0 = frame_parms->nb_prefix_samples.
|
fp->nb_prefix_samples0 = fp->nb_prefix_samples;
|
||||||
|
|
||||||
nr_slot_fep(ue,0, 0, ue->ssb_offset, 0, 1, NR_PDCCH_EST);
|
nr_slot_fep(ue,0, 0, ue->ssb_offset, 0, 1, NR_PDCCH_EST);
|
||||||
nr_slot_fep(ue,1, 0, ue->ssb_offset, 0, 1, NR_PDCCH_EST);
|
nr_slot_fep(ue,1, 0, ue->ssb_offset, 0, 1, NR_PDCCH_EST);
|
||||||
frame_parms->nb_prefix_samples0 = nb_prefix_samples0;
|
fp->nb_prefix_samples0 = nb_prefix_samples0;
|
||||||
|
|
||||||
LOG_I(PHY,"[UE %d] AUTOTEST Cell Sync : frame = %d, rx_offset %d, freq_offset %d \n",
|
LOG_I(PHY,"[UE %d] AUTOTEST Cell Sync : frame = %d, rx_offset %d, freq_offset %d \n",
|
||||||
ue->Mod_id,
|
ue->Mod_id,
|
||||||
|
|||||||
@@ -5922,11 +5922,11 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
|
||||||
nr_slot_fep(ue,
|
nr_slot_fep(ue,
|
||||||
l,
|
l,
|
||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
0,
|
0,
|
||||||
1,
|
0,
|
||||||
1,
|
1,
|
||||||
NR_PDCCH_EST);
|
NR_PDCCH_EST);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
@@ -5934,46 +5934,49 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode);
|
|
||||||
|
|
||||||
//if (do_pdcch_flag) {
|
write_output("rxdataF.m","rxF",ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[nr_tti_rx>>1]].rxdataF[0],ue->frame_parms.ofdm_symbol_size*2,1,1);
|
||||||
// if ((l==pilot1) || ((pmch_flag==1)&(l==l2))) {
|
|
||||||
// LOG_D(PHY,"[UE %d] Frame %d: Calling pdcch procedures (eNB %d)\n",ue->Mod_id,frame_rx,eNB_id);
|
|
||||||
|
|
||||||
//start_meas(&ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]]);
|
//ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode);
|
||||||
|
|
||||||
//printf(">>> at phy_procedures_nrUE_RX, nr_ue_pdcch_procedures init, dlsch->active=%d\n",
|
//if (do_pdcch_flag) {
|
||||||
// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active);
|
// if ((l==pilot1) || ((pmch_flag==1)&(l==l2))) {
|
||||||
if (nr_ue_pdcch_procedures(eNB_id,ue,proc,abstraction_flag) == -1) {
|
// LOG_D(PHY,"[UE %d] Frame %d: Calling pdcch procedures (eNB %d)\n",ue->Mod_id,frame_rx,eNB_id);
|
||||||
LOG_E(PHY,"[UE %d] Frame %d, nr_tti_rx %d: Error in pdcch procedures\n",ue->Mod_id,frame_rx,nr_tti_rx);
|
|
||||||
return(-1);
|
//start_meas(&ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]]);
|
||||||
}
|
|
||||||
//for (int m=0;m<1000;m++) printf("%d",m);
|
//printf(">>> at phy_procedures_nrUE_RX, nr_ue_pdcch_procedures init, dlsch->active=%d\n",
|
||||||
//printf("\n>>> at phy_procedures_nrUE_RX, nr_ue_pdcch_procedures end, dlsch->active=%d\n",
|
// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active);
|
||||||
// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active);
|
if (nr_ue_pdcch_procedures(eNB_id,ue,proc,abstraction_flag) == -1) {
|
||||||
|
LOG_E(PHY,"[UE %d] Frame %d, nr_tti_rx %d: Error in pdcch procedures\n",ue->Mod_id,frame_rx,nr_tti_rx);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
//for (int m=0;m<1000;m++) printf("%d",m);
|
||||||
|
//printf("\n>>> at phy_procedures_nrUE_RX, nr_ue_pdcch_procedures end, dlsch->active=%d\n",
|
||||||
|
// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active);
|
||||||
|
|
||||||
// preparing for PDSCH procedures
|
// preparing for PDSCH procedures
|
||||||
// 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) {
|
||||||
// ue_pdsch_procedures(ue,
|
// ue_pdsch_procedures(ue,
|
||||||
// proc,
|
// proc,
|
||||||
// eNB_id,
|
// eNB_id,
|
||||||
// PDSCH,
|
// PDSCH,
|
||||||
// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0],
|
// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0],
|
||||||
// NULL,
|
// NULL,
|
||||||
// ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols,
|
// ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols,
|
||||||
// ue->frame_parms.symbols_per_tti>>1,
|
// ue->frame_parms.symbols_per_tti>>1,
|
||||||
// abstraction_flag);
|
// abstraction_flag);
|
||||||
// }
|
// }
|
||||||
#if 0
|
#if 0
|
||||||
//stop_meas(&ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]]);
|
//stop_meas(&ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]]);
|
||||||
//printf("nr_tti_rx %d n_pdcch_sym %d pdcch procedures %5.3f \n",
|
//printf("nr_tti_rx %d n_pdcch_sym %d pdcch procedures %5.3f \n",
|
||||||
// nr_tti_rx, ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols,
|
// nr_tti_rx, ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols,
|
||||||
// (ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]].p_time)/(cpuf*1000.0));
|
// (ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]].p_time)/(cpuf*1000.0));
|
||||||
LOG_D(PHY,"num_pdcch_symbols %d\n",ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols);
|
LOG_D(PHY,"num_pdcch_symbols %d\n",ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols);
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
// } // for l=1..l2
|
// } // for l=1..l2
|
||||||
|
|
||||||
|
|
||||||
ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode);
|
ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode);
|
||||||
|
|||||||
@@ -442,11 +442,10 @@ int main(int argc, char **argv)
|
|||||||
for (int i=0;i<4;i++) gNB->pbch_pdu[i]=i+1;
|
for (int i=0;i<4;i++) gNB->pbch_pdu[i]=i+1;
|
||||||
nr_common_signal_procedures (gNB,frame,subframe);
|
nr_common_signal_procedures (gNB,frame,subframe);
|
||||||
|
|
||||||
/*
|
|
||||||
LOG_M("txsigF0.m","txsF0", gNB->common_vars.txdataF[0],frame_length_complex_samples_no_prefix,1,1);
|
LOG_M("txsigF0.m","txsF0", gNB->common_vars.txdataF[0],frame_length_complex_samples_no_prefix,1,1);
|
||||||
if (gNB->frame_parms.nb_antennas_tx>1)
|
if (gNB->frame_parms.nb_antennas_tx>1)
|
||||||
LOG_M("txsigF1.m","txsF1", gNB->common_vars.txdataF[1],frame_length_complex_samples_no_prefix,1,1);
|
LOG_M("txsigF1.m","txsF1", gNB->common_vars.txdataF[1],frame_length_complex_samples_no_prefix,1,1);
|
||||||
*/
|
|
||||||
//TODO: loop over slots
|
//TODO: loop over slots
|
||||||
for (aa=0; aa<gNB->frame_parms.nb_antennas_tx; aa++) {
|
for (aa=0; aa<gNB->frame_parms.nb_antennas_tx; aa++) {
|
||||||
if (gNB_config->subframe_config.dl_cyclic_prefix_type.value == 1) {
|
if (gNB_config->subframe_config.dl_cyclic_prefix_type.value == 1) {
|
||||||
|
|||||||
Reference in New Issue
Block a user