Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
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
wangjie
OpenXG-RAN
Commits
d7db5cdd
Commit
d7db5cdd
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
b1f64b22
Changes
9
Expand all
Show 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 @
d7db5cdd
...
...
@@ -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 @
d7db5cdd
...
...
@@ -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 @
d7db5cdd
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/defs.h
View file @
d7db5cdd
...
...
@@ -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,37 +101,20 @@ 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
,
int
beam_precod
ing
(
int32_t
**
txdataF
,
int32_t
**
txdataF_BF
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
***
cell_spec_bf
_weights
,
int32_t
***
beam
_weights
,
int
slot
,
int
symbol
);
...
...
openair1/PHY/MODULATION/ofdm_mod.c
View file @
d7db5cdd
...
...
@@ -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 @
d7db5cdd
...
...
@@ -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 @
d7db5cdd
...
...
@@ -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 @
d7db5cdd
...
...
@@ -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
)
...
...
@@ -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 @
d7db5cdd
...
...
@@ -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