diff --git a/openair1/SIMULATION/LTE_PHY/pbchsim.c b/openair1/SIMULATION/LTE_PHY/pbchsim.c index 4a2b3f935120036e29ed1405f4a865720123e98d..624ce7ad3ed1aa524601b825c63f3e845584117e 100644 --- a/openair1/SIMULATION/LTE_PHY/pbchsim.c +++ b/openair1/SIMULATION/LTE_PHY/pbchsim.c @@ -52,8 +52,10 @@ #include "OCG_vars.h" -PHY_VARS_eNB *PHY_vars_eNB,*PHY_vars_eNB1,*PHY_vars_eNB2; -PHY_VARS_UE *PHY_vars_UE; +#include "unitary_defs.h" + +PHY_VARS_eNB *eNB,*eNB1,*eNB2; +PHY_VARS_UE *UE; #define DLSCH_RB_ALLOC 0x1fbf // igore DC component,RB13 @@ -123,17 +125,7 @@ int main(int argc, char **argv) logInit(); number_of_cards = 1; - openair_daq_vars.rx_rf_mode = 1; - - /* - rxdataF = (int **)malloc16(2*sizeof(int*)); - rxdataF[0] = (int *)malloc16(FRAME_LENGTH_BYTES); - rxdataF[1] = (int *)malloc16(FRAME_LENGTH_BYTES); - rxdata = (int **)malloc16(2*sizeof(int*)); - rxdata[0] = (int *)malloc16(FRAME_LENGTH_BYTES); - rxdata[1] = (int *)malloc16(FRAME_LENGTH_BYTES); - */ while ((c = getopt (argc, argv, "f:hA:pf:g:i:j:n:s:S:t:x:y:z:N:F:GR:O:dP:")) != -1) { switch (c) { case 'f': @@ -340,29 +332,29 @@ int main(int argc, char **argv) if (transmission_mode>=2) n_tx=2; - lte_param_init(n_tx,n_rx,transmission_mode,extended_prefix_flag,frame_type,Nid_cell,N_RB_DL,osf); + lte_param_init(n_tx,n_rx,transmission_mode,extended_prefix_flag,frame_type,Nid_cell,3,N_RB_DL,0,osf,0); - PHY_vars_eNB1 = malloc(sizeof(PHY_VARS_eNB)); - PHY_vars_eNB2 = malloc(sizeof(PHY_VARS_eNB)); - PHY_vars_UE->PHY_measurements.n_adj_cells=2; - PHY_vars_UE->PHY_measurements.adj_cell_id[0] = Nid_cell+1; - PHY_vars_UE->PHY_measurements.adj_cell_id[1] = Nid_cell+2; + eNB1 = malloc(sizeof(PHY_VARS_eNB)); + eNB2 = malloc(sizeof(PHY_VARS_eNB)); + UE->measurements.n_adj_cells=2; + UE->measurements.adj_cell_id[0] = Nid_cell+1; + UE->measurements.adj_cell_id[1] = Nid_cell+2; for (i=0; i<3; i++) - lte_gold(&PHY_vars_eNB->lte_frame_parms,PHY_vars_UE->lte_gold_table[i],Nid_cell+i); + lte_gold(&eNB->frame_parms,UE->lte_gold_table[i],Nid_cell+i); - memcpy((void*)&PHY_vars_eNB1->lte_frame_parms,(void*)&PHY_vars_eNB->lte_frame_parms,sizeof(LTE_DL_FRAME_PARMS)); - PHY_vars_eNB1->lte_frame_parms.Nid_cell=Nid_cell+1; - PHY_vars_eNB1->lte_frame_parms.nushift=(Nid_cell+1)%6; - PHY_vars_eNB1->Mod_id=1; + memcpy((void*)&eNB1->frame_parms,(void*)&eNB->frame_parms,sizeof(LTE_DL_FRAME_PARMS)); + eNB1->frame_parms.Nid_cell=Nid_cell+1; + eNB1->frame_parms.nushift=(Nid_cell+1)%6; + eNB1->Mod_id=1; - memcpy((void*)&PHY_vars_eNB2->lte_frame_parms,(void*)&PHY_vars_eNB->lte_frame_parms,sizeof(LTE_DL_FRAME_PARMS)); - PHY_vars_eNB2->lte_frame_parms.Nid_cell=Nid_cell+2; - PHY_vars_eNB2->lte_frame_parms.nushift=(Nid_cell+2)%6; - PHY_vars_eNB2->Mod_id=2; + memcpy((void*)&eNB2->frame_parms,(void*)&eNB->frame_parms,sizeof(LTE_DL_FRAME_PARMS)); + eNB2->frame_parms.Nid_cell=Nid_cell+2; + eNB2->frame_parms.nushift=(Nid_cell+2)%6; + eNB2->Mod_id=2; - phy_init_lte_eNB(PHY_vars_eNB1,0,0,0); - phy_init_lte_eNB(PHY_vars_eNB2,0,0,0); + phy_init_lte_eNB(eNB1,0,0,0); + phy_init_lte_eNB(eNB2,0,0,0); #ifdef XFORMS fl_initialize (&argc, argv, NULL, 0, 0); @@ -380,13 +372,13 @@ int main(int argc, char **argv) printf("SNR0 %f, SNR1 %f\n",snr0,snr1); - frame_parms = &PHY_vars_eNB->lte_frame_parms; + frame_parms = &eNB->frame_parms; - txdata = PHY_vars_eNB->lte_eNB_common_vars.txdata[0]; - txdata1 = PHY_vars_eNB1->lte_eNB_common_vars.txdata[0]; - txdata2 = PHY_vars_eNB2->lte_eNB_common_vars.txdata[0]; + txdata = eNB->common_vars.txdata[0]; + txdata1 = eNB1->common_vars.txdata[0]; + txdata2 = eNB2->common_vars.txdata[0]; s_re = malloc(2*sizeof(double*)); @@ -407,8 +399,8 @@ int main(int argc, char **argv) printf("FFT Size %d, Extended Prefix %d, Samples per subframe %d, Symbols per subframe %d, interf (%d,%d)\n",NUMBER_OF_OFDM_CARRIERS, frame_parms->Ncp,frame_parms->samples_per_tti,nsymb,interf1,interf2); - printf("PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0][0] = %p\n", - PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0][0]); + printf("eNB1->common_vars.txdataF[0][0] = %p\n", + eNB1->common_vars.txdataF[0][0]); DLSCH_alloc_pdu2.rah = 0; @@ -423,31 +415,31 @@ int main(int argc, char **argv) // Forget second codeword DLSCH_alloc_pdu2.tpmi = (transmission_mode==6 ? 5 : 0) ; // precoding - eNB2UE = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx, - PHY_vars_UE->lte_frame_parms.nb_antennas_rx, + eNB2UE = new_channel_desc_scm(eNB->frame_parms.nb_antennas_tx, + UE->frame_parms.nb_antennas_rx, channel_model, - N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_DL), - N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_DL), + N_RB2sampling_rate(eNB->frame_parms.N_RB_DL), + N_RB2channel_bandwidth(eNB->frame_parms.N_RB_DL), 0, 0, 0); if (interf1>-20) - eNB2UE1 = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx, - PHY_vars_UE->lte_frame_parms.nb_antennas_rx, + eNB2UE1 = new_channel_desc_scm(eNB->frame_parms.nb_antennas_tx, + UE->frame_parms.nb_antennas_rx, channel_model, - N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_DL), - N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_DL), + N_RB2sampling_rate(eNB->frame_parms.N_RB_DL), + N_RB2channel_bandwidth(eNB->frame_parms.N_RB_DL), 0, 4, 0); if (interf2>-20) - eNB2UE2 = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx, - PHY_vars_UE->lte_frame_parms.nb_antennas_rx, + eNB2UE2 = new_channel_desc_scm(eNB->frame_parms.nb_antennas_tx, + UE->frame_parms.nb_antennas_rx, channel_model, - N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_DL), - N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_DL), + N_RB2sampling_rate(eNB->frame_parms.N_RB_DL), + N_RB2channel_bandwidth(eNB->frame_parms.N_RB_DL), 0, 8, 0); @@ -511,47 +503,47 @@ int main(int argc, char **argv) pbch_pdu[1]=1; pbch_pdu[2]=0; - if (PHY_vars_eNB->lte_frame_parms.frame_type == 0) { - generate_pss(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + if (eNB->frame_parms.frame_type == 0) { + generate_pss(eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, - (PHY_vars_eNB->lte_frame_parms.Ncp==0) ? 6 : 5, + &eNB->frame_parms, + (eNB->frame_parms.Ncp==0) ? 6 : 5, 0); - generate_sss(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_sss(eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, - (PHY_vars_eNB->lte_frame_parms.Ncp==0) ? 5 : 4, + &eNB->frame_parms, + (eNB->frame_parms.Ncp==0) ? 5 : 4, 0); - generate_pss(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_pss(eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, - (PHY_vars_eNB->lte_frame_parms.Ncp==0) ? 6 : 5, + &eNB->frame_parms, + (eNB->frame_parms.Ncp==0) ? 6 : 5, 10); - generate_sss(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_sss(eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, - (PHY_vars_eNB->lte_frame_parms.Ncp==0) ? 5 : 4, + &eNB->frame_parms, + (eNB->frame_parms.Ncp==0) ? 5 : 4, 10); } else { - generate_sss(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_sss(eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, - (PHY_vars_eNB->lte_frame_parms.Ncp==0) ? 6 : 5, + &eNB->frame_parms, + (eNB->frame_parms.Ncp==0) ? 6 : 5, 1); - generate_pss(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_pss(eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, + &eNB->frame_parms, 2, 2); - generate_sss(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_sss(eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, - (PHY_vars_eNB->lte_frame_parms.Ncp==0) ? 6 : 5, + &eNB->frame_parms, + (eNB->frame_parms.Ncp==0) ? 6 : 5, 11); - generate_pss(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_pss(eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, + &eNB->frame_parms, 2, 12); @@ -570,11 +562,11 @@ int main(int argc, char **argv) dci_alloc[1].rnti = 0x1234; */ - printf("Generating PBCH for mode1_flag = %d\n", PHY_vars_eNB->lte_frame_parms.mode1_flag); + printf("Generating PBCH for mode1_flag = %d\n", eNB->frame_parms.mode1_flag); - generate_pilots(PHY_vars_eNB, - PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_pilots(eNB, + eNB->common_vars.txdataF[0], AMP, LTE_NUMBER_OF_SUBFRAMES_PER_FRAME); @@ -585,8 +577,8 @@ int main(int argc, char **argv) dci_alloc, 0, 1024, - &PHY_vars_eNB->lte_frame_parms, - PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + &eNB->frame_parms, + eNB->common_vars.txdataF[0], 0); */ @@ -601,47 +593,47 @@ int main(int argc, char **argv) dummybuf[1] = dummy1; dummybuf[2] = dummy2; dummybuf[3] = dummy3; - generate_pbch(&PHY_vars_eNB->lte_eNB_pbch, + generate_pbch(&eNB->pbch, (int32_t**)dummybuf, AMP, - &PHY_vars_eNB->lte_frame_parms, + &eNB->frame_parms, pbch_pdu, 0); } - generate_pbch(&PHY_vars_eNB->lte_eNB_pbch, - PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_pbch(&eNB->pbch, + eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, + &eNB->frame_parms, pbch_pdu, pbch_phase); /* - generate_pbch(&PHY_vars_eNB->lte_eNB_pbch, - PHY_vars_eNB->lte_eNB_common_vars.txdataF[0], + generate_pbch(&eNB->pbch, + eNB->common_vars.txdataF[0], AMP, - &PHY_vars_eNB->lte_frame_parms, + &eNB->frame_parms, pbch_pdu, 1); */ if (interf1>-20) { /* - generate_pss(PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0], + generate_pss(eNB1->common_vars.txdataF[0], AMP, - &PHY_vars_eNB1->lte_frame_parms, - (PHY_vars_eNB1->lte_frame_parms.Ncp==0)?6:5, + &eNB1->frame_parms, + (eNB1->frame_parms.Ncp==0)?6:5, 0); */ - generate_pilots(PHY_vars_eNB1, - PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0], + generate_pilots(eNB1, + eNB1->common_vars.txdataF[0], AMP, LTE_NUMBER_OF_SUBFRAMES_PER_FRAME); - generate_pbch(&PHY_vars_eNB1->lte_eNB_pbch, - PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0], + generate_pbch(&eNB1->pbch, + eNB1->common_vars.txdataF[0], AMP, - &PHY_vars_eNB1->lte_frame_parms, + &eNB1->frame_parms, pbch_pdu, 0); @@ -649,38 +641,38 @@ int main(int argc, char **argv) if (interf2>-20) { /* - generate_pss(PHY_vars_eNB2->lte_eNB_common_vars.txdataF[0], + generate_pss(eNB2->common_vars.txdataF[0], AMP, - &PHY_vars_eNB2->lte_frame_parms, - (PHY_vars_eNB2->lte_frame_parms.Ncp==0)?6:5, + &eNB2->frame_parms, + (eNB2->frame_parms.Ncp==0)?6:5, 0); */ - generate_pilots(PHY_vars_eNB2, - PHY_vars_eNB2->lte_eNB_common_vars.txdataF[0], + generate_pilots(eNB2, + eNB2->common_vars.txdataF[0], AMP, LTE_NUMBER_OF_SUBFRAMES_PER_FRAME); - generate_pbch(&PHY_vars_eNB2->lte_eNB_pbch, - PHY_vars_eNB2->lte_eNB_common_vars.txdataF[0], + generate_pbch(&eNB2->pbch, + eNB2->common_vars.txdataF[0], AMP, - &PHY_vars_eNB2->lte_frame_parms, + &eNB2->frame_parms, pbch_pdu, 0); } - // write_output("pilotsF.m","rsF",txdataF[0],lte_frame_parms->ofdm_symbol_size,1,1); + // write_output("pilotsF.m","rsF",txdataF[0],frame_parms->ofdm_symbol_size,1,1); - write_output("txsigF0.m","txsF0", PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); + write_output("txsigF0.m","txsF0", eNB->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); - if (PHY_vars_eNB->lte_frame_parms.nb_antennas_tx>1) - write_output("txsigF1.m","txsF1", PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); + if (eNB->frame_parms.nb_antennas_tx>1) + write_output("txsigF1.m","txsF1", eNB->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); tx_lev = 0; tx_lev1 = 0; @@ -689,16 +681,16 @@ int main(int argc, char **argv) - for (aa=0; aa<PHY_vars_eNB->lte_frame_parms.nb_antennas_tx; aa++) { + for (aa=0; aa<eNB->frame_parms.nb_antennas_tx; aa++) { if (frame_parms->Ncp == 1) - PHY_ofdm_mod(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][aa], // input, + PHY_ofdm_mod(eNB->common_vars.txdataF[0][aa], // input, txdata[aa], // output frame_parms->ofdm_symbol_size, LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*nsymb, // number of symbols frame_parms->nb_prefix_samples, // number of prefix samples CYCLIC_PREFIX); else { - normal_prefix_mod(PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][aa], + normal_prefix_mod(eNB->common_vars.txdataF[0][aa], txdata[aa], LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*nsymb, frame_parms); @@ -709,17 +701,17 @@ int main(int argc, char **argv) } if (interf1>-20) { - for (aa=0; aa<PHY_vars_eNB1->lte_frame_parms.nb_antennas_tx; aa++) { + for (aa=0; aa<eNB1->frame_parms.nb_antennas_tx; aa++) { if (frame_parms->Ncp == 1) - PHY_ofdm_mod(PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0][aa], // input, - PHY_vars_eNB1->lte_eNB_common_vars.txdata[0][aa], // output + PHY_ofdm_mod(eNB1->common_vars.txdataF[0][aa], // input, + eNB1->common_vars.txdata[0][aa], // output frame_parms->ofdm_symbol_size, 2*nsymb, // number of symbols frame_parms->nb_prefix_samples, // number of prefix samples CYCLIC_PREFIX); else { - normal_prefix_mod(PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0][aa], - PHY_vars_eNB1->lte_eNB_common_vars.txdata[0][aa], + normal_prefix_mod(eNB1->common_vars.txdataF[0][aa], + eNB1->common_vars.txdata[0][aa], 2*nsymb, frame_parms); } @@ -728,24 +720,24 @@ int main(int argc, char **argv) OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES); } - write_output("txsigF0_1.m","txsF0_1", PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); + write_output("txsigF0_1.m","txsF0_1", eNB1->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); - if (PHY_vars_eNB1->lte_frame_parms.nb_antennas_tx>1) - write_output("txsigF1_1.m","txsF1_1", PHY_vars_eNB1->lte_eNB_common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); + if (eNB1->frame_parms.nb_antennas_tx>1) + write_output("txsigF1_1.m","txsF1_1", eNB1->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); } if (interf2>-20) { - for (aa=0; aa<PHY_vars_eNB2->lte_frame_parms.nb_antennas_tx; aa++) { + for (aa=0; aa<eNB2->frame_parms.nb_antennas_tx; aa++) { if (frame_parms->Ncp == 1) - PHY_ofdm_mod(PHY_vars_eNB2->lte_eNB_common_vars.txdataF[0][aa], // input, - PHY_vars_eNB2->lte_eNB_common_vars.txdata[0][aa], // output + PHY_ofdm_mod(eNB2->common_vars.txdataF[0][aa], // input, + eNB2->common_vars.txdata[0][aa], // output frame_parms->ofdm_symbol_size, 2*nsymb, // number of symbols frame_parms->nb_prefix_samples, // number of prefix samples CYCLIC_PREFIX); else { - normal_prefix_mod(PHY_vars_eNB2->lte_eNB_common_vars.txdataF[0][aa], - PHY_vars_eNB2->lte_eNB_common_vars.txdata[0][aa], + normal_prefix_mod(eNB2->common_vars.txdataF[0][aa], + eNB2->common_vars.txdata[0][aa], 2*nsymb, frame_parms); } @@ -754,10 +746,10 @@ int main(int argc, char **argv) OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES); } - write_output("txsigF0_2.m","txsF0_2", PHY_vars_eNB2->lte_eNB_common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); + write_output("txsigF0_2.m","txsF0_2", eNB2->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); - if (PHY_vars_eNB2->lte_frame_parms.nb_antennas_tx>1) - write_output("txsigF1_2.m","txsF1_2", PHY_vars_eNB2->lte_eNB_common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); + if (eNB2->frame_parms.nb_antennas_tx>1) + write_output("txsigF1_2.m","txsF1_2", eNB2->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1); } // tx_lev_dB = (unsigned int) dB_fixed(tx_lev); @@ -767,15 +759,15 @@ int main(int argc, char **argv) if (frame_parms->nb_antennas_tx>1) write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); - write_output("txsig0_1.m","txs0_1", PHY_vars_eNB1->lte_eNB_common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); + write_output("txsig0_1.m","txs0_1", eNB1->common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); if (frame_parms->nb_antennas_tx>1) - write_output("txsig1_1.m","txs1_1", PHY_vars_eNB1->lte_eNB_common_vars.txdata[0][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); + write_output("txsig1_1.m","txs1_1", eNB1->common_vars.txdata[0][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); - write_output("txsig0_2.m","txs0_2", PHY_vars_eNB2->lte_eNB_common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); + write_output("txsig0_2.m","txs0_2", eNB2->common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); if (frame_parms->nb_antennas_tx>1) - write_output("txsig1_2.m","txs1_2", PHY_vars_eNB2->lte_eNB_common_vars.txdata[0][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); + write_output("txsig1_2.m","txs1_2", eNB2->common_vars.txdata[0][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); } else { //read in from file i=0; @@ -811,7 +803,7 @@ int main(int argc, char **argv) // multipath channel for (i=0; i<2*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES; i++) { - for (aa=0; aa<PHY_vars_eNB->lte_frame_parms.nb_antennas_tx; aa++) { + for (aa=0; aa<eNB->frame_parms.nb_antennas_tx; aa++) { s_re[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)]); s_im[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)+1]); @@ -872,7 +864,7 @@ int main(int argc, char **argv) } } - sigma2_dB = 10*log10((double)tx_lev) +10*log10((double)PHY_vars_eNB->lte_frame_parms.ofdm_symbol_size/(double)(12*NB_RB)) - SNR; + sigma2_dB = 10*log10((double)tx_lev) +10*log10((double)eNB->frame_parms.ofdm_symbol_size/(double)(12*NB_RB)) - SNR; if (n_frames==1) printf("sigma2_dB %f (SNR %f dB) tx_lev_dB %f,%f,%f\n",sigma2_dB,SNR, @@ -894,20 +886,20 @@ int main(int argc, char **argv) for (n_trials=0; n_trials<ntrials; n_trials++) { //printf("n_trial %d\n",n_trials); for (i=0; i<2*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES; i++) { - for (aa=0; aa<PHY_vars_eNB->lte_frame_parms.nb_antennas_rx; aa++) { + for (aa=0; aa<eNB->frame_parms.nb_antennas_rx; aa++) { if (n_trials==0) { r_re[aa][i] += (pow(10.0,.05*interf1)*r_re1[aa][i] + pow(10.0,.05*interf2)*r_re2[aa][i]); r_im[aa][i] += (pow(10.0,.05*interf1)*r_im1[aa][i] + pow(10.0,.05*interf2)*r_im2[aa][i]); } - ((short*) PHY_vars_UE->lte_ue_common_vars.rxdata[aa])[2*i] = (short) (.167*(r_re[aa][i] +sqrt(sigma2/2)*gaussdouble(0.0,1.0))); - ((short*) PHY_vars_UE->lte_ue_common_vars.rxdata[aa])[2*i+1] = (short) (.167*(r_im[aa][i] + (iqim*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0))); + ((short*) UE->common_vars.rxdata[aa])[2*i] = (short) (.167*(r_re[aa][i] +sqrt(sigma2/2)*gaussdouble(0.0,1.0))); + ((short*) UE->common_vars.rxdata[aa])[2*i+1] = (short) (.167*(r_im[aa][i] + (iqim*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0))); } } if (n_frames==1) { printf("rx_level data symbol %f\n", - 10*log10(signal_energy(&PHY_vars_UE->lte_ue_common_vars.rxdata[0][frame_parms->samples_per_tti/2],4*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES))); + 10*log10(signal_energy(&UE->common_vars.rxdata[0][frame_parms->samples_per_tti/2],4*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES))); } @@ -919,10 +911,10 @@ int main(int argc, char **argv) exit(0); } - result = fread((void *)PHY_vars_UE->lte_ue_common_vars.rxdata[0],4,FRAME_LENGTH_COMPLEX_SAMPLES,rx_frame_file); + result = fread((void *)UE->common_vars.rxdata[0],4,FRAME_LENGTH_COMPLEX_SAMPLES,rx_frame_file); printf("Read %d bytes\n",result); - if (PHY_vars_UE->lte_frame_parms.nb_antennas_rx>1) { - result = fread((void *)PHY_vars_UE->lte_ue_common_vars.rxdata[1],4,FRAME_LENGTH_COMPLEX_SAMPLES,rx_frame_file); + if (UE->frame_parms.nb_antennas_rx>1) { + result = fread((void *)UE->common_vars.rxdata[1],4,FRAME_LENGTH_COMPLEX_SAMPLES,rx_frame_file); printf("Read %d bytes\n",result); } @@ -930,21 +922,21 @@ int main(int argc, char **argv) */ - for (l=0; l<PHY_vars_eNB->lte_frame_parms.symbols_per_tti; l++) { + for (l=0; l<eNB->frame_parms.symbols_per_tti; l++) { - // subframe_offset = (l/PHY_vars_eNB->lte_frame_parms.symbols_per_tti)*PHY_vars_eNB->lte_frame_parms.samples_per_tti; + // subframe_offset = (l/eNB->frame_parms.symbols_per_tti)*eNB->frame_parms.samples_per_tti; // printf("subframe_offset = %d\n",subframe_offset); - slot_fep(PHY_vars_UE, - l%(PHY_vars_eNB->lte_frame_parms.symbols_per_tti/2), - l/(PHY_vars_eNB->lte_frame_parms.symbols_per_tti/2), + slot_fep(UE, + l%(eNB->frame_parms.symbols_per_tti/2), + l/(eNB->frame_parms.symbols_per_tti/2), 0, 0, 0); if (l==0) { - lte_ue_measurements(PHY_vars_UE, + lte_ue_measurements(UE, 0, 1, 0); @@ -952,19 +944,19 @@ int main(int argc, char **argv) if (trial%100 == 0) { msg("[PHY_PROCEDURES_LTE] frame %d, RX RSSI %d dBm, digital (%d, %d) dB, linear (%d, %d), RX gain %d dB\n", trial, - PHY_vars_UE->PHY_measurements.rx_rssi_dBm[0], - PHY_vars_UE->PHY_measurements.rx_power_dB[0][0], - PHY_vars_UE->PHY_measurements.rx_power_dB[0][1], - PHY_vars_UE->PHY_measurements.rx_power[0][0], - PHY_vars_UE->PHY_measurements.rx_power[0][1], - PHY_vars_UE->rx_total_gain_dB); + UE->measurements.rx_rssi_dBm[0], + UE->measurements.rx_power_dB[0][0], + UE->measurements.rx_power_dB[0][1], + UE->measurements.rx_power[0][0], + UE->measurements.rx_power[0][1], + UE->rx_total_gain_dB); msg("[PHY_PROCEDURES_LTE] frame %d, N0 digital (%d, %d) dB, linear (%d, %d)\n", trial, - PHY_vars_UE->PHY_measurements.n0_power_dB[0], - PHY_vars_UE->PHY_measurements.n0_power_dB[1], - PHY_vars_UE->PHY_measurements.n0_power[0], - PHY_vars_UE->PHY_measurements.n0_power[1]); + UE->measurements.n0_power_dB[0], + UE->measurements.n0_power_dB[1], + UE->measurements.n0_power[0], + UE->measurements.n0_power[1]); msg("[PHY_PROCEDURES_LTE] frame %d, freq_offset_filt = %d\n", trial, freq_offset); @@ -973,47 +965,47 @@ int main(int argc, char **argv) */ } - if (l==((PHY_vars_eNB->lte_frame_parms.Ncp==0)?4:3)) { + if (l==((eNB->frame_parms.Ncp==0)?4:3)) { //sprintf(fname,"dl_ch00_%d.m",l); //sprintf(vname,"dl_ch00_%d",l); - //write_output(fname,vname,&(lte_ue_common_vars->dl_ch_estimates[0][lte_frame_parms->ofdm_symbol_size*(l%6)]),lte_frame_parms->ofdm_symbol_size,1,1); + //write_output(fname,vname,&(common_vars->dl_ch_estimates[0][frame_parms->ofdm_symbol_size*(l%6)]),frame_parms->ofdm_symbol_size,1,1); - lte_est_freq_offset(PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0], - &PHY_vars_UE->lte_frame_parms, + lte_est_freq_offset(UE->common_vars.dl_ch_estimates[0], + &UE->frame_parms, l, &freq_offset, 1); } - if (l==((PHY_vars_eNB->lte_frame_parms.Ncp==0)?10:9)) { + if (l==((eNB->frame_parms.Ncp==0)?10:9)) { for (frame_mod4=0; frame_mod4<4; frame_mod4++) { - pbch_tx_ant = rx_pbch(&PHY_vars_UE->lte_ue_common_vars, - PHY_vars_UE->lte_ue_pbch_vars[0], - &PHY_vars_UE->lte_frame_parms, + pbch_tx_ant = rx_pbch(&UE->common_vars, + UE->pbch_vars[0], + &UE->frame_parms, 0, SISO, - PHY_vars_UE->high_speed_flag, + UE->high_speed_flag, frame_mod4); if ((pbch_tx_ant>0) && (pbch_tx_ant<4)) { - PHY_vars_UE->lte_frame_parms.mode1_flag = 1; + UE->frame_parms.mode1_flag = 1; break; if (pbch_phase != frame_mod4) printf("pbch_phase different!!!\n"); } - pbch_tx_ant = rx_pbch(&PHY_vars_UE->lte_ue_common_vars, - PHY_vars_UE->lte_ue_pbch_vars[0], - &PHY_vars_eNB->lte_frame_parms, + pbch_tx_ant = rx_pbch(&UE->common_vars, + UE->pbch_vars[0], + &eNB->frame_parms, 0, ALAMOUTI, - PHY_vars_UE->high_speed_flag, + UE->high_speed_flag, frame_mod4); if ((pbch_tx_ant>0) && (pbch_tx_ant<4)) { - PHY_vars_UE->lte_frame_parms.mode1_flag = 0; + UE->frame_parms.mode1_flag = 0; n_alamouti++; break; } @@ -1023,7 +1015,7 @@ int main(int argc, char **argv) if ((pbch_tx_ant>0) && (pbch_tx_ant<4)) { if (n_frames==1) msg("pbch decoded sucessfully mode1_flag %d, frame_mod4 %d, tx_ant %d!\n", - PHY_vars_UE->lte_frame_parms.mode1_flag,frame_mod4,pbch_tx_ant); + UE->frame_parms.mode1_flag,frame_mod4,pbch_tx_ant); } else { n_errors++; n_errors2++; @@ -1036,7 +1028,7 @@ int main(int argc, char **argv) #ifdef XFORMS phy_scope_UE(form_ue, - PHY_vars_UE, + UE, 0,0,1); #endif @@ -1066,16 +1058,16 @@ int main(int argc, char **argv) if (n_frames==1) { - write_output("H00.m","h00",&(PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(PHY_vars_eNB->lte_frame_parms.ofdm_symbol_size),1,1); + write_output("H00.m","h00",&(UE->common_vars.dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1); if (n_tx==2) - write_output("H10.m","h10",&(PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[0][2][0]),((frame_parms->Ncp==0)?7:6)*(PHY_vars_eNB->lte_frame_parms.ofdm_symbol_size),1,1); + write_output("H10.m","h10",&(UE->common_vars.dl_ch_estimates[0][2][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1); - write_output("rxsig0.m","rxs0", PHY_vars_UE->lte_ue_common_vars.rxdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); - write_output("rxsigF0.m","rxsF0", PHY_vars_UE->lte_ue_common_vars.rxdataF[0],NUMBER_OF_OFDM_CARRIERS*2*((frame_parms->Ncp==0)?14:12),2,1); - write_output("PBCH_rxF0_ext.m","pbch0_ext",PHY_vars_UE->lte_ue_pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1); - write_output("PBCH_rxF0_comp.m","pbch0_comp",PHY_vars_UE->lte_ue_pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1); - write_output("PBCH_rxF_llr.m","pbch_llr",PHY_vars_UE->lte_ue_pbch_vars[0]->llr,(frame_parms->Ncp==0) ? 1920 : 1728,1,4); + write_output("rxsig0.m","rxs0", UE->common_vars.rxdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); + write_output("rxsigF0.m","rxsF0", UE->common_vars.rxdataF[0],NUMBER_OF_OFDM_CARRIERS*2*((frame_parms->Ncp==0)?14:12),2,1); + write_output("PBCH_rxF0_ext.m","pbch0_ext",UE->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1); + write_output("PBCH_rxF0_comp.m","pbch0_comp",UE->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1); + write_output("PBCH_rxF_llr.m","pbch_llr",UE->pbch_vars[0]->llr,(frame_parms->Ncp==0) ? 1920 : 1728,1,4); } diff --git a/openair1/SIMULATION/LTE_PHY/pdcchsim.c b/openair1/SIMULATION/LTE_PHY/pdcchsim.c index 73da52085f8d79df699c8fc5ad9f9ceb1f1eec2d..d14f13f60ff318a6289a720c47a9c6ba8d0c55d3 100644 --- a/openair1/SIMULATION/LTE_PHY/pdcchsim.c +++ b/openair1/SIMULATION/LTE_PHY/pdcchsim.c @@ -759,13 +759,14 @@ int main(int argc, char **argv) + eNB_rxtx_proc_t *proc_rxtx = &eNB->proc.proc_rxtx[subframe&1]; eNB->ulsch[0] = new_eNB_ulsch(MAX_TURBO_ITERATIONS,N_RB_DL,0); UE->ulsch[0] = new_ue_ulsch(N_RB_DL,0); - eNB->proc.frame_tx = 0; - eNB->proc.subframe_tx = subframe; + proc_rxtx->frame_tx = 0; + proc_rxtx->subframe_tx = subframe; if (input_fd==NULL) { msg("No input file, so starting TX\n"); @@ -932,7 +933,7 @@ int main(int argc, char **argv) if (n_frames==1) printf("generating PHICH\n"); - harq_pid = phich_subframe_to_harq_pid(&eNB->frame_parms, eNB->proc.frame_tx, subframe); + harq_pid = phich_subframe_to_harq_pid(&eNB->frame_parms, proc_rxtx->frame_tx, subframe); phich_ACK = taus()&1; eNB->ulsch[0]->harq_processes[harq_pid]->phich_active = 1; @@ -944,23 +945,23 @@ int main(int argc, char **argv) UE->ulsch[0]->harq_processes[harq_pid]->first_rb = 0; UE->ulsch[0]->harq_processes[harq_pid]->n_DMRS = 0; - generate_phich_top(eNB,AMP,0,0); + generate_phich_top(eNB,proc_rxtx,AMP,0,0); // generate 3 interfering PHICH if (num_phich_interf>0) { eNB->ulsch[0]->harq_processes[harq_pid]->first_rb = 4; - generate_phich_top(eNB,1024,0,0); + generate_phich_top(eNB,proc_rxtx,1024,0,0); } if (num_phich_interf>1) { eNB->ulsch[0]->harq_processes[harq_pid]->first_rb = 8; eNB->ulsch[0]->harq_processes[harq_pid]->n_DMRS = 1; - generate_phich_top(eNB,1024,0,0); + generate_phich_top(eNB,proc_rxtx,1024,0,0); } if (num_phich_interf>2) { eNB->ulsch[0]->harq_processes[harq_pid]->first_rb = 12; eNB->ulsch[0]->harq_processes[harq_pid]->n_DMRS = 1; - generate_phich_top(eNB,1024,0,0); + generate_phich_top(eNB,proc_rxtx,1024,0,0); }