Commit 4a347a01 authored by lfarizav's avatar lfarizav

adding meas variables

parent 3d181d71
......@@ -36,7 +36,6 @@
#ifndef SSE_INTRIN_H
#define SSE_INTRIN_H
#if defined(__x86_64) || defined(__i386__)
#ifndef __SSE2__
......
......@@ -200,6 +200,7 @@ void rf_rx(double **r_re,
}
}
#define RF_RX_SSE
//#define __AVX2__
#ifdef RF_RX_SSE
void rf_rx_simple(double *r_re[2],
double *r_im[2],
......@@ -310,6 +311,83 @@ sum=(sum+stop-start);*/
}
}
}
#endif
#ifdef __AVX2__
void rf_rx_simple_freq(double *r_re[2],
double *r_im[2],
unsigned int nb_rx_antennas,
unsigned int length,
double s_time,
double rx_gain_dB,
unsigned int symbols_per_tti,
unsigned int ofdm_symbol_size,
unsigned int n_samples)
{
/* static int first_run=0;
static double sum;
static int count;
if (!first_run)
{
first_run=1;
sum=0;
count=0;
}
count++;*/
__m256d rx256_re,rx256_im,rx256_gain_lin,gauss_0_256_sqrt_NOW,gauss_1_256_sqrt_NOW;//4 doubles
int i,j,a;
double rx_gain_lin = pow(10.0,.05*rx_gain_dB);
//double rx_gain_lin = 1.0;
double N0W = pow(10.0,.1*(-174.0 - 10*log10(s_time*1e-9)));
double sqrt_NOW = sqrt(.5*N0W);
double gauss0_sqrt_NOW,gauss1_sqrt_NOW;
//double N0W = 0.0;
// printf("s_time=%f, N0W=%g\n",s_time,10*log10(N0W));
//Loop over input
#ifdef DEBUG_RF
printf("N0W = %f dBm\n",10*log10(N0W));
printf("rx_gain = %f dB(%f)\n",rx_gain_dB,rx_gain_lin);
#endif
//rx128_gain_lin=mm_loadu_pd(rx_gain_lin);
/*count++;
clock_t start=clock();*/
for (i=0; i<(length>>2); i++) {
for (a=0; a<nb_rx_antennas; a++) {
if (i%(ofdm_symbol_size>>2)>(n_samples>>2) && i%(ofdm_symbol_size>>2)<(ofdm_symbol_size>>2)-(n_samples>>2))
{
//printf("i = %d\n",i);
//_mm_storeu_pd(&r_re[a][2*i],_mm_setzero_pd());
//_mm_storeu_pd(&r_im[a][2*i],_mm_setzero_pd());
break;
}
else
{
//rx256_gain_lin=mm_mul_set1_ps(rx_gain_lin);
gauss0_sqrt_NOW=sqrt_NOW*gaussdouble(0.0,1.0);
gauss1_sqrt_NOW=sqrt_NOW*gaussdouble(0.0,1.0);
rx256_re = _mm256_load_pd(&r_re[a][2*i]);//r_re[a][i],r_re[a][i+1]
rx256_im = _mm256_load_pd(&r_im[a][2*i]);//r_im[a][i],r_im[a][i+1]
rx256_gain_lin = _mm_set1_pd(rx_gain_lin);
gauss_0_256_sqrt_NOW = _mm_set1_pd(gauss0_sqrt_NOW);
gauss_1_256_sqrt_NOW = _mm_set1_pd(gauss1_sqrt_NOW);
// Amplify by receiver gain and apply 3rd order non-linearity
//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));
rx256_re = _mm256_add_pd(rx256_re,gauss_0_256_sqrt_NOW);
rx256_im = _mm256_add_pd(rx256_im,gauss_1_256_sqrt_NOW);
rx256_re = _mm256_mul_pd(rx256_re,rx256_gain_lin);
rx256_im = _mm256_mul_pd(rx256_im,rx256_gain_lin);
_mm_storeu_pd(&r_re[a][2*i],rx256_re);
_mm_storeu_pd(&r_im[a][2*i],rx256_im);
}
//printf("gaussdouble %e, rx_gain_lin %e\n",gaussdouble(0.0,1.0), rx_gain_lin);
}
}
/*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);*/
}
#endif
#ifdef RF_RX_SSE
......@@ -334,7 +412,7 @@ void rf_rx_simple_freq(double *r_re[2],
}
count++;*/
__m128d rx128_re,rx128_im,rx128_gain_lin,gauss_0_128_sqrt_NOW,gauss_1_128_sqrt_NOW;//double
int i,j,a;
int i,a;
double rx_gain_lin = pow(10.0,.05*rx_gain_dB);
//double rx_gain_lin = 1.0;
double N0W = pow(10.0,.1*(-174.0 - 10*log10(s_time*1e-9)));
......@@ -381,29 +459,6 @@ clock_t start=clock();*/
_mm_storeu_pd(&r_re[a][2*i],rx128_re);
_mm_storeu_pd(&r_im[a][2*i],rx128_im);
}
//#define __AVX__
/*else
{
//rx256_gain_lin=mm_mul_set1_ps(rx_gain_lin);
gauss0_sqrt_NOW=sqrt_NOW*gaussdouble(0.0,1.0);
gauss1_sqrt_NOW=sqrt_NOW*gaussdouble(0.0,1.0);
rx256_re = _mm256_load_pd(&r_re[a][2*i]);//r_re[a][i],r_re[a][i+1]
rx256_im = _mm256_load_pd(&r_im[a][2*i]);//r_im[a][i],r_im[a][i+1]
rx256_gain_lin = _mm_set1_pd(rx_gain_lin);
gauss_0_256_sqrt_NOW = _mm_set1_pd(gauss0_sqrt_NOW);
gauss_1_256_sqrt_NOW = _mm_set1_pd(gauss1_sqrt_NOW);
// Amplify by receiver gain and apply 3rd order non-linearity
//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));
rx256_re = _mm256_add_pd(rx256_re,gauss_0_256_sqrt_NOW);
rx256_im = _mm256_add_pd(rx256_im,gauss_1_256_sqrt_NOW);
rx256_re = _mm256_mul_pd(rx256_re,rx256_gain_lin);
rx256_im = _mm256_mul_pd(rx256_im,rx256_gain_lin);
_mm_storeu_pd(&r_re[a][2*i],rx256_re);
_mm_storeu_pd(&r_im[a][2*i],rx256_im);
}*/
//printf("gaussdouble %e, rx_gain_lin %e\n",gaussdouble(0.0,1.0), rx_gain_lin);
}
}
/*clock_t stop=clock();
......
......@@ -94,6 +94,16 @@ typedef struct {
time_stats_t interp_time;
time_stats_t interp_freq;
time_stats_t convolution;
/// frequency measurements
time_stats_t DL_multipath_channel_freq;
time_stats_t DL_dac_fixed_gain;
time_stats_t DL_rf_rx_simple_freq;
time_stats_t DL_adc;
time_stats_t UL_multipath_channel_freq;
time_stats_t multipath_channel_freq_PRACH;
time_stats_t UL_dac_fixed_gain;
time_stats_t UL_rf_rx_simple_freq;
time_stats_t UL_adc;
} channel_desc_t;
typedef struct {
......
......@@ -35,7 +35,8 @@ 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,
double *tx_sig_re[2],
......@@ -277,8 +278,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);
......@@ -291,12 +292,17 @@ void multipath_channel_freq(channel_desc_t *desc,
/*clock_t stop=clock();
printf("UE_freq_channel 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);*/
freq_channel(desc,nb_rb,n_samples);//Find desc->chF
//freq_channel_prach(desc,nb_rb,n_samples,1,44);//Find desc->chF
}
//clock_t start=clock();
//for (k=0;k<symbols_per_tti;k++){//k = 0-6 normal cyclic prefix
for (j=0;j<(symbols_per_tti>>1);j++){
for (ii=0; ii<desc->nb_rx; ii++) {
_mm_storeu_pd(&rx_sig_re[ii][2*j*ofdm_symbol_size],_mm_setzero_pd());
_mm_storeu_pd(&rx_sig_im[ii][2*j*ofdm_symbol_size],_mm_setzero_pd());
}
}
for (f=0;f<((ofdm_symbol_size*symbols_per_tti)>>1); f++) {//f2 = 0-1024*14-1 ---- for 10 Mhz BW
//printf("f is %d\n",f);
for (ii=0; ii<desc->nb_rx; ii++) {
......@@ -331,15 +337,16 @@ void multipath_channel_freq(channel_desc_t *desc,
//rx_sig_im[ii][f+k*ofdm_symbol_size] = rx_tmp.y*path_loss;
rx_tmp128_re_f = _mm_mul_pd(rx_tmp128_re_f,pathloss128);
rx_tmp128_im_f = _mm_mul_pd(rx_tmp128_im_f,pathloss128);
_mm_storeu_pd(&rx_sig_re[ii][(2*f+1)],rx_tmp128_re_f); // max index: length-dd -1 + dd = length -1
_mm_storeu_pd(&rx_sig_re[ii][(2*f+1)],rx_tmp128_re_f);
_mm_storeu_pd(&rx_sig_im[ii][(2*f+1)],rx_tmp128_im_f);
}
else if (f%(ofdm_symbol_size>>1)>(n_samples>>1) && f%(ofdm_symbol_size>>1)<(ofdm_symbol_size>>1)-(n_samples>>1))
{
//rx_sig_re[ii][f+k*ofdm_symbol_size] = 0;
//rx_sig_im[ii][f+k*ofdm_symbol_size] = 0;
_mm_storeu_pd(&rx_sig_re[ii][2*f],_mm_setzero_pd()); // max index: length-dd -1 + dd = length -1
_mm_storeu_pd(&rx_sig_im[ii][2*f],_mm_setzero_pd());
//_mm_storeu_pd(&rx_sig_re[ii][2*f],_mm_setzero_pd());
//_mm_storeu_pd(&rx_sig_im[ii][2*f],_mm_setzero_pd());
break;
}
else
{
......@@ -349,8 +356,8 @@ void multipath_channel_freq(channel_desc_t *desc,
//RX_IM(k) += TX_IM(k).chF(k).x + TX_RE(k).chF(k).y
tx128_re = _mm_loadu_pd(&tx_sig_re[j][2*f]);
tx128_im = _mm_loadu_pd(&tx_sig_im[j][2*f]);
chF128_x = _mm_set1_pd(desc->ch[ii+(j*desc->nb_rx)][2*(f%(ofdm_symbol_size>>1))-((ofdm_symbol_size>>1)-(n_samples>>1))].x);
chF128_y = _mm_set1_pd(desc->ch[ii+(j*desc->nb_rx)][2*(f%(ofdm_symbol_size>>1))-((ofdm_symbol_size>>1)-(n_samples>>1))].y);
chF128_x = _mm_set1_pd(desc->ch[ii+(j*desc->nb_rx)][2*(f%(ofdm_symbol_size>>1)-((ofdm_symbol_size>>1)-(n_samples>>1)))].x);
chF128_y = _mm_set1_pd(desc->ch[ii+(j*desc->nb_rx)][2*(f%(ofdm_symbol_size>>1)-((ofdm_symbol_size>>1)-(n_samples>>1)))].y);
//rx_tmp.x += (tx_sig_re[j][f+k*ofdm_symbol_size] * desc->chF[ii+(j*desc->nb_rx)][f2].x)
// -(tx_sig_im[j][f+k*ofdm_symbol_size] * desc->chF[ii+(j*desc->nb_rx)][f2].y);
//rx_tmp.y += (tx_sig_im[j][f+k*ofdm_symbol_size] * desc->chF[ii+(j*desc->nb_rx)][f2].x)
......@@ -371,9 +378,6 @@ void multipath_channel_freq(channel_desc_t *desc,
_mm_storeu_pd(&rx_sig_re[ii][2*f],rx_tmp128_re_f); // max index: length-dd -1 + dd = length -1
_mm_storeu_pd(&rx_sig_im[ii][2*f],rx_tmp128_im_f);
}
fprintf(file,"%d\t%e\t%e\t%e\t%e\t%e\t%e\n",f,tx_sig_re[ii][f],tx_sig_im[ii][f],rx_sig_re[ii][f],rx_sig_im[ii][f],desc->chF[0][f].x,desc->chF[0][f].y);
//fflush(file);
//printf("number of taps%d\n",desc->channel_length);
} // ii
} // f,f2,f3
......@@ -381,6 +385,8 @@ void multipath_channel_freq(channel_desc_t *desc,
/*clock_t stop=clock();
printf("UE_freq_channel 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);*/
/*for (f=0;f<ofdm_symbol_size*symbols_per_tti;f++)
fprintf(file,"%d\t%e\t%e\t%e\t%e\t%e\t%e\n",f,tx_sig_re[0][f],tx_sig_im[0][f],rx_sig_re[0][f],rx_sig_im[0][f],desc->chF[0][f%n_samples].x,desc->chF[0][f%n_samples].y); */
//fclose(file);
}
#else
......@@ -463,7 +469,7 @@ void multipath_channel_freq(channel_desc_t *desc,
rx_sig_im[ii][f+k*ofdm_symbol_size] = 0;
}
fprintf(file,"%d\t%d\t%d\t%e\t%e\t%e\t%e\t%e\t%e\n",f+k*ofdm_symbol_size,f2,k,tx_sig_re[ii][f+k*ofdm_symbol_size],tx_sig_im[ii][f+k*ofdm_symbol_size],rx_sig_re[ii][f+k*ofdm_symbol_size],rx_sig_im[ii][f+k*ofdm_symbol_size],desc->chF[0][f].x,desc->chF[0][f].y);
//fprintf(file,"%d\t%d\t%d\t%e\t%e\t%e\t%e\t%e\t%e\n",f+k*ofdm_symbol_size,f2,k,tx_sig_re[ii][f+k*ofdm_symbol_size],tx_sig_im[ii][f+k*ofdm_symbol_size],rx_sig_re[ii][f+k*ofdm_symbol_size],rx_sig_im[ii][f+k*ofdm_symbol_size],desc->chF[0][f].x,desc->chF[0][f].y);
//fflush(file);
//printf("number of taps%d\n",desc->channel_length);
} // ii
......
......@@ -65,8 +65,6 @@
int number_rb_ul;
int first_rbUL ;
extern Signal_buffers_t *signal_buffers_g;
double r_re_DL[NUMBER_OF_UE_MAX][2][30720];
double r_im_DL[NUMBER_OF_UE_MAX][2][30720];
......@@ -380,7 +378,6 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
uint8_t UE_id,
int CC_id)
{
time_stats_t dl_chan_stats_f;
static int first_run=0;
static double sum;
static int count;
......@@ -390,6 +387,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
sum=0;
count=0;
}
count++;
//int32_t att_eNB_id=-1;
int32_t **txdataF,**rxdataF;
......@@ -429,8 +427,8 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
r_re0_f[1] = r_re01_f;
r_im0_f[1] = r_im01_f;
FILE *file1;
file1 = fopen("chsim_s_re_im.m","w");
//FILE *file1;
//file1 = fopen("chsim_s_re_im.m","w");
//printf("chsim thread %d. ue->proc->frame_rx %d, ue->subframe_rx %d, ue->proc->frame_tx %d, ue->subframe_tx %d\n",subframe&0x1,PHY_vars_UE_g[0][0]->proc.proc_rxtx[subframe&0x1].frame_rx,PHY_vars_UE_g[0][0]->proc.proc_rxtx[subframe&0x1].subframe_rx,PHY_vars_UE_g[0][0]->proc.proc_rxtx[subframe&0x1].frame_tx,PHY_vars_UE_g[0][0]->proc.proc_rxtx[subframe&0x1].subframe_tx);
......@@ -439,11 +437,11 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
else
hold_channel = 1;
if (abstraction_flag != 0) {
if (abstraction_flag) {
LOG_D(OCM,"[SIM][DL] Abstraction for do_DL_sig_freq is not implemented in frequency domain\n");
exit(-1);
}
else { //abstraction_flag
else { //abstraction_flag = 0
pthread_mutex_lock(&eNB_output_mutex[UE_id]);
......@@ -462,7 +460,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;
//for (int idx=0;idx<10;idx++) printf("dumping DL raw subframe %d: txdataF[%d] = (%d,%d)\n", subframe, idx, ((short*)&txdataF[0][sf_offset+idx])[0], ((short*)&txdataF[0][sf_offset+idx])[1]);
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel_freq);
tx_pwr = dac_fixed_gain(s_re_f,
s_im_f,
txdataF,
......@@ -474,6 +472,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_multipath_channel_freq);
//for (x=0;x<frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;x++){
// fprintf(file1,"%d\t%e\t%e\n",x,s_re_f[0][x],s_im_f[0][x]);
//}
......@@ -489,12 +488,12 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
subframe);
#endif
//eNB2UE[eNB_id][UE_id]->path_loss_dB = 0;
//clock_t start=clock();
clock_t start=clock();
multipath_channel_freq(eNB2UE[eNB_id][UE_id][CC_id],s_re_f,s_im_f,r_re0_f,r_im0_f,
frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,hold_channel,eNB_id,UE_id,CC_id,subframe&0x1);
/*clock_t stop=clock();
clock_t stop=clock();
printf("multipath_channel DL 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);*/
sum=(sum+stop-start);
//for (int x=0;x<frame_parms->N_RB_DL*12;x++){
// fprintf(file1,"%d\t%e\t%e\n",x,eNB2UE[eNB_id][UE_id][CC_id]->chF[0][x].x,eNB2UE[eNB_id][UE_id][CC_id]->chF[0][x].y);
//}
......@@ -545,8 +544,8 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
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
count++;
clock_t start=clock();
/*count++;
clock_t start=clock();*/
rf_rx_simple_freq(r_re0_f,
r_im0_f,
nb_antennas_rx,
......@@ -556,12 +555,12 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
frame_parms->symbols_per_tti,
frame_parms->ofdm_symbol_size,
12.0*frame_parms->N_RB_DL);
clock_t stop=clock();
/*clock_t stop=clock();
printf("rf_rx DL 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);
for (int x=0;x<frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;x++){
sum=(sum+stop-start);*/
/*for (int x=0;x<frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti;x++){
fprintf(file1,"%d\t%e\t%e\n",x,r_re0_f[0][x],r_im0_f[0][x]);
}
}*/
#ifdef DEBUG_SIM
rx_pwr = signal_energy_fp(r_re0_f,r_im0_f,
nb_antennas_rx,
......@@ -1027,12 +1026,15 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
double *r_re_p_f[2] = {r_re_UL_f[eNB_id][0],r_re_UL_f[eNB_id][1]};
double *r_im_p_f[2] = {r_im_UL_f[eNB_id][0],r_im_UL_f[eNB_id][1]};
rf_rx_simple(r_re_p_f,
rf_rx_simple_freq(r_re_p_f,
r_im_p_f,
nb_antennas_rx,
frame_parms->ofdm_symbol_size*frame_parms->symbols_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)
(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)
frame_parms->symbols_per_tti,
frame_parms->ofdm_symbol_size,
12.0*frame_parms->N_RB_DL);
/*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)
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]);
......@@ -1072,12 +1074,12 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
}
void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_NUM_CCs],
void do_UL_sig_freq_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_NUM_CCs],
node_desc_t *enb_data[NUMBER_OF_eNB_MAX],node_desc_t *ue_data[NUMBER_OF_UE_MAX],
uint16_t subframe,uint8_t abstraction_flag,LTE_DL_FRAME_PARMS *frame_parms,
uint32_t frame,int eNB_id,uint8_t CC_id)
{
static int first_run=0;
/*static int first_run=0;
static double sum;
static int count;
if (!first_run)
......@@ -1086,7 +1088,7 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
sum=0;
count=0;
}
count++;
count++;*/
#ifdef PHY_ABSTRACTION_UL
......
......@@ -1481,6 +1481,19 @@ reset_opp_meas_oaisim (void)
reset_meas (&UE2eNB[UE_id][eNB_id][0]->interp_time);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->interp_freq);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->convolution);
//Frequency domain - Time consumption analysis
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_rf_rx_simple_freq);
reset_meas (&eNB2UE[eNB_id][UE_id][0]->DL_adc);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->multipath_channel_freq_PRACH);
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_rf_rx_simple_freq);
reset_meas (&UE2eNB[UE_id][eNB_id][0]->UL_adc);
}
reset_meas (&PHY_vars_eNB_g[eNB_id][0]->phy_proc);
......
......@@ -51,7 +51,7 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
node_desc_t *enb_data[NUMBER_OF_eNB_MAX],node_desc_t *ue_data[NUMBER_OF_UE_MAX],
uint16_t subframe,uint8_t abstraction_flag,LTE_DL_FRAME_PARMS *frame_parms,
uint32_t frame,int eNB_id,uint8_t CC_id);
void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_NUM_CCs],
void do_UL_sig_freq_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_NUM_CCs],
node_desc_t *enb_data[NUMBER_OF_eNB_MAX],node_desc_t *ue_data[NUMBER_OF_UE_MAX],
uint16_t subframe,uint8_t abstraction_flag,LTE_DL_FRAME_PARMS *frame_parms,
uint32_t frame,int eNB_id,uint8_t CC_id);
......
......@@ -1041,8 +1041,7 @@ extern int subframe_eNB_mask,subframe_UE_mask;
int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **buff, int nsamps, int cc)
{
/*time_stats_t ul_chan_stats_f;
static int first_meas=0;
/*static int first_meas=0;
static int first_run=0;
static double sum;
static int count;
......@@ -1051,7 +1050,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
first_run=1;
sum=0;
count=0;
} */
}*/
int ret = nsamps;
......@@ -1121,9 +1120,9 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
for (UE_id=0; UE_id<NB_UE_INST; UE_id++){
if (is_prach_subframe(&PHY_vars_UE_g[UE_id][CC_id]->frame_parms,frame,subframe) && PHY_vars_UE_g[UE_id][CC_id]->generate_prach)
{
//count++;
//clock_t start=clock();
do_UL_prach(UE2eNB,
/*count++;
clock_t start=clock();*/
do_UL_sig_freq_prach(UE2eNB,
enb_data,
ue_data,
subframe,
......@@ -1157,7 +1156,8 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
start_meas(&ul_chan_stats_f);*/
/*count++;
clock_t start=clock();*/
do_UL_sig_freq(UE2eNB,
enb_data,
ue_data,
......@@ -1167,7 +1167,9 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
0, // frame is only used for abstraction
eNB_id,
CC_id);
/*clock_t stop=clock();
printf("do_UL_sig freq 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);*/
/*stop_meas(&ul_chan_stats_f);
print_meas(&ul_chan_stats_f,"UL_Channel Stats Frequency Domain",&ul_chan_stats_f,&ul_chan_stats_f);*/
}
......@@ -1202,8 +1204,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **buff, int nsamps, int cc)
{
/*time_stats_t dl_chan_stats_f;
static int first_run=0;
/*static int first_run=0;
static double sum;
static int count;
if (!first_run)
......
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