nr_pbchsim modifications for carrier phase rotation procedure
This commit is contained in:
@@ -133,8 +133,8 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
#ifdef DEBUG_FEP
|
#ifdef DEBUG_FEP
|
||||||
// if (ue->frame <100)
|
// if (ue->frame <100)
|
||||||
/*LOG_I(PHY,*/printf("slot_fep: frame %d: slot %d, symbol %d, nb_prefix_samples %u, nb_prefix_samples0 %u, slot_offset %u, sample_offset %d,rx_offset %u, frame_length_samples %u\n",
|
/*LOG_I(PHY,*/printf("slot_fep: slot %d, symbol %d, nb_prefix_samples %u, nb_prefix_samples0 %u, slot_offset %u, sample_offset %d,rx_offset %u, frame_length_samples %u\n",
|
||||||
ue->proc.proc_rxtx[(Ns)&1].frame_rx, Ns, symbol, nb_prefix_samples, nb_prefix_samples0, slot_offset, sample_offset, rx_offset, frame_length_samples);
|
Ns, symbol, nb_prefix_samples, nb_prefix_samples0, slot_offset, sample_offset, rx_offset, frame_length_samples);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
abs_symbol = Ns * frame_parms->symbols_per_slot + symbol;
|
abs_symbol = Ns * frame_parms->symbols_per_slot + symbol;
|
||||||
@@ -200,7 +200,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
#ifdef DEBUG_FEP
|
#ifdef DEBUG_FEP
|
||||||
// if (ue->frame <100)
|
// if (ue->frame <100)
|
||||||
printf("slot_fep: frame %d: symbol %d rx_offset %u\n", ue->proc.proc_rxtx[(Ns)&1].frame_rx, symbol, rx_offset);
|
printf("slot_fep: symbol %d rx_offset %u\n", symbol, rx_offset);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int symb_offset = (Ns%frame_parms->slots_per_subframe)*frame_parms->symbols_per_slot;
|
int symb_offset = (Ns%frame_parms->slots_per_subframe)*frame_parms->symbols_per_slot;
|
||||||
@@ -318,8 +318,8 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
#ifdef DEBUG_FEP
|
#ifdef DEBUG_FEP
|
||||||
// if (ue->frame <100)
|
// if (ue->frame <100)
|
||||||
/*LOG_I(PHY,*/printf("slot_fep: frame %d: slot %d, symbol %d, nb_prefix_samples %u, nb_prefix_samples0 %u, slot_offset %u, sample_offset %d,rx_offset %u, frame_length_samples %u\n",
|
/*LOG_I(PHY,*/printf("slot_fep: slot %d, symbol %d, nb_prefix_samples %u, nb_prefix_samples0 %u, slot_offset %u, sample_offset %d,rx_offset %u, frame_length_samples %u\n",
|
||||||
ue->proc.proc_rxtx[(Ns)&1].frame_rx, Ns, symbol, nb_prefix_samples, nb_prefix_samples0, slot_offset, sample_offset, rx_offset, frame_length_samples);
|
Ns, symbol, nb_prefix_samples, nb_prefix_samples0, slot_offset, sample_offset, rx_offset, frame_length_samples);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
abs_symbol = Ns * frame_parms->symbols_per_slot + symbol;
|
abs_symbol = Ns * frame_parms->symbols_per_slot + symbol;
|
||||||
@@ -383,13 +383,16 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG_FEP
|
|
||||||
// if (ue->frame <100)
|
|
||||||
printf("slot_fep: frame %d: symbol %d rx_offset %u\n", ue->proc.proc_rxtx[(Ns)&1].frame_rx, symbol, rx_offset);
|
|
||||||
#endif
|
|
||||||
int symb_offset = (Ns%frame_parms->slots_per_subframe)*frame_parms->symbols_per_slot;
|
int symb_offset = (Ns%frame_parms->slots_per_subframe)*frame_parms->symbols_per_slot;
|
||||||
int32_t rot2 = ((uint32_t*)frame_parms->symbol_rotation)[symbol+symb_offset];
|
int32_t rot2 = ((uint32_t*)frame_parms->symbol_rotation)[symbol+symb_offset];
|
||||||
((int16_t*)&rot2)[1]=-((int16_t*)&rot2)[1];
|
((int16_t*)&rot2)[1]=-((int16_t*)&rot2)[1];
|
||||||
|
|
||||||
|
#ifdef DEBUG_FEP
|
||||||
|
// if (ue->frame <100)
|
||||||
|
printf("slot_fep: slot %d, symbol %d rx_offset %u, rotation symbol %d %d.%d\n", Ns,symbol, rx_offset,
|
||||||
|
symbol+symb_offset,((int16_t*)&rot2)[0],((int16_t*)&rot2)[1]);
|
||||||
|
#endif
|
||||||
|
|
||||||
rotate_cpx_vector((int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],
|
rotate_cpx_vector((int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],
|
||||||
(int16_t*)&rot2,
|
(int16_t*)&rot2,
|
||||||
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],
|
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],
|
||||||
|
|||||||
@@ -293,7 +293,6 @@ void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ULSCH
|
|||||||
G);
|
G);
|
||||||
stop_meas(&gNB->ulsch_decoding_stats);
|
stop_meas(&gNB->ulsch_decoding_stats);
|
||||||
|
|
||||||
|
|
||||||
if (ret > gNB->ulsch[ULSCH_id][0]->max_ldpc_iterations){
|
if (ret > gNB->ulsch[ULSCH_id][0]->max_ldpc_iterations){
|
||||||
LOG_D(PHY, "ULSCH %d in error\n",ULSCH_id);
|
LOG_D(PHY, "ULSCH %d in error\n",ULSCH_id);
|
||||||
nr_fill_indication(gNB,frame_rx, slot_rx, ULSCH_id, harq_pid, 1);
|
nr_fill_indication(gNB,frame_rx, slot_rx, ULSCH_id, harq_pid, 1);
|
||||||
|
|||||||
@@ -108,6 +108,9 @@ void nr_phy_config_request_sim_pbchsim(PHY_VARS_gNB *gNB,
|
|||||||
gNB_config->carrier_config.dl_bandwidth.value = config_bandwidth(mu, N_RB_DL, fp->nr_band);
|
gNB_config->carrier_config.dl_bandwidth.value = config_bandwidth(mu, N_RB_DL, fp->nr_band);
|
||||||
|
|
||||||
nr_init_frame_parms(gNB_config, fp);
|
nr_init_frame_parms(gNB_config, fp);
|
||||||
|
|
||||||
|
init_symbol_rotation(fp,fp->dl_CarrierFreq);
|
||||||
|
|
||||||
gNB->configured = 1;
|
gNB->configured = 1;
|
||||||
LOG_I(PHY,"gNB configured\n");
|
LOG_I(PHY,"gNB configured\n");
|
||||||
}
|
}
|
||||||
@@ -552,10 +555,35 @@ int main(int argc, char **argv)
|
|||||||
frame_parms->nb_prefix_samples,
|
frame_parms->nb_prefix_samples,
|
||||||
CYCLIC_PREFIX);
|
CYCLIC_PREFIX);
|
||||||
} else {
|
} else {
|
||||||
nr_normal_prefix_mod(gNB->common_vars.txdataF[aa],
|
/* nr_normal_prefix_mod(gNB->common_vars.txdataF[aa],
|
||||||
&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)],
|
&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)],
|
||||||
14,
|
14,
|
||||||
frame_parms);
|
frame_parms);*/
|
||||||
|
PHY_ofdm_mod(gNB->common_vars.txdataF[aa],
|
||||||
|
(int*)&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)],
|
||||||
|
frame_parms->ofdm_symbol_size,
|
||||||
|
1,
|
||||||
|
frame_parms->nb_prefix_samples0,
|
||||||
|
CYCLIC_PREFIX);
|
||||||
|
|
||||||
|
apply_nr_rotation(frame_parms,
|
||||||
|
(int16_t*)&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)],
|
||||||
|
slot,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples0);
|
||||||
|
PHY_ofdm_mod(&gNB->common_vars.txdataF[aa][frame_parms->ofdm_symbol_size],
|
||||||
|
(int*)&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)+frame_parms->nb_prefix_samples0+frame_parms->ofdm_symbol_size],
|
||||||
|
frame_parms->ofdm_symbol_size,
|
||||||
|
13,
|
||||||
|
frame_parms->nb_prefix_samples,
|
||||||
|
CYCLIC_PREFIX);
|
||||||
|
apply_nr_rotation(frame_parms,
|
||||||
|
(int16_t*)&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)+frame_parms->nb_prefix_samples0+frame_parms->ofdm_symbol_size],
|
||||||
|
slot,
|
||||||
|
1,
|
||||||
|
13,
|
||||||
|
frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user