diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c index 4620d7604e2a47626cc32fd380be822260f6e9bd..3f6004ace4c553292e4b9d49e91506c962dc48a0 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c @@ -62,7 +62,7 @@ int generate_ue_ulsch_params(PHY_VARS_NR_UE *UE, n_rnti = 0x1234; Nid_cell = 0; nb_rb = 50; - first_rb = 90; + first_rb = 30; Nsymb_pusch = 12; nb_codewords = (ul_dci_pdu->precod_nbr_layers>4)?2:1; //------------------------------------------------------------------------------// diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c index 5a99142edb49661d4595af350cc5c6917bcfff6f..d9e15144efe143d836d72452fff98e69858d26b0 100644 --- a/openair1/SIMULATION/NR_PHY/ulsim.c +++ b/openair1/SIMULATION/NR_PHY/ulsim.c @@ -166,7 +166,8 @@ int main(int argc, char **argv) { int gNB_id = 0; int ap; int tx_offset; - double txlev; + double txlev_float; + int32_t txlev; int start_rb = 30; int UE_id =0; // [hna] only works for UE_id = 0 because NUMBER_OF_NR_UE_MAX is set to 1 (phy_init_nr_gNB causes segmentation fault) @@ -488,10 +489,12 @@ int main(int argc, char **argv) { //////////////////////////////////////////////////// tx_offset = slot*frame_parms->samples_per_slot; - txlev = (double) signal_energy_amp_shift(&UE->common_vars.txdata[0][tx_offset + 5*frame_parms->ofdm_symbol_size + 4*frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], + txlev = signal_energy_amp_shift(&UE->common_vars.txdata[0][tx_offset + 5*frame_parms->ofdm_symbol_size + 4*frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); - txlev = txlev/(double)AMP; // output of signal_energy is fixed point representation + txlev_float = (double)txlev/(double)AMP; // output of signal_energy is fixed point representation + + printf("\n"); @@ -501,9 +504,9 @@ int main(int argc, char **argv) { n_false_positive = 0; //AWGN - sigma_dB = 10*log10((double)txlev)-SNR; + sigma_dB = 10*log10(txlev_float)-SNR; sigma = pow(10,sigma_dB/10); - + for (trial = 0; trial < n_trials; trial++) { errors_scrambling = 0; @@ -511,10 +514,9 @@ int main(int argc, char **argv) { for (i=0; i<frame_length_complex_samples; i++) { for (ap=0; ap<frame_parms->nb_antennas_rx; ap++) { - // [hna] doesn't work with noise in case of mod_order = 6 - ((short*) gNB->common_vars.rxdata[ap])[2*i] = (((int16_t *)UE->common_vars.txdata[ap])[(i<<1)]);// + (int16_t)(sqrt(sigma/2)*gaussdouble(0.0,1.0)*(double)AMP)); // convert to fixed point - ((short*) gNB->common_vars.rxdata[ap])[2*i+1] = (((int16_t *)UE->common_vars.txdata[ap])[(i<<1)+1]);// + (int16_t)(sqrt(sigma/2)*gaussdouble(0.0,1.0)*(double)AMP)); + ((short*) gNB->common_vars.rxdata[ap])[2*i] = (((int16_t *)UE->common_vars.txdata[ap])[(i<<1)])+ (int16_t)(sqrt(sigma/2)*gaussdouble(0.0,1.0)*(double)AMP); // convert to fixed point + ((short*) gNB->common_vars.rxdata[ap])[2*i+1] = (((int16_t *)UE->common_vars.txdata[ap])[(i<<1)+1])+ (int16_t)(sqrt(sigma/2)*gaussdouble(0.0,1.0)*(double)AMP); } }