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
lizhongxiao
OpenXG UE
Commits
86f70902
Commit
86f70902
authored
Jan 26, 2021
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2 and 4 antenna testing with ulsim functional. >=3 dB gains from 2 to 4 antennas on SCM channels
parent
ff605f4d
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
123 additions
and
111 deletions
+123
-111
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+1
-1
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+2
-2
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
+2
-2
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+4
-4
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+78
-64
openair1/SIMULATION/LTE_PHY/ulsim.c
openair1/SIMULATION/LTE_PHY/ulsim.c
+7
-10
openair1/SIMULATION/TOOLS/multipath_channel.c
openair1/SIMULATION/TOOLS/multipath_channel.c
+21
-20
openair1/SIMULATION/TOOLS/sim.h
openair1/SIMULATION/TOOLS/sim.h
+8
-8
No files found.
cmake_targets/CMakeLists.txt
View file @
86f70902
...
...
@@ -852,7 +852,7 @@ endif (${RU} STREQUAL 0)
# Hardware dependant options
###################################
add_list1_option
(
NB_ANTENNAS_RX
"
2
"
"Number of antennas in reception"
"1"
"2"
"4"
)
add_list1_option
(
NB_ANTENNAS_RX
"
4
"
"Number of antennas in reception"
"1"
"2"
"4"
)
add_list1_option
(
NB_ANTENNAS_TX
"4"
"Number of antennas in transmission"
"1"
"2"
"4"
)
add_list2_option
(
RF_BOARD
"EXMIMO"
"RF head type"
"None"
"OAI_USRP"
"OAI_BLADERF"
"OAI_LMSSDR"
"OAI_SIMU"
)
...
...
openair1/PHY/INIT/lte_init.c
View file @
86f70902
...
...
@@ -518,7 +518,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *eNB,
AssertFatal
(
fp
->
symbols_per_tti
>
11
,
"fp->symbols_per_tti %d < 12
\n
"
,
fp
->
symbols_per_tti
);
AssertFatal
(
fp
->
N_RB_UL
>
5
,
"fp->N_RB_UL %d < 6
\n
"
,
fp
->
N_RB_UL
);
for
(
i
=
0
;
i
<
2
;
i
++
)
{
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
{
// FIXME We should get rid of this
pusch_vars
[
ULSCH_id
]
->
rxdataF_ext
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
N_RB_UL
*
12
*
fp
->
symbols_per_tti
);
...
...
@@ -591,7 +591,7 @@ void phy_free_lte_eNB(PHY_VARS_eNB *eNB) {
free_and_zero
(
prach_vars
->
rxsigF
[
0
]);
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_ULSCH_MAX
;
ULSCH_id
++
)
{
for
(
i
=
0
;
i
<
2
;
i
++
)
{
for
(
i
=
0
;
i
<
fp
->
nb_antennas_rx
;
i
++
)
{
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
rxdataF_ext
[
i
]);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
rxdataF_ext2
[
i
]);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
drs_ch_estimates
[
i
]);
...
...
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
View file @
86f70902
...
...
@@ -121,8 +121,8 @@ int lte_est_timing_advance_pusch(LTE_DL_FRAME_PARMS *frame_parms,
int
sync_pos
=
0
;
//(frame_parms->ofdm_symbol_size-cyclic_shift*frame_parms->ofdm_symbol_size/12)%(frame_parms->ofdm_symbol_size);
AssertFatal
(
frame_parms
->
ofdm_symbol_size
>
127
,
"frame_parms->ofdm_symbol_size %d<128
\n
"
,
frame_parms
->
ofdm_symbol_size
);
AssertFatal
(
frame_parms
->
nb_antennas_rx
>
0
&&
frame_parms
->
nb_antennas_rx
<
3
,
"frame_parms->nb_antennas_rx %d not in [0,1
]
\n
"
,
frame_parms
->
nb_antennas_rx
);
AssertFatal
(
frame_parms
->
nb_antennas_rx
>
0
&&
frame_parms
->
nb_antennas_rx
<
=
NB_ANTENNAS_RX
,
"frame_parms->nb_antennas_rx %d not in [1...%d
]
\n
"
,
frame_parms
->
nb_antennas_rx
,
NB_ANTENNAS_RX
);
for
(
i
=
0
;
i
<
frame_parms
->
ofdm_symbol_size
;
i
++
)
{
temp
=
0
;
...
...
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
View file @
86f70902
...
...
@@ -42,10 +42,10 @@ extern int16_t *ul_ref_sigs_rx[30][2][34];
int32_t
lte_ul_channel_estimation
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
L1_rxtx_proc_t
*
proc
,
LTE_eNB_ULSCH_t
*
ulsch
,
int32_t
**
ul_ch_estimates
,
int32_t
**
ul_ch_estimates_time
,
int32_t
**
rxdataF_ext
,
LTE_eNB_ULSCH_t
*
ulsch
,
int32_t
**
ul_ch_estimates
,
int32_t
**
ul_ch_estimates_time
,
int32_t
**
rxdataF_ext
,
module_id_t
UE_id
,
unsigned
char
l
,
unsigned
char
Ns
)
{
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
View file @
86f70902
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/ulsim.c
View file @
86f70902
...
...
@@ -342,7 +342,6 @@ int main(int argc, char **argv) {
int
UE_id
=
0
;
static
int
nb_rb
=
25
,
first_rb
=
0
,
mcs
=
0
,
round
=
0
;
//unsigned char l;
static
int
awgn_flag
=
0
;
SCM_t
channel_model
=
Rice1
;
unsigned
char
*
input_buffer
=
0
,
harq_pid
;
unsigned
short
input_buffer_length
;
...
...
@@ -1087,14 +1086,12 @@ int main(int argc, char **argv) {
}
}
if
(
awgn_flag
==
0
)
{
if
(
UE2eNB
->
max_Doppler
==
0
)
{
multipath_channel
(
UE2eNB
,
s_re
,
s_im
,
r_re
,
r_im
,
eNB
->
frame_parms
.
samples_per_tti
,
hold_channel
,
0
);
}
else
{
multipath_tv_channel
(
UE2eNB
,
s_re
,
s_im
,
r_re
,
r_im
,
2
*
eNB
->
frame_parms
.
samples_per_tti
,
hold_channel
);
}
if
(
UE2eNB
->
max_Doppler
==
0
)
{
multipath_channel
(
UE2eNB
,
s_re
,
s_im
,
r_re
,
r_im
,
eNB
->
frame_parms
.
samples_per_tti
,
hold_channel
,
0
);
}
else
{
multipath_tv_channel
(
UE2eNB
,
s_re
,
s_im
,
r_re
,
r_im
,
2
*
eNB
->
frame_parms
.
samples_per_tti
,
hold_channel
);
}
if
(
abstx
)
{
...
...
@@ -1303,7 +1300,7 @@ int main(int argc, char **argv) {
LOG_UDUMPMSG
(
SIM
,
dataArray
(
table_rx
),
table_rx
->
size
,
LOG_DUMP_DOUBLE
,
"The receiver raw data:
\n
"
);
}
dump_ulsch_stats
(
NULL
,
eNB
,
0
);
dump_ulsch_stats
(
stdout
,
eNB
,
0
);
printf
(
"
\n
**********rb: %d ***mcs : %d *********SNR = %f dB (%f): TX %u dB (gain %f dB), N0W %f dB, I0 %u dB, delta_IF %d [ (%d,%d) dB / (%u,%u) dB ]**************************
\n
"
,
nb_rb
,
mcs
,
SNR
,
SNR2
,
tx_lev_dB
,
...
...
openair1/SIMULATION/TOOLS/multipath_channel.c
View file @
86f70902
...
...
@@ -39,13 +39,13 @@ uint8_t multipath_channel_nosigconv(channel_desc_t *desc)
//#define CHANNEL_SSE
#ifdef CHANNEL_SSE
void
multipath_channel
(
channel_desc_t
*
desc
,
double
tx_sig_re
[
2
][
30720
*
2
],
double
tx_sig_im
[
2
][
30720
*
2
],
double
rx_sig_re
[
2
][
30720
*
2
],
double
rx_sig_im
[
2
][
30720
*
2
],
double
tx_sig_re
[
NB_ANTENNAS_TX
][
30720
*
2
],
double
tx_sig_im
[
NB_ANTENANS_TX
][
30720
*
2
],
double
rx_sig_re
[
NB_ANTENNAS_RX
][
30720
*
2
],
double
rx_sig_im
[
NB_ANTENNAS_RX
][
30720
*
2
],
uint32_t
length
,
uint8_t
keep_channel
,
int
log_channel
)
int
log_channel
)
{
int
i
,
ii
,
j
,
l
;
...
...
@@ -146,13 +146,13 @@ void multipath_channel(channel_desc_t *desc,
#else
void
multipath_channel
(
channel_desc_t
*
desc
,
double
*
tx_sig_re
[
2
],
double
*
tx_sig_im
[
2
],
double
*
rx_sig_re
[
2
],
double
*
rx_sig_im
[
2
],
double
*
tx_sig_re
[
NB_ANTENNAS_TX
],
double
*
tx_sig_im
[
NB_ANTENNAS_TX
],
double
*
rx_sig_re
[
NB_ANTENNAS_RX
],
double
*
rx_sig_im
[
NB_ANTENNAS_RX
],
uint32_t
length
,
uint8_t
keep_channel
,
int
log_channel
)
int
log_channel
)
{
int
i
,
ii
,
j
,
l
;
...
...
@@ -198,21 +198,22 @@ void multipath_channel(channel_desc_t *desc,
rx_tmp
.
x
+=
(
tx
.
x
*
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
x
)
-
(
tx
.
y
*
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
y
);
rx_tmp
.
y
+=
(
tx
.
y
*
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
x
)
+
(
tx
.
x
*
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
y
);
if
(
i
==
0
&&
log_channel
==
1
)
{
printf
(
"channel[%d][%d][%d] = %f dB (%e,%e)
\n
"
,
ii
,
j
,
l
,
10
*
log10
(
pow
(
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
x
,
2
.
0
)
+
pow
(
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
y
,
2
.
0
)),
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
x
,
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
y
);
}
if
(
i
==
0
&&
log_channel
==
1
)
{
printf
(
"channel[%d][%d][%d] = %f dB (%e,%e)
\n
"
,
ii
,
j
,
l
,
10
*
log10
(
pow
(
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
x
,
2
.
0
)
+
pow
(
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
y
,
2
.
0
)),
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
x
,
desc
->
ch
[
ii
+
(
j
*
desc
->
nb_rx
)][
l
].
y
);
}
}
//l
}
// j
rx_sig_re
[
ii
][
i
+
dd
]
=
rx_tmp
.
x
*
path_loss
;
rx_sig_im
[
ii
][
i
+
dd
]
=
rx_tmp
.
y
*
path_loss
;
/* if ((ii==0)&&((i%32)==0)
) {
printf("%p %p %f,%f => %e,%e\n"
,rx_sig_re[ii],rx_sig_im[ii],rx_tmp.x,rx_tmp.y,rx_sig_re[ii][i-dd],rx_sig_im[ii][i-dd]);
}*/
#ifdef DEBUG_CHANNEL
if
((
i
%
32
)
==
0
)
{
printf
(
"rx aa %d: %p %p %f,%f => %e,%e
\n
"
,
ii
,
rx_sig_re
[
ii
],
rx_sig_im
[
ii
],
rx_tmp
.
x
,
rx_tmp
.
y
,
rx_sig_re
[
ii
][
i
-
dd
],
rx_sig_im
[
ii
][
i
-
dd
]);
}
#endif
//rx_sig_re[ii][i] = sqrt(.5)*(tx_sig_re[0][i] + tx_sig_re[1][i]);
//rx_sig_im[ii][i] = sqrt(.5)*(tx_sig_im[0][i] + tx_sig_im[1][i]);
...
...
openair1/SIMULATION/TOOLS/sim.h
View file @
86f70902
...
...
@@ -300,10 +300,10 @@ void set_channeldesc_owner(channel_desc_t *cdesc, channelmod_moduleid_t module_i
int
random_channel
(
channel_desc_t
*
desc
,
uint8_t
abstraction_flag
);
/**\fn void multipath_channel(channel_desc_t *desc,
double tx_sig_re[
2
],
double tx_sig_im[
2
],
double rx_sig_re[
2
],
double rx_sig_im[
2
],
double tx_sig_re[
NB_ANTENNAS_TX
],
double tx_sig_im[
NB_ANTENANS_TX
],
double rx_sig_re[
NB_ANTENNAS_RX
],
double rx_sig_im[
NB_ANTENNAS_RX
],
uint32_t length,
uint8_t keep_channel,
int log_channel)
...
...
@@ -320,10 +320,10 @@ int random_channel(channel_desc_t *desc, uint8_t abstraction_flag);
*/
void
multipath_channel
(
channel_desc_t
*
desc
,
double
*
tx_sig_re
[
2
],
double
*
tx_sig_im
[
2
],
double
*
rx_sig_re
[
2
],
double
*
rx_sig_im
[
2
],
double
*
tx_sig_re
[
NB_ANTENNAS_TX
],
double
*
tx_sig_im
[
NB_ANTENNAS_TX
],
double
*
rx_sig_re
[
NB_ANTENNAS_RX
],
double
*
rx_sig_im
[
NB_ANTENNAS_RX
],
uint32_t
length
,
uint8_t
keep_channel
,
int
log_channel
);
...
...
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