Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
dyyu
openairinterface5G
Commits
fdae0065
Commit
fdae0065
authored
Jun 21, 2017
by
Bilel
Browse files
Make RX thread number configurable
parent
f364d13d
Changes
29
Hide whitespace changes
Inline
Side-by-side
cmake_targets/build_oai
View file @
fdae0065
...
...
@@ -38,7 +38,7 @@ set_openair_env
#variables for UE data generation
gen_nvram_path
=
$OPENAIR_DIR
/targets/bin
conf_nvram_path
=
$OPENAIR_DIR
/openair3/NAS/TOOLS/ue_
eurecom
_test
_sfr
.conf
conf_nvram_path
=
$OPENAIR_DIR
/openair3/NAS/TOOLS/ue_
tcl
_test.conf
MSC_GEN
=
"False"
XFORMS
=
"True"
...
...
openair1/PHY/INIT/lte_init.c
View file @
fdae0065
...
...
@@ -1082,18 +1082,19 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
// create shortcuts
LTE_DL_FRAME_PARMS
*
const
fp
=
&
ue
->
frame_parms
;
LTE_UE_COMMON
*
const
common_vars
=
&
ue
->
common_vars
;
LTE_UE_PDSCH
**
const
pdsch_vars_th0
=
ue
->
pdsch_vars
[
0
];
LTE_UE_PDSCH
**
const
pdsch_vars_th1
=
ue
->
pdsch_vars
[
1
];
LTE_UE_PDSCH
**
const
pdsch_vars_SI
=
ue
->
pdsch_vars_SI
;
LTE_UE_PDSCH
**
const
pdsch_vars_ra
=
ue
->
pdsch_vars_ra
;
LTE_UE_PDSCH
**
const
pdsch_vars_mch
=
ue
->
pdsch_vars_MCH
;
LTE_UE_PDSCH
*
(
*
pdsch_vars_th
)[][
NUMBER_OF_CONNECTED_eNB_MAX
+
1
]
=
&
ue
->
pdsch_vars
;
LTE_UE_PDCCH
*
(
*
pdcch_vars_th
)[][
NUMBER_OF_CONNECTED_eNB_MAX
]
=
&
ue
->
pdcch_vars
;
LTE_UE_PBCH
**
const
pbch_vars
=
ue
->
pbch_vars
;
LTE_UE_PDCCH
**
const
pdcch_vars_th0
=
ue
->
pdcch_vars
[
0
];
LTE_UE_PDCCH
**
const
pdcch_vars_th1
=
ue
->
pdcch_vars
[
1
];
LTE_UE_PRACH
**
const
prach_vars
=
ue
->
prach_vars
;
int
i
,
j
,
k
,
l
;
int
eNB_id
;
int
th_id
;
printf
(
"Initializing UE vars (abstraction %"
PRIu8
") for eNB TXant %"
PRIu8
", UE RXant %"
PRIu8
"
\n
"
,
abstraction_flag
,
fp
->
nb_antennas_tx
,
fp
->
nb_antennas_rx
);
LOG_D
(
PHY
,
"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]
\n
"
,
ue
->
Mod_id
+
NB_eNB_INST
);
...
...
@@ -1137,109 +1138,105 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
// init RX buffers
common_vars
->
rxdata
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
common_vars
->
common_vars_rx_data_per_thread
[
0
].
rxdataF
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
common_vars
->
common_vars_rx_data_per_thread
[
1
].
rxdataF
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
rxdataF
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
}
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
{
common_vars
->
rxdata
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
(
fp
->
samples_per_tti
*
10
+
2048
)
*
sizeof
(
int32_t
)
);
common_vars
->
common_vars_rx_data_per_thread
[
0
].
rxdataF
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
fp
->
ofdm_symbol_size
*
14
)
);
common_vars
->
common_vars_rx_data_per_thread
[
1
].
rxdataF
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
fp
->
ofdm_symbol_size
*
14
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
rxdataF
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
fp
->
ofdm_symbol_size
*
14
)
);
}
}
}
// Channel estimates
for
(
eNB_id
=
0
;
eNB_id
<
7
;
eNB_id
++
)
{
common_vars
->
common_vars_rx_data_per_thread
[
0
].
dl_ch_estimates
[
eNB_id
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
));
common_vars
->
common_vars_rx_data_per_thread
[
1
].
dl_ch_estimates
[
eNB_id
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
));
common_vars
->
common_vars_rx_data_per_thread
[
0
].
dl_ch_estimates_time
[
eNB_id
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
));
common_vars
->
common_vars_rx_data_per_thread
[
1
].
dl_ch_estimates_time
[
eNB_id
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
));
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
dl_ch_estimates
[
eNB_id
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
));
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
dl_ch_estimates_time
[
eNB_id
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
));
}
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
for
(
j
=
0
;
j
<
4
;
j
++
)
{
int
idx
=
(
j
<<
1
)
+
i
;
common_vars
->
common_vars_rx_data_per_thread
[
0
].
dl_ch_estimates
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
symbols_per_tti
*
(
fp
->
ofdm_symbol_size
+
LTE_CE_FILTER_LENGTH
)
);
common_vars
->
common_vars_rx_data_per_thread
[
1
].
dl_ch_estimates
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
symbols_per_tti
*
(
fp
->
ofdm_symbol_size
+
LTE_CE_FILTER_LENGTH
)
);
common_vars
->
common_vars_rx_data_per_thread
[
0
].
dl_ch_estimates_time
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
2
);
common_vars
->
common_vars_rx_data_per_thread
[
1
].
dl_ch_estimates_time
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
2
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
dl_ch_estimates
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
symbols_per_tti
*
(
fp
->
ofdm_symbol_size
+
LTE_CE_FILTER_LENGTH
)
);
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
dl_ch_estimates_time
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
2
);
}
}
}
// DLSCH
for
(
eNB_id
=
0
;
eNB_id
<
ue
->
n_connected_eNB
;
eNB_id
++
)
{
pdsch_vars_th0
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_th1
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
}
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
=
(
LTE_UE_PDCCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDCCH
));
}
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_mch
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdcch_vars_th0
[
eNB_id
]
=
(
LTE_UE_PDCCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDCCH
));
pdcch_vars_th1
[
eNB_id
]
=
(
LTE_UE_PDCCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDCCH
));
prach_vars
[
eNB_id
]
=
(
LTE_UE_PRACH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PRACH
));
pbch_vars
[
eNB_id
]
=
(
LTE_UE_PBCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PBCH
));
if
(
abstraction_flag
==
0
)
{
phy_init_lte_ue__PDSCH
(
pdsch_vars_th0
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_th1
[
eNB_id
],
fp
);
// thread 0
pdsch_vars_th0
[
eNB_id
]
->
llr_shifts
=
(
uint8_t
*
)
malloc16_clear
(
7
*
2
*
fp
->
N_RB_DL
*
12
);
pdsch_vars_th0
[
eNB_id
]
->
llr_shifts_p
=
pdsch_vars_th0
[
eNB_id
]
->
llr_shifts
;
pdsch_vars_th0
[
eNB_id
]
->
llr
[
1
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
pdsch_vars_th0
[
eNB_id
]
->
llr128_2ndstream
=
(
int16_t
**
)
malloc16_clear
(
sizeof
(
int16_t
*
)
);
pdsch_vars_th0
[
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16_clear
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
// thread 0
pdsch_vars_th1
[
eNB_id
]
->
llr_shifts
=
(
uint8_t
*
)
malloc16_clear
(
7
*
2
*
fp
->
N_RB_DL
*
12
);
pdsch_vars_th1
[
eNB_id
]
->
llr_shifts_p
=
pdsch_vars_th0
[
eNB_id
]
->
llr_shifts
;
pdsch_vars_th1
[
eNB_id
]
->
llr
[
1
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
pdsch_vars_th1
[
eNB_id
]
->
llr128_2ndstream
=
(
int16_t
**
)
malloc16_clear
(
sizeof
(
int16_t
*
)
);
pdsch_vars_th1
[
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16_clear
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
phy_init_lte_ue__PDSCH
(
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
],
fp
);
}
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
llr_shifts
=
(
uint8_t
*
)
malloc16_clear
(
7
*
2
*
fp
->
N_RB_DL
*
12
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
llr_shifts_p
=
(
*
pdsch_vars_th
)[
0
][
eNB_id
]
->
llr_shifts
;
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
llr
[
1
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
llr128_2ndstream
=
(
int16_t
**
)
malloc16_clear
(
sizeof
(
int16_t
*
)
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16_clear
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
}
for
(
int
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
){
pdsch_vars_th0
[
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
pdsch_vars_th
1
[
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdsch_vars_th
)[
th_id
]
[
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
}
pdsch_vars_th0
[
eNB_id
]
->
dl_ch_rho2_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdsch_vars_th1
[
eNB_id
]
->
dl_ch_rho2_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
}
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_rho2_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
}
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
for
(
j
=
0
;
j
<
4
;
j
++
)
{
const
int
idx
=
(
j
<<
1
)
+
i
;
const
size_t
num
=
7
*
2
*
fp
->
N_RB_DL
*
12
+
4
;
pdsch_vars_th0
[
eNB_id
]
->
dl_ch_rho2_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdsch_vars_th
1
[
eNB_id
]
->
dl_ch_rho2_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
}
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdsch_vars_th
)[
th_id
]
[
eNB_id
]
->
dl_ch_rho2_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
}
}
//const size_t num = 7*2*fp->N_RB_DL*12+4;
for
(
k
=
0
;
k
<
8
;
k
++
)
{
//harq_pid
for
(
l
=
0
;
l
<
8
;
l
++
)
{
//round
pdsch_vars_th0
[
eNB_id
]
->
rxdataF_comp1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdsch_vars_th0
[
eNB_id
]
->
dl_ch_rho_ext
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdsch_vars_th0
[
eNB_id
]
->
dl_ch_mag1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdsch_vars_th0
[
eNB_id
]
->
dl_ch_magb1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdsch_vars_th1
[
eNB_id
]
->
rxdataF_comp1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdsch_vars_th1
[
eNB_id
]
->
dl_ch_rho_ext
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdsch_vars_th1
[
eNB_id
]
->
dl_ch_mag1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdsch_vars_th1
[
eNB_id
]
->
dl_ch_magb1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
rxdataF_comp1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_rho_ext
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_mag1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_magb1
[
k
][
l
]
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
}
for
(
int
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
for
(
int
j
=
0
;
j
<
4
;
j
++
)
{
//frame_parms->nb_antennas_tx; j++)
const
int
idx
=
(
j
<<
1
)
+
i
;
pdsch_vars_th0
[
eNB_id
]
->
dl_ch_rho_ext
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
pdsch_vars_th0
[
eNB_id
]
->
rxdataF_comp1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
pdsch_vars_th0
[
eNB_id
]
->
dl_ch_mag1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
pdsch_vars_th0
[
eNB_id
]
->
dl_ch_magb1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
pdsch_vars_th1
[
eNB_id
]
->
dl_ch_rho_ext
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
pdsch_vars_th1
[
eNB_id
]
->
rxdataF_comp1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
pdsch_vars_th1
[
eNB_id
]
->
dl_ch_mag1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
pdsch_vars_th1
[
eNB_id
]
->
dl_ch_magb1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_rho_ext
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
rxdataF_comp1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_mag1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_magb1
[
k
][
l
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
7
*
2
*
sizeof
(
int32_t
)
*
(
fp
->
N_RB_DL
*
12
)
);
}
}
}
}
...
...
@@ -1248,46 +1245,35 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
phy_init_lte_ue__PDSCH
(
pdsch_vars_mch
[
eNB_id
],
fp
);
// 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE
pdcch_vars_th0
[
eNB_id
]
->
llr
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th0
[
eNB_id
]
->
llr16
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th0
[
eNB_id
]
->
wbar
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th0
[
eNB_id
]
->
e_rx
=
(
int8_t
*
)
malloc16_clear
(
4
*
2
*
100
*
12
);
pdcch_vars_th0
[
eNB_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
dl_ch_rho_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th0
[
eNB_id
]
->
dl_ch_estimates_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
llr
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th1
[
eNB_id
]
->
llr16
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th1
[
eNB_id
]
->
wbar
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
pdcch_vars_th1
[
eNB_id
]
->
e_rx
=
(
int8_t
*
)
malloc16_clear
(
4
*
2
*
100
*
12
);
pdcch_vars_th1
[
eNB_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
dl_ch_rho_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pdcch_vars_th1
[
eNB_id
]
->
dl_ch_estimates_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
llr
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
llr16
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
wbar
=
(
uint16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
e_rx
=
(
int8_t
*
)
malloc16_clear
(
4
*
2
*
100
*
12
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_rho_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
rho
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_estimates_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
}
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
{
//ue_pdcch_vars[eNB_id]->rho[i] = (int32_t*)malloc16_clear( sizeof(int32_t)*(fp->N_RB_DL*12*7*2) );
pdcch_vars_th0
[
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
100
*
12
*
4
)
);
pdcch_vars_th1
[
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
100
*
12
*
4
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
100
*
12
*
4
)
);
}
for
(
j
=
0
;
j
<
4
;
j
++
)
{
//fp->nb_antennas_tx; j++)
int
idx
=
(
j
<<
1
)
+
i
;
// size_t num = 7*2*fp->N_RB_DL*12;
size_t
num
=
4
*
100
*
12
;
// 4 symbols, 100 PRBs, 12 REs per PRB
pdcch_vars_th0
[
eNB_id
]
->
rxdataF_comp
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th0
[
eNB_id
]
->
dl_ch_rho_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th0
[
eNB_id
]
->
rxdataF_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th0
[
eNB_id
]
->
dl_ch_estimates_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th1
[
eNB_id
]
->
rxdataF_comp
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th1
[
eNB_id
]
->
dl_ch_rho_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th1
[
eNB_id
]
->
rxdataF_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
pdcch_vars_th1
[
eNB_id
]
->
dl_ch_estimates_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
rxdataF_comp
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_rho_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
rxdataF_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
(
*
pdcch_vars_th
)[
th_id
][
eNB_id
]
->
dl_ch_estimates_ext
[
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
num
);
}
}
}
...
...
@@ -1314,18 +1300,19 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
}
// initialization for the last instance of pdsch_vars (used for MU-MIMO)
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
}
pdsch_vars_th0
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_th1
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
if
(
abstraction_flag
==
0
)
{
phy_init_lte_ue__PDSCH
(
pdsch_vars_th0
[
eNB_id
],
fp
);
pdsch_vars_th0
[
eNB_id
]
->
llr
[
1
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
phy_init_lte_ue__PDSCH
(
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
],
fp
);
(
*
pdsch_vars_th
)[
th_id
][
eNB_id
]
->
llr
[
1
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
}
phy_init_lte_ue__PDSCH
(
pdsch_vars_th1
[
eNB_id
],
fp
);
pdsch_vars_th1
[
eNB_id
]
->
llr
[
1
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
}
else
{
//abstraction == 1
ue
->
sinr_dB
=
(
double
*
)
malloc16_clear
(
fp
->
N_RB_DL
*
12
*
sizeof
(
double
)
);
}
...
...
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
View file @
fdae0065
...
...
@@ -58,8 +58,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
temp
=
0
;
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_rx
;
aa
++
)
{
Re
=
((
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates_time
[
eNB_id
][
aa
])[(
i
<<
2
)];
Im
=
((
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates_time
[
eNB_id
][
aa
])[
1
+
(
i
<<
2
)];
Re
=
((
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_id
][
aa
])[(
i
<<
2
)];
Im
=
((
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_id
][
aa
])[
1
+
(
i
<<
2
)];
temp
+=
(
Re
*
Re
/
2
)
+
(
Im
*
Im
/
2
);
}
...
...
openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
View file @
fdae0065
...
...
@@ -51,7 +51,7 @@ int lte_dl_bf_channel_estimation(PHY_VARS_UE *phy_vars_ue,
int
uespec_pilot
[
300
];
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
phy_vars_ue
->
frame_parms
;
LTE_UE_DLSCH_t
**
dlsch_ue
=
phy_vars_ue
->
dlsch
[(
Ns
>>
1
)
&
0x1
][
eNB_id
];
LTE_UE_DLSCH_t
**
dlsch_ue
=
phy_vars_ue
->
dlsch
[(
Ns
>>
1
)
%
RX_NB_TH
][
eNB_id
];
LTE_DL_UE_HARQ_t
*
dlsch0_harq
;
harq_pid
=
dlsch_ue
[
0
]
->
current_harq_pid
;
...
...
@@ -63,9 +63,9 @@ int lte_dl_bf_channel_estimation(PHY_VARS_UE *phy_vars_ue,
else
rballoc
=
dlsch0_harq
->
rb_alloc_even
;
rxdataF
=
phy_vars_ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
rxdataF
;
rxdataF
=
phy_vars_ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
rxdataF
;
dl_bf_ch_estimates
=
phy_vars_ue
->
pdsch_vars
[(
Ns
>>
1
)
&
0x1
][
eNB_id
]
->
dl_bf_ch_estimates
;
dl_bf_ch_estimates
=
phy_vars_ue
->
pdsch_vars
[(
Ns
>>
1
)
%
RX_NB_TH
][
eNB_id
]
->
dl_bf_ch_estimates
;
beamforming_mode
=
phy_vars_ue
->
transmission_mode
[
eNB_id
]
>
6
?
phy_vars_ue
->
transmission_mode
[
eNB_id
]
:
0
;
if
(
phy_vars_ue
->
high_speed_flag
==
0
)
// use second channel estimate position for temporary storage
...
...
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
View file @
fdae0065
...
...
@@ -50,9 +50,10 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
uint16_t
Nid_cell
=
(
eNB_offset
==
0
)
?
ue
->
frame_parms
.
Nid_cell
:
ue
->
measurements
.
adj_cell_id
[
eNB_offset
-
1
];
uint8_t
nushift
,
pilot1
,
pilot2
,
pilot3
;
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
dl_ch_estimates
[
eNB_offset
];
int
**
dl_ch_estimates_previous
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[((
Ns
>>
1
)
+
1
)
&
0x1
].
dl_ch_estimates
[
eNB_offset
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
rxdataF
;
uint8_t
previous_sfn
=
((
Ns
>>
1
)
-
1
)
<
0
?
9
:
(
Ns
>>
1
)
-
1
;
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
];
int
**
dl_ch_estimates_previous
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
previous_sfn
)
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
rxdataF
;
if
(
ue
->
frame_parms
.
Ncp
==
0
)
{
// normal prefix
pilot1
=
4
;
...
...
@@ -799,15 +800,15 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
// do ifft of channel estimate
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
for
(
p
=
0
;
p
<
ue
->
frame_parms
.
nb_antenna_ports_eNB
;
p
++
)
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
])
idft
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
dl_ch_estimates_time
[
eNB_offset
][(
p
<<
1
)
+
aarx
],
1
);
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
])
idft
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][(
p
<<
1
)
+
aarx
],
1
);
}
#if T_TRACER
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
eNB_id
),
T_INT
(
ue
->
Mod_id
),
T_INT
(
ue
->
proc
.
proc_rxtx
[(
Ns
>>
1
)
&
1
].
frame_rx
%
1024
),
T_INT
(
ue
->
proc
.
proc_rxtx
[(
Ns
>>
1
)
&
1
].
subframe_rx
),
T_INT
(
0
),
T_BUFFER
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
&
0x1
].
dl_ch_estimates_time
[
eNB_offset
][
0
][
0
],
512
*
4
));
T_INT
(
0
),
T_BUFFER
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
Ns
>>
1
)
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
0
][
0
],
512
*
4
));
#endif
return
(
0
);
...
...
openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
View file @
fdae0065
...
...
@@ -44,8 +44,8 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
// unsigned int n;
// int i;
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
0
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
;
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
0
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
;
ch_offset
=
(
l
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
symbol_offset
=
ch_offset
;
//phy_vars_ue->lte_frame_parms.ofdm_symbol_size*l;
...
...
@@ -734,31 +734,31 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
// do ifft of channel estimate
for
(
aa
=
0
;
aa
<
ue
->
frame_parms
.
nb_antennas_rx
*
ue
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_offset
][
aa
])
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
])
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
idft128
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
idft128
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
break
;
case
25
:
idft512
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
idft512
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
break
;
case
50
:
idft1024
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
idft1024
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
break
;
case
75
:
idft1536
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
idft1536
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
break
;
case
100
:
idft2048
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
idft2048
((
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
break
;
default:
...
...
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
View file @
fdae0065
...
...
@@ -210,13 +210,13 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
if
(
ue
->
frame_parms
.
frame_type
==
FDD
)
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
aarx
][(
5
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
aarx
][(
6
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
5
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
6
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
else
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
&
0x1
].
rxdataF
[
aarx
][(
13
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
aarx
][(
2
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
[
aarx
][(
13
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
2
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
//-ve spectrum from SSS
...
...
@@ -234,13 +234,13 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
// printf("pss32 %d\n",ue->measurements.n0_power[aarx]); //-ve spectrum from PSS
if
(
ue
->
frame_parms
.
frame_type
==
FDD
)
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
aarx
][(
6
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
aarx
][(
7
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
6
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
7
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
else
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
&
0x1
].
rxdataF
[
aarx
][(
14
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
aarx
][(
3
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
[
aarx
][(
14
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
3
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[-72]*rxF_pss[-72])+((int32_t)rxF_pss[-71]*rxF_pss[-71]));
// printf("pssm36 %d\n",ue->measurements.n0_power[aarx]);
...
...
@@ -275,10 +275,10 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
if
(
ue
->
frame_parms
.
Ncp
==
NORMAL
)
{
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
&
0x1
)].
rxdataF
;
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
%
RX_NB_TH
)].
rxdataF
;
rxF_pss
=
(
int16_t
*
)
&
rxdataF
[
aarx
][((
pss_symb
*
(
ue
->
frame_parms
.
ofdm_symbol_size
)))];
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
&
0x1
].
rxdataF
;
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
;
rxF_sss
=
(
int16_t
*
)
&
rxdataF
[
aarx
][((
sss_symb
*
(
ue
->
frame_parms
.
ofdm_symbol_size
)))];
//-ve spectrum from SSS
...
...
@@ -303,7 +303,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
ue
->
measurements
.
n0_power
[
aarx
]
+=
(((
int32_t
)
rxF_pss
[
2
+
66
]
*
rxF_pss
[
2
+
66
])
+
((
int32_t
)
rxF_pss
[
2
+
65
]
*
rxF_pss
[
2
+
65
]));
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[2+64]*rxF_pss[2+64])+((int32_t)rxF_pss[2+63]*rxF_pss[2+63]));
// printf("pss32 %d\n",ue->measurements.n0_power[aarx]); //-ve spectrum from PSS
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
aarx
][(
7
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
7
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[-72]*rxF_pss[-72])+((int32_t)rxF_pss[-71]*rxF_pss[-71]));
// printf("pssm36 %d\n",ue->measurements.n0_power[aarx]);
ue
->
measurements
.
n0_power
[
aarx
]
+=
(((
int32_t
)
rxF_pss
[
-
70
]
*
rxF_pss
[
-
70
])
+
((
int32_t
)
rxF_pss
[
-
69
]
*
rxF_pss
[
-
69
]));
...
...
@@ -349,7 +349,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
#endif
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
rxF
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
aarx
][(
l
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
l
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
off
=
(
ue
->
frame_parms
.
first_carrier_offset
+
k
)
<<
1
;
if
(
l
==
(
4
-
ue
->
frame_parms
.
Ncp
))
{
...
...
@@ -515,7 +515,7 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
for
(
aatx
=
0
;
aatx
<
frame_parms
->
nb_antenna_ports_eNB
;
aatx
++
)
{
ue
->
measurements
.
rx_spatial_power
[
eNB_id
][
aatx
][
aarx
]
=
(
signal_energy_nodc
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][(
aatx
<<
1
)
+
aarx
][
0
],
(
signal_energy_nodc
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_id
][(
aatx
<<
1
)
+
aarx
][
0
],
(
N_RB_DL
*
12
)));
//- ue->measurements.n0_power[aarx];
...
...
@@ -608,8 +608,8 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
// cqi/pmi information
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
dl_ch0
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
dl_ch0
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1
=
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
for
(
subband
=
0
;
subband
<
nb_subbands
;
subband
++
)
{
...
...
@@ -664,13 +664,13 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
#if defined(__x86_64__) || defined(__i386__)
__m128i
pmi128_re
,
pmi128_im
,
mmtmpPMI0
,
mmtmpPMI1
/* ,mmtmpPMI2,mmtmpPMI3 */
;
dl_ch0_128
=
(
__m128i
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1_128
=
(
__m128i
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
dl_ch0_128
=
(
__m128i
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_id
][
aarx
][
4
];
dl_ch1_128
=
(
__m128i
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_id
][
2
+
aarx
][
4
];
#elif defined(__arm__)
int32x4_t
pmi128_re
,
pmi128_im
,
mmtmpPMI0
,
mmtmpPMI1
,
mmtmpPMI0b
,
mmtmpPMI1b
;