From 910912a443118adc30dbf413043501b8b79a99e6 Mon Sep 17 00:00:00 2001 From: ahadi Date: Fri, 10 Dec 2021 11:14:09 +0100 Subject: [PATCH] adding prs structure --- openair1/PHY/NR_TRANSPORT/nr_prs.c | 23 +++++++---------- openair1/SCHED_NR/phy_procedures_nr_gNB.c | 31 ++++++++++------------- 2 files changed, 22 insertions(+), 32 deletions(-) diff --git a/openair1/PHY/NR_TRANSPORT/nr_prs.c b/openair1/PHY/NR_TRANSPORT/nr_prs.c index eba6be157a..3e2cee2e7b 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prs.c +++ b/openair1/PHY/NR_TRANSPORT/nr_prs.c @@ -28,36 +28,31 @@ int nr_generate_prs(uint32_t **nr_gold_prs, int k_prime = 0; int k=0; int16_t mod_prs[NR_MAX_PRS_LENGTH<<1]; - uint8_t idx=0; - uint8_t combSize = 6; - uint8_t REOffset = 0; - uint8_t symbolStart = 5; - uint8_t NumPRSSymbols = 6; - uint16_t NumPRBs = 106; + uint8_t idx=prs_data->NPRSID; // QPSK modulation // PRS resource mapping with combsize=k which means PRS symbols exist in every k-th subcarrier in frequency domain // According to ts138.211 sec.7.4.1.7.2 - for (int l = symbolStart; l < symbolStart + NumPRSSymbols; l++) { + for (int l = prs_data->SymbolStart; l < prs_data->SymbolStart + prs_data->NumPRSSymbols; l++) { int symInd = l-5; - if (combSize==2) { + if (prs_data->CombSize == 2) { k_prime = k_prime_table[0][symInd]; } - else if (combSize==4){ + else if (prs_data->CombSize == 4){ k_prime = k_prime_table[1][symInd]; } - else if (combSize==6){ + else if (prs_data->CombSize == 6){ k_prime = k_prime_table[2][symInd]; } - else if (combSize==12){ + else if (prs_data->CombSize == 12){ k_prime = k_prime_table[3][symInd]; } - k = (REOffset+k_prime)%combSize + frame_parms->ssb_start_subcarrier; - for (int m = 0; m < 12/combSize*NumPRBs; m++) { + k = (prs_data->REOffset+k_prime) % prs_data->CombSize + frame_parms->ssb_start_subcarrier; + for (int m = 0; m < 12/prs_data->CombSize * prs_data->NumRB; m++) { #ifdef DEBUG_PRS_MAP printf("m %d at k %d of l %d\n", m, k, l); @@ -81,7 +76,7 @@ int nr_generate_prs(uint32_t **nr_gold_prs, ((int16_t *)txdataF)[((l*frame_parms->ofdm_symbol_size + k)<<1)+1]); #endif - k = k + combSize; + k = k + prs_data->CombSize; if (k >= frame_parms->ofdm_symbol_size) k-=frame_parms->ofdm_symbol_size; diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c index 8288bb9d51..b771a9234d 100644 --- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c +++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c @@ -148,22 +148,6 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB, // defining inputs and initials for nr_generate_prs() int **txdataF = gNB->common_vars.txdataF; - uint8_t ssb_index,n_hf; - ssb_index = ssb_pdu.ssb_pdu_rel15.SsbBlockIndex; - LOG_D(PHY,"common_signal_procedures: frame %d, slot %d ssb index %d\n",frame,slot,ssb_index); - - uint16_t ssb_start_symbol; - int ssb_start_symbol_abs = nr_get_ssb_start_symbol(fp,ssb_index); // computing the starting symbol for current ssb - ssb_start_symbol = ssb_start_symbol_abs % fp->symbols_per_slot; // start symbol wrt slot - - - - uint16_t slots_per_hf = (fp->slots_per_frame)>>1; - - if (slotcell_config.frame_duplex_type.value == TDD) && @@ -242,8 +226,19 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB, //TODO: nr_generate_prs // check if we have prs to transmit in this frame and slot prs_data_t prs_data; - prs_data.PRSResourceSetPeriod[0]=0; - prs_data.PRSResourceSetPeriod[1]=0; + prs_data.PRSResourceSetPeriod[0]=40; // PRS resource slot period + prs_data.PRSResourceSetPeriod[1]=0; // resource slot offset + prs_data.SymbolStart=5; + prs_data.NumPRSSymbols=6; + prs_data.NumRB=106; + prs_data.RBOffset=0; + prs_data.CombSize=6; + prs_data.REOffset=0; + prs_data.PRSResourceOffset=0; + prs_data.PRSResourceRepetition=1; + prs_data.PRSResourceTimeGap=1; + prs_data.NPRSID=0; + // tbc nr_generate_prs(gNB->nr_gold_prs[slot],&txdataF[0][txdataF_offset], AMP, &prs_data, cfg, fp);