NR_UE: fix nr_pdcch_channel_estimation() for odd number of PDCCH RBs
This commit is contained in:
@@ -536,8 +536,12 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
16);
|
16);
|
||||||
pil += 2;
|
pil += 2;
|
||||||
rxF += 8;
|
rxF += 8;
|
||||||
//for (int i= 0; i<8; i++)
|
k += 4;
|
||||||
//printf("dl_ch addr %p %d\n", dl_ch+i, *(dl_ch+i));
|
|
||||||
|
if (k >= ue->frame_parms.ofdm_symbol_size) {
|
||||||
|
k -= ue->frame_parms.ofdm_symbol_size;
|
||||||
|
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+1)];
|
||||||
|
}
|
||||||
|
|
||||||
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
||||||
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
||||||
@@ -550,6 +554,12 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
16);
|
16);
|
||||||
pil += 2;
|
pil += 2;
|
||||||
rxF += 8;
|
rxF += 8;
|
||||||
|
k += 4;
|
||||||
|
|
||||||
|
if (k >= ue->frame_parms.ofdm_symbol_size) {
|
||||||
|
k -= ue->frame_parms.ofdm_symbol_size;
|
||||||
|
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+1)];
|
||||||
|
}
|
||||||
|
|
||||||
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
||||||
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
||||||
@@ -562,23 +572,22 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
ch,
|
ch,
|
||||||
dl_ch,
|
dl_ch,
|
||||||
16);
|
16);
|
||||||
|
#ifdef DEBUG_PDCCH
|
||||||
#ifdef DEBUG_PDCCH
|
|
||||||
for (int m =0; m<12; m++)
|
for (int m =0; m<12; m++)
|
||||||
printf("data : dl_ch -> (%d,%d)\n",dl_ch[0+2*m],dl_ch[1+2*m]);
|
printf("data : dl_ch -> (%d,%d)\n",dl_ch[0+2*m],dl_ch[1+2*m]);
|
||||||
#endif
|
#endif
|
||||||
|
dl_ch += 24;
|
||||||
|
|
||||||
pil += 2;
|
pil += 2;
|
||||||
rxF += 8;
|
rxF += 8;
|
||||||
dl_ch += 24;
|
k += 4;
|
||||||
k += 12;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (pilot_cnt=3; pilot_cnt<(3*nb_rb_coreset); pilot_cnt += 3) {
|
for (pilot_cnt=3; pilot_cnt<(3*nb_rb_coreset); pilot_cnt += 3) {
|
||||||
|
|
||||||
if (k >= ue->frame_parms.ofdm_symbol_size){
|
if (k >= ue->frame_parms.ofdm_symbol_size) {
|
||||||
k-=ue->frame_parms.ofdm_symbol_size;
|
k -= ue->frame_parms.ofdm_symbol_size;
|
||||||
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+1)];}
|
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+1)];
|
||||||
|
}
|
||||||
|
|
||||||
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
||||||
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
||||||
@@ -595,6 +604,12 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
pil += 2;
|
pil += 2;
|
||||||
rxF += 8;
|
rxF += 8;
|
||||||
|
k += 4;
|
||||||
|
|
||||||
|
if (k >= ue->frame_parms.ofdm_symbol_size) {
|
||||||
|
k -= ue->frame_parms.ofdm_symbol_size;
|
||||||
|
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+1)];
|
||||||
|
}
|
||||||
|
|
||||||
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
||||||
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
||||||
@@ -607,6 +622,12 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
16);
|
16);
|
||||||
pil += 2;
|
pil += 2;
|
||||||
rxF += 8;
|
rxF += 8;
|
||||||
|
k += 4;
|
||||||
|
|
||||||
|
if (k >= ue->frame_parms.ofdm_symbol_size) {
|
||||||
|
k -= ue->frame_parms.ofdm_symbol_size;
|
||||||
|
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+k+1)];
|
||||||
|
}
|
||||||
|
|
||||||
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
|
||||||
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
|
||||||
@@ -619,11 +640,15 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
ch,
|
ch,
|
||||||
dl_ch,
|
dl_ch,
|
||||||
16);
|
16);
|
||||||
|
#ifdef DEBUG_PDCCH
|
||||||
|
for (int m =0; m<12; m++)
|
||||||
|
printf("data : dl_ch -> (%d,%d)\n",dl_ch[0+2*m],dl_ch[1+2*m]);
|
||||||
|
#endif
|
||||||
|
dl_ch += 24;
|
||||||
|
|
||||||
pil += 2;
|
pil += 2;
|
||||||
rxF += 8;
|
rxF += 8;
|
||||||
dl_ch += 24;
|
k += 4;
|
||||||
k += 12;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user