FeMBMS 1.25KHz Carrier Spacing OFDM demodulation and Channel Estimation Procedures
This commit is contained in:
@@ -204,3 +204,112 @@ int slot_fep_mbsfn(PHY_VARS_UE *ue,
|
|||||||
#endif
|
#endif
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||||
|
int slot_fep_mbsfn_khz_1dot25(PHY_VARS_UE *ue,
|
||||||
|
int subframe,
|
||||||
|
int sample_offset)
|
||||||
|
{
|
||||||
|
|
||||||
|
LTE_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
|
||||||
|
LTE_UE_COMMON *common_vars = &ue->common_vars;
|
||||||
|
uint8_t eNB_id = 0;//ue_common_vars->eNb_id;
|
||||||
|
|
||||||
|
unsigned char aa;
|
||||||
|
unsigned char frame_type = frame_parms->frame_type; // Frame Type: 0 - FDD, 1 - TDD;
|
||||||
|
unsigned int nb_prefix_samples;
|
||||||
|
int ofdm_symbol_size;
|
||||||
|
unsigned int subframe_offset;
|
||||||
|
unsigned int frame_length_samples = frame_parms->samples_per_tti * 10;
|
||||||
|
|
||||||
|
void (*dft)(int16_t *,int16_t *, int);
|
||||||
|
|
||||||
|
AssertFatal(frame_parms->frame_type == FDD, "Frame is TDD!\n");
|
||||||
|
|
||||||
|
switch (frame_parms->ofdm_symbol_size) {
|
||||||
|
|
||||||
|
case 128:
|
||||||
|
dft = dft1536;
|
||||||
|
ofdm_symbol_size=1536;
|
||||||
|
nb_prefix_samples=384;
|
||||||
|
break;
|
||||||
|
case 256:
|
||||||
|
AssertFatal(1==0,"FeMBMS dft3072 not implemented\n");
|
||||||
|
dft = dft3072;
|
||||||
|
ofdm_symbol_size=3072;
|
||||||
|
nb_prefix_samples=768;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 512:
|
||||||
|
dft = dft6144;
|
||||||
|
nb_prefix_samples=1536;
|
||||||
|
ofdm_symbol_size=6144;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1024:
|
||||||
|
dft = dft12288;
|
||||||
|
nb_prefix_samples=3072;
|
||||||
|
ofdm_symbol_size=12288;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1536:
|
||||||
|
dft = dft18432;
|
||||||
|
nb_prefix_samples=4608;
|
||||||
|
ofdm_symbol_size=18432;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2048:
|
||||||
|
dft = dft24576;
|
||||||
|
nb_prefix_samples=6144;
|
||||||
|
ofdm_symbol_size=24576;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
AssertFatal(1==0,"Illegal ofdm symbol size %d\n",frame_parms->ofdm_symbol_size);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
subframe_offset = frame_parms->samples_per_tti * subframe;
|
||||||
|
|
||||||
|
#ifdef DEBUG_FEP
|
||||||
|
LOG_D(PHY,"slot_fep_mbsfn125: subframe %d, nb_prefix_samples %d, subframe_offset %d, sample_offset %d\n", subframe, nb_prefix_samples,subframe_offset,
|
||||||
|
sample_offset);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (aa=0; aa<frame_parms->nb_antennas_rx; aa++) {
|
||||||
|
memset(&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[aa][0],0,ofdm_symbol_size*sizeof(int));
|
||||||
|
#if UE_TIMING_TRACE
|
||||||
|
start_meas(&ue->rx_dft_stats);
|
||||||
|
#endif
|
||||||
|
dft((int16_t *)&common_vars->rxdata[aa][(sample_offset +
|
||||||
|
nb_prefix_samples +
|
||||||
|
subframe_offset -
|
||||||
|
SOFFSET) % frame_length_samples],
|
||||||
|
(int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[aa][0],1);
|
||||||
|
|
||||||
|
#if UE_TIMING_TRACE
|
||||||
|
stop_meas(&ue->rx_dft_stats);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
||||||
|
if (ue->perfect_ce == 0) {
|
||||||
|
#ifdef DEBUG_FEP
|
||||||
|
LOG_D(PHY,"Channel estimation eNB %d, aatx %d, subframe %d\n",eNB_id,aa,subframe);
|
||||||
|
#endif
|
||||||
|
lte_dl_mbsfn_khz_1dot25_channel_estimation(ue,
|
||||||
|
eNB_id,
|
||||||
|
0,
|
||||||
|
subframe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_FEP
|
||||||
|
LOG_D(PHY,"slot_fep_mbsfn: done\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user