Commit 5fda0110 authored by lukashov's avatar lukashov

1. Rician channel now operates with AoA 45 degrees.

2. Fixed a bug for HARQ rounds for TM1 frequency selective with PCE.
parent ecdf87f1
...@@ -721,14 +721,14 @@ int main(int argc, char **argv) ...@@ -721,14 +721,14 @@ int main(int argc, char **argv)
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_u%d_imod%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1,mcs_i,rx_type,i_mod); sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_u%d_imod%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1,mcs_i,rx_type,i_mod);
else if (abstx == 1) else if (abstx == 1)
if (perfect_ce==1) if (perfect_ce==1)
sprintf(bler_fname,"bler_tx%d_r%d_ch%d_%d_nrx%d_mcs%d_mcsi%d_ab_pce_sh%d_pnort.csv",transmission_mode,rx_type,channel_model,n_frames, n_rx,mcs1, mcs2,interf_unaw_shift ); sprintf(bler_fname,"bler_tx%d_r%d_ch%d_%d_nrx%d_mcs%d_mcsi%d_ab_pce_sh%d_pnort_r45.csv",transmission_mode,rx_type,channel_model,n_frames, n_rx,mcs1, mcs2,interf_unaw_shift );
else else
sprintf(bler_fname,"bler_tx%d_r%d_ch%d_%d_nrx%d_mcs%d_mcsi%d_ab_sh%d_pnort.csv",transmission_mode,rx_type,channel_model, n_frames, n_rx,mcs1, mcs2,interf_unaw_shift ); sprintf(bler_fname,"bler_tx%d_r%d_ch%d_%d_nrx%d_mcs%d_mcsi%d_ab_sh%d_pnort_r45.csv",transmission_mode,rx_type,channel_model, n_frames, n_rx,mcs1, mcs2,interf_unaw_shift );
else //abstx=0 else //abstx=0
if (perfect_ce==1) if (perfect_ce==1)
sprintf(bler_fname,"bler_tx%d_r%d_ch%d_%d_nrx%d_mcs%d_mcsi%d_pce_sh%d_pnort.csv",transmission_mode,rx_type,channel_model,n_frames, n_rx,mcs1, mcs2, interf_unaw_shift); sprintf(bler_fname,"bler_tx%d_r%d_ch%d_%d_nrx%d_mcs%d_mcsi%d_pce_sh%d_pnort_r45.csv",transmission_mode,rx_type,channel_model,n_frames, n_rx,mcs1, mcs2, interf_unaw_shift);
else else
sprintf(bler_fname,"bler_tx%d_r%d_ch%d_%d_nrx%d_mcs%d_mcsi%d_sh%d_pnort.csv",transmission_mode,rx_type,channel_model,n_frames,n_rx,mcs1, mcs2, interf_unaw_shift); sprintf(bler_fname,"bler_tx%d_r%d_ch%d_%d_nrx%d_mcs%d_mcsi%d_sh%d_pnort_r45.csv",transmission_mode,rx_type,channel_model,n_frames,n_rx,mcs1, mcs2, interf_unaw_shift);
bler_fd = fopen(bler_fname,"w"); bler_fd = fopen(bler_fname,"w");
if (bler_fd==NULL) { if (bler_fd==NULL) {
...@@ -764,9 +764,9 @@ int main(int argc, char **argv) ...@@ -764,9 +764,9 @@ int main(int argc, char **argv)
else else
if (perfect_ce==1) if (perfect_ce==1)
sprintf(csv_fname,"dout_tx%d_r%d_mcs%d_mcsi%d_ch%d_ns%d_R%d_pce_sh%d_%d_pnort.m",transmission_mode,rx_type,mcs1,mcs2,channel_model,n_frames,num_rounds, interf_unaw_shift, n_ch_rlz); sprintf(csv_fname,"dout_tx%d_r%d_mcs%d_mcsi%d_ch%d_ns%d_R%d_pce_sh%d_%d_pnort_r45.m",transmission_mode,rx_type,mcs1,mcs2,channel_model,n_frames,num_rounds, interf_unaw_shift, n_ch_rlz);
else else
sprintf(csv_fname,"dout_tx%d_r%d_mcs%d_mcsi%d_ch%d_ns%d_R%d_sh%d_%d_pnort.m",transmission_mode,rx_type,mcs1,mcs2,channel_model,n_frames,num_rounds, interf_unaw_shift, n_ch_rlz); sprintf(csv_fname,"dout_tx%d_r%d_mcs%d_mcsi%d_ch%d_ns%d_R%d_sh%d_%d_pnort_r45.m",transmission_mode,rx_type,mcs1,mcs2,channel_model,n_frames,num_rounds, interf_unaw_shift, n_ch_rlz);
csv_fd = fopen(csv_fname,"w"); csv_fd = fopen(csv_fname,"w");
fprintf(csv_fd,"data_all%d=[",mcs1); fprintf(csv_fd,"data_all%d=[",mcs1);
...@@ -2934,23 +2934,22 @@ n(tikz_fname,"w"); ...@@ -2934,23 +2934,22 @@ n(tikz_fname,"w");
// Multipath channel // Multipath channel
if (awgn_flag == 0) { if (awgn_flag == 0) {
multipath_channel(eNB2UE[0],s_re,s_im,r_re,r_im, multipath_channel(eNB2UE[round],s_re,s_im,r_re,r_im,
2*frame_parms->samples_per_tti,hold_channel); 2*frame_parms->samples_per_tti,hold_channel);
if (PHY_vars_UE->perfect_ce==1){
freq_channel(eNB2UE[round],PHY_vars_UE->lte_frame_parms.N_RB_DL,12*PHY_vars_UE->lte_frame_parms.N_RB_DL + 1);
// write_output("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8);
// write_output("channelF.m","chF",eNB2UE[round]->chF[0],12*PHY_vars_UE->lte_frame_parms.N_RB_DL +1,1,8);
}
// 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)
if(round==0 && hold_channel==0){ if(round==0 && hold_channel==0){
random_channel(eNB2UE[1],0); random_channel(eNB2UE[1],0);
random_channel(eNB2UE[2],0); random_channel(eNB2UE[2],0);
random_channel(eNB2UE[3],0); random_channel(eNB2UE[3],0);
} }
if (PHY_vars_UE->perfect_ce==1){
freq_channel(eNB2UE[round],PHY_vars_UE->lte_frame_parms.N_RB_DL,12*PHY_vars_UE->lte_frame_parms.N_RB_DL + 1);
// write_output("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8);
// write_output("channelF.m","chF",eNB2UE[round]->chF[0],12*PHY_vars_UE->lte_frame_parms.N_RB_DL +1,1,8);
}
} }
// freq_channel(eNB2UE[0], NB_RB,12*NB_RB + 1); // freq_channel(eNB2UE[0], NB_RB,12*NB_RB + 1);
if(abstx){ if(abstx){
if (trials==0 && round==0) { if (trials==0 && round==0) {
......
...@@ -122,7 +122,7 @@ int freq_channel(channel_desc_t *desc,uint16_t nb_rb,int16_t n_samples) ...@@ -122,7 +122,7 @@ int freq_channel(channel_desc_t *desc,uint16_t nb_rb,int16_t n_samples)
start_meas(&desc->interp_freq); start_meas(&desc->interp_freq);
for (f=-n_samples_max/2,f2=-n_samples/2; f<=n_samples_max/2; f+=d,f2++) { for (f=-n_samples_max/2,f2=-n_samples/2; f<n_samples_max/2; f+=d,f2++) {
clut = cos_lut[n_samples_max/2+f]; clut = cos_lut[n_samples_max/2+f];
slut = sin_lut[n_samples_max/2+f]; slut = sin_lut[n_samples_max/2+f];
......
...@@ -562,7 +562,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, ...@@ -562,7 +562,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
Td = 0.8; Td = 0.8;
channel_length = (int)11+2*sampling_rate*Td; channel_length = (int)11+2*sampling_rate*Td;
ricean_factor = 0.1; ricean_factor = 0.1;
aoa = .03; aoa = 0.7854;
maxDoppler = 0; maxDoppler = 0;
fill_channel_desc(chan_desc,nb_tx, fill_channel_desc(chan_desc,nb_tx,
...@@ -715,7 +715,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, ...@@ -715,7 +715,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
Td = 0; Td = 0;
channel_length = 1; channel_length = 1;
ricean_factor = 0.1; ricean_factor = 0.1;
aoa = .03; aoa = 0.7854;
maxDoppler = 0; maxDoppler = 0;
fill_channel_desc(chan_desc,nb_tx, fill_channel_desc(chan_desc,nb_tx,
......
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