From a9d474193b29ee60ef234a7b8ba49be9640f0cc8 Mon Sep 17 00:00:00 2001 From: rmagueta Date: Fri, 26 Nov 2021 18:28:35 +0000 Subject: [PATCH] Fix BWP start in SRS --- openair1/PHY/NR_TRANSPORT/srs_rx.c | 10 ++++++---- openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c | 16 +++++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/openair1/PHY/NR_TRANSPORT/srs_rx.c b/openair1/PHY/NR_TRANSPORT/srs_rx.c index 684e4b5caf..7178b63ea1 100644 --- a/openair1/PHY/NR_TRANSPORT/srs_rx.c +++ b/openair1/PHY/NR_TRANSPORT/srs_rx.c @@ -107,14 +107,16 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB, uint8_t l0 = frame_parms->symbols_per_slot - 1 - srs_pdu->time_start_position; // starting symbol in this slot uint64_t symbol_offset = (n_symbols+l0)*frame_parms->ofdm_symbol_size; + uint64_t subcarrier_offset = frame_parms->first_carrier_offset + srs_pdu->bwp_start*12; + int32_t *rx_signal; for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) { memset(srs_received_signal[ant], 0, frame_parms->samples_per_frame*sizeof(int32_t)); - rx_signal = &rxdataF[ant][symbol_offset + frame_parms->first_carrier_offset]; + rx_signal = &rxdataF[ant][symbol_offset + subcarrier_offset]; for(int sc_idx = 0; sc_idx < nr_srs_info->n_symbs; sc_idx++) { - srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset] = rx_signal[nr_srs_info->subcarrier_idx[sc_idx]]; + srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + subcarrier_offset] = rx_signal[nr_srs_info->subcarrier_idx[sc_idx]]; #ifdef SRS_DEBUG if(sc_idx == 0) { @@ -125,8 +127,8 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB, } LOG_I(NR_PHY,"(%i) \t%i\t%i\n", nr_srs_info->subcarrier_idx[sc_idx], - srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]&0xFFFF, - (srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]>>16)&0xFFFF); + srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + subcarrier_offset]&0xFFFF, + (srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + subcarrier_offset]>>16)&0xFFFF); #endif } } diff --git a/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c b/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c index 9d74795937..0a3090513f 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c @@ -116,6 +116,8 @@ int generate_srs_nr(nfapi_nr_srs_pdu_t *srs_config_pdu, uint8_t l0 = N_SYMB_SLOT - 1 - l_offset; // starting position in the time domain uint8_t k_0_p; // frequency domain starting position + uint64_t subcarrier_offset = frame_parms->first_carrier_offset + srs_config_pdu->bwp_start*N_SC_RB; + if(nr_srs_info) { nr_srs_info->n_symbs = 0; } @@ -324,7 +326,7 @@ int generate_srs_nr(nfapi_nr_srs_pdu_t *srs_config_pdu, k_0_p += K_TC * M_sc_b_SRS * n_b[b]; } - subcarrier = (frame_parms->first_carrier_offset) + k_0_p; + subcarrier = subcarrier_offset + k_0_p; if (subcarrier>frame_parms->ofdm_symbol_size) { subcarrier -= frame_parms->ofdm_symbol_size; } @@ -373,17 +375,17 @@ int generate_srs_nr(nfapi_nr_srs_pdu_t *srs_config_pdu, txptr[subcarrier+ofdm_symbol*frame_parms->ofdm_symbol_size] = (real_amp & 0xFFFF) + ((imag_amp<<16)&0xFFFF0000); if(nr_srs_info) { - nr_srs_info->subcarrier_idx[nr_srs_info->n_symbs] = subcarrier+ofdm_symbol*frame_parms->ofdm_symbol_size-frame_parms->first_carrier_offset; + nr_srs_info->subcarrier_idx[nr_srs_info->n_symbs] = subcarrier + ofdm_symbol*frame_parms->ofdm_symbol_size - subcarrier_offset; nr_srs_info->n_symbs++; } #ifdef SRS_DEBUG - if( (subcarrier+ofdm_symbol*frame_parms->ofdm_symbol_size-frame_parms->first_carrier_offset)%12 == 0 ) { - LOG_I(NR_PHY,"------------ %i ------------\n", - (subcarrier+ofdm_symbol*frame_parms->ofdm_symbol_size-frame_parms->first_carrier_offset)/12); + if( (subcarrier+ofdm_symbol*frame_parms->ofdm_symbol_size-subcarrier_offset)%12 == 0 ) { + LOG_I(NR_PHY,"------------ %lu ------------\n", + (subcarrier+ofdm_symbol*frame_parms->ofdm_symbol_size-subcarrier_offset)/12); } - LOG_I(NR_PHY,"(%i) \t%i\t%i\n", - subcarrier+ofdm_symbol*frame_parms->ofdm_symbol_size-frame_parms->first_carrier_offset, + LOG_I(NR_PHY,"(%lu) \t%i\t%i\n", + subcarrier+ofdm_symbol*frame_parms->ofdm_symbol_size-subcarrier_offset, real_amp&0xFFFF, imag_amp&0xFFFF); #endif