Commit c1e6004c authored by lfarizav's avatar lfarizav

dlsim working for awgn channel

parent 1793ae59
...@@ -293,16 +293,16 @@ void DL_channel_freq(PHY_VARS_eNB *eNB,PHY_VARS_UE *UE,int subframe,int awgn_fla ...@@ -293,16 +293,16 @@ void DL_channel_freq(PHY_VARS_eNB *eNB,PHY_VARS_UE *UE,int subframe,int awgn_fla
} }
} }
} }
printf("subframe %d\n",subframe); /*printf("subframe %d\n",subframe);
write_output("tx_data.m","txdata", &eNB->common_vars.txdata[0][0],UE->frame_parms.samples_per_tti,1,1); write_output("tx_data.m","txdata", &eNB->common_vars.txdata[0][0],UE->frame_parms.samples_per_tti,1,1);
write_output("tx_data_F.m","txdataF", &eNB->common_vars.txdataF[0][0],(UE->frame_parms.ofdm_symbol_size*UE->frame_parms.symbols_per_tti),1,1); write_output("tx_data_F.m","txdataF", &eNB->common_vars.txdataF[0][0],(UE->frame_parms.ofdm_symbol_size*UE->frame_parms.symbols_per_tti),1,1);
write_output("r_re_f.m","rref", &r_re_f[0],(UE->frame_parms.ofdm_symbol_size*UE->frame_parms.symbols_per_tti),1,1); write_output("r_re_f.m","rref", &r_re_f[0],(UE->frame_parms.ofdm_symbol_size*UE->frame_parms.symbols_per_tti),1,1);
write_output("r_im_f.m","rimf", &r_im_f[0],(UE->frame_parms.ofdm_symbol_size*UE->frame_parms.symbols_per_tti),1,1); write_output("r_im_f.m","rimf", &r_im_f[0],(UE->frame_parms.ofdm_symbol_size*UE->frame_parms.symbols_per_tti),1,1);*/
// Multipath channel // Multipath channel
if (awgn_flag == 0) { if (awgn_flag == 0) {
multipath_channel_freq_AVX_float(eNB2UE[round],s_re_f,s_im_f,r_re_f,r_im_f, multipath_channel_freq_AVX_float(eNB2UE[round],s_re_f,s_im_f,r_re_f,r_im_f,
2*UE->frame_parms.ofdm_symbol_size*UE->frame_parms.symbols_per_tti,hold_channel,0,0,0,subframe&0x1); 2*UE->frame_parms.ofdm_symbol_size*UE->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);
// printf("amc: ****************** eNB2UE[%d]->n_rx = %d,dd %d\n",round,eNB2UE[round]->nb_rx,eNB2UE[round]->channel_offset); // printf("amc: ****************** eNB2UE[%d]->n_rx = %d,dd %d\n",round,eNB2UE[round]->nb_rx,eNB2UE[round]->channel_offset);
if(abstx==1 && num_rounds>1) if(abstx==1 && num_rounds>1)
...@@ -2491,7 +2491,7 @@ int main(int argc, char **argv) ...@@ -2491,7 +2491,7 @@ int main(int argc, char **argv)
eNB_rxtx_proc_t *proc_eNB = &eNB->proc.proc_rxtx[UE->current_thread_id[subframe]]; eNB_rxtx_proc_t *proc_eNB = &eNB->proc.proc_rxtx[UE->current_thread_id[subframe]];
for (trials = 0; trials<n_frames; trials++) { for (trials = 0; trials<n_frames; trials++) {
printf("Trial %d\n",trials); //printf("Trial %d\n",trials);
fflush(stdout); fflush(stdout);
round=0; round=0;
......
...@@ -323,7 +323,12 @@ void multipath_channel_freq_AVX_float(channel_desc_t *desc, ...@@ -323,7 +323,12 @@ void multipath_channel_freq_AVX_float(channel_desc_t *desc,
uint8_t eNB_id, uint8_t eNB_id,
uint8_t UE_id, uint8_t UE_id,
uint8_t CC_id, uint8_t CC_id,
uint8_t th_id); uint8_t th_id,
uint32_t nb_rb,
uint32_t n_samples,
uint32_t ofdm_symbol_size,
uint32_t symbols_per_tti);
/**\fn void multipath_channel_prach(channel_desc_t *desc, /**\fn void multipath_channel_prach(channel_desc_t *desc,
double tx_sig_re[2], double tx_sig_re[2],
double tx_sig_im[2], double tx_sig_im[2],
......
...@@ -625,7 +625,11 @@ void multipath_channel_freq_AVX_float(channel_desc_t *desc, ...@@ -625,7 +625,11 @@ void multipath_channel_freq_AVX_float(channel_desc_t *desc,
uint8_t eNB_id, uint8_t eNB_id,
uint8_t UE_id, uint8_t UE_id,
uint8_t CC_id, uint8_t CC_id,
uint8_t th_id) uint8_t th_id,
uint32_t nb_rb,
uint32_t n_samples,
uint32_t ofdm_symbol_size,
uint32_t symbols_per_tti)
{ {
int ii,j,f; int ii,j,f;
__m256 rx_tmp256_re_f,rx_tmp256_im_f,rx_tmp256_re,rx_tmp256_im, rx_tmp256_1,rx_tmp256_2,rx_tmp256_3,rx_tmp256_4,tx256_re,tx256_im,chF256_x,chF256_y,pathloss256; __m256 rx_tmp256_re_f,rx_tmp256_im_f,rx_tmp256_re,rx_tmp256_im, rx_tmp256_1,rx_tmp256_2,rx_tmp256_3,rx_tmp256_4,tx256_re,tx256_im,chF256_x,chF256_y,pathloss256;
...@@ -634,11 +638,11 @@ void multipath_channel_freq_AVX_float(channel_desc_t *desc, ...@@ -634,11 +638,11 @@ void multipath_channel_freq_AVX_float(channel_desc_t *desc,
float path_loss = pow(10,desc->path_loss_dB/20); float path_loss = pow(10,desc->path_loss_dB/20);
pathloss256 = _mm256_set1_ps(path_loss); pathloss256 = _mm256_set1_ps(path_loss);
int nb_rb, n_samples, ofdm_symbol_size, symbols_per_tti; //int nb_rb, n_samples, ofdm_symbol_size, symbols_per_tti;
nb_rb=PHY_vars_UE_g[UE_id][CC_id]->frame_parms.N_RB_DL; //nb_rb=PHY_vars_UE_g[UE_id][CC_id]->frame_parms.N_RB_DL;
n_samples=PHY_vars_UE_g[UE_id][CC_id]->frame_parms.N_RB_DL*12+1; //n_samples=PHY_vars_UE_g[UE_id][CC_id]->frame_parms.N_RB_DL*12+1;
ofdm_symbol_size=length/PHY_vars_UE_g[UE_id][CC_id]->frame_parms.symbols_per_tti; //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; //symbols_per_tti=length/PHY_vars_UE_g[UE_id][CC_id]->frame_parms.ofdm_symbol_size;
#ifdef DEBUG_CH #ifdef DEBUG_CH
......
...@@ -72,12 +72,12 @@ ...@@ -72,12 +72,12 @@
int number_rb_ul; int number_rb_ul;
int first_rbUL ; int first_rbUL ;
#ifdef __AVX2__ double r_re_DL[NUMBER_OF_UE_MAX][2][30720];
float r_re_DL[NUMBER_OF_UE_MAX][2][30720]; double r_im_DL[NUMBER_OF_UE_MAX][2][30720];
float r_im_DL[NUMBER_OF_UE_MAX][2][30720]; double r_re_UL[NUMBER_OF_eNB_MAX][2][30720];
float r_re_UL[NUMBER_OF_eNB_MAX][2][30720]; double r_im_UL[NUMBER_OF_eNB_MAX][2][30720];
float r_im_UL[NUMBER_OF_eNB_MAX][2][30720];
#ifdef __AVX2__
float r_re_DL_f[NUMBER_OF_UE_MAX][2][2048*14]; float r_re_DL_f[NUMBER_OF_UE_MAX][2][2048*14];
float r_im_DL_f[NUMBER_OF_UE_MAX][2][2048*14]; float r_im_DL_f[NUMBER_OF_UE_MAX][2][2048*14];
float r_re_UL_f[NUMBER_OF_eNB_MAX][2][2048*14]; float r_re_UL_f[NUMBER_OF_eNB_MAX][2][2048*14];
...@@ -85,11 +85,6 @@ float r_im_UL_f[NUMBER_OF_eNB_MAX][2][2048*14]; ...@@ -85,11 +85,6 @@ float r_im_UL_f[NUMBER_OF_eNB_MAX][2][2048*14];
float r_re_UL_f_prach[NUMBER_OF_eNB_MAX][2][2048*14]; float r_re_UL_f_prach[NUMBER_OF_eNB_MAX][2][2048*14];
float r_im_UL_f_prach[NUMBER_OF_eNB_MAX][2][2048*14]; float r_im_UL_f_prach[NUMBER_OF_eNB_MAX][2][2048*14];
#else #else
double r_re_DL[NUMBER_OF_UE_MAX][2][30720];
double r_im_DL[NUMBER_OF_UE_MAX][2][30720];
double r_re_UL[NUMBER_OF_eNB_MAX][2][30720];
double r_im_UL[NUMBER_OF_eNB_MAX][2][30720];
double r_re_DL_f[NUMBER_OF_UE_MAX][2][2048*14]; double r_re_DL_f[NUMBER_OF_UE_MAX][2][2048*14];
double r_im_DL_f[NUMBER_OF_UE_MAX][2][2048*14]; double r_im_DL_f[NUMBER_OF_UE_MAX][2][2048*14];
double r_re_UL_f[NUMBER_OF_eNB_MAX][2][2048*14]; double r_re_UL_f[NUMBER_OF_eNB_MAX][2][2048*14];
...@@ -547,7 +542,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][ ...@@ -547,7 +542,7 @@ void do_DL_sig_freq(channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][
#ifdef __AVX2__ #ifdef __AVX2__
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel_freq); start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel_freq);
multipath_channel_freq_AVX_float(eNB2UE[eNB_id][UE_id][CC_id],s_re_f,s_im_f,r_re0_f,r_im0_f, multipath_channel_freq_AVX_float(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); frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,hold_channel,eNB_id,UE_id,CC_id,subframe&0x1,frame_parms->N_RB_DL,frame_parms->N_RB_DL*12+1,frame_parms->ofdm_symbol_size,frame_parms->symbols_per_tti);
stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel_freq); stop_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel_freq);
#else #else
start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel_freq); start_meas(&eNB2UE[eNB_id][UE_id][CC_id]->DL_multipath_channel_freq);
...@@ -1151,7 +1146,7 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][ ...@@ -1151,7 +1146,7 @@ void do_UL_sig_freq(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][
#ifdef __AVX2__ #ifdef __AVX2__
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_multipath_channel_freq); start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_multipath_channel_freq);
multipath_channel_freq_AVX_float(UE2eNB[UE_id][eNB_id][CC_id],s_re_f,s_im_f,r_re0_f,r_im0_f, multipath_channel_freq_AVX_float(UE2eNB[UE_id][eNB_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);//ue timer subframe&0x1 frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,hold_channel,eNB_id,UE_id,CC_id,subframe&0x1,frame_parms->N_RB_DL,frame_parms->N_RB_DL*12+1,frame_parms->ofdm_symbol_size,frame_parms->symbols_per_tti);//ue timer subframe&0x1
stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_multipath_channel_freq); stop_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_multipath_channel_freq);
#else #else
start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_multipath_channel_freq); start_meas(&UE2eNB[UE_id][eNB_id][CC_id]->UL_multipath_channel_freq);
......
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