lte softmodem adaption for massive antennas (not complete)
This commit is contained in:
@@ -1305,7 +1305,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB,
|
|||||||
for (i=0; i<2; i++) { // 2 is the total number of cell specific antenna ports
|
for (i=0; i<2; i++) { // 2 is the total number of cell specific antenna ports
|
||||||
eNB_common_vars->cell_spec_bf_weights[eNB_id][i] = (int32_t **)malloc16_clear(frame_parms->nb_antennas_tx*sizeof(int32_t*));
|
eNB_common_vars->cell_spec_bf_weights[eNB_id][i] = (int32_t **)malloc16_clear(frame_parms->nb_antennas_tx*sizeof(int32_t*));
|
||||||
for (j=0; j<frame_parms->nb_antennas_tx; j++) {
|
for (j=0; j<frame_parms->nb_antennas_tx; j++) {
|
||||||
eNB_common_vars->cell_spec_bf_weights[eNB_id][i][j] = (int32_t*)malloc16_clear(OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES*sizeof(int32_t));
|
eNB_common_vars->cell_spec_bf_weights[eNB_id][i][j] = (int32_t *)malloc16_clear(OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES*sizeof(int32_t));
|
||||||
#ifdef DEBUG_PUY
|
#ifdef DEBUG_PUY
|
||||||
msg("[openair][LTE_PHY][INIT] lte_eNB_common_vars->cell_spec_bf_weights[%d][%d][%d] = %p (%d bytes)\n",
|
msg("[openair][LTE_PHY][INIT] lte_eNB_common_vars->cell_spec_bf_weights[%d][%d][%d] = %p (%d bytes)\n",
|
||||||
eNB_id,i,j,eNB_common_vars->cell_spec_bf_weights[eNB_id][i][j],
|
eNB_id,i,j,eNB_common_vars->cell_spec_bf_weights[eNB_id][i][j],
|
||||||
|
|||||||
@@ -645,6 +645,11 @@ typedef struct {
|
|||||||
/// - third index: tx antenna [0..nb_antennas_tx[
|
/// - third index: tx antenna [0..nb_antennas_tx[
|
||||||
/// - fourth index: sample [0..]
|
/// - fourth index: sample [0..]
|
||||||
int32_t **ue_spec_bf_weights[3][8];
|
int32_t **ue_spec_bf_weights[3][8];
|
||||||
|
/// \brief Holds the tdd reciprocity calibration coefficients
|
||||||
|
/// - first index: eNB id [0..2] (hard coded)
|
||||||
|
/// - second index: tx antenna [0..nb_antennas_tx[
|
||||||
|
/// - third index: frenquency [0..]
|
||||||
|
int32_t **tdd_calib_coeffs[3];
|
||||||
} LTE_eNB_COMMON;
|
} LTE_eNB_COMMON;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
@@ -2520,14 +2520,21 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
|
|||||||
if (abstraction_flag==0)
|
if (abstraction_flag==0)
|
||||||
{
|
{
|
||||||
start_meas(&phy_vars_eNB->ofdm_mod_stats);
|
start_meas(&phy_vars_eNB->ofdm_mod_stats);
|
||||||
do_OFDM_mod(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
|
|
||||||
phy_vars_eNB->lte_eNB_common_vars.txdata[0],
|
do_OFDM_mod_l(phy_vars_eNB->lte_eNB_common_vars,
|
||||||
phy_vars_eNB->proc[sched_subframe].frame_tx,subframe<<1,
|
0,
|
||||||
&phy_vars_eNB->lte_frame_parms);
|
subframe<<1,
|
||||||
do_OFDM_mod(phy_vars_eNB->lte_eNB_common_vars.txdataF[0],
|
&phy_vars_eNB->lte_frame_parms,
|
||||||
phy_vars_eNB->lte_eNB_common_vars.txdata[0],
|
num_pdcch_symbols,
|
||||||
phy_vars_eNB->proc[sched_subframe].frame_tx,1+(subframe<<1),
|
eNB->transmission_mode[(uint8_t)UE_id]);
|
||||||
&phy_vars_eNB->lte_frame_parms);
|
|
||||||
|
do_OFDM_mod_l(phy_vars_eNB->lte_eNB_common_vars,
|
||||||
|
0,
|
||||||
|
1+(subframe<<1),
|
||||||
|
&phy_vars_eNB->lte_frame_parms,
|
||||||
|
num_pdcch_symbols,
|
||||||
|
eNB->transmission_mode[(uint8_t)UE_id]);
|
||||||
|
|
||||||
stop_meas(&phy_vars_eNB->ofdm_mod_stats);
|
stop_meas(&phy_vars_eNB->ofdm_mod_stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2755,7 +2755,7 @@ int main( int argc, char **argv )
|
|||||||
frame_parms[CC_id]->nb_antenna_ports_eNB = (transmission_mode == 1 || transmission_mode ==7) ? 1 : 2; //initial value overwritten by initial sync later
|
frame_parms[CC_id]->nb_antenna_ports_eNB = (transmission_mode == 1 || transmission_mode ==7) ? 1 : 2; //initial value overwritten by initial sync later
|
||||||
}
|
}
|
||||||
|
|
||||||
frame_parms[CC_id]->mode1_flag = (transmission_mode == 1) ? 1 : 0;
|
frame_parms[CC_id]->mode1_flag = (transmission_mode == 1 || transmission_mode ==7) ? 1 : 0;
|
||||||
frame_parms[CC_id]->phich_config_common.phich_resource = oneSixth;
|
frame_parms[CC_id]->phich_config_common.phich_resource = oneSixth;
|
||||||
frame_parms[CC_id]->phich_config_common.phich_duration = normal;
|
frame_parms[CC_id]->phich_config_common.phich_duration = normal;
|
||||||
// UL RS Config
|
// UL RS Config
|
||||||
@@ -3188,7 +3188,7 @@ int main( int argc, char **argv )
|
|||||||
openair_daq_vars.timing_advance = 160;
|
openair_daq_vars.timing_advance = 160;
|
||||||
#endif
|
#endif
|
||||||
if (setup_ue_buffers(UE,&openair0_cfg[0],rf_map)!=0) {
|
if (setup_ue_buffers(UE,&openair0_cfg[0],rf_map)!=0) {
|
||||||
printf("Error setting up eNB buffer\n");
|
printf("Error setting up UE buffer\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user