From 1b97cdafcd0f54da3d5e80c79c20d313c66b1b48 Mon Sep 17 00:00:00 2001 From: Thomas Schlichter Date: Tue, 20 Aug 2024 16:16:53 +0200 Subject: [PATCH] improve LLR scaling for better performance --- openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c | 10 ++++------ openair1/PHY/nr_phy_common/src/nr_phy_common.c | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c index 4640ff0746..af675e5d49 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c @@ -1682,15 +1682,13 @@ int nr_rx_pusch_tp(PHY_VARS_gNB *gNB, for (int nl = 0; nl < rel15_ul->nrOfLayers; nl++) for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) - avgs = cmax(avgs, avg[nl * frame_parms->nb_antennas_rx + aarx]); - - pusch_vars->log2_maxh = (log2_approx(avgs) >> 1); + avgs = cmax(avgs, avg[nl * frame_parms->nb_antennas_rx + aarx]); if (rel15_ul->nrOfLayers == 2 && rel15_ul->qam_mod_order >= 6) pusch_vars->log2_maxh = (log2_approx(avgs) >> 1) - 3; // for MMSE - else if (rel15_ul->nrOfLayers == 1) - pusch_vars->log2_maxh = (log2_approx(avgs) >> 1) + 1 + log2_approx(frame_parms->nb_antennas_rx >> 2); - + else + pusch_vars->log2_maxh = (log2_approx(avgs) >> 1) + 1 + log2_approx(frame_parms->nb_antennas_rx >> 1); + if (pusch_vars->log2_maxh < 0) pusch_vars->log2_maxh = 0; diff --git a/openair1/PHY/nr_phy_common/src/nr_phy_common.c b/openair1/PHY/nr_phy_common/src/nr_phy_common.c index 8c45fe4e72..ef10837d2d 100644 --- a/openair1/PHY/nr_phy_common/src/nr_phy_common.c +++ b/openair1/PHY/nr_phy_common/src/nr_phy_common.c @@ -46,8 +46,8 @@ void nr_qpsk_llr(int32_t *rxdataF_comp, int16_t *llr, uint32_t nb_re) c16_t *rxF = (c16_t *)rxdataF_comp; c16_t *llr32 = (c16_t *)llr; for (int i = 0; i < nb_re; i++) { - llr32[i].r = rxF[i].r >> 3; - llr32[i].i = rxF[i].i >> 3; + llr32[i].r = rxF[i].r >> 4; + llr32[i].i = rxF[i].i >> 4; } }