From 2360925e29aa63b8e8e4a8b152c2630d25e95e9f Mon Sep 17 00:00:00 2001 From: luis_pereira87 <lpereira@allbesmart.pt> Date: Tue, 26 Sep 2023 20:27:00 +0100 Subject: [PATCH] Reverse bits in UCI message when using polar encoder/decoder --- openair1/PHY/NR_TRANSPORT/pucch_rx.c | 8 ++++++-- openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/openair1/PHY/NR_TRANSPORT/pucch_rx.c b/openair1/PHY/NR_TRANSPORT/pucch_rx.c index 305a90d819..de3555bf29 100644 --- a/openair1/PHY/NR_TRANSPORT/pucch_rx.c +++ b/openair1/PHY/NR_TRANSPORT/pucch_rx.c @@ -1693,12 +1693,16 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, // run polar decoder on llrs decoderState = polar_decoder_int16((int16_t *)llrs, decodedPayload, 0, NR_POLAR_UCI_PUCCH_MESSAGE_TYPE, nb_bit, pucch_pdu->prb_size); - LOG_D(PHY,"UCI decoderState %d, payload[0] %llu\n",decoderState,(unsigned long long)decodedPayload[0]); + // Decoder reversal + decodedPayload[0] = reverse_bits(decodedPayload[0], nb_bit); + if (decoderState>0) decoderState=1; corr_dB = dB_fixed64(corr); LOG_D(PHY,"metric %d dB\n",corr_dB); } + LOG_D(PHY, "UCI decoderState %d, payload[0] %llu\n", decoderState, (unsigned long long)decodedPayload[0]); + // estimate CQI for MAC (from antenna port 0 only) // TODO this computation is wrong -> to be ignored at MAC for now int SNRtimes10 = dB_fixed_times10(signal_energy_nodc((int32_t *)&rxdataF[0][soffset+(l2*frame_parms->ofdm_symbol_size)+re_offset[0]], @@ -1761,7 +1765,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, } bit_left = pucch_pdu->bit_len_csi_part1-((csi_part1_bytes-1)<<3); uci_pdu->csi_part1.csi_part1_payload[i] = decodedPayload[0] & ((1<<bit_left)-1); - decodedPayload[0] = pucch_pdu->bit_len_csi_part1 < 64 ? decodedPayload[0] >> pucch_pdu->bit_len_csi_part1 : 0; + decodedPayload[0] = pucch_pdu->bit_len_csi_part1 < 64 ? decodedPayload[0] >> bit_left : 0; } if (pucch_pdu->bit_len_csi_part2>0) { diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c index d59da8be97..f5c4276562 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c @@ -644,7 +644,9 @@ static void nr_uci_encoding(uint64_t payload, b[7] = b[0]; AssertFatal(nrofPRB<=16,"Number of PRB >16\n"); } else if (A>=12) { - AssertFatal(A<65,"Polar encoding not supported yet for UCI with more than 64 bits\n"); + // Encoder reversal + payload = reverse_bits(payload, A); + polar_encoder_fast(&payload, b, 0,0, NR_POLAR_UCI_PUCCH_MESSAGE_TYPE, A, -- 2.26.2