From 25796d27a1a2c8be3cd0153da8054ecc68479491 Mon Sep 17 00:00:00 2001 From: lukashov Date: Thu, 24 Mar 2016 09:52:34 +0100 Subject: [PATCH] Fixing the way bler is computed for SIC receiver --- openair1/PHY/LTE_TRANSPORT/dci_tools.c | 2 +- openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c | 4 ++-- openair1/SIMULATION/LTE_PHY/dlsim.c | 9 +++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c index bed93103f8..eb404138b4 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c @@ -5897,7 +5897,7 @@ uint16_t quantize_subband_pmi(PHY_MEASUREMENTS *meas,uint8_t eNB_id,int nb_rb) pmi_im += meas->subband_pmi_im[eNB_id][i][aarx]; //printf("meas->subband_pmi_im[eNB_id][i][%d]=%d\n",aarx, meas->subband_pmi_im[eNB_id][i][aarx]); } - if (((pmi_re >= pmi_im) && (pmi_re >= -pmi_im)) || ((pmi_re <= pmi_im) && (pmi_re <= -pmi_im))) + if (((pmi_re >= pmi_im) && (pmi_re >= -pmi_im)) || ((pmi_re >= pmi_im) && (pmi_re <= -pmi_im))) pmiq = PMI_2A_R1_11; else pmiq = PMI_2A_R1_1j; diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c index ba0b6cd5ae..393a39b259 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c @@ -1295,7 +1295,7 @@ uint8_t get_pmi(uint8_t N_RB_DL,MIMO_mode_t mode, uint32_t pmi_alloc,uint16_t rb int dlsch_modulation(mod_sym_t **txdataF, - int16_t amp, + int16_t amp, //512 uint32_t subframe_offset, LTE_DL_FRAME_PARMS *frame_parms, uint8_t num_pdcch_symbols, @@ -1336,7 +1336,7 @@ int dlsch_modulation(mod_sym_t **txdataF, nsymb = (frame_parms->Ncp==0) ? 14:12; - amp_rho_a = (int16_t)(((int32_t)amp*dlsch0->sqrt_rho_a)>>13); + amp_rho_a = (int16_t)(((int32_t)amp*dlsch0->sqrt_rho_a)>>13); //amp=512 in full scale; dlsch0->sqrt_rho_a=8192in Q2.13, 1 in full scale amp_rho_b = (int16_t)(((int32_t)amp*dlsch0->sqrt_rho_b)>>13); if (mod_order0 == 4) diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c index 4c7859c900..1d47e25081 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim.c @@ -3511,7 +3511,7 @@ n(tikz_fname,"w"); stop_meas(&PHY_vars_UE->dlsch_unscrambling_stats); start_meas(&PHY_vars_UE->dlsch_decoding_stats); - ret[0] = dlsch_decoding(PHY_vars_UE, + ret[cw_non_sic] = dlsch_decoding(PHY_vars_UE, PHY_vars_UE->lte_ue_pdsch_vars[eNB_id]->llr[cw_non_sic], &PHY_vars_UE->lte_frame_parms, PHY_vars_UE->dlsch_ue[0][cw_non_sic], @@ -3522,7 +3522,7 @@ n(tikz_fname,"w"); stop_meas(&PHY_vars_UE->dlsch_decoding_stats); - if (ret[0] <= PHY_vars_UE->dlsch_ue[0][cw_non_sic]->max_turbo_iterations ) { + if (ret[cw_non_sic] <= PHY_vars_UE->dlsch_ue[0][cw_non_sic]->max_turbo_iterations ) { if (cw_non_sic==0) { avg_iter[0] += ret[0]; @@ -3862,11 +3862,16 @@ n(tikz_fname,"w"); iter_trials[0]++; } + if (rx_type==rx_SIC_dual_stream) { + errs[1][round]++; + } + if (cw_non_sic==1) { avg_iter[1] += ret[1]-1; iter_trials[1]++; } + if (n_frames==1) { //if ((n_frames==1) || (SNR>=30)) { printf("cw %d, round %d: DLSCH errors found, uncoded ber %f\n",cw_non_sic,round,uncoded_ber);