Files
openairinterface5g/openair1/PHY/INIT/lte_parms.c
T
Navid Nikaein 2f2fde581d * Compile Rel10 with component carrier
* Add VCD timing for PDCP, RLC, and MAC
* Update MAC-PHY interface
* update eNB MAC DLSCH scheduler and preprocessor with component carrier
* Add test case for dlsim performance
  


git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5708 818b1a75-f10b-46b9-bf7c-635c3b92a50f
2014-08-12 20:27:30 +00:00

135 lines
4.4 KiB
C

#include "defs.h"
int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,uint8_t osf) {
uint8_t log2_osf;
if (frame_parms->Ncp==1) {
frame_parms->nb_prefix_samples0=512;
frame_parms->nb_prefix_samples = 512;
frame_parms->symbols_per_tti = 12;
}
else {
frame_parms->nb_prefix_samples0 = 160;
frame_parms->nb_prefix_samples = 144;
frame_parms->symbols_per_tti = 14;
}
switch(osf) {
case 1:
log2_osf = 0;
break;
case 2:
log2_osf = 1;
break;
case 4:
log2_osf = 2;
break;
case 8:
log2_osf = 3;
break;
case 16:
log2_osf = 4;
break;
default:
msg("Illegal oversampling %d\n",osf);
return(-1);
}
switch (frame_parms->N_RB_DL) {
case 100:
if (osf>1) {
msg("Illegal oversampling %d for N_RB_DL %d\n",osf,frame_parms->N_RB_DL);
return(-1);
}
frame_parms->ofdm_symbol_size = 2048;
frame_parms->log2_symbol_size = 11;
frame_parms->samples_per_tti = 30720;
frame_parms->first_carrier_offset = 2048-600;
frame_parms->N_RBGS = 4;
frame_parms->N_RBG = 25;
break;
case 50:
if (osf>1) {
msg("Illegal oversampling %d for N_RB_DL %d\n",osf,frame_parms->N_RB_DL);
return(-1);
}
frame_parms->ofdm_symbol_size = 1024*osf;
frame_parms->log2_symbol_size = 10+log2_osf;
frame_parms->samples_per_tti = 15360*osf;
frame_parms->first_carrier_offset = frame_parms->ofdm_symbol_size - 300;
frame_parms->nb_prefix_samples>>=(1-log2_osf);
frame_parms->nb_prefix_samples0>>=(1-log2_osf);
frame_parms->N_RBGS = 3;
frame_parms->N_RBG = 17;
break;
case 25:
if (osf>2) {
msg("Illegal oversampling %d for N_RB_DL %d\n",osf,frame_parms->N_RB_DL);
return(-1);
}
frame_parms->ofdm_symbol_size = 512*osf;
frame_parms->log2_symbol_size = 9+log2_osf;
frame_parms->samples_per_tti = 7680*osf;
frame_parms->first_carrier_offset = frame_parms->ofdm_symbol_size - 150;
frame_parms->nb_prefix_samples>>=(2-log2_osf);
frame_parms->nb_prefix_samples0>>=(2-log2_osf);
frame_parms->N_RBGS = 2;
frame_parms->N_RBG = 13;
break;
case 15:
frame_parms->ofdm_symbol_size = 256*osf;
frame_parms->log2_symbol_size = 8+log2_osf;
frame_parms->samples_per_tti = 3840*osf;
frame_parms->first_carrier_offset = frame_parms->ofdm_symbol_size - 90;
frame_parms->nb_prefix_samples>>=(3-log2_osf);
frame_parms->nb_prefix_samples0>>=(3-log2_osf);
frame_parms->N_RBGS = 2;
frame_parms->N_RBG = 8;
break;
case 6:
frame_parms->ofdm_symbol_size = 128*osf;
frame_parms->log2_symbol_size = 7+log2_osf;
frame_parms->samples_per_tti = 1920*osf;
frame_parms->first_carrier_offset = frame_parms->ofdm_symbol_size - 36;
frame_parms->nb_prefix_samples>>=(4-log2_osf);
frame_parms->nb_prefix_samples0>>=(4-log2_osf);
frame_parms->N_RBGS = 1;
frame_parms->N_RBG = 6;
break;
default:
msg("init_frame_parms: Error: Number of resource blocks (N_RB_DL %d) undefined, frame_parms = %p \n",frame_parms->N_RB_DL, frame_parms);
return(-1);
break;
}
// frame_parms->tdd_config=3;
return(0);
}
void dump_frame_parms(LTE_DL_FRAME_PARMS *frame_parms)
{
msg("frame_parms->N_RB_DL=%d\n",frame_parms->N_RB_DL);
msg("frame_parms->N_RB_UL=%d\n",frame_parms->N_RB_UL);
msg("frame_parms->Nid_cell=%d\n",frame_parms->Nid_cell);
msg("frame_parms->Ncp=%d\n",frame_parms->Ncp);
msg("frame_parms->Ncp_UL=%d\n",frame_parms->Ncp_UL);
msg("frame_parms->nushift=%d\n",frame_parms->nushift);
msg("frame_parms->frame_type=%d\n",frame_parms->frame_type);
msg("frame_parms->tdd_config=%d\n",frame_parms->tdd_config);
msg("frame_parms->tdd_config_S=%d\n",frame_parms->tdd_config_S);
msg("frame_parms->mode1_flag=%d\n",frame_parms->mode1_flag);
msg("frame_parms->nb_antennas_tx=%d\n",frame_parms->nb_antennas_tx);
msg("frame_parms->nb_antennas_rx=%d\n",frame_parms->nb_antennas_rx);
msg("frame_parms->ofdm_symbol_size=%d\n",frame_parms->ofdm_symbol_size);
msg("frame_parms->log2_symbol_size=%d\n",frame_parms->log2_symbol_size);
msg("frame_parms->nb_prefix_samples=%d\n",frame_parms->nb_prefix_samples);
msg("frame_parms->nb_prefix_samples0=%d\n",frame_parms->nb_prefix_samples0);
msg("frame_parms->first_carrier_offset=%d\n",frame_parms->first_carrier_offset);
msg("frame_parms->samples_per_tti=%d\n",frame_parms->samples_per_tti);
msg("frame_parms->symbols_per_tti=%d\n",frame_parms->symbols_per_tti);
}