Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG UE
Commits
10c38f78
Commit
10c38f78
authored
Jun 15, 2016
by
Xiwen JIANG
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge ue_spec beamforming and cell_spec beamforming to beam_precoding
parent
ec391e2e
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
109 additions
and
200 deletions
+109
-200
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+18
-4
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+1
-1
openair1/PHY/MODULATION/beamforming.c
openair1/PHY/MODULATION/beamforming.c
+46
-139
openair1/PHY/MODULATION/defs.h
openair1/PHY/MODULATION/defs.h
+10
-25
openair1/PHY/MODULATION/ofdm_mod.c
openair1/PHY/MODULATION/ofdm_mod.c
+4
-9
openair1/PHY/impl_defs_lte.h
openair1/PHY/impl_defs_lte.h
+11
-4
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+11
-8
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+4
-6
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
.../PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
+4
-4
No files found.
openair1/PHY/INIT/lte_init.c
View file @
10c38f78
...
...
@@ -1235,7 +1235,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB,
LTE_eNB_PUSCH
**
const
eNB_pusch_vars
=
phy_vars_eNB
->
lte_eNB_pusch_vars
;
LTE_eNB_SRS
*
const
eNB_srs_vars
=
phy_vars_eNB
->
lte_eNB_srs_vars
;
LTE_eNB_PRACH
*
const
eNB_prach_vars
=
&
phy_vars_eNB
->
lte_eNB_prach_vars
;
int
i
,
j
,
eNB_id
,
UE_id
;
int
i
,
j
,
re
,
eNB_id
,
UE_id
;
phy_vars_eNB
->
total_dlsch_bitrate
=
0
;
phy_vars_eNB
->
total_transmitted_bits
=
0
;
...
...
@@ -1302,7 +1302,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB,
#endif
}
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*));
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));
...
...
@@ -1310,11 +1310,25 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB,
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],
OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES*sizeof(int32_t));
#endif
}
} */
for
(
i
=
0
;
i
<
15
;
i
++
)
{
// 15 is the total number of antenna ports
eNB_common_vars
->
beam_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
++
)
{
eNB_common_vars
->
beam_weights
[
eNB_id
][
i
][
j
]
=
(
int32_t
*
)
malloc16_clear
(
OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES
*
sizeof
(
int32_t
));
for
(
re
=
0
;
re
<
OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES
;
re
++
)
eNB_common_vars
->
beam_weights
[
eNB_id
][
i
][
j
][
re
]
=
0x00007fff
;
#ifdef DEBUG_PUY
msg
(
"[openair][LTE_PHY][INIT] lte_eNB_common_vars->beam_weights[%d][%d][%d] = %p (%d bytes)
\n
"
,
eNB_id
,
i
,
j
,
eNB_common_vars
->
beam_weights
[
eNB_id
][
i
][
j
],
OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES
*
sizeof
(
int32_t
));
#endif
}
}
for
(
i
=
0
;
i
<
8
;
i
++
)
{
//antenna port 5 for TM7, antenna port 7-15 for TM8-10
/*
for (i=0; i<8; i++) { //antenna port 5 for TM7, antenna port 7-15 for TM8-10
eNB_common_vars->ue_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++) {
eNB_common_vars->ue_spec_bf_weights[eNB_id][i][j] = (int32_t*)malloc16_clear(OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES*sizeof(int32_t));
...
...
@@ -1324,7 +1338,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB,
OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES*sizeof(int32_t));
#endif
}
}
}
*/
// RX vars
eNB_common_vars
->
rxdata
[
eNB_id
]
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
View file @
10c38f78
...
...
@@ -1446,7 +1446,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
// mapping ue specific beamforming weights from UE specified DLSCH structure to common space
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_tx
;
aa
++
){
memcpy
(
phy_vars_eNB
->
lte_eNB_common_vars
.
ue_spec_bf_weights
[
0
][
0
][
aa
],
dlsch0
->
ue_spec_bf_weights
[
0
][
aa
],
frame_parms
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
memcpy
(
phy_vars_eNB
->
lte_eNB_common_vars
.
beam_weights
[
0
][
5
][
aa
],
dlsch0
->
ue_spec_bf_weights
[
0
][
aa
],
frame_parms
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
}
}
...
...
openair1/PHY/MODULATION/beamforming.c
View file @
10c38f78
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/defs.h
View file @
10c38f78
...
...
@@ -89,6 +89,8 @@ void normal_prefix_mod(int32_t *txdataF,int32_t *txdata,uint8_t nsymb,LTE_DL_FRA
void
do_OFDM_mod
(
mod_sym_t
**
txdataF
,
int32_t
**
txdata
,
uint32_t
frame
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
void
do_OFDM_mod_l
(
LTE_eNB_COMMON
*
eNB_common_vars
,
int
eNB_id
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
num_pdcch_symbols
);
void
remove_7_5_kHz
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
subframe
);
void
apply_7_5_kHz
(
PHY_VARS_UE
*
phy_vars_ue
,
int32_t
*
txdata
,
uint8_t
subframe
);
...
...
@@ -99,39 +101,22 @@ 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
/** \brief This function performs beamforming precoding 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 b
eamforming weights applied on each
@param
beam_weights B
eamforming weights applied on each
antenna element and each carrier
@param slot Slot number
@param symbol Symbol index on which to act*/
int
cell_spec_beamform
ing
(
int32_t
**
txdataF
,
int32_t
**
txdataF_BF
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
***
cell_spec_bf
_weights
,
int
slot
,
int
symbol
);
int
beam_precod
ing
(
int32_t
**
txdataF
,
int32_t
**
txdataF_BF
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
***
beam
_weights
,
int
slot
,
int
symbol
);
#endif
/** @}*/
...
...
openair1/PHY/MODULATION/ofdm_mod.c
View file @
10c38f78
...
...
@@ -277,10 +277,11 @@ void do_OFDM_mod(mod_sym_t **txdataF, int32_t **txdata, uint32_t frame,uint16_t
}
// OFDM modulation for each symbol
void
do_OFDM_mod_l
(
LTE_eNB_COMMON
*
eNB_common_vars
,
int
eNB_id
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
num_pdcch_symbols
,
unsigned
char
transmission_mode
)
void
do_OFDM_mod_l
(
LTE_eNB_COMMON
*
eNB_common_vars
,
int
eNB_id
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
num_pdcch_symbols
)
{
int
aa
,
l
,
slot_offset
,
slot_offset_F
;
int8_t
UE_id
=
0
;
mod_sym_t
**
txdataF
=
eNB_common_vars
->
txdataF
[
eNB_id
];
mod_sym_t
**
txdataF_BF
=
eNB_common_vars
->
txdataF_BF
[
eNB_id
];
int32_t
**
txdata
=
eNB_common_vars
->
txdata
[
eNB_id
];
...
...
@@ -292,13 +293,8 @@ void do_OFDM_mod_l(LTE_eNB_COMMON *eNB_common_vars, int eNB_id, uint16_t next_sl
for
(
l
=
0
;
l
<
frame_parms
->
symbols_per_tti
>>
1
;
l
++
)
{
//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
[
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
[
eNB_id
],
next_slot
,
l
);
else
ue_spec_beamforming
(
txdataF
,
txdataF_BF
,
frame_parms
,
eNB_common_vars
->
ue_spec_bf_weights
[
eNB_id
],
next_slot
,
l
);
beam_precoding
(
txdataF
,
txdataF_BF
,
frame_parms
,
eNB_common_vars
->
beam_weights
[
eNB_id
],
next_slot
,
l
);
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_tx
;
aa
++
)
{
...
...
@@ -331,4 +327,3 @@ void do_OFDM_mod_l(LTE_eNB_COMMON *eNB_common_vars, int eNB_id, uint16_t next_sl
}
}
/** @} */
openair1/PHY/impl_defs_lte.h
View file @
10c38f78
...
...
@@ -638,17 +638,24 @@ typedef struct {
/// - second index: cell specific eNB antenna port index, up to 2 logical antenna ports are supported
/// - third index: tx antenna [0..nb_antennas_tx[
/// - fourth index: sample [0..]
int32_t
**
cell_spec_bf_weights
[
3
][
2
];
//
int32_t **cell_spec_bf_weights[3][2];
/// \brief Holds the ue specific beamforming weights
/// - first index: eNB id [0..2] (hard coded)
/// - second index: ue specific eNB antenna port index, port5->index0, port7-15->index0-7
/// - third index: tx antenna [0..nb_antennas_tx[
/// - fourth index: sample [0..]
int32_t
**
ue_spec_bf_weights
[
3
][
8
];
// int32_t **ue_spec_bf_weights[3][8];
/// \brief Holds the ue specific beamforming weights
/// - first index: eNB id [0..2] (hard coded)
/// - second index: eNB antenna port index
/// - third index: tx antenna [0..nb_antennas_tx[
/// - fourth index: sample [0..]
int32_t
**
beam_weights
[
3
][
15
];
/// \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..]
/// - second index: ue specific eNB antenna port index, port5->index0, port7-15->index0-7
/// - third index: tx antenna [0..nb_antennas_tx[
/// - forth index: frenquency [0..]
int32_t
**
tdd_calib_coeffs
[
3
];
}
LTE_eNB_COMMON
;
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
10c38f78
...
...
@@ -1610,7 +1610,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB
->
dlsch_eNB_ra
->
active
=
0
;
}
// Now scan UE specific DLSCH
// Now scan UE specific DLSCH
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
{
if
((
phy_vars_eNB
->
dlsch_eNB
[(
uint8_t
)
UE_id
][
0
])
&&
...
...
@@ -1779,6 +1779,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB
->
dlsch_eNB
[(
uint8_t
)
UE_id
][
0
]
->
active
=
0
;
//mac_xface->macphy_exit("first dlsch transmitted\n");
}
else
if
((
phy_vars_eNB
->
dlsch_eNB
[(
uint8_t
)
UE_id
][
0
])
&&
...
...
@@ -1791,6 +1792,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
//LOG_D(PHY,"[eNB %d] DCI: Clearing subframe_tx for subframe %d, UE %d\n",phy_vars_eNB->Mod_id,subframe,UE_id);
#endif
}
}
...
...
@@ -1811,30 +1813,31 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
}
#ifdef EMOS
phy_procedures_emos_eNB_TX
(
subframe
,
phy_vars_eNB
);
#endif
//cell-specific beamforming
#if !(defined(EXMIMO) || defined(OAI_USRP) || defined (CPRIGW))
if
(
abstraction_flag
==
0
)
{
start_meas
(
&
phy_vars_eNB
->
ofdm_mod_stats
);
do_OFDM_mod_l
(
phy_vars_eNB
->
lte_eNB_common_vars
,
//do_OFDM_mod (without l) ?
do_OFDM_mod_l
(
&
phy_vars_eNB
->
lte_eNB_common_vars
,
0
,
subframe
<<
1
,
&
phy_vars_eNB
->
lte_frame_parms
,
num_pdcch_symbols
,
phy_vars_eNB
->
transmission_mode
[(
uint8_t
)
UE_id
]);
num_pdcch_symbols
);
do_OFDM_mod_l
(
phy_vars_eNB
->
lte_eNB_common_vars
,
do_OFDM_mod_l
(
&
phy_vars_eNB
->
lte_eNB_common_vars
,
0
,
1
+
(
subframe
<<
1
),
&
phy_vars_eNB
->
lte_frame_parms
,
num_pdcch_symbols
,
phy_vars_eNB
->
transmission_mode
[(
uint8_t
)
UE_id
]);
num_pdcch_symbols
);
stop_meas
(
&
phy_vars_eNB
->
ofdm_mod_stats
);
}
...
...
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
10c38f78
...
...
@@ -643,7 +643,7 @@ int main(int argc, char **argv)
frame_parms
=
&
PHY_vars_eNB
->
lte_frame_parms
;
cell_spec_bf_weights
=
PHY_vars_eNB
->
lte_eNB_common_vars
.
cell_spec_bf
_weights
[
0
][
0
];
cell_spec_bf_weights
=
PHY_vars_eNB
->
lte_eNB_common_vars
.
beam
_weights
[
0
][
0
];
for
(
aa
=
0
;
aa
<
n_tx_phy
;
aa
++
)
{
for
(
re
=
0
;
re
<
frame_parms
->
ofdm_symbol_size
;
re
++
)
{
if
(
n_tx_phy
==
1
||
n_tx_phy
==
2
)
...
...
@@ -655,7 +655,7 @@ int main(int argc, char **argv)
else
if
(
n_tx_phy
==
64
)
cell_spec_bf_weights
[
aa
][
re
]
=
0x00007fff
>>
4
;
}
}
}
if
(
transmission_mode
==
7
){
lte_gold_ue_spec_port5
(
PHY_vars_eNB
->
lte_gold_uespec_port5_table
[
0
],
Nid_cell
,
n_rnti
);
...
...
@@ -2813,15 +2813,13 @@ PMI_FEEDBACK:
eNB_id
,
(
subframe
*
2
),
&
PHY_vars_eNB
->
lte_frame_parms
,
num_pdcch_symbols
,
transmission_mode
);
num_pdcch_symbols
);
do_OFDM_mod_l
(
&
PHY_vars_eNB
->
lte_eNB_common_vars
,
eNB_id
,
(
subframe
*
2
)
+
1
,
&
PHY_vars_eNB
->
lte_frame_parms
,
num_pdcch_symbols
,
transmission_mode
);
num_pdcch_symbols
);
stop_meas
(
&
PHY_vars_eNB
->
ofdm_mod_stats
);
stop_meas
(
&
PHY_vars_eNB
->
phy_proc_tx
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
View file @
10c38f78
...
...
@@ -154,13 +154,13 @@ eNBs =
global_log_verbosity
=
"medium"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"medium"
;
phy_log_level
=
"
warn
"
;
phy_log_level
=
"
debug
"
;
phy_log_verbosity
=
"medium"
;
mac_log_level
=
"
warn
"
;
mac_log_level
=
"
debug
"
;
mac_log_verbosity
=
"medium"
;
rlc_log_level
=
"
warn
"
;
rlc_log_level
=
"
info
"
;
rlc_log_verbosity
=
"medium"
;
pdcp_log_level
=
"
warn
"
;
pdcp_log_level
=
"
info
"
;
pdcp_log_verbosity
=
"medium"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"medium"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment