From c15fb8c7a419be8ee40f16d8a941c7e6656b6165 Mon Sep 17 00:00:00 2001 From: adk Date: Wed, 11 Mar 2020 14:45:14 +0100 Subject: [PATCH] PUSCH DMRS mapping type B start symbol fix --- openair1/PHY/NR_REFSIG/dmrs_nr.c | 9 ++++++++- openair1/PHY/NR_REFSIG/dmrs_nr.h | 1 + openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/openair1/PHY/NR_REFSIG/dmrs_nr.c b/openair1/PHY/NR_REFSIG/dmrs_nr.c index 75de900753..77861aef53 100644 --- a/openair1/PHY/NR_REFSIG/dmrs_nr.c +++ b/openair1/PHY/NR_REFSIG/dmrs_nr.c @@ -111,6 +111,7 @@ int32_t get_l_prime(uint8_t duration_in_symbols, uint8_t mapping_type, pusch_dmr * n index starting 0,1,... * delta see Table 6.4.1.1.3 * duration_in_symbols number of scheduled PUSCH ofdm symbols +* start_symbol first symbol index in PUSCH allocation * dmrs_UplinkConfig DMRS uplink configuration * mapping_type PUSCH mapping type (A or B) * ofdm_symbol_size IFFT size @@ -128,6 +129,7 @@ uint8_t is_dmrs_symbol(uint8_t l, uint16_t n, uint8_t delta, uint8_t duration_in_symbols, + uint8_t start_symbol, dmrs_UplinkConfig_t *dmrs_UplinkConfig, uint8_t mapping_type, uint16_t ofdm_symbol_size) { @@ -141,6 +143,11 @@ uint8_t is_dmrs_symbol(uint8_t l, dmrs_type = dmrs_UplinkConfig->pusch_dmrs_type; additional_pos = dmrs_UplinkConfig->pusch_dmrs_AdditionalPosition; + if (mapping_type==typeB) + l -= start_symbol; + + AssertFatal(l >= 0,"Check DMRS configuration (start_symbol) !\n"); + l0 = get_l0_ul(mapping_type, 2); l_prime_mask = get_l_prime(duration_in_symbols, mapping_type, additional_pos, dmrs_UplinkConfig->pusch_maxLength); @@ -370,7 +377,7 @@ void lte_gold_new(LTE_DL_FRAME_PARMS *frame_parms, uint32_t lte_gold_table[20][2 * * NAME : get_l0_ul * -* PARAMETERS : mapping_type : PUSCH mapping type +* PARAMETERS : mapping_type : PUSCH mapping type * dmrs_typeA_position : higher layer parameter * * RETURN : demodulation reference signal for PUSCH diff --git a/openair1/PHY/NR_REFSIG/dmrs_nr.h b/openair1/PHY/NR_REFSIG/dmrs_nr.h index de77a8a6ce..d03a0ee7ac 100644 --- a/openair1/PHY/NR_REFSIG/dmrs_nr.h +++ b/openair1/PHY/NR_REFSIG/dmrs_nr.h @@ -66,6 +66,7 @@ uint8_t is_dmrs_symbol(uint8_t l, uint16_t n, uint8_t delta, uint8_t duration_in_symbols, + uint8_t start_symbol, dmrs_UplinkConfig_t *dmrs_UplinkConfig, uint8_t mapping_type, uint16_t ofdm_symbol_size); diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c index 09e46421f4..2c5acbf118 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c @@ -136,6 +136,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, 0, 0, harq_process_ul_ue->number_of_symbols, + start_symbol, &UE->dmrs_UplinkConfig, mapping_type, frame_parms->ofdm_symbol_size); @@ -273,6 +274,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, 0, 0, harq_process_ul_ue->number_of_symbols, + start_symbol, &UE->dmrs_UplinkConfig, mapping_type, frame_parms->ofdm_symbol_size); @@ -359,6 +361,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, n, delta, harq_process_ul_ue->number_of_symbols, + start_symbol, &UE->dmrs_UplinkConfig, mapping_type, frame_parms->ofdm_symbol_size);