- start_rb was set to 30, and nb_rb was set to 50 with NB_RB_DL = 106.
- When the DC subcarrier is included in the RB allocation,
this causes errors in FFT/IFFT operations arounf the DC subcarrier
- This leads to errors in unscrambling and decoding
- TBS calculation was performed 2 times. Once in "phy_procedures_nrUE_TX" and
another in "nr_ue_ulsch_procedures". The TBS calculation was wrong in "phy_procedures_nrUE_TX"
and correct in "nr_ue_ulsch_procedures".
- The data generation was performed in "phy_procedures_nrUE_TX" with a wrongly
calculated TBS because "ulsch_ue->nb_re_dmrs" wasn't set to a value, so the calculated
TBS would be more than it should be. This doesn't create a problem in the test because
the comparison between the TX and RX data is made using the correctly calculated TBS
which is smaller.
- Solution was to perform data generation in "nr_ue_ulsch_procedures", and remove TBS calculation
in "phy_procedures_nrUE_TX"
- removing "Nsymb_pusch" and "Nsc_pusch" from "NR_UE_ULSCH_t"
- using "number_of_symbols" from "NR_UL_UE_HARQ_t" instead
- removing "generate_ue_ulsch_params"
Added the following folder:
- ../openair1/PHY/NR_ESTIMATION/
Added the following file to CMakelists.txt:
- ../openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
Added the following functions:
- nr_pusch_dmrs_rx
- nr_gold_pusch
- nr_ulsch_channel_level
- nr_ulsch_channel_compensation
- nr_ulsch_scale_channel is commented out (I think only used for downlink)
Changes from Khalid Ahmed Mahmoud Mohamed:
- nr_pusch_channel_estimation is used
- nr_ulsch_scale_channel is used
- nr_ulsch_channel_level is used
- nr_ulsch_channel_compensation is used
- multiple logging options for channel and signal magnitude
- removed gNB RT from "ru_procedures.c" to "nr_ru_procedures"
- added a new thread "nr_feprx_thread"
- added some functionalities for fep for rx in "nr_ru_procedures.c"
- changed Mdlharq to Mlimit when comparing with the round number
- Not incrementing the HARQ round in case of err_flag = 1, until HARQ is implemented
- Changed MAX_LDPC_ITERATIONS to 5 from 4 (provided better performance)
- Setting the payload to random data instead of all zeros at the Tx side
- Handling "nb_symb_sch" equal to 0 in "phy_procedures_nrUE_RX" which prevents
entering "nr_ue_pdsch_procedures"
- Handling symbol loop problem in "nr_ue_pdsch_procedures"
- Handling resource block loop problem in "nr_rx_pdsch"
For whatever reason, ru->frame_parms was NULL and the RRU crashed.
Let's allocated memory.
Also, don't do fp = ru->frame_parms in ru_thread, it seems that it
takes the value before allocation (so: NULL) and the code crashes
later on.
Maybe it's not the correct solution. To be refined at some point.
2. NR RU was calling feptx_prec from LTE RU procedures, which it should not. In the older versions this function didn't do anything anyway as there was a check on num_eNB, which is 0 for gNB. Now NR RU is not calling this function at all, but we have to write such a function for NR RU (todo)