move beamforming function to PHY/MODULATION folder
This commit is contained in:
@@ -868,12 +868,12 @@ set(PHY_SRC
|
|||||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
|
||||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/print_stats.c
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/print_stats.c
|
||||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/initial_sync.c
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/initial_sync.c
|
||||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/beamforming.c
|
|
||||||
${OPENAIR1_DIR}/PHY/MODULATION/ofdm_mod.c
|
${OPENAIR1_DIR}/PHY/MODULATION/ofdm_mod.c
|
||||||
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
|
||||||
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
|
||||||
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
|
||||||
${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
|
${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
|
||||||
|
${OPENAIR1_DIR}/PHY/MODULATION/beamforming.c
|
||||||
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
|
||||||
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
|
||||||
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
|
||||||
|
|||||||
@@ -336,41 +336,6 @@ int32_t generate_pbch(LTE_eNB_PBCH *eNB_pbch,
|
|||||||
|
|
||||||
int32_t generate_pbch_emul(PHY_VARS_eNB *phy_vars_eNB,uint8_t *pbch_pdu);
|
int32_t generate_pbch_emul(PHY_VARS_eNB *phy_vars_eNB,uint8_t *pbch_pdu);
|
||||||
|
|
||||||
|
|
||||||
/** \brief This function performs UE specific beamforming especially for
|
|
||||||
* transmission mode TM7-10
|
|
||||||
@param txdataF Table of pointers for frequency-domain TX signals
|
|
||||||
@param txdataF_BF Table of pointers for frequency-domain TX signals
|
|
||||||
after beamforming
|
|
||||||
@param frame_parms Frame descriptor structure
|
|
||||||
@param ue_spec_bf_weights UE specific beamforming weights applied on
|
|
||||||
each antenna element and each carrier
|
|
||||||
@param slot Slot number
|
|
||||||
@param symbol Symbol index on which to act*/
|
|
||||||
int ue_spec_beamforming(int32_t **txdataF,
|
|
||||||
int32_t **txdataF_BF,
|
|
||||||
LTE_DL_FRAME_PARMS *frame_parms,
|
|
||||||
int32_t ***ue_spec_bf_weights,
|
|
||||||
int slot,
|
|
||||||
int symbol);
|
|
||||||
|
|
||||||
/** \brief This function performs cell specific beamforming for common
|
|
||||||
* data
|
|
||||||
@param txdataF Table of pointers for frequency-domain TX signals
|
|
||||||
@param txdataF_BF Table of pointers for frequency-domain TX signals
|
|
||||||
@param frame_parms Frame descriptor structure
|
|
||||||
after beamforming
|
|
||||||
@param cell_spec_bf_weights Common beamforming weights applied on each
|
|
||||||
antenna element and each carrier
|
|
||||||
@param slot Slot number
|
|
||||||
@param symbol Symbol index on which to act*/
|
|
||||||
int cell_spec_beamforming(int32_t **txdataF,
|
|
||||||
int32_t **txdataF_BF,
|
|
||||||
LTE_DL_FRAME_PARMS *frame_parms,
|
|
||||||
int32_t ***cell_spec_bf_weights,
|
|
||||||
int slot,
|
|
||||||
int symbol);
|
|
||||||
|
|
||||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/QPSK reception.
|
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/QPSK reception.
|
||||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||||
|
|||||||
@@ -27,13 +27,13 @@ Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 069
|
|||||||
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
/*! \file PHY/LTE_TRANSPORT/beamforming.c
|
/*! \file PHY/MODULATION/beamforming.c
|
||||||
* \brief
|
* \brief
|
||||||
* \author R. Knopp, F. Kaltenberger, X. JIANG
|
* \author X. JIANG, F. Kaltenberger, R. KNOPP
|
||||||
* \date 2015
|
* \date 2016
|
||||||
* \version 0.1
|
* \version 0.1
|
||||||
* \company Eurecom
|
* \company Eurecom
|
||||||
* \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr,xiwen.jiang@eurecom.fr
|
* \email: xiwen.jiang@eurecom.fr,florian.kaltenberger@eurecom.fr,raymond.knopp@eurecom.fr
|
||||||
* \note
|
* \note
|
||||||
* \warning
|
* \warning
|
||||||
*/
|
*/
|
||||||
@@ -99,6 +99,40 @@ void remove_625_Hz(PHY_VARS_eNB *phy_vars_eNB,int16_t *prach);
|
|||||||
|
|
||||||
void apply_625_Hz(PHY_VARS_UE *phy_vars_ue,int16_t *prach);
|
void apply_625_Hz(PHY_VARS_UE *phy_vars_ue,int16_t *prach);
|
||||||
|
|
||||||
|
/** \brief This function performs UE specific beamforming especially for
|
||||||
|
* transmission mode TM7-10
|
||||||
|
@param txdataF Table of pointers for frequency-domain TX signals
|
||||||
|
@param txdataF_BF Table of pointers for frequency-domain TX signals
|
||||||
|
after beamforming
|
||||||
|
@param frame_parms Frame descriptor structure
|
||||||
|
@param ue_spec_bf_weights UE specific beamforming weights applied on
|
||||||
|
each antenna element and each carrier
|
||||||
|
@param slot Slot number
|
||||||
|
@param symbol Symbol index on which to act*/
|
||||||
|
int ue_spec_beamforming(int32_t **txdataF,
|
||||||
|
int32_t **txdataF_BF,
|
||||||
|
LTE_DL_FRAME_PARMS *frame_parms,
|
||||||
|
int32_t ***ue_spec_bf_weights,
|
||||||
|
int slot,
|
||||||
|
int symbol);
|
||||||
|
|
||||||
|
/** \brief This function performs cell specific beamforming for common
|
||||||
|
* data
|
||||||
|
@param txdataF Table of pointers for frequency-domain TX signals
|
||||||
|
@param txdataF_BF Table of pointers for frequency-domain TX signals
|
||||||
|
@param frame_parms Frame descriptor structure
|
||||||
|
after beamforming
|
||||||
|
@param cell_spec_bf_weights Common beamforming weights applied on each
|
||||||
|
antenna element and each carrier
|
||||||
|
@param slot Slot number
|
||||||
|
@param symbol Symbol index on which to act*/
|
||||||
|
int cell_spec_beamforming(int32_t **txdataF,
|
||||||
|
int32_t **txdataF_BF,
|
||||||
|
LTE_DL_FRAME_PARMS *frame_parms,
|
||||||
|
int32_t ***cell_spec_bf_weights,
|
||||||
|
int slot,
|
||||||
|
int symbol);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/** @}*/
|
/** @}*/
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -134,12 +134,12 @@ void do_OFDM_mod_l(LTE_eNB_COMMON *eNB_common_vars, int eNB_id, uint16_t next_sl
|
|||||||
|
|
||||||
//printf("do_OFDM_mod_l, slot=%d, l=%d, NUMBER_OF_OFDM_CARRIERS=%d,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES=%d\n",next_slot, l,NUMBER_OF_OFDM_CARRIERS,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
|
//printf("do_OFDM_mod_l, slot=%d, l=%d, NUMBER_OF_OFDM_CARRIERS=%d,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES=%d\n",next_slot, l,NUMBER_OF_OFDM_CARRIERS,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
|
||||||
if (l<num_pdcch_symbols && next_slot&1 == 0)
|
if (l<num_pdcch_symbols && next_slot&1 == 0)
|
||||||
cell_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->cell_spec_bf_weights,next_slot,l);
|
cell_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->cell_spec_bf_weights[eNB_id],next_slot,l);
|
||||||
else
|
else
|
||||||
if (transmission_mode<7)
|
if (transmission_mode<7)
|
||||||
cell_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->cell_spec_bf_weights,next_slot,l);
|
cell_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->cell_spec_bf_weights[eNB_id],next_slot,l);
|
||||||
else
|
else
|
||||||
ue_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->ue_spec_bf_weights,next_slot,l);
|
ue_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->ue_spec_bf_weights[eNB_id],next_slot,l);
|
||||||
|
|
||||||
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
||||||
|
|
||||||
@@ -1026,7 +1026,7 @@ int main(int argc, char **argv)
|
|||||||
for (re=0;re<frame_parms->ofdm_symbol_size;re++) {
|
for (re=0;re<frame_parms->ofdm_symbol_size;re++) {
|
||||||
if (n_tx_phy==1 || n_tx_phy==2)
|
if (n_tx_phy==1 || n_tx_phy==2)
|
||||||
ue_spec_bf_weights[aa][re] = 0x00007fff;
|
ue_spec_bf_weights[aa][re] = 0x00007fff;
|
||||||
else if (n_tx_phy==4)
|
else if (n_tx_phy==4 || n_tx_phy==8)
|
||||||
ue_spec_bf_weights[aa][re] = 0x00007fff>>1;
|
ue_spec_bf_weights[aa][re] = 0x00007fff>>1;
|
||||||
else if (n_tx_phy==16)
|
else if (n_tx_phy==16)
|
||||||
ue_spec_bf_weights[aa][re] = 0x00007fff>>2;
|
ue_spec_bf_weights[aa][re] = 0x00007fff>>2;
|
||||||
|
|||||||
Reference in New Issue
Block a user