Commit 3f358655 authored by lfarizav's avatar lfarizav

Fixing some errors

parent 2bdbdd5b
...@@ -1101,7 +1101,6 @@ int phy_init_lte_ue(PHY_VARS_UE *ue, ...@@ -1101,7 +1101,6 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
int i,j,k,l; int i,j,k,l;
int eNB_id; int eNB_id;
int th_id; int th_id;
int **rxdataF_temp;
printf("Initializing UE vars (abstraction %"PRIu8") for eNB TXant %"PRIu8", UE RXant %"PRIu8"\n",abstraction_flag,fp->nb_antennas_tx,fp->nb_antennas_rx); printf("Initializing UE vars (abstraction %"PRIu8") for eNB TXant %"PRIu8", UE RXant %"PRIu8"\n",abstraction_flag,fp->nb_antennas_tx,fp->nb_antennas_rx);
LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]\n", ue->Mod_id+NB_eNB_INST); LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]\n", ue->Mod_id+NB_eNB_INST);
...@@ -1405,17 +1404,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue, ...@@ -1405,17 +1404,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
} }
} }
} }
// Channel estimates
for (eNB_id=0; eNB_id<7; eNB_id++) {
for (i=0; i<fp->nb_antennas_rx; i++)
for (j=0; j<4; j++) {
int idx = (j<<1) + i;
for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
free(common_vars->common_vars_rx_data_per_thread[th_id].dl_ch_estimates[eNB_id][idx]);
common_vars->common_vars_rx_data_per_thread[th_id].dl_ch_estimates[eNB_id][idx] = (int32_t*)malloc16_clear( sizeof(int32_t)*fp->symbols_per_tti*(fp->ofdm_symbol_size+LTE_CE_FILTER_LENGTH) );
}
}
}
return 0; return 0;
} }
...@@ -1433,7 +1422,6 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB, ...@@ -1433,7 +1422,6 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
int i, j, eNB_id, UE_id; int i, j, eNB_id, UE_id;
int re; int re;
int **rxdataF_temp;
eNB->total_dlsch_bitrate = 0; eNB->total_dlsch_bitrate = 0;
eNB->total_transmitted_bits = 0; eNB->total_transmitted_bits = 0;
...@@ -1471,7 +1459,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB, ...@@ -1471,7 +1459,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
// TX vars // TX vars
if (eNB->node_function != NGFI_RCC_IF4p5) if (eNB->node_function != NGFI_RCC_IF4p5)
common_vars->txdata[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_tx*sizeof(int32_t*)); common_vars->txdata[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_tx*sizeof(int32_t*));
common_vars->txdataF[eNB_id] = (int32_t **)malloc16(NB_ANTENNA_PORTS_ENB*sizeof(int32_t*)); common_vars->txdataF[eNB_id] = (int32_t **)malloc16(NB_ANTENNA_PORTS_ENB*sizeof(int32_t*));
common_vars->txdataF_BF[eNB_id] = (int32_t **)malloc16(fp->nb_antennas_tx*sizeof(int32_t*)); common_vars->txdataF_BF[eNB_id] = (int32_t **)malloc16(fp->nb_antennas_tx*sizeof(int32_t*));
...@@ -1528,16 +1516,12 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB, ...@@ -1528,16 +1516,12 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
// RX vars // RX vars
common_vars->rxdataF[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) );
for (i=0; i<fp->nb_antennas_rx; i++) {
common_vars->rxdataF[eNB_id][i] = (int32_t*)malloc16_clear(2*fp->ofdm_symbol_size*fp->symbols_per_tti*sizeof(int32_t));
}
if (eNB->node_function != NGFI_RCC_IF4p5) { if (eNB->node_function != NGFI_RCC_IF4p5) {
common_vars->rxdata[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) ); common_vars->rxdata[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) );
common_vars->rxdata_7_5kHz[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) ); common_vars->rxdata_7_5kHz[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) );
} }
common_vars->rxdataF[eNB_id] = (int32_t**)malloc16(fp->nb_antennas_rx*sizeof(int32_t*) );
for (i=0; i<fp->nb_antennas_rx; i++) { for (i=0; i<fp->nb_antennas_rx; i++) {
if (eNB->node_function != NGFI_RCC_IF4p5) { if (eNB->node_function != NGFI_RCC_IF4p5) {
...@@ -1548,14 +1532,15 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB, ...@@ -1548,14 +1532,15 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
// allocate 2 subframes of I/Q signal data (time, 7.5 kHz offset) // allocate 2 subframes of I/Q signal data (time, 7.5 kHz offset)
common_vars->rxdata_7_5kHz[eNB_id][i] = (int32_t*)malloc16_clear( 2*fp->samples_per_tti*2*sizeof(int32_t) ); common_vars->rxdata_7_5kHz[eNB_id][i] = (int32_t*)malloc16_clear( 2*fp->samples_per_tti*2*sizeof(int32_t) );
} }
//if (eNB->node_function != NGFI_RRU_IF5) if (eNB->node_function != NGFI_RRU_IF5)
// allocate 2 subframes of I/Q signal data (frequency) // allocate 2 subframes of I/Q signal data (frequency)
// common_vars->rxdataF[eNB_id][i] = (int32_t*)malloc16_clear(sizeof(int32_t)*(2*fp->ofdm_symbol_size*fp->symbols_per_tti) ); common_vars->rxdataF[eNB_id][i] = (int32_t*)malloc16_clear(sizeof(int32_t)*(2*fp->ofdm_symbol_size*fp->symbols_per_tti) );
#ifdef DEBUG_PHY #ifdef DEBUG_PHY
printf("[openair][LTE_PHY][INIT] common_vars->rxdata[%d][%d] = %p (%lu bytes)\n",eNB_id,i,common_vars->rxdata[eNB_id][i],fp->samples_per_tti*10*sizeof(int32_t)); printf("[openair][LTE_PHY][INIT] common_vars->rxdata[%d][%d] = %p (%lu bytes)\n",eNB_id,i,common_vars->rxdata[eNB_id][i],fp->samples_per_tti*10*sizeof(int32_t));
if (eNB->node_function != NGFI_RRU_IF5) if (eNB->node_function != NGFI_RRU_IF5)
printf("[openair][LTE_PHY][INIT] common_vars->rxdata_7_5kHz[%d][%d] = %p (%lu bytes)\n",eNB_id,i,common_vars->rxdata_7_5kHz[eNB_id][i],fp->samples_per_tti*2*sizeof(int32_t)); printf("[openair][LTE_PHY][INIT] common_vars->rxdata_7_5kHz[%d][%d] = %p (%lu bytes)\n",eNB_id,i,common_vars->rxdata_7_5kHz[eNB_id][i],fp->samples_per_tti*2*sizeof(int32_t));
#endif #endif
common_vars->rxdataF[eNB_id][i] = (int32_t*)malloc16_clear(sizeof(int32_t)*(fp->ofdm_symbol_size*fp->symbols_per_tti) );
} }
......
...@@ -680,7 +680,7 @@ int32_t lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -680,7 +680,7 @@ int32_t lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
int aa; int aa;
int N_symb,symbol; int N_symb,symbol;
uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx; uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx;
int do_ofdm_mod = PHY_vars_UE_g[0][0]->do_ofdm_mod;
#ifdef DEBUG_SRS #ifdef DEBUG_SRS
char fname[40], vname[40]; char fname[40], vname[40];
#endif #endif
......
...@@ -56,8 +56,10 @@ void send_IF4p5(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type ...@@ -56,8 +56,10 @@ void send_IF4p5(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type
uint16_t symbol_id=0, element_id=0; uint16_t symbol_id=0, element_id=0;
uint16_t db_fulllength, db_halflength; uint16_t db_fulllength, db_halflength;
int slotoffsetF=0, blockoffsetF=0; int slotoffsetF=0, blockoffsetF=0;
// write_output("sendif405_rxsigF_UL.m","sendif4p5_rxsF_UL", &eNB->common_vars.rxdata[0][0],10*fp->ofdm_symbol_size*fp->symbols_per_tti,1,16); write_output("sendif405_rxsigF_UL.m","sendif4p5_rxsF_UL",rxdataF[0],2*fp->ofdm_symbol_size*fp->symbols_per_tti,1,16);
//write_output("sendif405_txsigF_UL.m","sendif4p5_txsF_UL", &eNB->common_vars.txdata[0][0],10*fp->ofdm_symbol_size*fp->symbols_per_tti,1,16); write_output("sendif405_txsigF_UL.m","sendif4p5_txsF_UL",&PHY_vars_UE_g[0][0]->common_vars.txdataF[0][0],10*fp->ofdm_symbol_size*fp->symbols_per_tti,1,16);
for (int idx=0;idx<10;idx++)
printf("dumping UL raw rx send_if4p5 subframe %d: rxdataF[%d] = (%d,%d)\n", subframe, idx, ((short*)&rxdataF[0][idx])[0], ((short*)&rxdataF[0][idx])[1]);
uint16_t *data_block=NULL, *i=NULL; uint16_t *data_block=NULL, *i=NULL;
IF4p5_header_t *packet_header=NULL; IF4p5_header_t *packet_header=NULL;
...@@ -229,7 +231,8 @@ void recv_IF4p5(PHY_VARS_eNB *eNB, int *frame, int *subframe, uint16_t *packet_t ...@@ -229,7 +231,8 @@ void recv_IF4p5(PHY_VARS_eNB *eNB, int *frame, int *subframe, uint16_t *packet_t
uint16_t db_fulllength, db_halflength; uint16_t db_fulllength, db_halflength;
int slotoffsetF=0, blockoffsetF=0; int slotoffsetF=0, blockoffsetF=0;
eth_state_t *eth = (eth_state_t*) (eNB->ifdevice.priv); eth_state_t *eth = (eth_state_t*) (eNB->ifdevice.priv);
for (int idx=0;idx<10;idx++)
// printf("dumping UL raw rx rvc_if4p5 subframe %d: rxdataF[%d] = (%d,%d)\n", *subframe, idx, ((short*)&rxdataF[0][idx])[0], ((short*)&rxdataF[0][idx])[1]);
if (eNB->CC_id==0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 ); if (eNB->CC_id==0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 );
if (eNB->node_function == NGFI_RRU_IF4p5) { if (eNB->node_function == NGFI_RRU_IF4p5) {
......
...@@ -421,7 +421,7 @@ void mch_extract_rbs_freq(int **rxdataF, ...@@ -421,7 +421,7 @@ void mch_extract_rbs_freq(int **rxdataF,
*(int16_t*)(1+&rxdataF[aarx][i+frame_parms->first_carrier_offset + (symbol*frame_parms->ofdm_symbol_size)])); *(int16_t*)(1+&rxdataF[aarx][i+frame_parms->first_carrier_offset + (symbol*frame_parms->ofdm_symbol_size)]));
*/ */
rxdataF_ext[aarx][j+symbol*(frame_parms->N_RB_DL*12)] = rxdataF[aarx][i+frame_parms->first_carrier_offset + (symbol*frame_parms->ofdm_symbol_size)+subframe*(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)]; rxdataF_ext[aarx][j+symbol*(frame_parms->N_RB_DL*12)] = rxdataF[aarx][i+frame_parms->first_carrier_offset + (symbol*frame_parms->ofdm_symbol_size)+subframe*(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)];
rxdataF_ext[aarx][(frame_parms->N_RB_DL*3)+j+symbol*(frame_parms->N_RB_DL*12)] = rxdataF[aarx][i+1+ (symbol*frame_parms->ofdm_symbol_size)]; rxdataF_ext[aarx][(frame_parms->N_RB_DL*3)+j+symbol*(frame_parms->N_RB_DL*12)] = rxdataF[aarx][i+1+ (symbol*frame_parms->ofdm_symbol_size)+subframe*(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)];
dl_ch_estimates_ext[aarx][j+symbol*(frame_parms->N_RB_DL*12)+subframe*(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)] = dl_ch_estimates[aarx][i+(symbol*frame_parms->ofdm_symbol_size)]; dl_ch_estimates_ext[aarx][j+symbol*(frame_parms->N_RB_DL*12)+subframe*(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)] = dl_ch_estimates[aarx][i+(symbol*frame_parms->ofdm_symbol_size)];
dl_ch_estimates_ext[aarx][(frame_parms->N_RB_DL*3)+j+symbol*(frame_parms->N_RB_DL*12)] = dl_ch_estimates[aarx][i+(frame_parms->N_RB_DL*6)+(symbol*frame_parms->ofdm_symbol_size)]; dl_ch_estimates_ext[aarx][(frame_parms->N_RB_DL*3)+j+symbol*(frame_parms->N_RB_DL*12)] = dl_ch_estimates[aarx][i+(frame_parms->N_RB_DL*6)+(symbol*frame_parms->ofdm_symbol_size)];
} }
......
...@@ -2383,7 +2383,6 @@ void rx_prach_freq(PHY_VARS_eNB *eNB, ...@@ -2383,7 +2383,6 @@ void rx_prach_freq(PHY_VARS_eNB *eNB,
>>>>>>> origin/fix-if4p5 >>>>>>> origin/fix-if4p5
#endif #endif
write_output("rxsigF.m","prach_rxF",rxsigF[0],24576,1,16); write_output("rxsigF.m","prach_rxF",rxsigF[0],24576,1,16);
printf("ok in prach2 \n");
return; return;
} else if (eNB->node_function == NGFI_RCC_IF4p5) { } else if (eNB->node_function == NGFI_RCC_IF4p5) {
k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL; k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL;
......
...@@ -2007,7 +2007,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) { ...@@ -2007,7 +2007,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
{ {
LOG_D(PHY,"[eNB %d][RAPROC][Freq] Frame %d, Subframe %d : PRACH RX Signal Power : %d dBm\n",eNB->Mod_id, LOG_D(PHY,"[eNB %d][RAPROC][Freq] Frame %d, Subframe %d : PRACH RX Signal Power : %d dBm\n",eNB->Mod_id,
frame,subframe,dB_fixed(signal_energy(&eNB->common_vars.rxdataF[0][0][subframe*fp->symbols_per_tti*fp->ofdm_symbol_size],512)) - eNB->rx_total_gain_dB); frame,subframe,dB_fixed(signal_energy(&eNB->common_vars.rxdataF[0][0][subframe*fp->symbols_per_tti*fp->ofdm_symbol_size],512)) - eNB->rx_total_gain_dB);
rx_prach_freq(eNB, rx_prach_freq(eNB,
preamble_energy_list, preamble_energy_list,
preamble_delay_list, preamble_delay_list,
frame, frame,
...@@ -2023,7 +2023,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) { ...@@ -2023,7 +2023,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
preamble_delay_list, preamble_delay_list,
frame, frame,
0); 0);
write_output("prach_rxF_comp1.m","prach_rxF_comp1",eNB->prach_vars.prachF,1024,1,1); //write_output("prach_rxF_comp1.m","prach_rxF_comp1",eNB->prach_vars.prachF,1024,1,1);
} }
} else { } else {
for (UE_id=0; UE_id<NB_UE_INST; UE_id++) { for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
...@@ -2639,16 +2639,17 @@ void fep0(PHY_VARS_eNB *eNB,int slot) { ...@@ -2639,16 +2639,17 @@ void fep0(PHY_VARS_eNB *eNB,int slot) {
int do_ofdm_mod = PHY_vars_UE_g[0][0]->do_ofdm_mod; int do_ofdm_mod = PHY_vars_UE_g[0][0]->do_ofdm_mod;
// printf("fep0: slot %d\n",slot); // printf("fep0: slot %d\n",slot);
if (!do_ofdm_mod) if (!do_ofdm_mod){
remove_7_5_kHz(eNB,(slot&1)+(proc->subframe_rx<<1)); remove_7_5_kHz(eNB,(slot&1)+(proc->subframe_rx<<1));
for (l=0; l<fp->symbols_per_tti/2; l++) { for (l=0; l<fp->symbols_per_tti/2; l++) {
slot_fep_ul(fp, slot_fep_ul(fp,
&eNB->common_vars, &eNB->common_vars,
l, l,
(slot&1)+(proc->subframe_rx<<1), (slot&1)+(proc->subframe_rx<<1),
0, 0,
0 0
); );
}
} }
} }
...@@ -2941,7 +2942,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const ...@@ -2941,7 +2942,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
#ifdef DEBUG_PHY_PROC #ifdef DEBUG_PHY_PROC
LOG_D(PHY,"[eNB %d] Frame %d: Doing phy_procedures_eNB_uespec_RX(%d)\n",eNB->Mod_id,frame, subframe); LOG_D(PHY,"[eNB %d] Frame %d: Doing phy_procedures_eNB_uespec_RX(%d)\n",eNB->Mod_id,frame, subframe);
#endif #endif
LOG_D(PHY,"[eNB %d] Frame %d: Doing phy_procedures_eNB_uespec_RX(%d)\n",eNB->Mod_id,frame, subframe);
eNB->rb_mask_ul[0]=0; eNB->rb_mask_ul[0]=0;
eNB->rb_mask_ul[1]=0; eNB->rb_mask_ul[1]=0;
......
...@@ -2626,10 +2626,10 @@ void ue_measurement_procedures( ...@@ -2626,10 +2626,10 @@ void ue_measurement_procedures(
if (l==0) { if (l==0) {
// UE measurements on symbol 0 // UE measurements on symbol 0
if (abstraction_flag==0) { if (abstraction_flag==0) {
if (ue->do_ofdm_mod){//frequency analysis if (ue->do_ofdm_mod){//frequency analysis
LOG_D(PHY,"Calling measurements subframe %d, thread[%d].rxdataF %p\n",subframe_rx,(slot>>1)&0x1,ue->common_vars.common_vars_rx_data_per_thread[(slot>>1)&0x1].rxdataF); LOG_D(PHY,"Calling measurements subframe %d, thread[%d].rxdataF %p\n",subframe_rx,(slot>>1)&0x1,ue->common_vars.common_vars_rx_data_per_thread[(slot>>1)&0x1].rxdataF);
lte_ue_measurements(ue, lte_ue_measurements(ue,
(subframe_rx*frame_parms->samples_per_tti+ue->rx_offset)%(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME), (subframe_rx*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti+ue->rx_offset)%(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME),
(subframe_rx == 1) ? 1 : 0, (subframe_rx == 1) ? 1 : 0,
0, 0,
0, 0,
...@@ -3543,7 +3543,7 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs ...@@ -3543,7 +3543,7 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,int eNB_id,int abs
if (abstraction_flag == 0 ) { if (abstraction_flag == 0 ) {
for (l=2; l<12; l++) { for (l=2; l<12; l++) {
if (ue->do_ofdm_mod) if (ue->do_ofdm_mod)
slot_fep_mbsfn(ue, slot_fep_mbsfn_freq(ue,
l, l,
subframe_rx, subframe_rx,
0,0);//ue->rx_offset,0); 0,0);//ue->rx_offset,0);
......
...@@ -2173,8 +2173,8 @@ if (do_ofdm_mod){ ...@@ -2173,8 +2173,8 @@ if (do_ofdm_mod){
phy_vars_eNB[CC_id]->common_vars.txdataF[0][i][j] = 16-j; phy_vars_eNB[CC_id]->common_vars.txdataF[0][i][j] = 16-j;
} }
} }
} }
else{ else{
for (i=0; i<frame_parms->nb_antennas_rx; i++) { for (i=0; i<frame_parms->nb_antennas_rx; i++) {
card = i/4; card = i/4;
ant = i%4; ant = i%4;
...@@ -2204,7 +2204,7 @@ if (do_ofdm_mod){ ...@@ -2204,7 +2204,7 @@ if (do_ofdm_mod){
} }
} }
} }
} }
else { // not memory-mapped DMA else { // not memory-mapped DMA
//nothing to do, everything already allocated in lte_init //nothing to do, everything already allocated in lte_init
/* /*
......
...@@ -493,8 +493,6 @@ static void *UE_thread_synch_freq(void *arg) { ...@@ -493,8 +493,6 @@ static void *UE_thread_synch_freq(void *arg) {
int freq_offset=0; int freq_offset=0;
char threadname[128]; char threadname[128];
//int do_ofdm_mod = UE->do_ofdm_mod;
cpu_set_t cpuset; cpu_set_t cpuset;
CPU_ZERO(&cpuset); CPU_ZERO(&cpuset);
if ( threads.iq != -1 ) if ( threads.iq != -1 )
......
...@@ -704,6 +704,7 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N ...@@ -704,6 +704,7 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N
// Compute RX signal for eNB = eNB_id // Compute RX signal for eNB = eNB_id
for (UE_id=0; UE_id<NB_UE_INST; UE_id++) { for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
printf("ue->generate_ul_signal[%d] %d\n",eNB_id,PHY_vars_UE_g[UE_id][CC_id]->generate_ul_signal[eNB_id]); printf("ue->generate_ul_signal[%d] %d\n",eNB_id,PHY_vars_UE_g[UE_id][CC_id]->generate_ul_signal[eNB_id]);
printf("[channel_sim_UL_time] subframe %d\n",subframe);
txdata = PHY_vars_UE_g[UE_id][CC_id]->common_vars.txdata; txdata = PHY_vars_UE_g[UE_id][CC_id]->common_vars.txdata;
sf_offset = subframe*frame_parms->samples_per_tti; sf_offset = subframe*frame_parms->samples_per_tti;
//for (int idx=0;idx<10;idx++) printf("dumping UL raw subframe %d: txdata[%d] = (%d,%d)\n", subframe, idx, ((short*)&txdata[0][sf_offset+idx])[0], ((short*)&txdata[0][sf_offset+idx])[1]); //for (int idx=0;idx<10;idx++) printf("dumping UL raw subframe %d: txdata[%d] = (%d,%d)\n", subframe, idx, ((short*)&txdata[0][sf_offset+idx])[0], ((short*)&txdata[0][sf_offset+idx])[1]);
...@@ -911,10 +912,11 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][ ...@@ -911,10 +912,11 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
txdataF = PHY_vars_UE_g[UE_id][CC_id]->common_vars.txdataF; txdataF = PHY_vars_UE_g[UE_id][CC_id]->common_vars.txdataF;
AssertFatal(txdataF != NULL,"txdataF is null\n"); AssertFatal(txdataF != NULL,"txdataF is null\n");
sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti; sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;
for (int idx=subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx<(subframe+1)*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx++){ printf("[channel_sim_UL_freq] subframe %d\n",subframe);
/*for (int idx=subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx<(subframe+1)*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx++){
if (((short*)&txdataF[0][idx])[0]!=0 || ((short*)&txdataF[0][idx])[1]!=0) if (((short*)&txdataF[0][idx])[0]!=0 || ((short*)&txdataF[0][idx])[1]!=0)
printf("dumping UL raw subframet %d: txdataF[%d] = (%d,%d)\n", subframe, idx, ((short*)&txdataF[0][idx])[0], ((short*)&txdataF[0][idx])[1]); printf("dumping UL raw subframet %d: txdataF[%d] = (%d,%d)\n", subframe, idx, ((short*)&txdataF[0][idx])[0], ((short*)&txdataF[0][idx])[1]);
} }*/
write_output("chsim_txsigF_UL.m","chsm_txsF_UL", &txdataF[0][0],10*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16); write_output("chsim_txsigF_UL.m","chsm_txsF_UL", &txdataF[0][0],10*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16);
if (((double)PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm[subframe] + if (((double)PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm[subframe] +
...@@ -1001,10 +1003,10 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][ ...@@ -1001,10 +1003,10 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti, frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,
1e3/UE2eNB[0][eNB_id][CC_id]->sampling_rate, // sampling time (ns) 1e3/UE2eNB[0][eNB_id][CC_id]->sampling_rate, // sampling time (ns)
(double)PHY_vars_eNB_g[eNB_id][CC_id]->rx_total_gain_dB - 66.227); // rx_gain (dB) (66.227 = 20*log10(pow2(11)) = gain from the adc that will be applied later) (double)PHY_vars_eNB_g[eNB_id][CC_id]->rx_total_gain_dB - 66.227); // rx_gain (dB) (66.227 = 20*log10(pow2(11)) = gain from the adc that will be applied later)
for (int idx=subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx<(subframe+1)*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx++){ /*for (int idx=subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx<(subframe+1)*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx++){
if (((short*)&txdataF[0][idx])[0]!=0 || ((short*)&txdataF[0][idx])[1]!=0) if (((short*)&txdataF[0][idx])[0]!=0 || ((short*)&txdataF[0][idx])[1]!=0)
printf("dumping UL raw rx subframe (input) %d: rxdataF[%d] = (%f,%f)\n", subframe, idx, r_re_p_f[0][idx-subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti],r_im_p_f[0][idx-subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti]); printf("dumping UL raw rx subframe (input) %d: rxdataF[%d] = (%f,%f)\n", subframe, idx, r_re_p_f[0][idx-subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti],r_im_p_f[0][idx-subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti]);
} }*/
#ifdef DEBUG_SIM #ifdef DEBUG_SIM
rx_pwr = signal_energy_fp(r_re_p_f,r_im_p_f,nb_antennas_rx,frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,0)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL); rx_pwr = signal_energy_fp(r_re_p_f,r_im_p_f,nb_antennas_rx,frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,0)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
...@@ -1014,16 +1016,16 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][ ...@@ -1014,16 +1016,16 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
sf_offset = 0;//subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti; sf_offset = 0;//subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;
adc(r_re_p_f, adc(r_re_p_f,
r_im_p_f, r_im_p_f,
0, sf_offset,
sf_offset, sf_offset,
rxdataF, rxdataF,
nb_antennas_rx, nb_antennas_rx,
frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti, frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,
12); 12);
for (int idx=subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx<(subframe+1)*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx++){ /*for (int idx=0;idx<frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx++){
if (((short*)&txdataF[0][idx])[0]!=0 || ((short*)&txdataF[0][idx])[1]!=0) if (((short*)&txdataF[0][idx+subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti])[0]!=0 || ((short*)&txdataF[0][idx+subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti])[1]!=0)
printf("dumping UL raw rx subframe %d: rxdataF[%d] = (%d,%d)\n", subframe, idx, ((short*)&rxdataF[0][idx])[0], ((short*)&rxdataF[0][idx])[1]); printf("dumping UL raw rx subframe %d: rxdataF[%d] = (%d,%d)\n", subframe, idx, ((short*)&rxdataF[0][idx])[0], ((short*)&rxdataF[0][idx])[1]);
} }*/
write_output("chsim_rxsigF_UL.m","chsm_rxsF_UL", (void*)rxdataF[0],2*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16); write_output("chsim_rxsigF_UL.m","chsm_rxsF_UL", (void*)rxdataF[0],2*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16);
#ifdef DEBUG_SIM #ifdef DEBUG_SIM
...@@ -1277,42 +1279,4 @@ void init_channel_vars_freq(LTE_DL_FRAME_PARMS *frame_parms, double ***s_re_f,do ...@@ -1277,42 +1279,4 @@ void init_channel_vars_freq(LTE_DL_FRAME_PARMS *frame_parms, double ***s_re_f,do
pthread_mutex_init(&UE_output_mutex[i],NULL); pthread_mutex_init(&UE_output_mutex[i],NULL);
pthread_mutex_init(&UE_PRACH_output_mutex[i],NULL); pthread_mutex_init(&UE_PRACH_output_mutex[i],NULL);
} }
// Channel estimates initialization for eNB
/*for (eNB_id=0; eNB_id<1; eNB_id++) {//eNB_id<NB_ENB_INST
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++){
PHY_vars_eNB_g[eNB_id][CC_id]->common_vars.rxdataF[eNB_id] = (int32_t**)malloc16(frame_parms->nb_antennas_rx*sizeof(int32_t*) );
PHY_vars_eNB_g[eNB_id][CC_id]->common_vars.txdataF[eNB_id] = (int32_t**)malloc16(NB_ANTENNA_PORTS_ENB*sizeof(int32_t*) );
for (i=0; i<frame_parms->nb_antennas_rx; i++) {
free( PHY_vars_eNB_g[eNB_id][CC_id]->common_vars.rxdataF[i] );
free( PHY_vars_eNB_g[eNB_id][CC_id]->common_vars.txdataF[i] );
PHY_vars_eNB_g[eNB_id][CC_id]->common_vars.rxdataF[eNB_id][i] = (int32_t *)malloc16_clear(10*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*sizeof(int32_t) );
PHY_vars_eNB_g[eNB_id][CC_id]->common_vars.txdataF[eNB_id][i] = (int32_t *)malloc16_clear(10*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*sizeof(int32_t) );
}
}
}*/
// Channel estimates initialization for UE
/*for (UE_id=0;UE_id<NB_UE_INST;UE_id++){
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++){
// Channel estimates
for (eNB_id=0; eNB_id<NB_UE_INST; eNB_id++) {
for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
PHY_vars_UE_g[UE_id][CC_id]->common_vars.common_vars_rx_data_per_thread[th_id].dl_ch_estimates[eNB_id] = (int32_t**)malloc16_clear(8*sizeof(int32_t*));
}
for (i=0; i<frame_parms->nb_antennas_rx; i++)
for (j=0; j<4; j++) {
int idx = (j<<1) + i;
for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
free(PHY_vars_UE_g[UE_id][CC_id]->common_vars.common_vars_rx_data_per_thread[th_id].dl_ch_estimates[eNB_id][idx]);
PHY_vars_UE_g[UE_id][CC_id]->common_vars.common_vars_rx_data_per_thread[th_id].dl_ch_estimates[eNB_id][idx] = (int32_t*)malloc16_clear( sizeof(int32_t)*frame_parms->symbols_per_tti*(frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH) );
}
}
}
}
}*/
} }
...@@ -1097,7 +1097,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void * ...@@ -1097,7 +1097,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
frame = (last/(10*PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.samples_per_tti))%1023; frame = (last/(10*PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.samples_per_tti))%1023;
} }
//n_ra_prb = get_prach_prb_offset(frame_parms, PHY_vars_UE_g[0][CC_id]->prach_resources[eNB_id]->ra_TDD_map_index, PHY_vars_UE_g[0][CC_id]->proc.proc_rxtx[subframe&0x1].frame_tx); //n_ra_prb = get_prach_prb_offset(frame_parms, PHY_vars_UE_g[0][CC_id]->prach_resources[eNB_id]->ra_TDD_map_index, PHY_vars_UE_g[0][CC_id]->proc.proc_rxtx[subframe&0x1].frame_tx);
printf("[oaisim_functs] subframe %d, frame %d\n",subframe,frame); printf("[oaisim_functs]eNB_trx_read UL subframe %d, frame %d\n",subframe,frame);
LOG_D(PHY,"eNB_trx_read generating UL subframe %d (Ts %llu, current TS %llu)\n", LOG_D(PHY,"eNB_trx_read generating UL subframe %d (Ts %llu, current TS %llu)\n",
subframe,(unsigned long long)*ptimestamp, subframe,(unsigned long long)*ptimestamp,
(unsigned long long)current_eNB_rx_timestamp[eNB_id][CC_id]); (unsigned long long)current_eNB_rx_timestamp[eNB_id][CC_id]);
...@@ -1116,7 +1116,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void * ...@@ -1116,7 +1116,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
0, // frame is only used for abstraction 0, // frame is only used for abstraction
eNB_id, eNB_id,
CC_id); CC_id);
write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][CC_id]->prach_vars[0]->prachF,12*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16); //write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][CC_id]->prach_vars[0]->prachF,12*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16);
//generate_prach(PHY_vars_UE_g[0][0],eNB_id,subframe,frame); //generate_prach(PHY_vars_UE_g[0][0],eNB_id,subframe,frame);
//PHY_vars_UE_g[0][0]->generate_prach=1; //PHY_vars_UE_g[0][0]->generate_prach=1;
} }
...@@ -1142,8 +1142,8 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void * ...@@ -1142,8 +1142,8 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
0, // frame is only used for abstraction 0, // frame is only used for abstraction
eNB_id, eNB_id,
CC_id); CC_id);
if (is_prach_subframe(frame_parms,frame,subframe)) //if (is_prach_subframe(frame_parms,frame,subframe))
write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][CC_id]->prach_vars[0]->prachF,12*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16); //write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][CC_id]->prach_vars[0]->prachF,12*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16);
} }
last_eNB_rx_timestamp[eNB_id][CC_id] = last; last_eNB_rx_timestamp[eNB_id][CC_id] = last;
...@@ -1213,7 +1213,7 @@ int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void ** ...@@ -1213,7 +1213,7 @@ int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **
subframe = (last/PHY_vars_UE_g[UE_id][CC_id]->frame_parms.samples_per_tti)%10; subframe = (last/PHY_vars_UE_g[UE_id][CC_id]->frame_parms.samples_per_tti)%10;
frame = (last/(10*PHY_vars_UE_g[UE_id][CC_id]->frame_parms.samples_per_tti))%1023; frame = (last/(10*PHY_vars_UE_g[UE_id][CC_id]->frame_parms.samples_per_tti))%1023;
} }
printf("[oaisim_functs] subframe %d, frame %d\n",subframe,frame); printf("[oaisim_functs]UE_trx_read DL subframe %d, frame %d\n",subframe,frame);
//subframe = (subframe+9) % 10; //subframe = (subframe+9) % 10;
LOG_D(PHY,"UE_trx_read generating DL subframe %d (Ts %llu, current TS %llu)\n", LOG_D(PHY,"UE_trx_read generating DL subframe %d (Ts %llu, current TS %llu)\n",
......
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