/** \brief This function is the top-level entry point to PUSCH demodulation, after frequency-domain transformation and channel estimation. It performs
- RB extraction (signal and channel estimates)
- channel compensation (matched filtering)
...
...
@@ -45,15 +44,14 @@
@param frame Frame number
@param nr_tti_rx TTI number
@param symbol Symbol on which to act (within-in nr_TTI_rx)
@param first_symbol_flag set to 1 on first ULSCH symbol
@param harq_pid HARQ process ID
*/
intnr_rx_ulsch(PHY_VARS_gNB*gNB,
uint8_tUE_id,
uint32_tframe,
uint8_tnr_tti_rx,
unsignedcharsymbol,
unsignedcharfirst_symbol_flag,
unsignedcharharq_pid);
voidnr_rx_pusch(PHY_VARS_gNB*gNB,
uint8_tUE_id,
uint32_tframe,
uint8_tnr_tti_rx,
unsignedcharsymbol,
unsignedcharharq_pid);
/** \brief This function performs RB extraction (signal and channel estimates) (currently signal only until channel estimation and compensation are implemented)
...
...
@@ -62,18 +60,18 @@ int nr_rx_ulsch(PHY_VARS_gNB *gNB,
@param rb_alloc RB allocation map (used for Resource Allocation Type 0 in NR)
@param symbol Symbol on which to act (within-in nr_TTI_rx)
@param start_rb The starting RB in the RB allocation (used for Resource Allocation Type 1 in NR)
@param nb_pusch_rb The number of RBs allocated (used for Resource Allocation Type 1 in NR)
@param nb_rb_pusch The number of RBs allocated (used for Resource Allocation Type 1 in NR)
@param frame_parms, Pointer to frame descriptor structure
if((is_dmrs_symbol&&((re&1)!=frame_parms->nushift))||(is_dmrs_symbol==0)){// [hna] (re&1) != frame_parms->nushift) assuming only dmrs type 1 and mapping type A
if((is_dmrs_symbol&&((re&1)!=frame_parms->nushift))||(is_dmrs_symbol==0)){// [hna] (re&1) != frame_parms->nushift) assuming only dmrs type 1 and mapping type A
// [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