Fix PUCCH noise estimation.
(cherry picked from commit 51634853671e07ef3013bc44ec79fc38c0646147)
This commit is contained in:
committed by
shono.takafumi
parent
174069e26e
commit
ad4a22fa0f
@@ -743,7 +743,8 @@ uint32_t calc_pucch_1x_interference(PHY_VARS_eNB *eNB,
|
|||||||
uint8_t n_cs,alpha_ind;
|
uint8_t n_cs,alpha_ind;
|
||||||
int16_t tmp_re,tmp_im,W_re=0,W_im=0;
|
int16_t tmp_re,tmp_im,W_re=0,W_im=0;
|
||||||
int16_t W4_nouse[4]={1,1,-1,-1};
|
int16_t W4_nouse[4]={1,1,-1,-1};
|
||||||
int32_t interference_power;
|
int32_t n0_IQ[2];
|
||||||
|
double interference_power;
|
||||||
int16_t *rxptr;
|
int16_t *rxptr;
|
||||||
uint32_t symbol_offset;
|
uint32_t symbol_offset;
|
||||||
|
|
||||||
@@ -769,7 +770,7 @@ uint32_t calc_pucch_1x_interference(PHY_VARS_eNB *eNB,
|
|||||||
zptr = (int16_t *)z;
|
zptr = (int16_t *)z;
|
||||||
N_UL_symb = (frame_parms->Ncp==NORMAL) ? 7 : 6;
|
N_UL_symb = (frame_parms->Ncp==NORMAL) ? 7 : 6;
|
||||||
|
|
||||||
interference_power=0;
|
interference_power=0.0;
|
||||||
calc_cnt=0;
|
calc_cnt=0;
|
||||||
// loop over 2 slots
|
// loop over 2 slots
|
||||||
for (n_cs=0; n_cs<12; n_cs++) {
|
for (n_cs=0; n_cs<12; n_cs++) {
|
||||||
@@ -778,6 +779,7 @@ uint32_t calc_pucch_1x_interference(PHY_VARS_eNB *eNB,
|
|||||||
//loop over symbols in slot
|
//loop over symbols in slot
|
||||||
for (l=0; l<N_UL_symb; l++) {
|
for (l=0; l<N_UL_symb; l++) {
|
||||||
if(((l>1)&&(l<N_UL_symb-2)) || ((ns==(1+(subframe<<1))) && (shortened_format==1)) ){
|
if(((l>1)&&(l<N_UL_symb-2)) || ((ns==(1+(subframe<<1))) && (shortened_format==1)) ){
|
||||||
|
zptr+=24;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -817,8 +819,11 @@ uint32_t calc_pucch_1x_interference(PHY_VARS_eNB *eNB,
|
|||||||
|
|
||||||
// Do detection
|
// Do detection
|
||||||
for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) {
|
for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) {
|
||||||
|
n0_IQ[0]=0;
|
||||||
|
n0_IQ[1]=0;
|
||||||
for (j=0,l=0; l<nsymb; l++) {
|
for (j=0,l=0; l<nsymb; l++) {
|
||||||
if((((l%N_UL_symb)>1)&&((l%N_UL_symb)<N_UL_symb-2)) || ((nsymb>=N_UL_symb) && (shortened_format==1)) ){
|
if((((l%N_UL_symb)>1)&&((l%N_UL_symb)<N_UL_symb-2)) || ((nsymb>=N_UL_symb) && (shortened_format==1)) ){
|
||||||
|
j+=24;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((l<(nsymb>>1)) && ((m&1) == 0))
|
if ((l<(nsymb>>1)) && ((m&1) == 0))
|
||||||
@@ -842,15 +847,17 @@ uint32_t calc_pucch_1x_interference(PHY_VARS_eNB *eNB,
|
|||||||
|
|
||||||
rxcomp[aa][j] = (int16_t)((rxptr[re_offset<<1]*(int32_t)zptr[j])>>15) - ((rxptr[1+(re_offset<<1)]*(int32_t)zptr[1+j])>>15);
|
rxcomp[aa][j] = (int16_t)((rxptr[re_offset<<1]*(int32_t)zptr[j])>>15) - ((rxptr[1+(re_offset<<1)]*(int32_t)zptr[1+j])>>15);
|
||||||
rxcomp[aa][1+j] = (int16_t)((rxptr[re_offset<<1]*(int32_t)zptr[1+j])>>15) + ((rxptr[1+(re_offset<<1)]*(int32_t)zptr[j])>>15);
|
rxcomp[aa][1+j] = (int16_t)((rxptr[re_offset<<1]*(int32_t)zptr[1+j])>>15) + ((rxptr[1+(re_offset<<1)]*(int32_t)zptr[j])>>15);
|
||||||
interference_power+= ((int32_t)rxcomp[aa][j]*(int32_t)rxcomp[aa][j]+(int32_t)rxcomp[aa][1+j]*(int32_t)rxcomp[aa][1+j]);
|
n0_IQ[0]+=rxcomp[aa][j];
|
||||||
|
n0_IQ[1]+=rxcomp[aa][1+j];
|
||||||
calc_cnt++;
|
calc_cnt++;
|
||||||
} //re
|
} //re
|
||||||
} // symbol
|
} // symbol
|
||||||
|
interference_power+= (int32_t)(n0_IQ[0]*n0_IQ[0]+n0_IQ[1]*n0_IQ[1]);
|
||||||
} // antenna
|
} // antenna
|
||||||
}
|
}
|
||||||
calc_cnt/=12;
|
interference_power /= calc_cnt;
|
||||||
//printf("pucch noise %d %d %d\n",interference_power,calc_cnt,eNB->measurements.n0_subband_power_tot_dB[0]);
|
eNB->measurements.n0_pucch_dB = dB_fixed_x10((int)(interference_power/calc_cnt))/10;
|
||||||
eNB->measurements.n0_pucch_dB = dB_fixed_x10(interference_power/calc_cnt)/10;
|
LOG_D(PHY,"estimate pucch noise %d %d %d\n",interference_power,calc_cnt,eNB->measurements.n0_pucch_dB);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user