diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c index 6e159d8989fdabd40593ac0cf9b094f675f290f3..63b3f27319b8a2e367a7da2e0e01361bb93de865 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c @@ -216,8 +216,8 @@ int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,uint8_t UE_id,uint8_ temp = 0; for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) { - Re = ((int16_t*)ul_ch_estimates_time[aa])[(i<<2)]; - Im = ((int16_t*)ul_ch_estimates_time[aa])[1+(i<<2)]; + Re = ((int16_t*)ul_ch_estimates_time[aa])[(i<<1)]; + Im = ((int16_t*)ul_ch_estimates_time[aa])[1+(i<<1)]; temp += (Re*Re/2) + (Im*Im/2); } @@ -227,6 +227,8 @@ int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,uint8_t UE_id,uint8_ } } + if (max_pos>frame_parms->ofdm_symbol_size/2) + max_pos = max_pos-frame_parms->ofdm_symbol_size; // filter position to reduce jitter if (first_run == 1) { diff --git a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c index 7023fc6eedbb0ed338cea5ea1bb89fd64a52e049..a569ddfc71bc19fc40531b45c963afd1d66291b6 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c @@ -253,25 +253,25 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB, switch(frame_parms->N_RB_DL) { case 6: - dft128((int16_t*) temp_in_ifft_0, + idft128((int16_t*) temp_in_ifft_0, (int16_t*) ul_ch_estimates_time[aa], 1); break; case 25: - dft512((int16_t*) temp_in_ifft_0, + idft512((int16_t*) temp_in_ifft_0, (int16_t*) ul_ch_estimates_time[aa], 1); break; case 50: - dft1024((int16_t*) temp_in_ifft_0, + idft1024((int16_t*) temp_in_ifft_0, (int16_t*) ul_ch_estimates_time[aa], 1); break; case 100: - dft2048((int16_t*) temp_in_ifft_0, + idft2048((int16_t*) temp_in_ifft_0, (int16_t*) ul_ch_estimates_time[aa], 1); break; @@ -283,9 +283,9 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB, if (Ns == 0) { write_output("rxdataF_ext.m","rxF_ext",&rxdataF_ext[aa][symbol_offset],512*2,2,1); write_output("tmpin_ifft.m","drs_in",temp_in_ifft_0,512,1,1); - write_output("drs_est0.m","drs0",ul_ch_estimates_time[aa],512*2,2,1); + write_output("drs_est0.m","drs0",ul_ch_estimates_time[aa],512,1,1); } else - write_output("drs_est1.m","drs1",ul_ch_estimates_time[aa],512*2,2,1); + write_output("drs_est1.m","drs1",ul_ch_estimates_time[aa],512,1,1); } #endif @@ -467,7 +467,6 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB, if((aa == 0)&& (cooperation_flag == 2)) { write_output("test1.m","t1",temp_in_ifft_0,512,1,1); write_output("test2.m","t2",temp_out_ifft_0,512*2,2,1); - // write_output("test2.m","t2",ul_ch_estimates_time[aa],512*2,2,1); write_output("test3.m","t3",temp_in_fft_0,512,1,1); write_output("test4.m","t4",temp_out_fft_0,512,1,1); write_output("test5.m","t5",temp_in_fft_1,512,1,1); diff --git a/openair1/PHY/LTE_TRANSPORT/pucch.c b/openair1/PHY/LTE_TRANSPORT/pucch.c index 5fd5f52b0b485e089e5682542c915625d978254a..59e4084e8f2d1ecd0e28992dc58cb180c28e7b8b 100644 --- a/openair1/PHY/LTE_TRANSPORT/pucch.c +++ b/openair1/PHY/LTE_TRANSPORT/pucch.c @@ -42,8 +42,8 @@ #include "LAYER2/MAC/extern.h" //uint8_t ncs_cell[20][7]; -#define DEBUG_PUCCH_TX -#define DEBUG_PUCCH_RX +//#define DEBUG_PUCCH_TX +//#define DEBUG_PUCCH_RX int16_t cfo_pucch_np[24*7] = {20787,-25330,27244,-18205,31356,-9512,32767,0,31356,9511,27244,18204,20787,25329, 27244,-18205,30272,-12540,32137,-6393,32767,0,32137,6392,30272,12539,27244,18204, diff --git a/openair1/PHY/TOOLS/lte_phy_scope.c b/openair1/PHY/TOOLS/lte_phy_scope.c index e2f0c695a376dcec1937c7845ab343e899348e13..5fdf89f2534926cc21351f5706d65b8b5275a1c0 100644 --- a/openair1/PHY/TOOLS/lte_phy_scope.c +++ b/openair1/PHY/TOOLS/lte_phy_scope.c @@ -209,13 +209,13 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form, } } - // Channel Impulse Response (still repeated format) + // Channel Impulse Response if (chest_t != NULL) { ymax = 0; if (chest_t[0] !=NULL) { for (i=0; i<(frame_parms->ofdm_symbol_size); i++) { - chest_t_abs[0][i] = (float) (chest_t[0][4*i]*chest_t[0][4*i]+chest_t[0][4*i+1]*chest_t[0][4*i+1]); + chest_t_abs[0][i] = (float) (chest_t[0][2*i]*chest_t[0][2*i]+chest_t[0][2*i+1]*chest_t[0][2*i+1]); if (chest_t_abs[0][i] > ymax) ymax = chest_t_abs[0][i]; @@ -227,7 +227,7 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form, for (arx=1; arx<nb_antennas_rx; arx++) { if (chest_t[arx] !=NULL) { for (i=0; i<(frame_parms->ofdm_symbol_size>>3); i++) { - chest_t_abs[arx][i] = (float) (chest_t[arx][4*i]*chest_t[arx][4*i]+chest_t[arx][4*i+1]*chest_t[arx][4*i+1]); + chest_t_abs[arx][i] = (float) (chest_t[arx][2*i]*chest_t[arx][2*i]+chest_t[arx][2*i+1]*chest_t[arx][2*i+1]); if (chest_t_abs[arx][i] > ymax) ymax = chest_t_abs[arx][i]; diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c index da00a3baeb39e152421ad8b91c30da1dfbeb0ebf..6394c7dff6fd451a82364cd27c93b5ffc857f9ed 100755 --- a/openair1/SCHED/phy_procedures_lte_ue.c +++ b/openair1/SCHED/phy_procedures_lte_ue.c @@ -342,15 +342,13 @@ void process_timing_advance(uint8_t Mod_id,uint8_t CC_id,int16_t timing_advance) // uint32_t frame = PHY_vars_UE_g[Mod_id]->frame; - if ((timing_advance>>5) & 1) //it is negative - timing_advance = timing_advance - (1<<6); + // timing advance has Q1.5 format + timing_advance = timing_advance - (1<<5); if (openair_daq_vars.manual_timing_advance == 0) { //if ( (frame % 100) == 0) { //if ((timing_advance > 3) || (timing_advance < -3) ) - PHY_vars_UE_g[Mod_id][CC_id]->timing_advance = cmax(0,(int)PHY_vars_UE_g[Mod_id][CC_id]->timing_advance+timing_advance*4); - - //} + PHY_vars_UE_g[Mod_id][CC_id]->timing_advance = PHY_vars_UE_g[Mod_id][CC_id]->timing_advance+timing_advance*4; //this is for 25RB only!!! } LOG_D(PHY,"[UE %d] Got timing advance %d from MAC, new value %d\n",Mod_id, timing_advance, PHY_vars_UE_g[Mod_id][CC_id]->timing_advance); @@ -1203,15 +1201,17 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstra openair_daq_vars.timing_advance- phy_vars_ue->timing_advance- phy_vars_ue->N_TA_offset+5)%(LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*frame_parms->samples_per_tti); - LOG_D(PHY,"[UE %d] Frame %d, subframe %d: ulsch_start = %d (rxoff %d, HW TA %d, TA %d, TA_offset %d\n", +#else //this is the normal case + ulsch_start = (frame_parms->samples_per_tti*subframe_tx)-phy_vars_ue->N_TA_offset; //-phy_vars_ue->timing_advance; +#endif //else EXMIMO + LOG_D(PHY,"[UE %d] Frame %d, subframe %d: ulsch_start = %d (rxoff %d, HW TA %d, timing advance %d, TA_offset %d\n", + Mod_id,frame_tx,subframe_tx, + ulsch_start, phy_vars_ue->rx_offset, openair_daq_vars.timing_advance, phy_vars_ue->timing_advance, phy_vars_ue->N_TA_offset); -#else //this is the normal case - ulsch_start = (frame_parms->samples_per_tti*subframe_tx)-phy_vars_ue->N_TA_offset; -#endif //else EXMIMO if (generate_ul_signal == 1 ) {