diff --git a/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c b/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c index aafafb6d7d..ebc9c96970 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c +++ b/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c @@ -121,7 +121,8 @@ void nr_fill_dci_and_dlsch(PHY_VARS_gNB *gNB, nfapi_nr_config_request_t *cfg = &gNB->gNB_config; uint16_t N_RB = fp->initial_bwp_dl.N_RB; - uint8_t fsize=0, pos=0, cand_idx=0; + uint16_t N_RB_UL = fp->initial_bwp_ul.N_RB; + uint8_t fsize=0, pos=0, pos2=0,cand_idx=0; /// Payload generation switch(params_rel15->dci_format) { @@ -131,6 +132,7 @@ void nr_fill_dci_and_dlsch(PHY_VARS_gNB *gNB, case NFAPI_NR_RNTI_RA: // Freq domain assignment fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); + printf("fsize = %d\n",fsize); for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<tb_scaling>>(1-i))&1)<format_indicator&1)<> fsize = 16) + fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); + for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<frequency_domain_assignment+1)&1 ==0) //fsize are all 1 38.212 p86 + { + printf("***************************\n"); + + // ra_preamble_index 6bit + for (int i=0; i<6; i++) + *dci_pdu |= ((pdu_rel15->ra_preamble_index>>(5-i-1))&1)<ul_sul_indicator&1)<ss_pbch_index>>(5-i))&1)<prach_mask_index>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->prach_mask_index>>(3-i))&1)<prach_mask_index>>(3-i))&1)<time_domain_assignment>>(3-i))&1)<vrb_to_prb_mapping&1)<mcs>>(4-i))&1)<ndi&1)<rv>>(1-i))&1)<harq_pid>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->harq_pid>>(3-i))&1)<harq_pid>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->dai>>(1-i))&1)<dai>>(1-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->tpc>>(1-i))&1)<tpc>>(1-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->pucch_resource_indicator>>(2-i))&1)<pucch_resource_indicator>>(2-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->pdsch_to_harq_feedback_timing_indicator>>(2-i))&1)<pdsch_to_harq_feedback_timing_indicator>>(2-i))&1)<short_messages_indicator>>(1-i))&1)<short_messages>>(7-i))&1)<>1 ) ); + for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<time_domain_assignment>>(3-i))&1)<vrb_to_prb_mapping&1)<mcs>>(4-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->mcs>>(4-i))&1)<mcs>>(4-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->tb_scaling>>(1-i))&1)<tb_scaling>>(1-i))&1)<>1 ) ); + for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<time_domain_assignment>>(3-i))&1)<vrb_to_prb_mapping&1)<mcs>>(4-i))&1)<rv>>(1-i))&1)<format_indicator&1)<>1 ) ); + for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<time_domain_assignment>>(3-i))&1)<vrb_to_prb_mapping&1)<mcs>>(4-i))&1)<ndi&1)<rv>>(1-i))&1)<harq_pid>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->harq_pid>>(3-i))&1)<harq_pid>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->dai>>(1-i))&1)<dai>>(1-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->tpc>>(1-i))&1)<tpc>>(1-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->pucch_resource_indicator>>(2-i))&1)<pucch_resource_indicator>>(2-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->pdsch_to_harq_feedback_timing_indicator>>(2-i))&1)<pdsch_to_harq_feedback_timing_indicator>>(2-i))&1)<rnti_type) + { + case NFAPI_NR_RNTI_C: + // indicating a DL DCI format 1bit + *dci_pdu |= (pdu_rel15->format_indicator&1)<>1 ) ); + for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<time_domain_assignment>>(3-i))&1)<frequency_hopping_flag&1)<mcs>>(4-i))&1)<ndi&1)<rv>>(1-i))&1)<harq_pid>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->harq_pid>>(3-i))&1)<harq_pid>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->tpc>>(1-i))&1)<tpc>>(1-i))&1)<padding&1)<pucch_config.pucch_GroupHopping.value) + { + if (pos>31) + *(dci_pdu+1) |= (pdu_rel15->ul_sul_indicator&1)<ul_sul_indicator&1)<format_indicator&1)<>1 ) ); + for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<time_domain_assignment>>(3-i))&1)<frequency_hopping_flag&1)<mcs>>(4-i))&1)<ndi&1)<rv>>(1-i))&1)<harq_pid>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->harq_pid>>(3-i))&1)<harq_pid>>(3-i))&1)<31) + *(dci_pdu+1) |= ((pdu_rel15->tpc>>(1-i))&1)<tpc>>(1-i))&1)<padding&1)<pucch_config.pucch_GroupHopping.value) + { + if (pos>31) + *(dci_pdu+1) |= (pdu_rel15->ul_sul_indicator&1)<ul_sul_indicator&1)<0x%08x \t [1]->0x%08x \t [2]->0x%08x \t [3]->0x%08x\n", dci_pdu[0], dci_pdu[1], dci_pdu[2], dci_pdu[3]); diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c index 2a59863977..4a5054b52a 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c @@ -71,10 +71,32 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP, memcpy((void*)params_rel15, (void*)&gNB->pdcch_type0_params, sizeof(nfapi_nr_dl_config_pdcch_parameters_rel15_t)); pdu_rel15->frequency_domain_assignment = 5; - pdu_rel15->time_domain_assignment = 2; - pdu_rel15->vrb_to_prb_mapping = 0; + pdu_rel15->time_domain_assignment = 3; + pdu_rel15->vrb_to_prb_mapping = 1; pdu_rel15->mcs = 12; pdu_rel15->tb_scaling = 1; + + pdu_rel15->ra_preamble_index = 25; + pdu_rel15->format_indicator = 1; + pdu_rel15->ul_sul_indicator = 1; + + pdu_rel15->ss_pbch_index = 21; + pdu_rel15->prach_mask_index = 3; + pdu_rel15->ndi = 1; + pdu_rel15->rv = 2; + pdu_rel15->harq_pid = 7; + pdu_rel15->dai = 2; + pdu_rel15->tpc = 2; + pdu_rel15->pucch_resource_indicator = 7; + pdu_rel15->pdsch_to_harq_feedback_timing_indicator = 7; + + + pdu_rel15->tb_scaling = 1; + pdu_rel15->tb_scaling = 1; + pdu_rel15->tb_scaling = 1; + pdu_rel15->tb_scaling = 1; + + LOG_I(MAC, "[gNB scheduler phytest] DCI type 1 payload: freq_alloc %d, time_alloc %d, vrb to prb %d, mcs %d tb_scaling %d\n", pdu_rel15->frequency_domain_assignment, pdu_rel15->time_domain_assignment, @@ -83,7 +105,7 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP, pdu_rel15->tb_scaling); params_rel15->rnti = 0x03; - params_rel15->rnti_type = NFAPI_NR_RNTI_RA; + params_rel15->rnti_type = NFAPI_NR_RNTI_C; params_rel15->dci_format = NFAPI_NR_DL_DCI_FORMAT_1_0; //params_rel15->aggregation_level = 1; LOG_I(MAC, "DCI type 1 params: rmsi_pdcch_config %d, rnti %d, rnti_type %d, dci_format %d\n \