From 06c4b91b61ead3637be02c38bccf7babe47af437 Mon Sep 17 00:00:00 2001 From: Xiwen JIANG <xiwen.jiang@eureocm.fr> Date: Thu, 17 Mar 2016 10:28:06 +0100 Subject: [PATCH] move beamforming function to PHY/MODULATION folder --- cmake_targets/CMakeLists.txt | 2 +- openair1/PHY/LTE_TRANSPORT/proto.h | 35 ------------------- .../beamforming.c | 8 ++--- openair1/PHY/MODULATION/defs.h | 34 ++++++++++++++++++ openair1/SIMULATION/LTE_PHY/dlsim.c | 8 ++--- 5 files changed, 43 insertions(+), 44 deletions(-) rename openair1/PHY/{LTE_TRANSPORT => MODULATION}/beamforming.c (98%) diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 5a679cdf4a..7981ea1023 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -868,12 +868,12 @@ set(PHY_SRC ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/print_stats.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/slot_fep.c ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.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/lte_sync_time.c ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c diff --git a/openair1/PHY/LTE_TRANSPORT/proto.h b/openair1/PHY/LTE_TRANSPORT/proto.h index 416bff82c4..35de21c7b8 100644 --- a/openair1/PHY/LTE_TRANSPORT/proto.h +++ b/openair1/PHY/LTE_TRANSPORT/proto.h @@ -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); - -/** \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. @param stream0_in Input from channel compensated (MR combined) stream 0 @param stream1_in Input from channel compensated (MR combined) stream 1 diff --git a/openair1/PHY/LTE_TRANSPORT/beamforming.c b/openair1/PHY/MODULATION/beamforming.c similarity index 98% rename from openair1/PHY/LTE_TRANSPORT/beamforming.c rename to openair1/PHY/MODULATION/beamforming.c index 7a2b75d74e..867ba0d53d 100644 --- a/openair1/PHY/LTE_TRANSPORT/beamforming.c +++ b/openair1/PHY/MODULATION/beamforming.c @@ -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 - * \author R. Knopp, F. Kaltenberger, X. JIANG - * \date 2015 + * \author X. JIANG, F. Kaltenberger, R. KNOPP + * \date 2016 * \version 0.1 * \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 * \warning */ diff --git a/openair1/PHY/MODULATION/defs.h b/openair1/PHY/MODULATION/defs.h index 6005d6d49a..fec65b8679 100644 --- a/openair1/PHY/MODULATION/defs.h +++ b/openair1/PHY/MODULATION/defs.h @@ -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); +/** \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 diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c index ba7d02b340..beb90006ae 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim.c @@ -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); 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 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 - 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++) { @@ -1026,7 +1026,7 @@ int main(int argc, char **argv) for (re=0;re<frame_parms->ofdm_symbol_size;re++) { if (n_tx_phy==1 || n_tx_phy==2) 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; else if (n_tx_phy==16) ue_spec_bf_weights[aa][re] = 0x00007fff>>2; -- 2.26.2