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
zzha zzha
OpenXG-RAN
Commits
f04846cf
Commit
f04846cf
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
bbe6db03
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 @
f04846cf
...
...
@@ -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 @
f04846cf
...
...
@@ -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 @
f04846cf
...
...
@@ -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 @
f04846cf
...
...
@@ -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 @
f04846cf
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/ulsim.c
View file @
f04846cf
...
...
@@ -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 @
f04846cf
...
...
@@ -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 @
f04846cf
...
...
@@ -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