diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index c03776455ee9b2a04b65526259f4497b22a97244..8936eba73f4158785981c0fdfdccc8bd5332126b 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -1393,6 +1393,7 @@ set(PHY_SRC_UE ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c + ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/filt16a_32.c ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index 6b5acb85e46c397d220b3492e2131cad0baa555a..ebdee91d11d01b323dc9f9407875f9aa07d8b96e 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -294,7 +294,7 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB) //NR_DL_FRAME_PARMS* const fp = &gNB->frame_parms; //nfapi_nr_config_request_t *cfg = &gNB->gNB_config; NR_gNB_COMMON *const common_vars = &gNB->common_vars; - //NR_gNB_PUSCH **const pusch_vars = gNB->pusch_vars; + NR_gNB_PUSCH **const pusch_vars = gNB->pusch_vars; /*LTE_eNB_SRS *const srs_vars = gNB->srs_vars; LTE_eNB_PRACH *const prach_vars = &gNB->prach_vars;*/ uint32_t ***pdcch_dmrs = gNB->nr_gold_pdcch_dmrs; @@ -330,29 +330,38 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB) free_and_zero(prach_vars->prach_ifft[0]); free_and_zero(prach_vars->rxsigF[0]); - - for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) { - for (i = 0; i < 2; i++) { +*/ + for (int UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) { + for (int i = 0; i < 2; i++) { free_and_zero(pusch_vars[UE_id]->rxdataF_ext[i]); free_and_zero(pusch_vars[UE_id]->rxdataF_ext2[i]); - free_and_zero(pusch_vars[UE_id]->drs_ch_estimates[i]); - free_and_zero(pusch_vars[UE_id]->drs_ch_estimates_time[i]); + free_and_zero(pusch_vars[UE_id]->ul_ch_estimates[i]); + free_and_zero(pusch_vars[UE_id]->ul_ch_estimates_ext[i]); + free_and_zero(pusch_vars[UE_id]->ul_ch_estimates_time[i]); free_and_zero(pusch_vars[UE_id]->rxdataF_comp[i]); + free_and_zero(pusch_vars[UE_id]->ul_ch_mag0[i]); + free_and_zero(pusch_vars[UE_id]->ul_ch_magb0[i]); free_and_zero(pusch_vars[UE_id]->ul_ch_mag[i]); free_and_zero(pusch_vars[UE_id]->ul_ch_magb[i]); + free_and_zero(pusch_vars[UE_id]->rho[i]); } free_and_zero(pusch_vars[UE_id]->rxdataF_ext); free_and_zero(pusch_vars[UE_id]->rxdataF_ext2); - free_and_zero(pusch_vars[UE_id]->drs_ch_estimates); - free_and_zero(pusch_vars[UE_id]->drs_ch_estimates_time); + free_and_zero(pusch_vars[UE_id]->ul_ch_estimates); + free_and_zero(pusch_vars[UE_id]->ul_ch_estimates_ext); + free_and_zero(pusch_vars[UE_id]->ul_ch_estimates_time); free_and_zero(pusch_vars[UE_id]->rxdataF_comp); + free_and_zero(pusch_vars[UE_id]->ul_ch_mag0); + free_and_zero(pusch_vars[UE_id]->ul_ch_magb0); free_and_zero(pusch_vars[UE_id]->ul_ch_mag); free_and_zero(pusch_vars[UE_id]->ul_ch_magb); + free_and_zero(pusch_vars[UE_id]->rho); + free_and_zero(pusch_vars[UE_id]->llr); free_and_zero(pusch_vars[UE_id]); } //UE_id - +/* for (UE_id = 0; UE_id < NUMBER_OF_UE_MAX; UE_id++) gNB->UE_stats_ptr[UE_id] = NULL; */ } diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c index c3e4f42e5f904f0e62c01db6304de093f3aa308a..e1b3c5cec9558a4f260297e3c4743647efc630a4 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c @@ -3,15 +3,13 @@ #include "nr_transport_proto.h" #include "PHY/impl_defs_top.h" #include "PHY/NR_TRANSPORT/nr_sch_dmrs.h" +#include "PHY/NR_ESTIMATION/nr_ul_estimation.h" #include "PHY/defs_nr_common.h" //#define DEBUG_CH_COMP //#define DEBUG_RB_EXT //#define DEBUG_CH_MAG -static short jitter[8] __attribute__ ((aligned(16))) = {1,0,0,1,0,1,1,0}; -static short jitterc[8] __attribute__ ((aligned(16))) = {0,1,1,0,1,0,0,1}; - void nr_idft(uint32_t *z, uint32_t Msc_PUSCH) { @@ -353,13 +351,11 @@ void nr_ulsch_channel_level(int **ul_ch_estimates_ext, #if defined(__x86_64__)||defined(__i386__) short rb; - unsigned char aatx, aarx, nre = 12; + unsigned char aatx, aarx; __m128i *ul_ch128, avg128U; - //nb_rb*nre = y * 2^x int16_t x = factor2(len); int16_t y = (len)>>x; - //printf("nb_rb*nre = %d = %d * 2^(%d)\n",nb_rb*nre,y,x); for (aatx = 0; aatx < frame_parms->nb_antennas_tx; aatx++) for (aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) { @@ -975,14 +971,13 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB, unsigned char harq_pid) { - uint8_t cw_idx, first_symbol_flag, aarx, aatx, pilots; // pilots, a flag to indicate DMRS REs in current symbol + uint8_t first_symbol_flag, aarx, aatx, pilots; // pilots, a flag to indicate DMRS REs in current symbol NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; nfapi_nr_ul_config_ulsch_pdu_rel15_t *rel15_ul = &gNB->ulsch[UE_id+1][0]->harq_processes[harq_pid]->ulsch_pdu.ulsch_pdu_rel15; uint32_t nb_re_pusch, bwp_start_subcarrier; int avgs; int avg[4]; - cw_idx = 0; // temp implementation pilots = 0; first_symbol_flag = 0; @@ -1031,7 +1026,7 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB, nr_ulsch_scale_channel(gNB->pusch_vars[UE_id]->ul_ch_estimates_ext, frame_parms, - gNB->ulsch, + gNB->ulsch[UE_id+1], symbol, pilots, rel15_ul->number_rbs); diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index 674df8b451555f02b5bd36daf611bb81241f4d6a..89d89cbae2f763ce36c2f1fb3d0176b89fb1a6b1 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -2464,11 +2464,10 @@ void ue_pucch_procedures(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, - UE_nr_rxtx_proc_t *proc, - uint8_t gNB_id, - uint8_t thread_id) + UE_nr_rxtx_proc_t *proc, + uint8_t gNB_id, + uint8_t thread_id) { - //NR_DL_FRAME_PARMS *frame_parms=&ue->frame_parms; NR_UE_ULSCH_t *ulsch_ue; NR_UL_UE_HARQ_t *harq_process_ul_ue; //int32_t ulsch_start=0; @@ -4116,10 +4115,10 @@ int is_pbch_in_slot(fapi_nr_pbch_config_t *pbch_config, int frame, int slot, int int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, - UE_nr_rxtx_proc_t *proc, - uint8_t eNB_id, - uint8_t do_pdcch_flag, - runmode_t mode) + UE_nr_rxtx_proc_t *proc, + uint8_t eNB_id, + uint8_t do_pdcch_flag, + runmode_t mode) { int frame_rx = proc->frame_rx; int nr_tti_rx = proc->nr_tti_rx;