Commit 75a5e5f3 authored by Sakthi's avatar Sakthi

updated estimation

parent 8e81876d
...@@ -755,13 +755,18 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue, ...@@ -755,13 +755,18 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
} }
simple_lerp(ch, dl_ch); simple_lerp(ch, dl_ch);
for(uint8_t i=0; i<16; i++) {
printf("%d\t",dl_ch[i]);
}
printf("\n");
dl_ch += 16; dl_ch += 16;
re_offset = (re_offset-2)&(ue->frame_parms.ofdm_symbol_size-1);
} }
// Do the same for the 2 left over pilots if any (nb_rb_pdsch*12 mod 8) // Do the same for the 2 left over pilots if any (nb_rb_pdsch*12 mod 8)
if ((nb_rb_pdsch*12)%8) { if ((nb_rb_pdsch*12)%8) {
uint16_t used_pils = (nb_rb_pdsch*12)/8*4; uint16_t used_pils = (nb_rb_pdsch*12)/8*8;
for (uint8_t idxPil=0; idxPil<4; idxPil+=2 ) { for (uint8_t idxPil=0; idxPil<8; idxPil+=2 ) {
rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)];
ch[idxPil] = (int16_t)(((int32_t)pil[used_pils+idxPil]*rxF[0] - (int32_t)pil[used_pils*idxPil+1]*rxF[1])>>15); ch[idxPil] = (int16_t)(((int32_t)pil[used_pils+idxPil]*rxF[0] - (int32_t)pil[used_pils*idxPil+1]*rxF[1])>>15);
ch[idxPil+1] = (int16_t)(((int32_t)pil[used_pils+idxPil]*rxF[1] + (int32_t)pil[used_pils*idxPil+1]*rxF[0])>>15); ch[idxPil+1] = (int16_t)(((int32_t)pil[used_pils+idxPil]*rxF[1] + (int32_t)pil[used_pils*idxPil+1]*rxF[0])>>15);
...@@ -770,11 +775,11 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue, ...@@ -770,11 +775,11 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
dl_ch[2] = (ch[0]+ch[2]) >> 1; dl_ch[2] = (ch[0]+ch[2]) >> 1;
dl_ch[3] = (ch[1]+ch[3]) >> 1; dl_ch[3] = (ch[1]+ch[3]) >> 1;
dl_ch[6] = (ch[4]+ch[5]) >> 1; dl_ch[6] = (ch[4]+ch[6]) >> 1;
dl_ch[7] = (ch[6]+ch[7]) >> 1; dl_ch[7] = (ch[5]+ch[7]) >> 1;
dl_ch[0] = ch[0]; dl_ch[1] = ch[1]; dl_ch[0] = ch[0]; dl_ch[1] = ch[1];
dl_ch[4] = ch[5]; dl_ch[4] = ch[5]; dl_ch[4] = ch[4]; dl_ch[5] = ch[5];
} }
} }
...@@ -783,12 +788,15 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue, ...@@ -783,12 +788,15 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
void simple_lerp(int16_t *in, int16_t *out) void simple_lerp(int16_t *in, int16_t *out)
{ {
__m128i est; __m128i est, sum, sign;
__m128i *x0 = (__m128i*)in; __m128i *x0 = (__m128i*)in;
__m128i *x1 = (__m128i*)(in+2); __m128i *x1 = (__m128i*)(in+2);
__m128i *y = (__m128i*)out; __m128i *y = (__m128i*)out;
est = _mm_srli_epi16(_mm_add_epi16 (*x0, *x1), 1); est = _mm_add_epi16 (*x0, *x1);
//sum = _mm_and_si128(est, _mm_set1_epi16(0x7FFF));
sign = _mm_and_si128(est, _mm_set1_epi16(0x8000));
est = _mm_or_si128(_mm_srli_epi16(est, 1), sign);
y[0] = _mm_unpacklo_epi32(*x0, est); y[0] = _mm_unpacklo_epi32(*x0, est);
y[1] = _mm_unpackhi_epi32(*x0, est); y[1] = _mm_unpackhi_epi32(*x0, est);
} }
......
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