Fixed PTRS frequency domain allocation
- The bug occurs when the PUSCH allocation contains the central RB of the whole UL BW
This commit is contained in:
@@ -221,9 +221,6 @@ uint8_t is_ptrs_subcarrier(uint16_t k, uint8_t K_ptrs, uint16_t n_rnti, uint16_t
|
|||||||
else
|
else
|
||||||
k_RB_ref = n_rnti % (N_RB % K_ptrs);
|
k_RB_ref = n_rnti % (N_RB % K_ptrs);
|
||||||
|
|
||||||
if (k < (k_RE_ref + k_RB_ref*NR_NB_SC_PER_RB + start_sc))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if ((k - k_RE_ref - k_RB_ref*NR_NB_SC_PER_RB - start_sc) % (K_ptrs*NR_NB_SC_PER_RB) == 0)
|
if ((k - k_RE_ref - k_RB_ref*NR_NB_SC_PER_RB - start_sc) % (K_ptrs*NR_NB_SC_PER_RB) == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ void nr_ulsch_extract_rbs_single(int32_t **rxdataF,
|
|||||||
nfapi_nr_pusch_pdu_t *pusch_pdu,
|
nfapi_nr_pusch_pdu_t *pusch_pdu,
|
||||||
NR_DL_FRAME_PARMS *frame_parms)
|
NR_DL_FRAME_PARMS *frame_parms)
|
||||||
{
|
{
|
||||||
unsigned short start_re, re, nb_re_pusch;
|
unsigned short start_re, re, nb_re_pusch, k;
|
||||||
unsigned char aarx;
|
unsigned char aarx;
|
||||||
uint8_t K_ptrs;
|
uint8_t K_ptrs;
|
||||||
uint32_t rxF_ext_index = 0;
|
uint32_t rxF_ext_index = 0;
|
||||||
@@ -285,8 +285,14 @@ void nr_ulsch_extract_rbs_single(int32_t **rxdataF,
|
|||||||
is_dmrs_re = 0;
|
is_dmrs_re = 0;
|
||||||
|
|
||||||
if ( ((pusch_pdu->pdu_bit_map)>>2)& 0x01 ) {
|
if ( ((pusch_pdu->pdu_bit_map)>>2)& 0x01 ) {
|
||||||
|
|
||||||
|
if(((start_re + re) % frame_parms->ofdm_symbol_size) < start_re)
|
||||||
|
k = start_re + re;
|
||||||
|
else
|
||||||
|
k = (start_re + re) % frame_parms->ofdm_symbol_size;
|
||||||
|
|
||||||
is_ptrs_symbol_flag = is_ptrs_symbol(symbol,
|
is_ptrs_symbol_flag = is_ptrs_symbol(symbol,
|
||||||
(start_re + re)%frame_parms->ofdm_symbol_size,
|
k,
|
||||||
n_rnti,
|
n_rnti,
|
||||||
pusch_pdu->rb_size,
|
pusch_pdu->rb_size,
|
||||||
aarx,
|
aarx,
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
int32_t **txdataF;
|
int32_t **txdataF;
|
||||||
uint16_t start_sc, start_rb;
|
uint16_t start_sc, start_rb;
|
||||||
int8_t Wf[2], Wt[2], l_prime[2], delta;
|
int8_t Wf[2], Wt[2], l_prime[2], delta;
|
||||||
uint16_t rnti, n_dmrs, code_rate, number_dmrs_symbols, nb_rb, k;
|
uint16_t rnti, n_dmrs, code_rate, number_dmrs_symbols, nb_rb, k, k_temp;
|
||||||
uint8_t dmrs_type, nb_dmrs_re_per_rb, number_of_symbols, mcs, Nl;
|
uint8_t dmrs_type, nb_dmrs_re_per_rb, number_of_symbols, mcs, Nl;
|
||||||
int ap, start_symbol, Nid_cell, i;
|
int ap, start_symbol, Nid_cell, i;
|
||||||
int sample_offsetF, N_RE_prime, N_PRB_oh;
|
int sample_offsetF, N_RE_prime, N_PRB_oh;
|
||||||
@@ -396,8 +396,14 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (UE->ptrs_configured == 1){
|
if (UE->ptrs_configured == 1){
|
||||||
|
|
||||||
|
if(k < start_sc)
|
||||||
|
k_temp = k + frame_parms->ofdm_symbol_size;
|
||||||
|
else
|
||||||
|
k_temp = k;
|
||||||
|
|
||||||
is_ptrs = is_ptrs_symbol(l,
|
is_ptrs = is_ptrs_symbol(l,
|
||||||
k,
|
k_temp,
|
||||||
rnti,
|
rnti,
|
||||||
nb_rb,
|
nb_rb,
|
||||||
ap,
|
ap,
|
||||||
|
|||||||
Reference in New Issue
Block a user