Commit 09b38541 authored by Sakthivel Velumani's avatar Sakthivel Velumani

Included DC handling for odd number of RBs

parent 497afe4f
...@@ -141,6 +141,12 @@ short filt8_dcl[8]= { ...@@ -141,6 +141,12 @@ short filt8_dcl[8]= {
short filt8_dcr[8]= { short filt8_dcr[8]= {
0,0,0,4096,8192,12288,16384,0}; 0,0,0,4096,8192,12288,16384,0};
short filt8_dcl_h[8]= {
16384,12288,8192,4096,0,0,0,0};
short filt8_dcr_h[8]= {
0,4096,8192,1228,16384,0,0,0};
short filt8_l1[8] = { short filt8_l1[8] = {
24576,16384,0,0,0,0,0,0}; 24576,16384,0,0,0,0,0,0};
......
...@@ -103,6 +103,10 @@ extern short filt8_dcl[8]; ...@@ -103,6 +103,10 @@ extern short filt8_dcl[8];
extern short filt8_dcr[8]; extern short filt8_dcr[8];
extern short filt8_dcl_h[8];
extern short filt8_dcr_h[8];
extern short filt8_l1[8]; extern short filt8_l1[8];
extern short filt8_ml1[8]; extern short filt8_ml1[8];
......
...@@ -892,10 +892,12 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue, ...@@ -892,10 +892,12 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
uint16_t idxPil = idxDC/2; uint16_t idxPil = idxDC/2;
re_offset = k; re_offset = k;
pil = (int16_t *)&pilot[rb_offset*((config_type==0) ? 6:4)]; pil = (int16_t *)&pilot[rb_offset*((config_type==0) ? 6:4)];
// for proper allignment of SIMD vectors
if((ue->frame_parms.N_RB_DL&1)==0) {
pil += (idxPil-4); pil += (idxPil-4);
dl_ch += (idxDC-8); dl_ch += (idxDC-8);
dl_ch = memset(dl_ch, 0, sizeof(int16_t)*14); dl_ch = memset(dl_ch, 0, sizeof(int16_t)*14);
re_offset = (re_offset+idxDC/2-4)&(ue->frame_parms.ofdm_symbol_size-1); re_offset = (re_offset+idxDC/2-4)&(ue->frame_parms.ofdm_symbol_size-1);
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)];
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);
...@@ -927,19 +929,32 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue, ...@@ -927,19 +929,32 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
ch, ch,
dl_ch, dl_ch,
8); 8);
} else {
pil += (idxPil-2);
dl_ch += (idxDC-4);
dl_ch = memset(dl_ch, 0, sizeof(int16_t)*10);
re_offset = (re_offset+idxDC/2-2)&(ue->frame_parms.ofdm_symbol_size-1);
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)];
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);
/* multadd_real_vector_complex_scalar(filt8_dcl_h,
pil += 2; ch,
re_offset = (re_offset+2)&(ue->frame_parms.ofdm_symbol_size-1); dl_ch,
8);
pil += 4;
re_offset = (re_offset+4)&(ue->frame_parms.ofdm_symbol_size-1);
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)];
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);
multadd_real_vector_complex_scalar(filt8_dcmd, multadd_real_vector_complex_scalar(filt8_dcr_h,
ch, ch,
dl_ch, dl_ch,
8); 8);
*/ }
} }
#ifdef DEBUG_PDSCH #ifdef DEBUG_PDSCH
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment