Fixing the way bler is computed for SIC receiver
This commit is contained in:
@@ -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];
|
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]);
|
//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;
|
pmiq = PMI_2A_R1_11;
|
||||||
else
|
else
|
||||||
pmiq = PMI_2A_R1_1j;
|
pmiq = PMI_2A_R1_1j;
|
||||||
|
|||||||
@@ -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,
|
int dlsch_modulation(mod_sym_t **txdataF,
|
||||||
int16_t amp,
|
int16_t amp, //512
|
||||||
uint32_t subframe_offset,
|
uint32_t subframe_offset,
|
||||||
LTE_DL_FRAME_PARMS *frame_parms,
|
LTE_DL_FRAME_PARMS *frame_parms,
|
||||||
uint8_t num_pdcch_symbols,
|
uint8_t num_pdcch_symbols,
|
||||||
@@ -1336,7 +1336,7 @@ int dlsch_modulation(mod_sym_t **txdataF,
|
|||||||
|
|
||||||
nsymb = (frame_parms->Ncp==0) ? 14:12;
|
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);
|
amp_rho_b = (int16_t)(((int32_t)amp*dlsch0->sqrt_rho_b)>>13);
|
||||||
|
|
||||||
if (mod_order0 == 4)
|
if (mod_order0 == 4)
|
||||||
|
|||||||
@@ -3511,7 +3511,7 @@ n(tikz_fname,"w");
|
|||||||
stop_meas(&PHY_vars_UE->dlsch_unscrambling_stats);
|
stop_meas(&PHY_vars_UE->dlsch_unscrambling_stats);
|
||||||
|
|
||||||
start_meas(&PHY_vars_UE->dlsch_decoding_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_ue_pdsch_vars[eNB_id]->llr[cw_non_sic],
|
||||||
&PHY_vars_UE->lte_frame_parms,
|
&PHY_vars_UE->lte_frame_parms,
|
||||||
PHY_vars_UE->dlsch_ue[0][cw_non_sic],
|
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);
|
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) {
|
if (cw_non_sic==0) {
|
||||||
avg_iter[0] += ret[0];
|
avg_iter[0] += ret[0];
|
||||||
@@ -3862,11 +3862,16 @@ n(tikz_fname,"w");
|
|||||||
iter_trials[0]++;
|
iter_trials[0]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rx_type==rx_SIC_dual_stream) {
|
||||||
|
errs[1][round]++;
|
||||||
|
}
|
||||||
|
|
||||||
if (cw_non_sic==1) {
|
if (cw_non_sic==1) {
|
||||||
avg_iter[1] += ret[1]-1;
|
avg_iter[1] += ret[1]-1;
|
||||||
iter_trials[1]++;
|
iter_trials[1]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (n_frames==1) {
|
if (n_frames==1) {
|
||||||
//if ((n_frames==1) || (SNR>=30)) {
|
//if ((n_frames==1) || (SNR>=30)) {
|
||||||
printf("cw %d, round %d: DLSCH errors found, uncoded ber %f\n",cw_non_sic,round,uncoded_ber);
|
printf("cw %d, round %d: DLSCH errors found, uncoded ber %f\n",cw_non_sic,round,uncoded_ber);
|
||||||
|
|||||||
Reference in New Issue
Block a user