clean up nr_dlsch_demodulation, solve bug in nr_rb_extract to consider data/dmrs multiplexing/no data, and remove ra_pdsch hack in phy_procedures_nr_ue
This commit is contained in:
committed by
Thomas Schlichter
parent
3fdb550909
commit
88f293d3ba
File diff suppressed because it is too large
Load Diff
@@ -697,7 +697,7 @@ void dlsch_detection_mrc_TM34(NR_DL_FRAME_PARMS *frame_parms,
|
|||||||
@param dl_ch_estimates_ext Channel estimates for RBs in this allocation
|
@param dl_ch_estimates_ext Channel estimates for RBs in this allocation
|
||||||
@param rb_alloc RB allocation vector
|
@param rb_alloc RB allocation vector
|
||||||
@param symbol Symbol to extract
|
@param symbol Symbol to extract
|
||||||
@param high_speed_flag
|
@param n_dmrs_cdm_groups
|
||||||
@param frame_parms Pointer to frame descriptor
|
@param frame_parms Pointer to frame descriptor
|
||||||
*/
|
*/
|
||||||
unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
||||||
@@ -709,7 +709,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
|||||||
uint8_t config_type,
|
uint8_t config_type,
|
||||||
unsigned short start_rb,
|
unsigned short start_rb,
|
||||||
unsigned short nb_rb_pdsch,
|
unsigned short nb_rb_pdsch,
|
||||||
uint32_t high_speed_flag,
|
uint8_t n_dmrs_cdm_groups,
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
uint16_t dlDmrsSymbPos);
|
uint16_t dlDmrsSymbPos);
|
||||||
|
|
||||||
@@ -722,7 +722,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
|||||||
uint8_t config_type,
|
uint8_t config_type,
|
||||||
unsigned short start_rb,
|
unsigned short start_rb,
|
||||||
unsigned short nb_rb_pdsch,
|
unsigned short nb_rb_pdsch,
|
||||||
uint32_t high_speed_flag,
|
uint8_t n_dmrs_cdm_groups,
|
||||||
uint8_t Nl,
|
uint8_t Nl,
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
uint16_t dlDmrsSymbPos)
|
uint16_t dlDmrsSymbPos)
|
||||||
@@ -734,7 +734,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
|
|||||||
@param dl_ch_estimates_ext Channel estimates for RBs in this allocation
|
@param dl_ch_estimates_ext Channel estimates for RBs in this allocation
|
||||||
@param Nl nb of antenna layers
|
@param Nl nb of antenna layers
|
||||||
@param symbol Symbol to extract
|
@param symbol Symbol to extract
|
||||||
@param high_speed_flag
|
@param n_dmrs_cdm_groups
|
||||||
@param frame_parms Pointer to frame descriptor
|
@param frame_parms Pointer to frame descriptor
|
||||||
*/
|
*/
|
||||||
unsigned short nr_dlsch_extract_rbs_multiple(int **rxdataF,
|
unsigned short nr_dlsch_extract_rbs_multiple(int **rxdataF,
|
||||||
@@ -746,7 +746,7 @@ unsigned short nr_dlsch_extract_rbs_multiple(int **rxdataF,
|
|||||||
uint8_t config_type,
|
uint8_t config_type,
|
||||||
unsigned short start_rb,
|
unsigned short start_rb,
|
||||||
unsigned short nb_rb_pdsch,
|
unsigned short nb_rb_pdsch,
|
||||||
uint32_t high_speed_flag,
|
uint8_t n_dmrs_cdm_groups,
|
||||||
uint8_t Nl,
|
uint8_t Nl,
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
uint16_t dlDmrsSymbPos);
|
uint16_t dlDmrsSymbPos);
|
||||||
|
|||||||
@@ -796,43 +796,24 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_
|
|||||||
slot = 1;
|
slot = 1;
|
||||||
start_meas(&ue->dlsch_llr_stats_parallelization[proc->thread_id][slot]);
|
start_meas(&ue->dlsch_llr_stats_parallelization[proc->thread_id][slot]);
|
||||||
#endif
|
#endif
|
||||||
// process DLSCH received in first slot
|
// process DLSCH received symbols in the slot
|
||||||
// skip DMRS symbols (will have to check later if PDSCH/DMRS are multiplexed
|
// symbol by symbol processing (if data/DMRS are multiplexed is checked inside the function)
|
||||||
if (((1<<m)&dlsch0->harq_processes[harq_pid]->dlDmrsSymbPos) == 0) {
|
if (pdsch == PDSCH || pdsch == SI_PDSCH || pdsch == RA_PDSCH) {
|
||||||
if (nr_rx_pdsch(ue,
|
if (nr_rx_pdsch(ue,
|
||||||
proc,
|
proc,
|
||||||
pdsch,
|
pdsch,
|
||||||
eNB_id,
|
eNB_id,
|
||||||
eNB_id_i,
|
eNB_id_i,
|
||||||
frame_rx,
|
frame_rx,
|
||||||
nr_slot_rx,
|
nr_slot_rx,
|
||||||
m,
|
m,
|
||||||
first_symbol_flag,
|
first_symbol_flag,
|
||||||
dual_stream_UE,
|
dual_stream_UE,
|
||||||
i_mod,
|
i_mod,
|
||||||
dlsch0->current_harq_pid) < 0)
|
dlsch0->current_harq_pid) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
} else AssertFatal(1==0,"Not RA_PDSCH, SI_PDSCH or PDSCH\n");
|
||||||
else { // This is to adjust the llr offset in the case of skipping over a dmrs symbol (i.e. in case of no PDSCH REs in DMRS)
|
|
||||||
if (pdsch == RA_PDSCH) ue->pdsch_vars[proc->thread_id][eNB_id]->llr_offset[m]=ue->pdsch_vars[proc->thread_id][eNB_id]->llr_offset[m-1];
|
|
||||||
else if (pdsch == PDSCH || pdsch == SI_PDSCH) {
|
|
||||||
if (nr_rx_pdsch(ue,
|
|
||||||
proc,
|
|
||||||
pdsch,
|
|
||||||
eNB_id,
|
|
||||||
eNB_id_i,
|
|
||||||
frame_rx,
|
|
||||||
nr_slot_rx,
|
|
||||||
m,
|
|
||||||
first_symbol_flag,
|
|
||||||
dual_stream_UE,
|
|
||||||
i_mod,
|
|
||||||
dlsch0->current_harq_pid) < 0)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
else AssertFatal(1==0,"Not RA_PDSCH, SI_PDSCH or PDSCH\n");
|
|
||||||
}
|
|
||||||
if (pdsch == PDSCH) LOG_D(PHY,"Done processing symbol %d : llr_offset %d\n",m,ue->pdsch_vars[proc->thread_id][eNB_id]->llr_offset[m]);
|
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->dlsch_llr_stats_parallelization[proc->thread_id][slot]);
|
stop_meas(&ue->dlsch_llr_stats_parallelization[proc->thread_id][slot]);
|
||||||
#if DISABLE_LOG_X
|
#if DISABLE_LOG_X
|
||||||
@@ -842,10 +823,9 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(first_symbol_flag)
|
if(first_symbol_flag) {
|
||||||
{
|
proc->first_symbol_available = 1;
|
||||||
proc->first_symbol_available = 1;
|
}
|
||||||
}
|
|
||||||
} // CRNTI active
|
} // CRNTI active
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user