Commit 2e29a27c authored by lfarizav's avatar lfarizav

some updates

parent 75cf5870
......@@ -3537,7 +3537,7 @@ void dci_decoding_procedure0(LTE_UE_PDCCH **pdcch_vars,
dci_decoded_output[current_thread_id][4],dci_decoded_output[current_thread_id][5],dci_decoded_output[current_thread_id][6],dci_decoded_output[current_thread_id][7]);
#endif
}
printf("[dci] crc %x\n",crc);
if (crc==si_rnti) {
dci_alloc[*dci_cnt].format = format_si;
*dci_cnt = *dci_cnt+1;
......@@ -4011,9 +4011,10 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
printf("[DCI search] doing common search/format0 aggregation 4\n");
#endif
if (ue->prach_resources[eNB_id])
if (ue->prach_resources[eNB_id]){
ra_rnti = ue->prach_resources[eNB_id]->ra_RNTI;
printf("[dci] ra_RNTI %d, ue->decode_SIB? %d\n",ra_rnti,ue->decode_SIB);
}
// First check common search spaces at aggregation 4 (SI_RNTI, P_RNTI and RA_RNTI format 0/1A),
// and UE_SPEC format0 (PUSCH) too while we're at it
dci_decoding_procedure0(pdcch_vars,1,mode,subframe,
......@@ -4038,7 +4039,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]1 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff) ||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4067,7 +4068,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]2 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff) ||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4100,7 +4101,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]3 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4130,7 +4131,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap1,
&CCEmap2);
//#endif
printf("[dci]4 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
}
if (ue->UE_mode[eNB_id] <= PRACH)
......@@ -4164,7 +4165,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]5 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4197,7 +4198,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]6 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4232,7 +4233,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]7 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4266,7 +4267,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]8 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4301,7 +4302,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap1,
&CCEmap2);
//printf("[DCI search] Format 1 aggregation 1 dci_cnt %d\n",dci_cnt);
printf("[dci]9 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff) ||
(format_c_found==1))
return(dci_cnt);
......@@ -4334,7 +4335,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap1,
&CCEmap2);
//printf("[DCI search] Format 1 aggregation 2 dci_cnt %d\n",dci_cnt);
printf("[dci]10 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
(format_c_found==1))
return(dci_cnt);
......@@ -4367,7 +4368,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap1,
&CCEmap2);
//printf("[DCI search] Format 1 aggregation 4 dci_cnt %d\n",dci_cnt);
printf("[dci]11 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4401,7 +4402,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap1,
&CCEmap2);
//printf("[DCI search] Format 1 aggregation 8 dci_cnt %d\n",dci_cnt);
printf("[dci]12 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4439,7 +4440,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]13 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
LOG_D(PHY," format 2A_2A search CCEmap0 %x, format0_found %d, format_c_found %d \n", CCEmap0, format0_found, format_c_found);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
......@@ -4475,7 +4476,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]14 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4510,7 +4511,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]15 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4546,6 +4547,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]16 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
//#endif
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
......@@ -4581,7 +4583,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]17 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4614,7 +4616,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]18 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4647,7 +4649,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]19 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4681,6 +4683,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]20 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
//#endif
} else if ((tmode==5) || (tmode==6)) { // This is MU-MIMO
......@@ -4712,7 +4715,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]21 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
......@@ -4746,7 +4749,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]22 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4779,7 +4782,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]23 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......@@ -4814,7 +4817,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&CCEmap0,
&CCEmap1,
&CCEmap2);
printf("[dci]24 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
if ((CCEmap0==0xffff)||
((format0_found==1)&&(format_c_found==1)))
return(dci_cnt);
......
This diff is collapsed.
......@@ -125,7 +125,7 @@ int32_t signal_energy_prach(int32_t *input,uint32_t length)
mm0 = _mm_setzero_si64();//pxor(mm0,mm0);
mm3 = _mm_setzero_si64();//pxor(mm3,mm3);
for (i=0; i<length; i+=2) {
for (i=0; i<2*length; i+=2) {
mm1 = in[i];
mm2 = mm1;
......@@ -140,7 +140,7 @@ int32_t signal_energy_prach(int32_t *input,uint32_t length)
mm0 = _m_psrlqi(mm0,32);
mm0 = _m_paddd(mm0,mm1);
temp = _m_to_int(mm0);
temp/=(length/2);
temp/=(length);
temp<<=shift; // this is the average of x^2
// now remove the DC component
......@@ -150,7 +150,7 @@ int32_t signal_energy_prach(int32_t *input,uint32_t length)
mm2 = _m_paddw(mm2,mm3);
mm2 = _m_pmaddwd(mm2,mm2);
temp2 = _m_to_int(mm2);
temp2/=(length*length/4);
temp2/=(length*length);
// temp2<<=(2*shift_DC);
temp -= temp2;
......
......@@ -2023,6 +2023,8 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
preamble_delay_list,
frame,
0);
printf("[prach] ook\n");
write_output("prach_rxF_comp1.m","prach_rxF_comp1",eNB->prach_vars.prachF,1024,1,1);
}
} else {
for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
......
......@@ -3108,6 +3108,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
if (abstraction_flag == 0) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_IN);
printf("[phy_procedures_lte_ue]before is %s\n","ok");
rx_pdcch(ue,
proc->frame_rx,
subframe_rx,
......@@ -3115,7 +3116,8 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
(ue->frame_parms.mode1_flag == 1) ? SISO : ALAMOUTI,
ue->high_speed_flag,
ue->is_secondary_ue);
printf("[phy_procedures_lte_ue]after is %s\n","ok");
printf("[phy_procedures_lte_ue] ue->prach_resources[%d] %d\n",eNB_id,ue->prach_resources[eNB_id]);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_OUT);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING, VCD_FUNCTION_IN);
......@@ -3225,9 +3227,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
#endif
for (i=0; i<dci_cnt; i++) {
printf("[phy_procedures_lte_ue] rnti[%d] %x, crnti %x\n",i,dci_alloc_rx[i].rnti,ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->crnti);
if ((ue->UE_mode[eNB_id]>PRACH) &&
(dci_alloc_rx[i].rnti == ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->crnti) &&
(dci_alloc_rx[i].format != format0)) {
......@@ -3241,7 +3241,6 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
get_nCCE(3,&ue->frame_parms,get_mi(&ue->frame_parms,0)));
//dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
if ((ue->UE_mode[eNB_id] > PRACH) &&
(generate_ue_dlsch_params_from_dci(frame_rx,
subframe_rx,
......@@ -3367,14 +3366,13 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
}
}
else if ((ue->prach_resources[eNB_id]) &&
(dci_alloc_rx[i].rnti == ue->prach_resources[eNB_id]->ra_RNTI) &&
(dci_alloc_rx[i].format == format1A)) {
#ifdef DEBUG_PHY_PROC
LOG_D(PHY,"[UE %d][RAPROC] subframe %d: Found RA rnti %x, format 1A, dci_cnt %d\n",ue->Mod_id,subframe_rx,dci_alloc_rx[i].rnti,i);
printf("[UE %d][RAPROC] ue->prach_resources[eNB_id] %d, ue->prach_resources[eNB_id]->ra_RNTI %d\n",ue->Mod_id,ue->prach_resources[eNB_id],ue->prach_resources[eNB_id]->ra_RNTI);
//if (((frame_rx%100) == 0) || (frame_rx < 20))
//dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
//mac_xface->macphy_exit("so far so good...\n");
......@@ -3413,6 +3411,8 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
#endif
ue->ulsch_no_allocation_counter[eNB_id] = 0;
//dump_dci(&ue->frame_parms,&dci_alloc_rx[i]);
if ((ue->UE_mode[eNB_id] > PRACH) &&
......@@ -3496,6 +3496,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
}
}
#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_rx_pdcch_stats);
#endif
......
......@@ -119,7 +119,7 @@ void adc_prach(double *r_re[2],
for (aa=0; aa<nb_rx_antennas; aa++) {
((short *)output)[((i+output_offset)<<1)] = (short)(r_re[aa][i+input_offset]*gain);
((short *)output)[1+((i+output_offset)<<1)] = (short)(r_im[aa][i+input_offset]*gain);
printf("[adc_prach]i %d output (%d,%d)\n",i,((short *)output)[((i+output_offset)<<1)],((short *)output)[1+((i+output_offset)<<1)]);
if ((r_re[aa][i+input_offset]*gain) > 30000) {
//("Adc outputs %d %e %d \n",i,((short *)output[0])[((i+output_offset)<<1)], ((i+output_offset)<<1) );
}
......
......@@ -148,7 +148,7 @@ double dac_fixed_gain_prach(double *s_re[2],
amp1 = 0;
for (aa=0; aa<nb_tx_antennas; aa++) {
amp1 += sqrt((double)signal_energy_prach((int32_t*)&input[input_offset_meas],length_meas*2)/NB_RE);
amp1 += sqrt((double)signal_energy_prach((int32_t*)&input[input_offset_meas],length_meas)/NB_RE);
}
amp1/=nb_tx_antennas;
......
......@@ -383,31 +383,21 @@ void multipath_channel_prach(channel_desc_t *desc,
random_channel(desc,0);//Find a(l)
freq_channel_prach(desc,nb_rb,n_samples,prach_fmt,n_ra_prb);//Find desc->chF_prach
}
for (l=0;l<symbols_per_tti;l++){//0-13 normal cyclic prefix
k = (12*n_ra_prb) - 6*fp->N_RB_UL;
if (k<0)
k+=fp->ofdm_symbol_size;
k*=12;
k+=13;
k*=2;
for (f=0;f<prach_samples; f++) {
if (k>=((prach_fmt<4)?12:2)*ofdm_symbol_size)
k=0;
rx_tmp.x = 0;
rx_tmp.y = 0;
for (ii=0; ii<desc->nb_rx; ii++) {
for (j=0; j<desc->nb_tx; j++) {
//RX_RE(k) = TX_RE(k).chF(k).x - TX_IM(k).chF(k).y
rx_tmp.x += ((tx_sig_re[ii][k+l*ofdm_symbol_size*12] * desc->chF_prach[ii+(j*desc->nb_rx)][f].x)-(tx_sig_im[ii][k+l*ofdm_symbol_size*12] * desc->chF_prach[ii+(j*desc->nb_rx)][f].y));
rx_tmp.x += (tx_sig_re[ii][f] * desc->chF_prach[ii+(j*desc->nb_rx)][f+(prach_fmt<4)?13:3].x)-(tx_sig_im[ii][f] * desc->chF_prach[ii+(j*desc->nb_rx)][f+(prach_fmt<4)?13:3].y);
//RX_IM(k) = TX_IM(k).chF(k).x + TX_RE(k).chF(k).y
rx_tmp.y += ((tx_sig_im[ii][k+l*ofdm_symbol_size*12] * desc->chF_prach[ii+(j*desc->nb_rx)][f].x)+(tx_sig_re[ii][k+l*ofdm_symbol_size*12] * desc->chF_prach[ii+(j*desc->nb_rx)][f].y));
rx_tmp.y += (tx_sig_im[ii][f] * desc->chF_prach[ii+(j*desc->nb_rx)][f+(prach_fmt<4)?13:3].x)+(tx_sig_re[ii][f] * desc->chF_prach[ii+(j*desc->nb_rx)][f+(prach_fmt<4)?13:3].y);
} // j
//printf("[multipath prach] k: %d\n",k/2);
rx_sig_re[ii][(k++)+l*ofdm_symbol_size*12] = rx_tmp.x*path_loss;
rx_sig_im[ii][(k++)+l*ofdm_symbol_size*12] = rx_tmp.y*path_loss;
rx_sig_re[ii][f] = rx_tmp.x*path_loss;
rx_sig_im[ii][f] = rx_tmp.y*path_loss;
} // ii
} // f
}//l
}
......@@ -1106,7 +1106,7 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
tx_prachF = PHY_vars_UE_g[UE_id][CC_id]->prach_vars[eNB_id]->prachF;
//write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][0]->prach_vars[0]->prachF,frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12,1,1);
sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12;
//sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12;
//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]);
pointer_firstvalue_PRACH=((12*n_ra_prb) - 6*PHY_vars_UE_g[UE_id][CC_id]->frame_parms.N_RB_UL<0)?(((12*n_ra_prb) - 6*PHY_vars_UE_g[UE_id][CC_id]->frame_parms.N_RB_UL+PHY_vars_UE_g[UE_id][CC_id]->frame_parms.ofdm_symbol_size)*12+13)*2:(((12*n_ra_prb) - 6*PHY_vars_UE_g[UE_id][CC_id]->frame_parms.N_RB_UL)*12+13)*2;
......@@ -1143,10 +1143,14 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm[subframe],
PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe],
subframe,sf_offset);
for (int idx=0;idx<10;idx++) printf("dumping raw PRACH UL tx subframe (input) %d: s_f[%d] = (%f,%f)\n", subframe, idx, s_re_f_prach[0][idx],s_im_f_prach[0][idx]);
// write_output("s_re_f_prach.m","s_re_f_prach_txF", s_re_f_prach,frame_parms->ofdm_symbol_size*12,1,1);
multipath_channel_prach(UE2eNB[UE_id][eNB_id][CC_id],s_re_f_prach,s_im_f_prach,r_re0_f_prach,r_im0_f_prach,
frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12,hold_channel,eNB_id,UE_id,CC_id,subframe&0x1,subframe);
for (int idx=0;idx<10;idx++) printf("dumping raw PRACH UL tx subframe (input) %d: s_f[%d] = (%f,%f)\n", subframe, idx, s_re_f_prach[0][idx],s_im_f_prach[0][idx]);
for (int idx=829;idx<839;idx++) printf("dumping raw PRACH UL tx subframe (input) %d: s_f[%d] = (%f,%f)\n", subframe, idx, s_re_f_prach[0][idx],s_im_f_prach[0][idx]);
for (int idx=0;idx<10;idx++) printf("dumping raw PRACH UL tx subframe (output) %d: r_f[%d] = (%f,%f)\n", subframe, idx, r_re0_f_prach[0][idx],r_im0_f_prach[0][idx]);
for (int idx=829;idx<839;idx++) printf("dumping raw PRACH UL tx subframe (output) %d: r_f[%d] = (%f,%f)\n", subframe, idx, r_re0_f_prach[0][idx],r_im0_f_prach[0][idx]);
//write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][0]->prach_vars[0]->prachF,frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,1);
rx_pwr = signal_energy_fp2(UE2eNB[UE_id][eNB_id][CC_id]->chF[0],(12*frame_parms->N_RB_DL+1))*(12*frame_parms->N_RB_DL+1);
LOG_D(OCM,"[SIM][UL] subframe %d Channel UE %d => eNB %d : %f dB (hold %d,length %d, PL %f)\n",subframe,UE_id,eNB_id,10*log10(rx_pwr),
......@@ -1190,6 +1194,7 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
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)
#ifdef DEBUG_SIM
rx_pwr = signal_energy_fp(r_re_p_f_prach,r_im_p_f_prach,nb_antennas_rx,frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12,0)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
......@@ -1197,16 +1202,16 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
#endif
rx_prachF = PHY_vars_eNB_g[eNB_id][CC_id]->prach_vars.prachF;
sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12;
//sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12;
adc_prach(r_re_p_f_prach,
r_im_p_f_prach,
0,
sf_offset,
0,
(unsigned int*)rx_prachF,
nb_antennas_rx,
subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12,
(prach_fmt<4)?839:139,
12);
write_output("rxprachF.m","prach_rxF", PHY_vars_eNB_g[eNB_id][CC_id]->prach_vars.prachF,12*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16);
write_output("rxprachF.m","prach_rxF", PHY_vars_eNB_g[eNB_id][CC_id]->prach_vars.prachF,4*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,16);
#ifdef DEBUG_SIM
//rx_pwr2 = signal_energy(rxdataF[0]+sf_offset,subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
......
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