diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c index b09e8690f3..6c313d4063 100644 --- a/openair1/PHY/INIT/nr_init_ue.c +++ b/openair1/PHY/INIT/nr_init_ue.c @@ -134,8 +134,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int gNB_id; int th_id; uint32_t ****pusch_dmrs; - uint16_t N_n_scid[2] = {0,1}; // [HOTFIX] This is a temporary implementation of scramblingID0 and scramblingID1 which are given by DMRS-UplinkConfig - int n_scid; abstraction_flag = 0; LOG_I(PHY, "Initializing UE vars (abstraction %u) for gNB TXant %u, UE RXant %u\n", abstraction_flag, fp->nb_antennas_tx, fp->nb_antennas_rx); phy_init_nr_top(ue); @@ -191,7 +189,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, /////////// ue->nr_gold_pusch_dmrs = (uint32_t ****)malloc16(fp->slots_per_frame*sizeof(uint32_t ***)); pusch_dmrs = ue->nr_gold_pusch_dmrs; - n_scid = 0; // This quantity is indicated by higher layer parameter dmrs-SeqInitialization for (slot=0; slotslots_per_frame; slot++) { pusch_dmrs[slot] = (uint32_t ***)malloc16(fp->symbols_per_slot*sizeof(uint32_t **)); @@ -208,7 +205,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, } } - nr_init_pusch_dmrs(ue, N_n_scid, n_scid); /////////// //////////////////////////////////////////////////////////////////////////////////////////// @@ -271,9 +267,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, } } - ue->scramblingID_pdcch = fp->Nid_cell; - nr_gold_pdcch(ue,fp->Nid_cell); - //PDSCH DMRS init (eNB offset = 0) ue->nr_gold_pdsch[0] = (uint32_t ****)malloc16(fp->slots_per_frame*sizeof(uint32_t ***)); uint32_t ****pdsch_dmrs = ue->nr_gold_pdsch[0]; @@ -293,12 +286,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, } } - // initializing the scrambling IDs for PDSCH DMRS - for (int i=0; i<2; i++) - ue->scramblingID[i]=fp->Nid_cell; - - nr_gold_pdsch(ue,ue->scramblingID); - // DLSCH for (gNB_id = 0; gNB_id < ue->n_connected_gNB; gNB_id++) { for (th_id=0; th_idofdm_symbol_size + fp->nb_prefix_samples0)+(ue->symbol_offset-n_symb_prefix0)*(fp->ofdm_symbol_size + fp->nb_prefix_samples); // for a correct computation of frame number to sync with the one decoded at MIB we need to take into account in which of the n_frames we got sync ue->init_sync_frame = n_frames - 1 - is; + + // compute the scramblingID_pdcch and the gold pdcch + ue->scramblingID_pdcch = fp->Nid_cell; + nr_gold_pdcch(ue,fp->Nid_cell); + + // compute the scrambling IDs for PDSCH DMRS + for (int i=0; i<2; i++) + ue->scramblingID[i]=fp->Nid_cell; + + nr_gold_pdsch(ue,ue->scramblingID); + + // initialize the pusch dmrs + uint16_t N_n_scid[2] = {fp->Nid_cell,fp->Nid_cell}; + int n_scid = 0; // This quantity is indicated by higher layer parameter dmrs-SeqInitialization + nr_init_pusch_dmrs(ue, N_n_scid, n_scid); + // we also need to take into account the shift by samples_per_frame in case the if is true if (ue->ssb_offset < sync_pos_frame){ ue->rx_offset = fp->samples_per_frame - sync_pos_frame + ue->ssb_offset; diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c index 0c188e9119..41cf9c2ffa 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c @@ -128,7 +128,6 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, NR_UE_PUSCH *pusch_ue = UE->pusch_vars[thread_id][gNB_id]; uint8_t num_of_codewords = 1; // tmp assumption - int Nid_cell = 0; int N_PRB_oh = 0; // higher layer (RRC) parameter xOverhead in PUSCH-ServingCellConfig uint16_t number_dmrs_symbols = 0; @@ -153,7 +152,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, if (start_sc >= frame_parms->ofdm_symbol_size) start_sc -= frame_parms->ofdm_symbol_size; - ulsch_ue->Nid_cell = Nid_cell; + ulsch_ue->Nid_cell = frame_parms->Nid_cell; for (int i = start_symbol; i < start_symbol + number_of_symbols; i++) { if((ul_dmrs_symb_pos >> i) & 0x01) @@ -391,7 +390,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, // Perform this on gold sequence, not required when SC FDMA operation is done, LOG_D(PHY,"DMRS in symbol %d\n",l); nr_modulation(pusch_dmrs[l][0], n_dmrs*2, DMRS_MOD_ORDER, mod_dmrs); // currently only codeword 0 is modulated. Qm = 2 as DMRS is QPSK modulated - + } else { dmrs_idx = 0; } diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index 046f410bd4..55e419d77a 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -926,7 +926,16 @@ int main(int argc, char **argv) init_nr_ue_transport(UE,0); nr_gold_pbch(UE); - nr_gold_pdcch(UE,0); + + // compute the scramblingID_pdcch and the gold pdcch + UE->scramblingID_pdcch = frame_parms->Nid_cell; + nr_gold_pdcch(UE, frame_parms->Nid_cell); + + // compute the scrambling IDs for PDSCH DMRS + for (int i = 0; i < 2; i++) + UE->scramblingID[i] = frame_parms->Nid_cell; + + nr_gold_pdsch(UE, UE->scramblingID); nr_l2_init_ue(NULL); UE_mac = get_mac_inst(0); diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c index 6e9b88593c..d724627d69 100644 --- a/openair1/SIMULATION/NR_PHY/ulsim.c +++ b/openair1/SIMULATION/NR_PHY/ulsim.c @@ -760,28 +760,17 @@ int main(int argc, char **argv) PHY_vars_UE_g[0][0] = UE; memcpy(&UE->frame_parms, frame_parms, sizeof(NR_DL_FRAME_PARMS)); - //phy_init_nr_top(frame_parms); if (init_nr_ue_signal(UE, 1, 0) != 0) { printf("Error at UE NR initialisation\n"); exit(-1); } - //nr_init_frame_parms_ue(&UE->frame_parms); init_nr_ue_transport(UE, 0); - /* - for (int sf = 0; sf < 2; sf++) { - for (i = 0; i < 2; i++) { - - UE->ulsch[sf][0][i] = new_nr_ue_ulsch(N_RB_UL, 8, 0); - - if (!UE->ulsch[sf][0][i]) { - printf("Can't get ue ulsch structures\n"); - exit(-1); - } - } - } - */ + // initialize the pusch dmrs + uint16_t N_n_scid[2] = {frame_parms->Nid_cell,frame_parms->Nid_cell}; + int n_scid = 0; // This quantity is indicated by higher layer parameter dmrs-SeqInitialization + nr_init_pusch_dmrs(UE, N_n_scid, n_scid); //Configure UE NR_UE_RRC_INST_t rrcue;