Commit 03393ddc authored by rmagueta's avatar rmagueta

Minor fixes for multiple antennas scenario

parent b3e5b83b
...@@ -196,8 +196,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, ...@@ -196,8 +196,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
nr_init_csi_rs(gNB, cfg->cell_config.phy_cell_id.value); nr_init_csi_rs(gNB, cfg->cell_config.phy_cell_id.value);
gNB->nr_srs_info = (nr_srs_info_t *)malloc16_clear(sizeof(nr_srs_info_t)); gNB->nr_srs_info = (nr_srs_info_t *)malloc16_clear(sizeof(nr_srs_info_t));
gNB->nr_srs_info->srs_generated_signal = (int32_t*)malloc16_clear(NR_NB_SC_PER_RB*NR_MAX_NB_RB*sizeof(int32_t)); gNB->nr_srs_info->srs_generated_signal = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t));
gNB->nr_srs_info->srs_received_signal = (int32_t*)malloc16_clear(NR_NB_SC_PER_RB*NR_MAX_NB_RB*sizeof(int32_t));
generate_ul_reference_signal_sequences(SHRT_MAX); generate_ul_reference_signal_sequences(SHRT_MAX);
...@@ -213,6 +212,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, ...@@ -213,6 +212,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
common_vars->txdataF = (int32_t **)malloc16(Ptx*sizeof(int32_t*)); common_vars->txdataF = (int32_t **)malloc16(Ptx*sizeof(int32_t*));
common_vars->rxdataF = (int32_t **)malloc16(Prx*sizeof(int32_t*)); common_vars->rxdataF = (int32_t **)malloc16(Prx*sizeof(int32_t*));
common_vars->beam_id = (uint8_t **)malloc16(Ptx*sizeof(uint8_t*)); common_vars->beam_id = (uint8_t **)malloc16(Ptx*sizeof(uint8_t*));
gNB->nr_srs_info->srs_received_signal = (int32_t **)malloc16(Prx*sizeof(int32_t*));
for (i=0;i<Ptx;i++){ for (i=0;i<Ptx;i++){
common_vars->txdataF[i] = (int32_t*)malloc16_clear(fp->samples_per_frame_wCP*sizeof(int32_t)); // [hna] samples_per_frame without CP common_vars->txdataF[i] = (int32_t*)malloc16_clear(fp->samples_per_frame_wCP*sizeof(int32_t)); // [hna] samples_per_frame without CP
...@@ -225,6 +225,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, ...@@ -225,6 +225,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
for (i=0;i<Prx;i++){ for (i=0;i<Prx;i++){
common_vars->rxdataF[i] = (int32_t*)malloc16_clear(fp->samples_per_frame_wCP*sizeof(int32_t)); common_vars->rxdataF[i] = (int32_t*)malloc16_clear(fp->samples_per_frame_wCP*sizeof(int32_t));
common_vars->rxdata[i] = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t)); common_vars->rxdata[i] = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t));
gNB->nr_srs_info->srs_received_signal[i] = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t));
} }
common_vars->debugBuff = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t)*100); common_vars->debugBuff = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t)*100);
common_vars->debugBuff_sample_offset = 0; common_vars->debugBuff_sample_offset = 0;
......
...@@ -324,8 +324,11 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, ...@@ -324,8 +324,11 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
srs_vars[gNB_id]->active = false; srs_vars[gNB_id]->active = false;
ue->nr_srs_info = (nr_srs_info_t *)malloc16_clear(sizeof(nr_srs_info_t)); ue->nr_srs_info = (nr_srs_info_t *)malloc16_clear(sizeof(nr_srs_info_t));
ue->nr_srs_info->srs_generated_signal = (int32_t*)malloc16_clear(NR_NB_SC_PER_RB*NR_MAX_NB_RB*sizeof(int32_t)); ue->nr_srs_info->srs_generated_signal = (int32_t *) malloc16_clear( (2*(fp->samples_per_frame)+2048)*sizeof(int32_t) );
ue->nr_srs_info->srs_received_signal = (int32_t*)malloc16_clear(NR_NB_SC_PER_RB*NR_MAX_NB_RB*sizeof(int32_t)); ue->nr_srs_info->srs_received_signal = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
for (i=0; i<fp->nb_antennas_rx; i++) {
ue->nr_srs_info->srs_received_signal[i] = (int32_t *) malloc16_clear( (2*(fp->samples_per_frame)+2048)*sizeof(int32_t) );
}
if (abstraction_flag == 0) { if (abstraction_flag == 0) {
for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) { for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
......
...@@ -322,7 +322,7 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB, ...@@ -322,7 +322,7 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB,
int slot, int slot,
nfapi_nr_srs_pdu_t *srs_pdu, nfapi_nr_srs_pdu_t *srs_pdu,
nr_srs_info_t *nr_srs_info, nr_srs_info_t *nr_srs_info,
int32_t *srs_received_signal); int32_t **srs_received_signal);
void init_prach_list(PHY_VARS_gNB *gNB); void init_prach_list(PHY_VARS_gNB *gNB);
void init_prach_ru_list(RU_t *ru); void init_prach_ru_list(RU_t *ru);
......
...@@ -89,14 +89,14 @@ void nr_fill_srs(PHY_VARS_gNB *gNB, ...@@ -89,14 +89,14 @@ void nr_fill_srs(PHY_VARS_gNB *gNB,
} }
int nr_get_srs_signal(PHY_VARS_gNB *gNB, int nr_get_srs_signal(PHY_VARS_gNB *gNB,
int frame, int frame,
int slot, int slot,
nfapi_nr_srs_pdu_t *srs_pdu, nfapi_nr_srs_pdu_t *srs_pdu,
nr_srs_info_t *nr_srs_info, nr_srs_info_t *nr_srs_info,
int32_t *srs_received_signal) { int32_t **srs_received_signal) {
if(nr_srs_info->n_symbs==0) { if(nr_srs_info->n_symbs==0) {
LOG_E(NR_PHY, "nr_srs_info was not generated yet!\n"); LOG_E(NR_PHY, "(%d.%d) nr_srs_info was not generated yet!\n", frame, slot);
return -1; return -1;
} }
...@@ -109,19 +109,24 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB, ...@@ -109,19 +109,24 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB,
int32_t *rx_signal; int32_t *rx_signal;
for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) { for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) {
memset(srs_received_signal[ant], 0, frame_parms->samples_per_frame*sizeof(int32_t));
rx_signal = &rxdataF[ant][symbol_offset + frame_parms->first_carrier_offset]; rx_signal = &rxdataF[ant][symbol_offset + frame_parms->first_carrier_offset];
for(int sc_idx = 0; sc_idx < nr_srs_info->n_symbs; sc_idx++) { for(int sc_idx = 0; sc_idx < nr_srs_info->n_symbs; sc_idx++) {
srs_received_signal[nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset] = rx_signal[nr_srs_info->subcarrier_idx[sc_idx]]; srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset] = rx_signal[nr_srs_info->subcarrier_idx[sc_idx]];
#ifdef SRS_DEBUG #ifdef SRS_DEBUG
if(nr_srs_info->subcarrier_idx[sc_idx]%12 == 0) { if(sc_idx == 0) {
LOG_I(NR_PHY,"::::::::::::: %i :::::::::::::\n", nr_srs_info->subcarrier_idx[sc_idx]/12); LOG_I(NR_PHY,"________ Rx antenna %i ________\n", ant);
} }
LOG_I(NR_PHY,"(%i) \t%i\t%i\n", if(nr_srs_info->subcarrier_idx[sc_idx]%12 == 0) {
nr_srs_info->subcarrier_idx[sc_idx], LOG_I(NR_PHY,"::::::::::::: %i :::::::::::::\n", nr_srs_info->subcarrier_idx[sc_idx]/12);
srs_received_signal[nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]&0xFFFF, }
(srs_received_signal[nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]>>16)&0xFFFF); LOG_I(NR_PHY,"(%i) \t%i\t%i\n",
nr_srs_info->subcarrier_idx[sc_idx],
srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]&0xFFFF,
(srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]>>16)&0xFFFF);
#endif #endif
} }
} }
......
...@@ -244,7 +244,7 @@ typedef struct { ...@@ -244,7 +244,7 @@ typedef struct {
uint16_t n_symbs; uint16_t n_symbs;
uint16_t subcarrier_idx[6*NR_MAX_NB_RB]; uint16_t subcarrier_idx[6*NR_MAX_NB_RB];
int32_t *srs_generated_signal; int32_t *srs_generated_signal;
int32_t *srs_received_signal; int32_t **srs_received_signal;
} nr_srs_info_t; } nr_srs_info_t;
typedef struct NR_DL_FRAME_PARMS NR_DL_FRAME_PARMS; typedef struct NR_DL_FRAME_PARMS NR_DL_FRAME_PARMS;
......
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