From fec145cac6eb7330d17e60ca46e5be8edde3b493 Mon Sep 17 00:00:00 2001 From: Raymond Knopp Date: Wed, 3 Apr 2024 15:08:36 +0200 Subject: [PATCH] Pucch2 polar rx: fix dynamic range fixes the overflow issue in the PUCCH2 RX with 4+ RX antennas and 12+ bits (polar code format). The fix scales the polar decoding LLR computation according to the number of RX antennas. The issue was clear for 100 MHz 4 RX antennas. Even nr_pucchsim -s -5 -q 8 -P 2 -b 12 -R 273 -z4 -n1000 doesn't converge to 0 BLER with increasing SNR. The issue didn't appear in CI because of the bandwidth and antenna count limitations. --- openair1/PHY/NR_TRANSPORT/pucch_rx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair1/PHY/NR_TRANSPORT/pucch_rx.c b/openair1/PHY/NR_TRANSPORT/pucch_rx.c index 56b08f2e1d..118c828519 100644 --- a/openair1/PHY/NR_TRANSPORT/pucch_rx.c +++ b/openair1/PHY/NR_TRANSPORT/pucch_rx.c @@ -1519,7 +1519,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, corr_re = ( corr32_re[symb][half_prb>>2][aa]/(2*nc_group_size*4/2)+((int16_t*)(&prod_re[aa]))[0]); corr_im = ( corr32_im[symb][half_prb>>2][aa]/(2*nc_group_size*4/2)+((int16_t*)(&prod_im[aa]))[0]); - corr_tmp += corr_re*corr_re + corr_im*corr_im; + corr_tmp += (corr_re*corr_re + corr_im*corr_im)>>(Prx/2); /* LOG_D(PHY,"pucch2 half_prb %d cw %d (%d,%d) aa %d: (%d,%d,%d,%d,%d,%d,%d,%d)x(%d,%d,%d,%d,%d,%d,%d,%d) (%d,%d)+(%d,%d) = (%d,%d) => %d\n", half_prb,cw,cw&15,cw>>4,aa,