diff --git a/openair1/PHY/MODULATION/nr_modulation.c b/openair1/PHY/MODULATION/nr_modulation.c index 1b5c4f4af0a433611d28fb8ff98a3a775d2532ae..979a31c50462f3aa51790f11097c1f85938b483f 100644 --- a/openair1/PHY/MODULATION/nr_modulation.c +++ b/openair1/PHY/MODULATION/nr_modulation.c @@ -618,32 +618,23 @@ void init_symbol_rotation(NR_DL_FRAME_PARMS *fp) { for (uint8_t ll = 0; ll < 2; ll++){ double f0 = f[ll]; - double Ncpm1 = Ncp0; + LOG_I(PHY, "Doing symbol rotation calculation for gNB TX/RX, f0 %f Hz, Nsymb %d\n", f0, nsymb); c16_t *symbol_rotation = fp->symbol_rotation[ll]; - double tl = 0; - double poff = 2 * M_PI * ((Ncp0 * Tc)) * f0; - double exp_re = cos(poff); - double exp_im = sin(-poff); - symbol_rotation[0].r = (int16_t)floor(exp_re * 32767); - symbol_rotation[0].i = (int16_t)floor(exp_im * 32767); - LOG_I(PHY, "Doing symbol rotation calculation for gNB TX/RX, f0 %f Hz, Nsymb %d\n", f0, nsymb); - LOG_I(PHY, "Symbol rotation %d/%d => (%d,%d)\n", - 0, - nsymb, - symbol_rotation[0].r, - symbol_rotation[0].i); + double tl = 0.0; + double poff = 0.0; + double exp_re = 0.0; + double exp_im = 0.0; - for (int l = 1; l < nsymb; l++) { + for (int l = 0; l < nsymb; l++) { double Ncp; - if (l == (7 * (1 << fp->numerology_index))) { + if (l == 0 || l == (7 * (1 << fp->numerology_index))) { Ncp = Ncp0; } else { Ncp = Ncp1; } - tl += (Nu + Ncpm1) * Tc; poff = 2 * M_PI * (tl + (Ncp * Tc)) * f0; exp_re = cos(poff); exp_im = sin(-poff); @@ -658,7 +649,7 @@ void init_symbol_rotation(NR_DL_FRAME_PARMS *fp) { symbol_rotation[l].i, (poff / 2 / M_PI) - floor(poff / 2 / M_PI)); - Ncpm1 = Ncp; + tl += (Nu + Ncp) * Tc; } }