Commit 276f6364 authored by lfarizav's avatar lfarizav

dlsim working in the frequency domain and some added time statistics

parent afbe4b51
......@@ -1919,7 +1919,7 @@ int main(int argc, char **argv)
printf("-B bandwidth configuration (in number of ressource blocks): 6, 25, 50, 100\n");
printf("-r ressource block allocation (see section 7.1.6.3 in 36.213\n");
printf("-g [A:M] Use 3GPP 25.814 SCM-A/B/C/D('A','B','C','D') or 36-101 EPA('E'), EVA ('F'),ETU('G') models (ignores delay spread and Ricean factor), Rayghleigh8 ('H'), Rayleigh1('I'), Rayleigh1_corr('J'), Rayleigh1_anticorr ('K'), Rice8('L'), Rice1('M')\n");
printf("-F forgetting factor (0 new channel every trial, 1 channel constant\n");
printf("-F forgetting factor (0 new channel every trial, 1 channel constant)\n");
printf("-x Transmission mode (1,2,6,7 for the moment)\n");
printf("-X Xforms\n");
printf("-q Number of TX antennas ports used in eNB\n");
......@@ -1929,7 +1929,7 @@ int main(int argc, char **argv)
printf("-R Number of HARQ rounds (fixed)\n");
printf("-A Turns on calibration mode for abstraction.\n");
printf("-N Determines the number of Channel Realizations in Abstraction mode. Default value is 1. \n");
printf("-O Set the percenatge of effective rate to testbench the modem performance (typically 30 and 70, range 1-100) \n");
printf("-O Set the percentage of effective rate to testbench the modem performance (typically 30 and 70, range 1-100) \n");
printf("-I Input filename for TrCH data (binary)\n");
printf("-u Enables the Interference Aware Receiver for TM5 (default is normal receiver)\n");
exit(1);
......@@ -2537,7 +2537,7 @@ int main(int argc, char **argv)
// printf("Trial %d : Round %d, pmi_feedback %d \n",trials,round,pmi_feedback);
for (aa=0; aa<eNB->frame_parms.nb_antennas_tx; aa++) {
memset(&eNB->common_vars.txdataF[eNB_id][aa][0],0,FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX*sizeof(int32_t));
memset(&eNB->common_vars.txdata[eNB_id][aa][0],0,FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX*sizeof(int32_t));
}
//printf("FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX %d\n",FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX);
if (input_fd==NULL) {
......
......@@ -180,14 +180,24 @@ int main(int argc, char **argv)
double blerr;
int **txdata;
int **txdataF;
LTE_DL_FRAME_PARMS *frame_parms;
double s_re0[30720],s_im0[30720],r_re0[30720],r_im0[30720];
double s_re1[30720],s_im1[30720],r_re1[30720],r_im1[30720];
double *s_re[2]={s_re0,s_re1};
double *s_im[2]={s_im0,s_im1};
double *r_re[2]={r_re0,r_re1};
double *r_im[2]={r_im0,r_im1};
float s_re0f[14*2048],s_im0f[14*2048],r_re0f[14*2048],r_im0f[14*2048];
float s_re1f[14*2048],s_im1f[14*2048],r_re1f[14*2048],r_im1f[14*2048];
float *s_ref[2]={s_re0f,s_re1f};
float *s_imf[2]={s_im0f,s_im1f};
float *r_ref[2]={r_re0f,r_re1f};
float *r_imf[2]={r_im0f,r_im1f};
double forgetting_factor=0.0; //in [0,1] 0 means a new channel every time, 1 means keep the same channel
double iqim=0.0;
uint8_t extended_prefix_flag=0;
......@@ -597,6 +607,7 @@ int main(int argc, char **argv)
frame_parms = &eNB->frame_parms;
txdata = UE->common_vars.txdata;
txdataF= UE->common_vars.txdataF;
nsymb = (eNB->frame_parms.Ncp == NORMAL) ? 14 : 12;
......@@ -848,7 +859,7 @@ int main(int argc, char **argv)
//randominit(0);
printf("FRAME_LENGTH_SAMPLES %d, OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES %d, FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX %d\n",FRAME_LENGTH_SAMPLES,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES,FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX);
harq_pid = subframe2harq_pid(&UE->frame_parms,proc_rxtx_ue->frame_tx,subframe);
input_buffer_length = UE->ulsch[0]->harq_processes[harq_pid]->TBS/8;
input_buffer = (unsigned char *)memalign(32,input_buffer_length+64);
......@@ -884,18 +895,34 @@ int main(int argc, char **argv)
((short*)txdata[0])[(i/2)+1] = (short)((1<<15)*strtod(input_val_str2,NULL));
if ((i/4)<100)
{
if (UE->do_ofdm_mod)
printf("sample %d => %e + j%e (%d +j%d)\n",i/4,strtod(input_val_str,NULL),strtod(input_val_str2,NULL),((short*)txdataF[0])[i/4],((short*)txdataF[0])[(i/4)+1]);//1,input_val2,);
else
printf("sample %d => %e + j%e (%d +j%d)\n",i/4,strtod(input_val_str,NULL),strtod(input_val_str2,NULL),((short*)txdata[0])[i/4],((short*)txdata[0])[(i/4)+1]);//1,input_val2,);
}
}
i++;
if (UE->do_ofdm_mod)
{
if (i>(FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX))
break;
}
else
{
if (i>(FRAME_LENGTH_SAMPLES))
break;
}
}
printf("Read in %d samples\n",i/4);
// write_output("txsig0UL.m","txs0", txdata[0],2*frame_parms->samples_per_tti,1,1);
// write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
if (UE->do_ofdm_mod)
tx_lev = signal_energy(&txdataF[0][0],
UE->frame_parms.ofdm_symbol_size);
else
tx_lev = signal_energy(&txdata[0][0],
OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
......@@ -1091,7 +1118,10 @@ int main(int argc, char **argv)
apply_7_5_kHz(UE,UE->common_vars.txdata[aa],1+(subframe<<1));
*/
if (UE->do_ofdm_mod)
tx_lev = signal_energy(&UE->common_vars.txdataF[0][eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti*subframe],
eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti);
else
tx_lev = signal_energy(&UE->common_vars.txdata[0][eNB->frame_parms.samples_per_tti*subframe],
eNB->frame_parms.samples_per_tti);
......@@ -1107,6 +1137,9 @@ int main(int argc, char **argv)
tx_lev_dB = (unsigned int) dB_fixed_times10(tx_lev);
if (n_frames==1) {
if (UE->do_ofdm_mod)
write_output("txsig0ULF.m","txs0F", &txdataF[0][eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti*subframe],2*eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti,1,1);
else
write_output("txsig0UL.m","txs0", &txdata[0][eNB->frame_parms.samples_per_tti*subframe],2*frame_parms->samples_per_tti,1,1);
// write_output("txsig1UL.m","txs1", &txdata[1][eNB->frame_parms.samples_per_tti*subframe],2*frame_parms->samples_per_tti,1,1);
}
......@@ -1125,6 +1158,18 @@ int main(int argc, char **argv)
// fill measurement symbol (19) with noise
if (UE->do_ofdm_mod)
{
for (i=0; i<UE->frame_parms.ofdm_symbol_size; i++) {
for (aa=0; aa<eNB->frame_parms.nb_antennas_rx; aa++) {
((short*) &eNB->common_vars.rxdataF[0][aa][((frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)<<1) -frame_parms->ofdm_symbol_size])[2*i] = (short) ((sqrt(sigma2/2)*gaussdouble(0.0,1.0)));
((short*) &eNB->common_vars.rxdataF[0][aa][(frame_parms->samples_per_tti<<1) -frame_parms->ofdm_symbol_size])[2*i+1] = (short) ((sqrt(sigma2/2)*gaussdouble(0.0,1.0)));
}
}
}
else
{
for (i=0; i<OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES; i++) {
for (aa=0; aa<eNB->frame_parms.nb_antennas_rx; aa++) {
......@@ -1132,18 +1177,33 @@ int main(int argc, char **argv)
((short*) &eNB->common_vars.rxdata[0][aa][(frame_parms->samples_per_tti<<1) -frame_parms->ofdm_symbol_size])[2*i+1] = (short) ((sqrt(sigma2/2)*gaussdouble(0.0,1.0)));
}
}
}
// multipath channel
if (UE->do_ofdm_mod)
{
for (i=0; i<eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti; i++) {
for (aa=0; aa<1; aa++) {
s_ref[aa][i] = ((float)(((short *)&UE->common_vars.txdataF[aa][eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti*subframe]))[(i<<1)]);
s_imf[aa][i] = ((float)(((short *)&UE->common_vars.txdataF[aa][eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti*subframe]))[(i<<1)+1]);
}
}
}
else
{
for (i=0; i<eNB->frame_parms.samples_per_tti; i++) {
for (aa=0; aa<1; aa++) {
s_re[aa][i] = ((double)(((short *)&UE->common_vars.txdata[aa][eNB->frame_parms.samples_per_tti*subframe]))[(i<<1)]);
s_im[aa][i] = ((double)(((short *)&UE->common_vars.txdata[aa][eNB->frame_parms.samples_per_tti*subframe]))[(i<<1)+1]);
}
}
}
if (awgn_flag == 0) {
if (UE2eNB->max_Doppler == 0) {
if (UE->do_ofdm_mod)
multipath_channel_freq_AVX_float(UE2eNB,s_ref,s_imf,r_ref,r_imf,
eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti,hold_channel,0,0,0,subframe&0x1,UE->frame_parms.N_RB_DL,UE->frame_parms.N_RB_DL*12+1,UE->frame_parms.ofdm_symbol_size,UE->frame_parms.symbols_per_tti);
else
multipath_channel(UE2eNB,s_re,s_im,r_re,r_im,
eNB->frame_parms.samples_per_tti,hold_channel);
} else {
......@@ -1183,7 +1243,18 @@ int main(int argc, char **argv)
if (n_frames==1)
printf("Sigma2 %f (sigma2_dB %f), tx_gain %f (%f dB)\n",sigma2,sigma2_dB,tx_gain,20*log10(tx_gain));
if (UE->do_ofdm_mod)
{
for (i=0; i<eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti; i++) {
for (aa=0; aa<eNB->frame_parms.nb_antennas_rx; aa++) {
((short*) &eNB->common_vars.rxdataF[0][aa][eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti*subframe])[2*i] = (short) ((tx_gain*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0));
((short*) &eNB->common_vars.rxdataF[0][aa][eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti*subframe])[2*i+1] = (short) ((tx_gain*r_im[aa][i]) + (iqim*tx_gain*r_re[aa][i]) + sqrt(
sigma2/2)*gaussdouble(0.0,1.0));
}
}
}
else
{
for (i=0; i<eNB->frame_parms.samples_per_tti; i++) {
for (aa=0; aa<eNB->frame_parms.nb_antennas_rx; aa++) {
((short*) &eNB->common_vars.rxdata[0][aa][eNB->frame_parms.samples_per_tti*subframe])[2*i] = (short) ((tx_gain*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0));
......@@ -1191,14 +1262,30 @@ int main(int argc, char **argv)
sigma2/2)*gaussdouble(0.0,1.0));
}
}
}
if (n_frames==1) {
if (UE->do_ofdm_mod)
{
printf("rx_level Null symbol %f\n",10*log10((double)signal_energy((int*)
&eNB->common_vars.rxdataF[0][0][((eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti)<<1) -eNB->frame_parms.ofdm_symbol_size],eNB->frame_parms.ofdm_symbol_size/2)));
printf("rx_level data symbol %f\n",10*log10(signal_energy((int*)&eNB->common_vars.rxdataF[0][0][160+(eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti*subframe)],
eNB->frame_parms.ofdm_symbol_size/2)));
}
else
{
printf("rx_level Null symbol %f\n",10*log10((double)signal_energy((int*)
&eNB->common_vars.rxdata[0][0][(eNB->frame_parms.samples_per_tti<<1) -eNB->frame_parms.ofdm_symbol_size],OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES/2)));
printf("rx_level data symbol %f\n",10*log10(signal_energy((int*)&eNB->common_vars.rxdata[0][0][160+(eNB->frame_parms.samples_per_tti*subframe)],
OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES/2)));
}
}
if (UE->do_ofdm_mod)
SNRmeas = 10*log10(((double)signal_energy((int*)&eNB->common_vars.rxdataF[0][0][160+(eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti*subframe)],
eNB->frame_parms.ofdm_symbol_size/2))/((double)signal_energy((int*)
&eNB->common_vars.rxdataF[0][0][((eNB->frame_parms.ofdm_symbol_size*eNB->frame_parms.symbols_per_tti)<<1) -eNB->frame_parms.ofdm_symbol_size],
eNB->frame_parms.ofdm_symbol_size/2)) - 1)+10*log10(eNB->frame_parms.N_RB_UL/nb_rb);
else
SNRmeas = 10*log10(((double)signal_energy((int*)&eNB->common_vars.rxdata[0][0][160+(eNB->frame_parms.samples_per_tti*subframe)],
OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES/2))/((double)signal_energy((int*)
&eNB->common_vars.rxdata[0][0][(eNB->frame_parms.samples_per_tti<<1) -eNB->frame_parms.ofdm_symbol_size],
......@@ -1211,8 +1298,10 @@ int main(int argc, char **argv)
//write_output("rxsig1UL.m","rxs1", &eNB->common_vars.rxdata[0][0][eNB->frame_parms.samples_per_tti*subframe],eNB->frame_parms.samples_per_tti,1,1);
}
if (!UE->do_ofdm_mod)
{
eNB->fep = (parallel_flag == 1) ? eNB_fep_full_2thread : eNB_fep_full;
}
eNB->td = (parallel_flag == 1) ? ulsch_decoding_data_2thread : ulsch_decoding_data;
eNB->do_prach = NULL;
......
......@@ -79,7 +79,7 @@ void dac(double *s_re[2],
}
}
}
#define dac_SSE
//#define dac_SSE
#ifdef dac_SSE
double dac_fixed_gain(double *s_re[2],
double *s_im[2],
......
......@@ -240,8 +240,8 @@ void rf_rx_simple(double *r_re[2],
// Amplify by receiver gain and apply 3rd order non-linearity
/*count++;
clock_t start=clock();*/
r_re[a][i] = rx_gain_lin*(r_re[a][i] + sqrt(.5*N0W)*ziggurat(0.0,1.0));
r_im[a][i] = rx_gain_lin*(r_im[a][i] + sqrt(.5*N0W)*ziggurat(0.0,1.0));
r_re[a][i] = rx_gain_lin*(r_re[a][i] + sqrt(.5*N0W)*gaussdouble(0.0,1.0));
r_im[a][i] = rx_gain_lin*(r_im[a][i] + sqrt(.5*N0W)*gaussdouble(0.0,1.0));
/*clock_t stop=clock();
printf("do_DL_sig time is %f s, AVERAGE time is %f s, count %d, sum %e\n",(float) (stop-start)/CLOCKS_PER_SEC,(float) (sum+stop-start)/(count*CLOCKS_PER_SEC),count,sum+stop-start);
sum=(sum+stop-start);*/
......@@ -249,7 +249,7 @@ sum=(sum+stop-start);*/
}
}
#define RF_RX_SSE
//#define RF_RX_SSE
#ifdef RF_RX_SSE
void rf_rx_simple_freq(double *r_re[2],
double *r_im[2],
......
......@@ -98,25 +98,35 @@ typedef struct {
time_stats_t convolution;
time_stats_t ziggurat;
time_stats_t ziggurat_PRACH;
time_stats_t DL_multipath_channel;
time_stats_t UL_multipath_channel;
time_stats_t DL_dac_fixed_gain;
time_stats_t UL_dac_fixed_gain;
time_stats_t DL_rf_rx_simple;
time_stats_t UL_rf_rx_simple;
time_stats_t DL_adc;
time_stats_t UL_adc;
/// frequency measurements
time_stats_t DL_multipath_channel_freq;
time_stats_t DL_dac_fixed_gain;
time_stats_t DL_dac_fixed_gain_freq;
time_stats_t DL_rf_rx_simple_freq;
time_stats_t DL_adc;
time_stats_t DL_adc_freq;
time_stats_t UL_multipath_channel_freq;
time_stats_t UL_dac_fixed_gain;
time_stats_t UL_dac_fixed_gain_freq;
time_stats_t UL_rf_rx_simple_freq;
time_stats_t UL_adc;
time_stats_t UL_adc_freq;
time_stats_t multipath_channel_freq_PRACH;
time_stats_t dac_fixed_gain_PRACH;
time_stats_t rf_rx_simple_freq_PRACH;
time_stats_t adc_PRACH;
time_stats_t UL_PRACH_channel;
time_stats_t UL_channel;
time_stats_t DL_channel;
time_stats_t UL_PRACH_channel_freq;
time_stats_t UL_channel_freq;
time_stats_t DL_channel_freq;
} channel_desc_t;
......
......@@ -35,7 +35,7 @@ uint8_t multipath_channel_nosigconv(channel_desc_t *desc)
return(1);
}
#define CHANNEL_SSE
//#define CHANNEL_SSE
//#define __AVX2__
#ifdef CHANNEL_SSE
void multipath_channel(channel_desc_t *desc,
......@@ -417,8 +417,8 @@ void multipath_channel_freq(channel_desc_t *desc,
ofdm_symbol_size=length/PHY_vars_UE_g[UE_id][CC_id]->frame_parms.symbols_per_tti;
symbols_per_tti=length/PHY_vars_UE_g[UE_id][CC_id]->frame_parms.ofdm_symbol_size;
FILE *file;
file = fopen("multipath.txt","w");
//FILE *file;
//file = fopen("multipath.txt","w");
#ifdef DEBUG_CH
printf("[CHANNEL_FREQ] keep = %d : path_loss = %g (%f), nb_rx %d, nb_tx %d, dd %d, len %d \n",keep_channel,path_loss,desc->path_loss_dB,desc->nb_rx,desc->nb_tx,dd,desc->channel_length);
......@@ -741,7 +741,7 @@ void multipath_channel_freq_AVX_float(channel_desc_t *desc,
} // f,f2,f3
//}//k
}
#ifdef CHANNEL_SSE
//#ifdef CHANNEL_SSE
void multipath_channel_prach(channel_desc_t *desc,
double *tx_sig_re[2],
double *tx_sig_im[2],
......@@ -809,8 +809,8 @@ void multipath_channel_prach(channel_desc_t *desc,
} // ii
} // f
}
#else
void multipath_channel_prach(channel_desc_t *desc,
//#else
/*void multipath_channel_prach(channel_desc_t *desc,
double *tx_sig_re[2],
double *tx_sig_im[2],
double *rx_sig_re[2],
......@@ -858,7 +858,7 @@ void multipath_channel_prach(channel_desc_t *desc,
} // ii
} // f
}
#endif
#endif*/
void multipath_channel_prach_SSE_float(channel_desc_t *desc,
float *tx_sig_re[2],
float *tx_sig_im[2],
......
......@@ -139,7 +139,7 @@ eNBs =
////////// MME parameters:
mme_ip_address = ( { ipv4 = "192.168.12.11";
mme_ip_address = ( { ipv4 = "192.168.13.11";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
......@@ -149,18 +149,18 @@ eNBs =
NETWORK_INTERFACES :
{
ENB_INTERFACE_NAME_FOR_S1_MME = "eth3";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.215/24";
ENB_INTERFACE_NAME_FOR_S1U = "eth3";
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.215/24";
ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.170/24";
ENB_INTERFACE_NAME_FOR_S1U = "lo";
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.170/24";
ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
rrh_gw_config = (
{
local_if_name = "lo";
remote_address = "127.0.0.2";
local_address = "127.0.0.1";
remote_address = "192.168.12.171";
local_address = "192.168.12.170";
local_port = 50000; #for raw option local port must be the same to remote
remote_port = 50000;
rrh_gw_active = "yes";
......
......@@ -253,6 +253,7 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
txdata = PHY_vars_eNB_g[eNB_id][CC_id]->common_vars.txdata[0];
sf_offset = subframe*frame_parms->samples_per_tti;
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain);
tx_pwr = dac_fixed_gain(s_re,
s_im,
txdata,
......@@ -264,6 +265,7 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
14,
frame_parms->pdsch_config_common.referenceSignalPower, // dBm/RE
frame_parms->N_RB_DL*12);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain);
#ifdef DEBUG_SIM
LOG_D(OCM,"[SIM][DL] eNB %d (CCid %d): tx_pwr %.1f dBm/RE (target %d dBm/RE), for subframe %d\n",
......@@ -274,8 +276,10 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
#endif
//eNB2UE[eNB_id][UE_id]->path_loss_dB = 0;
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel);
multipath_channel(eNB2UE[eNB_id][UE_id][CC_id],s_re,s_im,r_re0,r_im0,
frame_parms->samples_per_tti,hold_channel);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel);
#ifdef DEBUG_SIM
rx_pwr = signal_energy_fp2(eNB2UE[eNB_id][UE_id][CC_id]->ch[0],
eNB2UE[eNB_id][UE_id][CC_id]->channel_length)*eNB2UE[eNB_id][UE_id][CC_id]->channel_length;
......@@ -319,13 +323,14 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
LOG_D(OCM,"[SIM][DL] UE %d (CCid %d): rx_gain %d dB (-ADC %f) for subframe %d\n",UE_id,CC_id,PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB,
PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB-66.227,subframe);
#endif
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_rf_rx_simple);
rf_rx_simple(r_re0,
r_im0,
nb_antennas_rx,
frame_parms->samples_per_tti,
1e3/eNB2UE[eNB_id][UE_id][CC_id]->sampling_rate, // sampling time (ns)
(double)PHY_vars_UE_g[UE_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)
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_rf_rx_simple);
#ifdef DEBUG_SIM
rx_pwr = signal_energy_fp(r_re0,r_im0,
......@@ -360,7 +365,7 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
rxdata = PHY_vars_UE_g[UE_id][CC_id]->common_vars.rxdata;
sf_offset = subframe*frame_parms->samples_per_tti;
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc);
adc(r_re_p,
r_im_p,
0,
......@@ -369,6 +374,7 @@ void do_DL_sig(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_N
nb_antennas_rx,
frame_parms->samples_per_tti,
12);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc);
#ifdef DEBUG_SIM
rx_pwr2 = signal_energy(rxdata[0]+sf_offset,frame_parms->ofdm_symbol_size)/(12.0*frame_parms->N_RB_DL);
......@@ -493,7 +499,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
#ifdef __AVX2__
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain);
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain_freq);
tx_pwr = dac_fixed_gain_AVX_float(s_re_f,
s_im_f,
txdataF,
......@@ -505,9 +511,9 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
14,
frame_parms->pdsch_config_common.referenceSignalPower, // dBm/RE
frame_parms->N_RB_DL*12);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain_freq);
#else
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain);
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain_freq);
tx_pwr = dac_fixed_gain(s_re_f,
s_im_f,
txdataF,
......@@ -519,7 +525,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
14,
frame_parms->pdsch_config_common.referenceSignalPower, // dBm/RE
frame_parms->N_RB_DL*12);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain_freq);
#endif
//print_meas (&eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain,"[DL][dac_fixed_gain]", &eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain, &eNB2UE[eNB_id][UE_id][CC_id]->DL_dac_fixed_gain);
......@@ -700,7 +706,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
//printf("[ch_sim] sf_offset %d\n",sf_offset);
#ifdef __AVX2__
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc);
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc_freq);
adc_AVX_float(r_re_p_f,
r_im_p_f,
0,
......@@ -711,9 +717,9 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
12,
PHY_vars_UE_g[UE_id][CC_id]->frame_parms.N_RB_DL*12,
frame_parms->ofdm_symbol_size);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc_freq);
#else
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc);
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc_freq);
adc(r_re_p_f,
r_im_p_f,
0,
......@@ -722,7 +728,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
nb_antennas_rx,
frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,
12);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_adc_freq);
#endif
//for (int idx=0;idx<10;idx++) printf("dumping DL raw subframe %d: r_re_p_f[%d] = (%e,%e)\n", subframe, idx, r_re_p_f[0][idx], r_im_p_f[0][idx]);
......@@ -865,6 +871,7 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N
PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe],
subframe,sf_offset);
} else {
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain);
tx_pwr = dac_fixed_gain((double**)s_re,
(double**)s_im,
txdata,
......@@ -876,6 +883,7 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N
14,
(double)PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm[subframe]-10*log10((double)PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe]),
PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe]); // This make the previous argument the total power
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain);
LOG_D(OCM,"[SIM][UL] UE %d tx_pwr %f dBm (target %d dBm, num_RE %d) for subframe %d (sf_offset %d)\n",
UE_id,
10*log10(tx_pwr),
......@@ -883,10 +891,10 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N
PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe],
subframe,sf_offset);
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_multipath_channel);
multipath_channel(UE2eNB[UE_id][eNB_id][CC_id],s_re,s_im,r_re0,r_im0,
frame_parms->samples_per_tti,hold_channel);
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_multipath_channel);
rx_pwr = signal_energy_fp2(UE2eNB[UE_id][eNB_id][CC_id]->ch[0],
UE2eNB[UE_id][eNB_id][CC_id]->channel_length)*UE2eNB[UE_id][eNB_id][CC_id]->channel_length;
......@@ -917,13 +925,14 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N
double *r_re_p[2] = {r_re_UL[eNB_id][0],r_re_UL[eNB_id][1]};
double *r_im_p[2] = {r_im_UL[eNB_id][0],r_im_UL[eNB_id][1]};
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_rf_rx_simple);
rf_rx_simple(r_re_p,
r_im_p,
nb_antennas_rx,
frame_parms->samples_per_tti,
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)
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_rf_rx_simple);
#ifdef DEBUG_SIM
rx_pwr = signal_energy_fp(r_re_p,r_im_p,nb_antennas_rx,frame_parms->samples_per_tti,0)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
......@@ -933,7 +942,7 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N
rxdata = PHY_vars_eNB_g[eNB_id][CC_id]->common_vars.rxdata[0];
sf_offset = subframe*frame_parms->samples_per_tti;
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc);
adc(r_re_p,
r_im_p,
0,
......@@ -942,6 +951,7 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N
nb_antennas_rx,
frame_parms->samples_per_tti,
12);
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc);
#ifdef DEBUG_SIM
rx_pwr2 = signal_energy(rxdata[0]+sf_offset,frame_parms->samples_per_tti)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
......@@ -1101,7 +1111,7 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
} else {
#ifdef __AVX2__
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain);
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain_freq);
tx_pwr = dac_fixed_gain_AVX_float((float**)s_re_f,
(float**)s_im_f,
txdataF,
......@@ -1113,9 +1123,9 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
14,
(float)PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm[subframe]-10*log10((double)PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe]),
PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe]); // This make the previous argument the total power
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain);
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain_freq);
#else
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain);
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain_freq);
tx_pwr = dac_fixed_gain((double**)s_re_f,
(double**)s_im_f,
txdataF,
......@@ -1127,7 +1137,7 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
14,
(double)PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm[subframe]-10*log10((double)PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe]),
PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe]); // This make the previous argument the total power
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain);
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain_freq);
#endif
//print_meas (&UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain,"[UL][dac_fixed_gain]", &UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain, &UE2eNB[UE_id][eNB_id][CC_id]->UL_dac_fixed_gain);
......@@ -1249,7 +1259,7 @@ 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;
#ifdef __AVX2__
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc);
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc_freq);
adc_AVX_float(r_re_p_f,
r_im_p_f,
sf_offset,
......@@ -1260,9 +1270,9 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
12,
PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.N_RB_DL*12,
frame_parms->ofdm_symbol_size);
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc);
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc_freq);
#else
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc);
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc_freq);
adc(r_re_p_f,
r_im_p_f,
sf_offset,
......@@ -1271,7 +1281,7 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
nb_antennas_rx,
frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,
12);
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc);
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_adc_freq);
#endif
/*for (int idx=0;idx<frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;idx++){
......
......@@ -1486,26 +1486,38 @@ reset_opp_meas_oaisim (void)
reset_meas (&UE2eNB[UE_id][eNB_id][0]->convolution);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->ziggurat);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->ziggurat_PRACH);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_multipath_channel);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_multipath_channel);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_dac_fixed_gain);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_dac_fixed_gain);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_rf_rx_simple);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_rf_rx_simple);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_dac_fixed_gain);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_dac_fixed_gain);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_channel);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_channel);
//Time consuming in Frequency analysis
//Downlink
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_multipath_channel_freq);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_dac_fixed_gain);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_dac_fixed_gain_freq);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_rf_rx_simple_freq);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_adc);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_adc_freq);
//Uplink
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_multipath_channel_freq);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_dac_fixed_gain);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_dac_fixed_gain_freq);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_rf_rx_simple_freq);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_adc);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_adc_freq);
//PRACH
reset_meas (&UE2eNB[UE_id][eNB_id][0]->multipath_channel_freq_PRACH);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->dac_fixed_gain_PRACH);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->rf_rx_simple_freq_PRACH);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->adc_PRACH);
//DL-UL Frequency Channel
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_channel);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_channel);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_PRACH_channel);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_channel_freq);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_channel_freq);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_PRACH_channel_freq);
}
reset_meas (&PHY_vars_eNB_g[eNB_id][0]->phy_proc);
......@@ -1611,43 +1623,64 @@ print_opp_meas_oaisim (void)
"[UL][ziggurat]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->ziggurat_PRACH,
"[UL][ziggurat]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_multipath_channel,
"[DL][multipath_channel]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_multipath_channel,
"[UL][multipath_channel]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_dac_fixed_gain,
"[DL][dac_fixed_gain]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_dac_fixed_gain,
"[UL][dac_fixed_gain]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_rf_rx_simple,
"[DL][rf_rx_simple]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_rf_rx_simple,
"[UL][rf_rx_simple]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_adc,
"[DL][adc]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_adc,
"[UL][adc]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_channel,
"[UL_channel]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_channel,
"[DL_channel]", &oaisim_stats, &oaisim_stats_f);
//Time consuming in Frequency analysis
//Downlink
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_multipath_channel_freq,
"[DL][multipath_channel_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_dac_fixed_gain,
"[DL][dac_fixed_gain]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_dac_fixed_gain_freq,
"[DL][dac_fixed_gain_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_rf_rx_simple_freq,
"[DL][rf_rx_simple_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_adc,
"[DL][adc]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_adc_freq,
"[DL][adc_freq]", &oaisim_stats, &oaisim_stats_f);
//Uplink
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_multipath_channel_freq,
"[UL][multipath_channel_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_dac_fixed_gain,
"[UL][dac_fixed_gain]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_dac_fixed_gain_freq,
"[UL][dac_fixed_gain_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_rf_rx_simple_freq,
"[UL][rf_rx_simple_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_adc,
"[UL][adc]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_adc_freq,
"[UL][adc_freq]", &oaisim_stats, &oaisim_stats_f);
//PRACH
print_meas (&UE2eNB[UE_id][eNB_id][0]->multipath_channel_freq_PRACH,
"[UL_PRACH][multipath_channel_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->dac_fixed_gain_PRACH,
"[UL_PRACH][dac_fixed_gain]", &oaisim_stats, &oaisim_stats_f);
"[UL_PRACH][dac_fixed_gain_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->rf_rx_simple_freq_PRACH,
"[UL_PRACH][rf_rx_simple_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->adc_PRACH,
"[UL_PRACH][adc]", &oaisim_stats, &oaisim_stats_f);
"[UL_PRACH][adc_freq]", &oaisim_stats, &oaisim_stats_f);
//Dl/UL Frequency Channel
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_channel,
"[UL_channel]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_PRACH_channel,
"[UL_PRACH_channel]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_channel,
"[DL_channel]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_channel_freq,
"[UL_channel_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&UE2eNB[UE_id][eNB_id][0]->UL_PRACH_channel_freq,
"[UL_PRACH_channel_freq]", &oaisim_stats, &oaisim_stats_f);
print_meas (&eNB2UE[eNB_id][UE_id][0]->DL_channel_freq,
"[DL_channel_freq]", &oaisim_stats, &oaisim_stats_f);
}
}
......
......@@ -1127,7 +1127,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
{
//clock_t start=clock();
printf("subframe UL PRACH: %d\n",subframe);
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_PRACH_channel);
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_PRACH_channel_freq);
do_UL_sig_freq_prach(UE2eNB,
enb_data,
ue_data,
......@@ -1137,7 +1137,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
0, // frame is only used for abstraction
eNB_id,
CC_id);
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_PRACH_channel);
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_PRACH_channel_freq);
//clock_t stop=clock();
/*printf("do_DL_sig time_prach is %f s, AVERAGE time is %f s, count %d, sum %e\n",(float) (stop-start)/CLOCKS_PER_SEC,(float) (sum+stop-start)/(count1*CLOCKS_PER_SEC),count1,sum+stop-start);
sum=(sum+stop-start);
......@@ -1146,7 +1146,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
break;
}
}
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_channel);
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_channel_freq);
do_UL_sig_freq(UE2eNB,
enb_data,
ue_data,
......@@ -1156,10 +1156,11 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
0, // frame is only used for abstraction
eNB_id,
CC_id);
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_channel);
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_channel_freq);
}
else
{
start_meas(&UE2eNB[0][eNB_id][CC_id]->UL_channel);
do_UL_sig(UE2eNB,
enb_data,
ue_data,
......@@ -1169,6 +1170,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
0, // frame is only used for abstraction
eNB_id,
CC_id);
stop_meas(&UE2eNB[0][eNB_id][CC_id]->UL_channel);
}
last_eNB_rx_timestamp[eNB_id][CC_id] = last;
......@@ -1248,7 +1250,7 @@ int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **
(unsigned long long)current_UE_rx_timestamp[UE_id][CC_id]);
if (do_ofdm_mod)
{
start_meas(&eNB2UE[0][UE_id][CC_id]->DL_channel);
start_meas(&eNB2UE[0][UE_id][CC_id]->DL_channel_freq);
//clock_t start=clock();
do_DL_sig_freq(eNB2UE,
enb_data,
......@@ -1258,7 +1260,7 @@ int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **
&PHY_vars_UE_g[UE_id][CC_id]->frame_parms,
UE_id,
CC_id);
stop_meas(&eNB2UE[0][UE_id][CC_id]->DL_channel);
stop_meas(&eNB2UE[0][UE_id][CC_id]->DL_channel_freq);
/*clock_t stop=clock();
printf("do_DL_sig time is %f s, AVERAGE time is %f s, count %d, sum %e\n",(float) (stop-start)/CLOCKS_PER_SEC,(float) (sum+stop-start)/(count*CLOCKS_PER_SEC),count,sum+stop-start);
sum=(sum+stop-start);
......@@ -1269,6 +1271,7 @@ int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **
else
{
//clock_t start=clock();
start_meas(&eNB2UE[0][UE_id][CC_id]->DL_channel);
do_DL_sig(eNB2UE,
enb_data,
ue_data,
......@@ -1277,6 +1280,7 @@ int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **
&PHY_vars_UE_g[UE_id][CC_id]->frame_parms,
UE_id,
CC_id);
stop_meas(&eNB2UE[0][UE_id][CC_id]->DL_channel);
/*clock_t stop=clock();
printf("do_DL_sig time is %f s, AVERAGE time is %f s, count %d, sum %e\n",(float) (stop-start)/CLOCKS_PER_SEC,(float) (sum+stop-start)/(count*CLOCKS_PER_SEC),count,sum+stop-start);
sum=(sum+stop-start);
......
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