reworking of pdcch procedures function call
This commit is contained in:
@@ -699,21 +699,19 @@ void pdcch_siso(NR_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
#ifdef NR_PDCCH_DCI_RUN
|
#ifdef NR_PDCCH_DCI_RUN
|
||||||
int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
|
int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
|
||||||
UE_nr_rxtx_proc_t *proc) {
|
UE_nr_rxtx_proc_t *proc,
|
||||||
|
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15) {
|
||||||
|
|
||||||
uint32_t frame = proc->frame_rx;
|
uint32_t frame = proc->frame_rx;
|
||||||
uint32_t slot = proc->nr_slot_rx;
|
uint32_t slot = proc->nr_slot_rx;
|
||||||
NR_UE_COMMON *common_vars = &ue->common_vars;
|
NR_UE_COMMON *common_vars = &ue->common_vars;
|
||||||
NR_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
|
NR_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
|
||||||
NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[proc->thread_id][0];
|
NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[proc->thread_id][0];
|
||||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15;
|
|
||||||
|
|
||||||
uint8_t log2_maxh, aarx;
|
uint8_t log2_maxh, aarx;
|
||||||
int32_t avgs;
|
int32_t avgs;
|
||||||
int32_t avgP[4];
|
int32_t avgP[4];
|
||||||
for (int i=0;i<pdcch_vars->nb_search_space;i++) {
|
|
||||||
|
|
||||||
rel15 = &pdcch_vars->pdcch_config[i];
|
|
||||||
int n_rb,rb_offset;
|
int n_rb,rb_offset;
|
||||||
get_coreset_rballoc(rel15->coreset.frequency_domain_resource,&n_rb,&rb_offset);
|
get_coreset_rballoc(rel15->coreset.frequency_domain_resource,&n_rb,&rb_offset);
|
||||||
for (int s=rel15->coreset.StartSymbolIndex; s<(rel15->coreset.StartSymbolIndex+rel15->coreset.duration); s++) {
|
for (int s=rel15->coreset.StartSymbolIndex; s<(rel15->coreset.StartSymbolIndex+rel15->coreset.duration); s++) {
|
||||||
@@ -807,7 +805,6 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
|
|||||||
LOG_D(PHY,"we end nr_pdcch_unscrambling()\n");
|
LOG_D(PHY,"we end nr_pdcch_unscrambling()\n");
|
||||||
LOG_D(PHY,"Ending nr_rx_pdcch() function\n");
|
LOG_D(PHY,"Ending nr_rx_pdcch() function\n");
|
||||||
|
|
||||||
}
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -876,13 +873,11 @@ void nr_pdcch_unscrambling(int16_t *z,
|
|||||||
#ifdef NR_PDCCH_DCI_RUN
|
#ifdef NR_PDCCH_DCI_RUN
|
||||||
uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
||||||
UE_nr_rxtx_proc_t *proc,
|
UE_nr_rxtx_proc_t *proc,
|
||||||
fapi_nr_dci_indication_t *dci_ind) {
|
fapi_nr_dci_indication_t *dci_ind,
|
||||||
|
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15) {
|
||||||
|
|
||||||
NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[proc->thread_id][0];
|
NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[proc->thread_id][0];
|
||||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15;
|
|
||||||
for (int i=0;i<pdcch_vars->nb_search_space;i++) {
|
|
||||||
|
|
||||||
rel15 = &pdcch_vars->pdcch_config[i];
|
|
||||||
//int gNB_id = 0;
|
//int gNB_id = 0;
|
||||||
int16_t tmp_e[16*108];
|
int16_t tmp_e[16*108];
|
||||||
rnti_t n_rnti;
|
rnti_t n_rnti;
|
||||||
@@ -901,14 +896,14 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
nr_pdcch_unscrambling(&pdcch_vars->e_rx[CCEind*108], rel15->coreset.scrambling_rnti, L*108, rel15->coreset.pdcch_dmrs_scrambling_id, tmp_e);
|
nr_pdcch_unscrambling(&pdcch_vars->e_rx[CCEind*108], rel15->coreset.scrambling_rnti, L*108, rel15->coreset.pdcch_dmrs_scrambling_id, tmp_e);
|
||||||
|
|
||||||
#ifdef DEBUG_DCI_DECODING
|
#ifdef DEBUG_DCI_DECODING
|
||||||
uint32_t * z = (uint32_t *) &pdcch_vars->e_rx[CCEind*108];
|
uint32_t * z = (uint32_t *) &pdcch_vars->e_rx[CCEind*108];
|
||||||
for (int index_z = 0; index_z < 96; index_z++){
|
for (int index_z = 0; index_z < 96; index_z++){
|
||||||
for (int i=0; i<9; i++) {
|
for (int i=0; i<9; i++) {
|
||||||
LOG_D(PHY,"z[%d]=(%d,%d) \n", (9*index_z + i), *(int16_t *) &z[index_z + i],*(1 + (int16_t *) &z[index_z + i]));
|
LOG_D(PHY,"z[%d]=(%d,%d) \n", (9*index_z + i), *(int16_t *) &z[index_z + i],*(1 + (int16_t *) &z[index_z + i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint16_t crc = polar_decoder_int16(tmp_e,
|
uint16_t crc = polar_decoder_int16(tmp_e,
|
||||||
dci_estimation,
|
dci_estimation,
|
||||||
@@ -934,7 +929,6 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return(dci_ind->number_of_dcis);
|
return(dci_ind->number_of_dcis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -483,12 +483,11 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, int n_frames, i
|
|||||||
if (sa==1 && ret==0) {
|
if (sa==1 && ret==0) {
|
||||||
NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[proc->thread_id][0];
|
NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[proc->thread_id][0];
|
||||||
uint8_t nb_symb_pdcch = pdcch_vars->nb_search_space > 0 ? pdcch_vars->pdcch_config[0].coreset.duration : 0;
|
uint8_t nb_symb_pdcch = pdcch_vars->nb_search_space > 0 ? pdcch_vars->pdcch_config[0].coreset.duration : 0;
|
||||||
|
|
||||||
int coreset_nb_rb=0;
|
int coreset_nb_rb=0;
|
||||||
int coreset_start_rb=0;
|
int coreset_start_rb=0;
|
||||||
|
|
||||||
if (pdcch_vars->nb_search_space > 0)
|
for(int n_ss = 0; n_ss<pdcch_vars->nb_search_space; n_ss++) {
|
||||||
get_coreset_rballoc(pdcch_vars->pdcch_config[0].coreset.frequency_domain_resource,&coreset_nb_rb,&coreset_start_rb);
|
get_coreset_rballoc(pdcch_vars->pdcch_config[n_ss].coreset.frequency_domain_resource,&coreset_nb_rb,&coreset_start_rb);
|
||||||
|
|
||||||
for (uint16_t l=0; l<nb_symb_pdcch; l++) {
|
for (uint16_t l=0; l<nb_symb_pdcch; l++) {
|
||||||
nr_slot_fep_init_sync(ue,
|
nr_slot_fep_init_sync(ue,
|
||||||
@@ -503,11 +502,15 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, int n_frames, i
|
|||||||
0,
|
0,
|
||||||
pdcch_vars->slot,
|
pdcch_vars->slot,
|
||||||
l,
|
l,
|
||||||
fp->first_carrier_offset+(pdcch_vars->pdcch_config[0].BWPStart + coreset_start_rb)*12,
|
fp->first_carrier_offset+(pdcch_vars->pdcch_config[n_ss].BWPStart + coreset_start_rb)*12,
|
||||||
coreset_nb_rb);
|
coreset_nb_rb);
|
||||||
|
|
||||||
}
|
}
|
||||||
int dci_cnt = nr_ue_pdcch_procedures(0, ue, proc); //gNB_id set to 0
|
int dci_cnt = nr_ue_pdcch_procedures(0, ue, proc, n_ss); //gNB_id set to 0
|
||||||
|
if (dci_cnt>0){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// exit_fun("debug exit");
|
// exit_fun("debug exit");
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INITIAL_UE_SYNC, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INITIAL_UE_SYNC, VCD_FUNCTION_OUT);
|
||||||
|
|||||||
@@ -1120,7 +1120,8 @@ uint32_t dlsch_decoding_emul(PHY_VARS_NR_UE *phy_vars_ue,
|
|||||||
uint8_t eNB_id);
|
uint8_t eNB_id);
|
||||||
|
|
||||||
int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
|
int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
|
||||||
UE_nr_rxtx_proc_t *proc);
|
UE_nr_rxtx_proc_t *proc,
|
||||||
|
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15);
|
||||||
|
|
||||||
|
|
||||||
/*! \brief Extract PSS and SSS resource elements
|
/*! \brief Extract PSS and SSS resource elements
|
||||||
@@ -1709,7 +1710,8 @@ uint32_t lte_gold_generic(uint32_t *x1, uint32_t *x2, uint8_t reset);
|
|||||||
|
|
||||||
uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
|
||||||
UE_nr_rxtx_proc_t *proc,
|
UE_nr_rxtx_proc_t *proc,
|
||||||
fapi_nr_dci_indication_t *dci_ind);
|
fapi_nr_dci_indication_t *dci_ind,
|
||||||
|
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15);
|
||||||
|
|
||||||
|
|
||||||
/** \brief This function is the top-level entry point to PDSCH demodulation, after frequency-domain transformation and channel estimation. It performs
|
/** \brief This function is the top-level entry point to PDSCH demodulation, after frequency-domain transformation and channel estimation. It performs
|
||||||
|
|||||||
@@ -418,7 +418,8 @@ void nr_fill_rx_indication(fapi_nr_rx_indication_t *rx_ind,
|
|||||||
|
|
||||||
int nr_ue_pdcch_procedures(uint8_t gNB_id,
|
int nr_ue_pdcch_procedures(uint8_t gNB_id,
|
||||||
PHY_VARS_NR_UE *ue,
|
PHY_VARS_NR_UE *ue,
|
||||||
UE_nr_rxtx_proc_t *proc);
|
UE_nr_rxtx_proc_t *proc,
|
||||||
|
int n_ss);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -477,7 +477,8 @@ unsigned int nr_get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb
|
|||||||
|
|
||||||
int nr_ue_pdcch_procedures(uint8_t gNB_id,
|
int nr_ue_pdcch_procedures(uint8_t gNB_id,
|
||||||
PHY_VARS_NR_UE *ue,
|
PHY_VARS_NR_UE *ue,
|
||||||
UE_nr_rxtx_proc_t *proc)
|
UE_nr_rxtx_proc_t *proc,
|
||||||
|
int n_ss)
|
||||||
{
|
{
|
||||||
int frame_rx = proc->frame_rx;
|
int frame_rx = proc->frame_rx;
|
||||||
int nr_slot_rx = proc->nr_slot_rx;
|
int nr_slot_rx = proc->nr_slot_rx;
|
||||||
@@ -485,6 +486,9 @@ int nr_ue_pdcch_procedures(uint8_t gNB_id,
|
|||||||
fapi_nr_dci_indication_t dci_ind = {0};
|
fapi_nr_dci_indication_t dci_ind = {0};
|
||||||
nr_downlink_indication_t dl_indication;
|
nr_downlink_indication_t dl_indication;
|
||||||
|
|
||||||
|
NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[proc->thread_id][gNB_id];
|
||||||
|
fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15 = &pdcch_vars->pdcch_config[n_ss];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// unsigned int dci_cnt=0, i; //removed for nr_ue_pdcch_procedures and added in the loop for nb_coreset_active
|
// unsigned int dci_cnt=0, i; //removed for nr_ue_pdcch_procedures and added in the loop for nb_coreset_active
|
||||||
#ifdef NR_PDCCH_SCHED_DEBUG
|
#ifdef NR_PDCCH_SCHED_DEBUG
|
||||||
@@ -669,18 +673,18 @@ int nr_ue_pdcch_procedures(uint8_t gNB_id,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_IN);
|
||||||
nr_rx_pdcch(ue, proc);
|
nr_rx_pdcch(ue, proc, rel15);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_OUT);
|
||||||
|
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING, VCD_FUNCTION_IN);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING, VCD_FUNCTION_IN);
|
||||||
|
|
||||||
#ifdef NR_PDCCH_SCHED_DEBUG
|
#ifdef NR_PDCCH_SCHED_DEBUG
|
||||||
printf("<-NR_PDCCH_PHY_PROCEDURES_LTE_UE (nr_ue_pdcch_procedures)-> Entering function nr_dci_decoding_procedure with (nb_searchspace_active=%d)\n",
|
printf("<-NR_PDCCH_PHY_PROCEDURES_LTE_UE (nr_ue_pdcch_procedures)-> Entering function nr_dci_decoding_procedure for search space %d)\n",
|
||||||
pdcch_vars->nb_search_space);
|
n_ss);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dci_cnt = nr_dci_decoding_procedure(ue, proc, &dci_ind);
|
dci_cnt = nr_dci_decoding_procedure(ue, proc, &dci_ind, rel15);
|
||||||
|
|
||||||
#ifdef NR_PDCCH_SCHED_DEBUG
|
#ifdef NR_PDCCH_SCHED_DEBUG
|
||||||
LOG_I(PHY,"<-NR_PDCCH_PHY_PROCEDURES_LTE_UE (nr_ue_pdcch_procedures)-> Ending function nr_dci_decoding_procedure() -> dci_cnt=%u\n",dci_cnt);
|
LOG_I(PHY,"<-NR_PDCCH_PHY_PROCEDURES_LTE_UE (nr_ue_pdcch_procedures)-> Ending function nr_dci_decoding_procedure() -> dci_cnt=%u\n",dci_cnt);
|
||||||
@@ -1708,10 +1712,11 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
|
|||||||
proc,
|
proc,
|
||||||
l,
|
l,
|
||||||
nr_slot_rx);
|
nr_slot_rx);
|
||||||
|
}
|
||||||
|
|
||||||
dci_cnt = 0;
|
dci_cnt = 0;
|
||||||
for(int n_ss = 0; n_ss<pdcch_vars->nb_search_space; n_ss++) {
|
for(int n_ss = 0; n_ss<pdcch_vars->nb_search_space; n_ss++) {
|
||||||
|
for (uint16_t l=0; l<nb_symb_pdcch; l++) {
|
||||||
// note: this only works if RBs for PDCCH are contigous!
|
// note: this only works if RBs for PDCCH are contigous!
|
||||||
LOG_D(PHY, "pdcch_channel_estimation: first_carrier_offset %d, BWPStart %d, coreset_start_rb %d\n",
|
LOG_D(PHY, "pdcch_channel_estimation: first_carrier_offset %d, BWPStart %d, coreset_start_rb %d\n",
|
||||||
fp->first_carrier_offset, pdcch_vars->pdcch_config[n_ss].BWPStart, coreset_start_rb);
|
fp->first_carrier_offset, pdcch_vars->pdcch_config[n_ss].BWPStart, coreset_start_rb);
|
||||||
@@ -1728,9 +1733,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
|
|||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->ofdm_demod_stats);
|
stop_meas(&ue->ofdm_demod_stats);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dci_cnt = dci_cnt + nr_ue_pdcch_procedures(gNB_id, ue, proc);
|
|
||||||
}
|
}
|
||||||
|
dci_cnt = dci_cnt + nr_ue_pdcch_procedures(gNB_id, ue, proc, n_ss);
|
||||||
}
|
}
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_PDCCH, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP_PDCCH, VCD_FUNCTION_OUT);
|
||||||
|
|
||||||
|
|||||||
@@ -490,7 +490,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
|
|||||||
RA_config_t *ra = &mac->ra;
|
RA_config_t *ra = &mac->ra;
|
||||||
fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
|
fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
|
||||||
uint8_t is_Msg3 = 0;
|
uint8_t is_Msg3 = 0;
|
||||||
printf("%p\n",mac->scg);
|
|
||||||
uint16_t n_RB_DLBWP = (mac->scg) ?
|
uint16_t n_RB_DLBWP = (mac->scg) ?
|
||||||
NRRIV2BW(mac->DLbwp[0]->bwp_Common->genericParameters.locationAndBandwidth, MAX_BWP_SIZE) :
|
NRRIV2BW(mac->DLbwp[0]->bwp_Common->genericParameters.locationAndBandwidth, MAX_BWP_SIZE) :
|
||||||
mac->type0_PDCCH_CSS_config.num_rbs;
|
mac->type0_PDCCH_CSS_config.num_rbs;
|
||||||
|
|||||||
Reference in New Issue
Block a user