Commit 0e531a05 authored by Florian Kaltenberger's avatar Florian Kaltenberger

Merge branch 'develop-nr-fixes' into 'develop-nr'

Develop nr fixes

See merge request !505
parents 151fced6 af42c109
Pipeline #11615 failed with stage
in 0 seconds
...@@ -130,8 +130,8 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, ...@@ -130,8 +130,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 %d, nb_prefix_samples0 %d, slot_offset %d, subframe_offset %d, sample_offset %d,rx_offset %d, frame_length_samples %d\n", ue->proc.proc_rxtx[(Ns>>1)&1].frame_rx,Ns, symbol, /*LOG_I(PHY,*/printf("slot_fep: frame %d: slot %d, symbol %d, nb_prefix_samples %d, nb_prefix_samples0 %d, slot_offset %d, sample_offset %d,rx_offset %d, frame_length_samples %d\n", ue->proc.proc_rxtx[(Ns>>1)&1].frame_rx,Ns, symbol,
nb_prefix_samples,nb_prefix_samples0,slot_offset,subframe_offset,sample_offset,rx_offset,frame_length_samples); nb_prefix_samples,nb_prefix_samples0,slot_offset,sample_offset,rx_offset,frame_length_samples);
#endif #endif
if (l==0) { if (l==0) {
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include "PHY/NR_REFSIG/refsig_defs_ue.h" #include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "filt16a_32.h" #include "filt16a_32.h"
#include "T.h" #include "T.h"
//#define DEBUG_PDSCH //#define DEBUG_PDCCH
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue, int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
...@@ -297,7 +297,7 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue, ...@@ -297,7 +297,7 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
// generate pilot // generate pilot
nr_pdcch_dmrs_rx(ue,eNB_offset,Ns,ue->nr_gold_pdcch[eNB_offset][Ns][symbol], &pilot[0],2000,nb_rb_coreset); nr_pdcch_dmrs_rx(ue,eNB_offset,Ns,ue->nr_gold_pdcch[eNB_offset][Ns>>1][symbol], &pilot[0],2000,nb_rb_coreset);
for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++) { for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++) {
...@@ -459,7 +459,7 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue, ...@@ -459,7 +459,7 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
break; break;
} }
if( (Ns== 2) && (l == 0)) //if( (Ns== 2) && (l == 0))
{ {
// do ifft of channel estimate // do ifft of channel estimate
for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++) for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++)
......
...@@ -821,8 +821,8 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue, ...@@ -821,8 +821,8 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
#ifdef NR_PDCCH_DCI_DEBUG #ifdef NR_PDCCH_DCI_DEBUG
printf("\t<-NR_PDCCH_DCI_DEBUG (nr_rx_pdcch)-> symbol_mon=(%d) and start_symbol=(%d)\n",symbol_mon,start_symbol); printf("\t<-NR_PDCCH_DCI_DEBUG (nr_rx_pdcch)-> symbol_mon=(%d) and start_symbol=(%d)\n",symbol_mon,start_symbol);
printf("\t<-NR_PDCCH_DCI_DEBUG (nr_rx_pdcch)-> coreset_freq_dom=(%ld) n_rb_offset=(%d) coreset_time_dur=(%d) n_shift=(%d) reg_bundle_size_L=(%d) coreset_interleaver_size_R=(%d) \n", printf("\t<-NR_PDCCH_DCI_DEBUG (nr_rx_pdcch)-> coreset_freq_dom=(%ld) n_rb_offset=(%d) coreset_time_dur=(%d) n_shift=(%d) reg_bundle_size_L=(%d) coreset_interleaver_size_R=(%d) scrambling_ID=(%d) \n",
coreset_freq_dom,n_rb_offset,coreset_time_dur,n_shift,reg_bundle_size_L,coreset_interleaver_size_R); coreset_freq_dom,n_rb_offset,coreset_time_dur,n_shift,reg_bundle_size_L,coreset_interleaver_size_R,pdcch_DMRS_scrambling_id);
#endif #endif
// //
......
...@@ -498,10 +498,8 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -498,10 +498,8 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
float **rxsig_t_dB; float **rxsig_t_dB;
float *time; float *time;
float *corr; float *corr;
/*
int16_t **chest_t; int16_t **chest_t;
int16_t **chest_f; int16_t **chest_f;
*/
int16_t *pdsch_llr; int16_t *pdsch_llr;
int16_t *pdsch_comp; int16_t *pdsch_comp;
//int16_t *pdsch_mag; //int16_t *pdsch_mag;
...@@ -519,10 +517,13 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -519,10 +517,13 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
int coded_bits_per_codeword = num_re*Qm; int coded_bits_per_codeword = num_re*Qm;
int symbol, first_symbol,nb_re; int symbol, first_symbol,nb_re;
int nb_rb_pdsch =50; int nb_rb_pdsch =50;
float ymax=1;
float **chest_t_abs;
float Re,Im;
float *chest_f_abs;
float *freq;
static int overlay = 0;
/* /*
float Re,Im,ymax=1;
float **chest_t_abs, *chest_f_abs;
float freq[nsymb_ce*nb_antennas_rx*nb_antennas_tx];
int frame = phy_vars_ue->proc.proc_rxtx[0].frame_rx; int frame = phy_vars_ue->proc.proc_rxtx[0].frame_rx;
int mcs = 0; int mcs = 0;
unsigned char harq_pid = 0; unsigned char harq_pid = 0;
...@@ -565,15 +566,15 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -565,15 +566,15 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
*/ */
I = (float*) calloc(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_slot*2,sizeof(float)); I = (float*) calloc(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_slot*2,sizeof(float));
Q = (float*) calloc(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_slot*2,sizeof(float)); Q = (float*) calloc(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_slot*2,sizeof(float));
/*
chest_t_abs = (float**) malloc(nb_antennas_rx*sizeof(float*)); chest_t_abs = (float**) malloc(nb_antennas_rx*sizeof(float*));
for (arx=0; arx<nb_antennas_rx; arx++) { for (arx=0; arx<nb_antennas_rx; arx++) {
chest_t_abs[arx] = (float*) calloc(frame_parms->ofdm_symbol_size,sizeof(float)); chest_t_abs[arx] = (float*) calloc(frame_parms->ofdm_symbol_size,sizeof(float));
} }
chest_f_abs = (float*) calloc(nsymb_ce*nb_antennas_rx*nb_antennas_tx,sizeof(float)); chest_f_abs = (float*) calloc(frame_parms->ofdm_symbol_size,sizeof(float));
*/ freq = (float*) calloc(frame_parms->ofdm_symbol_size,sizeof(float));
llr = (float*) calloc(coded_bits_per_codeword,sizeof(float)); // init to zero llr = (float*) calloc(coded_bits_per_codeword,sizeof(float)); // init to zero
bit = malloc(coded_bits_per_codeword*sizeof(float)); bit = malloc(coded_bits_per_codeword*sizeof(float));
...@@ -589,10 +590,9 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -589,10 +590,9 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
time = calloc(samples_per_frame,sizeof(float)); time = calloc(samples_per_frame,sizeof(float));
corr = calloc(samples_per_frame,sizeof(float)); corr = calloc(samples_per_frame,sizeof(float));
/*
chest_t = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id]; chest_t = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id];
chest_f = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id]; chest_f = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id];
*/
pbch_llr = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->llr; pbch_llr = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->llr;
pbch_comp = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0]; pbch_comp = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0];
...@@ -628,29 +628,37 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -628,29 +628,37 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
} }
if (phy_vars_ue->is_synchronized==0) { if (phy_vars_ue->is_synchronized==0) {
for (ind=0;ind<3;ind++) { for (ind=0;ind<3;ind++) {
if (pss_corr_ue[ind]) { if (pss_corr_ue[ind]) {
for (i=0; i<samples_per_frame; i++) { for (i=0; i<samples_per_frame; i++) {
corr[i] = (float) pss_corr_ue[ind][i]; corr[i] = (float) pss_corr_ue[ind][i];
time[i] = (float) i; time[i] = (float) i;
}
if (ind==0)
fl_set_xyplot_data(form->chest_t,time,corr,samples_per_frame,"","","");
else
fl_add_xyplot_overlay(form->chest_t,ind,time,corr,samples_per_frame,rx_antenna_colors[ind]);
overlay = 1;
} }
if (ind==0)
fl_set_xyplot_data(form->chest_t,time,corr,samples_per_frame,"","","");
else
fl_add_xyplot_overlay(form->chest_t,ind,time,corr,samples_per_frame,rx_antenna_colors[ind]);
} }
} }
else {
if (overlay) { //there was a previous overlay
fl_clear_xyplot(form->chest_t);
overlay = 0;
} }
/* // Channel Impulse Response
// Channel Impulse Response (still repeated format)
if (chest_t != NULL) { if (chest_t != NULL) {
ymax = 0; ymax = 0;
if (chest_t[0] !=NULL) { if (chest_t[0] !=NULL) {
for (i=0; i<(frame_parms->ofdm_symbol_size>>3); i++) { for (i=0; i<(frame_parms->ofdm_symbol_size>>3); i++) {
chest_t_abs[0][i] = (float) (chest_t[0][4*i]*chest_t[0][4*i]+chest_t[0][4*i+1]*chest_t[0][4*i+1]); chest_t_abs[0][i] = (float) (chest_t[0][2*i]*chest_t[0][2*i]+chest_t[0][2*i+1]*chest_t[0][2*i+1]);
time[i] = (float) i;
if (chest_t_abs[0][i] > ymax) if (chest_t_abs[0][i] > ymax)
ymax = chest_t_abs[0][i]; ymax = chest_t_abs[0][i];
...@@ -658,7 +666,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -658,7 +666,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
fl_set_xyplot_data(form->chest_t,time,chest_t_abs[0],(frame_parms->ofdm_symbol_size>>3),"","",""); fl_set_xyplot_data(form->chest_t,time,chest_t_abs[0],(frame_parms->ofdm_symbol_size>>3),"","","");
} }
/*
for (arx=1; arx<nb_antennas_rx; arx++) { for (arx=1; arx<nb_antennas_rx; arx++) {
if (chest_t[arx] !=NULL) { if (chest_t[arx] !=NULL) {
for (i=0; i<(frame_parms->ofdm_symbol_size>>3); i++) { for (i=0; i<(frame_parms->ofdm_symbol_size>>3); i++) {
...@@ -672,11 +680,12 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -672,11 +680,12 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
fl_set_xyplot_overlay_type(form->chest_t,arx,FL_DASHED_XYPLOT); fl_set_xyplot_overlay_type(form->chest_t,arx,FL_DASHED_XYPLOT);
} }
} }
*/
// Avoid flickering effect // Avoid flickering effect
// fl_get_xyplot_ybounds(form->chest_t,&ymin,&ymax); // Does not always work... // fl_get_xyplot_ybounds(form->chest_t,&ymin,&ymax); // Does not always work...
fl_set_xyplot_ybounds(form->chest_t,0,(double) ymax); fl_set_xyplot_ybounds(form->chest_t,0,(double) ymax);
} }
}
// Channel Frequency Response (includes 5 complex sample for filter) // Channel Frequency Response (includes 5 complex sample for filter)
if (chest_f != NULL) { if (chest_f != NULL) {
...@@ -685,7 +694,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -685,7 +694,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
for (atx=0; atx<nb_antennas_tx; atx++) { for (atx=0; atx<nb_antennas_tx; atx++) {
for (arx=0; arx<nb_antennas_rx; arx++) { for (arx=0; arx<nb_antennas_rx; arx++) {
if (chest_f[(atx<<1)+arx] != NULL) { if (chest_f[(atx<<1)+arx] != NULL) {
for (k=0; k<nsymb_ce; k++) { for (k=0; k<frame_parms->ofdm_symbol_size; k++) {
freq[ind] = (float)ind; freq[ind] = (float)ind;
Re = (float)(chest_f[(atx<<1)+arx][(2*k)]); Re = (float)(chest_f[(atx<<1)+arx][(2*k)]);
Im = (float)(chest_f[(atx<<1)+arx][(2*k)+1]); Im = (float)(chest_f[(atx<<1)+arx][(2*k)+1]);
...@@ -698,12 +707,13 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -698,12 +707,13 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
} }
// tx antenna 0 // tx antenna 0
fl_set_xyplot_xbounds(form->chest_f,0,nb_antennas_rx*nb_antennas_tx*nsymb_ce); //fl_set_xyplot_xbounds(form->chest_f,0,nb_antennas_rx*nb_antennas_tx*nsymb_ce);
//fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*frame_parms->symbols_per_tti,2); //fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*frame_parms->symbols_per_tti,2);
// fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*2,2); // fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*2,2);
fl_set_xyplot_xgrid(form->chest_f,FL_GRID_MAJOR); //fl_set_xyplot_xgrid(form->chest_f,FL_GRID_MAJOR);
fl_set_xyplot_data(form->chest_f,freq,chest_f_abs,nsymb_ce,"","",""); fl_set_xyplot_data(form->chest_f,freq,chest_f_abs,frame_parms->ofdm_symbol_size,"","","");
/*
for (arx=1; arx<nb_antennas_rx; arx++) { for (arx=1; arx<nb_antennas_rx; arx++) {
fl_add_xyplot_overlay(form->chest_f,1,&freq[arx*nsymb_ce],&chest_f_abs[arx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); fl_add_xyplot_overlay(form->chest_f,1,&freq[arx*nsymb_ce],&chest_f_abs[arx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]);
} }
...@@ -722,8 +732,8 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -722,8 +732,8 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
fl_add_xyplot_overlay(form->chest_f,atx,&freq[atx*nsymb_ce],&chest_f_abs[atx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); fl_add_xyplot_overlay(form->chest_f,atx,&freq[atx*nsymb_ce],&chest_f_abs[atx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]);
} }
} }
*/
} }
*/
// PBCH LLRs // PBCH LLRs
if (pbch_llr != NULL) { if (pbch_llr != NULL) {
...@@ -735,10 +745,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, ...@@ -735,10 +745,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
fl_set_xyplot_data(form->pbch_llr,bit_pbch,llr_pbch,864,"","",""); fl_set_xyplot_data(form->pbch_llr,bit_pbch,llr_pbch,864,"","","");
} }
if (phy_vars_ue->is_synchronized==1) first_symbol=1;
first_symbol=5;
else
first_symbol=1;
// PBCH I/Q of MF Output // PBCH I/Q of MF Output
if (pbch_comp!=NULL) { if (pbch_comp!=NULL) {
......
...@@ -2781,8 +2781,6 @@ void nr_ue_measurement_procedures( ...@@ -2781,8 +2781,6 @@ void nr_ue_measurement_procedures(
*/ */
eNB_id = 0; eNB_id = 0;
LOG_D(PHY,"start adjust sync l = %d slot = %d no timing %d\n",l, slot, ue->no_timing_correction); LOG_D(PHY,"start adjust sync l = %d slot = %d no timing %d\n",l, slot, ue->no_timing_correction);
if (ue->no_timing_correction==0) if (ue->no_timing_correction==0)
nr_adjust_synch_ue(&ue->frame_parms, nr_adjust_synch_ue(&ue->frame_parms,
...@@ -2791,7 +2789,6 @@ void nr_ue_measurement_procedures( ...@@ -2791,7 +2789,6 @@ void nr_ue_measurement_procedures(
nr_tti_rx, nr_tti_rx,
0, 0,
16384); 16384);
} }
...@@ -5064,7 +5061,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN ...@@ -5064,7 +5061,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
nr_slot_fep(ue, nr_slot_fep(ue,
l, l,
nr_tti_rx, nr_tti_rx<<1,
0, 0,
0, 0,
1, 1,
......
...@@ -268,11 +268,11 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) { ...@@ -268,11 +268,11 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) {
// Type0 PDCCH search space // Type0 PDCCH search space
dl_config->number_pdus = 1; dl_config->number_pdus = 1;
dl_config->dl_config_list[0].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DCI; dl_config->dl_config_list[0].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DCI;
dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.rnti = 0xaaaa; // to be set dl_config->dl_config_list[0].dci_config_pdu.dci_config_rel15.rnti = 0x1234; // to be set
uint64_t mask = 0x0; uint64_t mask = 0x0;
uint16_t num_rbs=48; uint16_t num_rbs=24;
uint16_t rb_offset=47; uint16_t rb_offset=0;
uint16_t cell_id=0; uint16_t cell_id=0;
uint16_t num_symbols=2; uint16_t num_symbols=2;
for(int i=0; i<(num_rbs/6); ++i){ // 38.331 Each bit corresponds a group of 6 RBs for(int i=0; i<(num_rbs/6); ++i){ // 38.331 Each bit corresponds a group of 6 RBs
...@@ -292,7 +292,7 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) { ...@@ -292,7 +292,7 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) {
uint32_t number_of_search_space_per_slot=1; uint32_t number_of_search_space_per_slot=1;
uint32_t first_symbol_index=0; uint32_t first_symbol_index=0;
uint32_t search_space_duration=1; // element of search space uint32_t search_space_duration=0; // element of search space
uint32_t coreset_duration; // element of coreset uint32_t coreset_duration; // element of coreset
coreset_duration = num_symbols * number_of_search_space_per_slot; coreset_duration = num_symbols * number_of_search_space_per_slot;
......
...@@ -602,7 +602,7 @@ static void *UE_thread_synch(void *arg) { ...@@ -602,7 +602,7 @@ static void *UE_thread_synch(void *arg) {
phy_scope_UE(form_ue[0], phy_scope_UE(form_ue[0],
PHY_vars_UE_g[0][0], PHY_vars_UE_g[0][0],
0,0,7); 0,0,1);
} }
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment