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
da1d66b1
Commit
da1d66b1
authored
Nov 27, 2019
by
Francesco Mani
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nr_beamforming_new' into ru-parallel-beamforming-merge
parents
d0481902
038019f4
Changes
9
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
353 additions
and
118 deletions
+353
-118
executables/nr-ru.c
executables/nr-ru.c
+10
-1
openair1/PHY/INIT/nr_init_ru.c
openair1/PHY/INIT/nr_init_ru.c
+23
-20
openair1/PHY/INIT/nr_parms.c
openair1/PHY/INIT/nr_parms.c
+7
-7
openair1/PHY/defs_RU.h
openair1/PHY/defs_RU.h
+5
-1
openair1/SCHED_NR/nr_ru_procedures.c
openair1/SCHED_NR/nr_ru_procedures.c
+0
-1
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+2
-0
openair2/ENB_APP/enb_paramdef.h
openair2/ENB_APP/enb_paramdef.h
+13
-12
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+2
-76
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.beamw.usrpn300.conf
...S/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.beamw.usrpn300.conf
+291
-0
No files found.
executables/nr-ru.c
View file @
da1d66b1
...
...
@@ -91,6 +91,7 @@ unsigned short config_frames[4] = {2,9,11,13};
/* these variables have to be defined before including ENB_APP/enb_paramdef.h and GNB_APP/gnb_paramdef.h */
static
int
DEFBANDS
[]
=
{
7
};
static
int
DEFENBS
[]
=
{
0
};
static
int
DEFBFW
[]
=
{
0x00007fff
};
//static int DEFNRBANDS[] = {7};
//static int DEFGNBS[] = {0};
...
...
@@ -2356,6 +2357,14 @@ void RCconfig_RU(void)
RC
.
ru
[
j
]
->
nb_rx
=
*
(
RUParamList
.
paramarray
[
j
][
RU_NB_RX_IDX
].
uptr
);
RC
.
ru
[
j
]
->
att_tx
=
*
(
RUParamList
.
paramarray
[
j
][
RU_ATT_TX_IDX
].
uptr
);
RC
.
ru
[
j
]
->
att_rx
=
*
(
RUParamList
.
paramarray
[
j
][
RU_ATT_RX_IDX
].
uptr
);
if
(
config_isparamset
(
RUParamList
.
paramarray
[
j
],
RU_BF_WEIGHTS_LIST_IDX
))
{
RC
.
ru
[
j
]
->
nb_bfw
=
RUParamList
.
paramarray
[
j
][
RU_BF_WEIGHTS_LIST_IDX
].
numelt
;
for
(
i
=
0
;
i
<
RC
.
ru
[
j
]
->
num_gNB
;
i
++
)
{
RC
.
ru
[
j
]
->
bw_list
[
i
]
=
(
int32_t
*
)
malloc16_clear
((
RC
.
ru
[
j
]
->
nb_bfw
)
*
sizeof
(
int32_t
));
for
(
int
b
=
0
;
b
<
RC
.
ru
[
j
]
->
nb_bfw
;
b
++
)
RC
.
ru
[
j
]
->
bw_list
[
i
][
b
]
=
RUParamList
.
paramarray
[
j
][
RU_BF_WEIGHTS_LIST_IDX
].
iptr
[
b
];
}
}
}
// j=0..num_rus
}
else
{
RC
.
nb_RU
=
0
;
...
...
openair1/PHY/INIT/nr_init_ru.c
View file @
da1d66b1
...
...
@@ -110,25 +110,30 @@ int nr_phy_init_RU(RU_t *ru) {
LOG_E
(
PHY
,
"[INIT] %s() RC.nb_nr_L1_inst:%d
\n
"
,
__FUNCTION__
,
RC
.
nb_nr_L1_inst
);
int
beam_count
=
0
;
if
(
ru
->
nb_tx
>
1
)
{
for
(
p
=
0
;
p
<
fp
->
Lmax
;
p
++
)
{
if
((
fp
->
L_ssb
>>
p
)
&
0x01
)
beam_count
++
;
}
AssertFatal
(
ru
->
nb_bfw
==
(
beam_count
*
ru
->
nb_tx
),
"Number of beam weights from config file is %d while the expected number is %d"
,
ru
->
nb_bfw
,(
beam_count
*
ru
->
nb_tx
));
int
l_ind
=
0
;
for
(
i
=
0
;
i
<
RC
.
nb_nr_L1_inst
;
i
++
)
{
for
(
p
=
0
;
p
<
fp
->
Lmax
;
p
++
)
{
if
((
fp
->
L_ssb
>>
p
)
&
0x01
)
{
ru
->
beam_weights
[
i
][
p
]
=
(
int32_t
**
)
malloc16_clear
(
ru
->
nb_tx
*
sizeof
(
int32_t
*
));
for
(
j
=
0
;
j
<
ru
->
nb_tx
;
j
++
)
{
ru
->
beam_weights
[
i
][
p
][
j
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
// setting identity matrix as first step for beam weights
if
(
p
==
j
)
{
for
(
re
=
0
;
re
<
fp
->
ofdm_symbol_size
;
re
++
)
ru
->
beam_weights
[
i
][
p
][
j
][
re
]
=
0x00007fff
;
}
else
{
for
(
re
=
0
;
re
<
fp
->
ofdm_symbol_size
;
re
++
)
ru
->
beam_weights
[
i
][
p
][
j
][
re
]
=
0x00000000
;
}
ru
->
beam_weights
[
i
][
p
][
j
][
re
]
=
ru
->
bw_list
[
i
][
l_ind
];
//printf("Beam Weight %08x for beam %d and tx %d\n",ru->bw_list[i][l_ind],p,j);
l_ind
++
;
}
// for j
}
// for p
}
}
//for i
}
}
// !=IF5
ru
->
common
.
sync_corr
=
(
uint32_t
*
)
malloc16_clear
(
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
sizeof
(
uint32_t
)
*
fp
->
samples_per_subframe_wCP
);
...
...
@@ -178,12 +183,10 @@ void nr_phy_free_RU(RU_t *ru)
for
(
i
=
0
;
i
<
RC
.
nb_nr_L1_inst
;
i
++
)
{
for
(
p
=
0
;
p
<
15
;
p
++
)
{
if
(
p
==
0
||
p
==
5
)
{
for
(
j
=
0
;
j
<
ru
->
nb_tx
;
j
++
)
free_and_zero
(
ru
->
beam_weights
[
i
][
p
][
j
]);
free_and_zero
(
ru
->
beam_weights
[
i
][
p
]);
}
}
}
}
free_and_zero
(
ru
->
common
.
sync_corr
);
}
openair1/PHY/INIT/nr_parms.c
View file @
da1d66b1
...
...
@@ -273,14 +273,14 @@ int nr_init_frame_parms0(NR_DL_FRAME_PARMS *fp,
fp
->
freq_range
=
(
fp
->
dl_CarrierFreq
<
6e9
)
?
nr_FR1
:
nr_FR2
;
// definition of Lmax according to ts 38.213 section 4.1
if
(
fp
->
dl_CarrierFreq
<
6e9
){
if
(
fp
->
dl_CarrierFreq
<
6e9
)
{
if
(
fp
->
frame_type
&&
(
fp
->
ssb_type
==
2
))
fp
->
Lmax
=
(
fp
->
dl_CarrierFreq
<
2.4e9
)
?
4
:
8
;
else
fp
->
Lmax
=
(
fp
->
dl_CarrierFreq
<
3e9
)
?
4
:
8
;
}
else
}
else
{
fp
->
Lmax
=
64
;
}
fp
->
N_ssb
=
0
;
for
(
int
p
=
0
;
p
<
fp
->
Lmax
;
p
++
)
...
...
openair1/PHY/defs_RU.h
View file @
da1d66b1
...
...
@@ -572,6 +572,10 @@ typedef struct RU_t_s {
/// RX and TX buffers for precoder output
RU_COMMON
common
;
RU_CALIBRATION
calibration
;
/// beamforming weight list size
int
nb_bfw
;
/// beamforming weight list of values
int32_t
*
bw_list
[
NUMBER_OF_eNB_MAX
+
1
];
/// beamforming weight vectors
int32_t
**
beam_weights
[
NUMBER_OF_eNB_MAX
+
1
][
15
];
/// received frequency-domain signal for PRACH (IF4p5 RRU)
...
...
openair1/SCHED_NR/nr_ru_procedures.c
View file @
da1d66b1
...
...
@@ -323,7 +323,6 @@ void nr_feptx_ofdm(RU_t *ru,int frame_tx,int tti_tx) {
}
static
void
*
nr_feptx_prec_thread
(
void
*
param
)
{
RU_prec_t
*
prec
=
(
RU_prec_t
*
)
param
;
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
da1d66b1
...
...
@@ -190,10 +190,12 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
Calling nr_generate_dci_top (number of DCI %d)
\n
"
,
gNB
->
Mod_id
,
frame
,
slot
,
num_dci
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX
,
1
);
nr_generate_dci_top
(
gNB
->
pdcch_vars
.
dci_alloc
[
i
],
gNB
->
nr_gold_pdcch_dmrs
[
slot
],
&
gNB
->
common_vars
.
txdataF
[
0
][
txdataF_offset
],
// hardcoded to beam 0
AMP
,
*
fp
,
*
cfg
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX
,
0
);
}
...
...
openair2/ENB_APP/enb_paramdef.h
View file @
da1d66b1
...
...
@@ -93,6 +93,7 @@ typedef enum {
#define CONFIG_STRING_RU_SF_EXTENSION "sf_extension"
#define CONFIG_STRING_RU_END_OF_BURST_DELAY "end_of_burst_delay"
#define CONFIG_STRING_RU_OTA_SYNC_ENABLE "ota_sync_enabled"
#define CONFIG_STRING_RU_BF_WEIGHTS_LIST "bf_weights"
#define RU_LOCAL_IF_NAME_IDX 0
#define RU_LOCAL_ADDRESS_IDX 1
...
...
@@ -118,8 +119,7 @@ typedef enum {
#define RU_SF_EXTENSION_IDX 21
#define RU_END_OF_BURST_DELAY_IDX 22
#define RU_OTA_SYNC_ENABLE_IDX 23
#define RU_BF_WEIGHTS_LIST_IDX 24
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/* RU configuration parameters */
...
...
@@ -150,6 +150,7 @@ typedef enum {
{CONFIG_STRING_RU_SF_EXTENSION, NULL, 0, uptr:NULL, defuintval:312, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_END_OF_BURST_DELAY, NULL, 0, uptr:NULL, defuintval:400, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_OTA_SYNC_ENABLE, NULL, 0, strptr:NULL, defstrval:"no", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_BF_WEIGHTS_LIST, NULL, 0, iptr:NULL, defintarrayval:DEFBFW, TYPE_INTARRAY, 0}, \
}
/*---------------------------------------------------------------------------------------------------------------------------------------*/
...
...
openair2/GNB_APP/gnb_paramdef.h
View file @
da1d66b1
...
...
@@ -67,83 +67,9 @@ typedef enum {
#define CONFIG_STRING_ACTIVE_RUS "Active_RUs"
/*------------------------------------------------------------------------------------------------------------------------------------------*/
/* RUs configuration section name */
#define CONFIG_STRING_RU_LIST "RUs"
#define CONFIG_STRING_RU_CONFIG "ru_config"
/* RUs configuration parameters name */
#define CONFIG_STRING_RU_LOCAL_IF_NAME "local_if_name"
#define CONFIG_STRING_RU_LOCAL_ADDRESS "local_address"
#define CONFIG_STRING_RU_REMOTE_ADDRESS "remote_address"
#define CONFIG_STRING_RU_LOCAL_PORTC "local_portc"
#define CONFIG_STRING_RU_REMOTE_PORTC "remote_portc"
#define CONFIG_STRING_RU_LOCAL_PORTD "local_portd"
#define CONFIG_STRING_RU_REMOTE_PORTD "remote_portd"
#define CONFIG_STRING_RU_LOCAL_RF "local_rf"
#define CONFIG_STRING_RU_TRANSPORT_PREFERENCE "tr_preference"
#define CONFIG_STRING_RU_BAND_LIST "bands"
#define CONFIG_STRING_RU_GNB_LIST "gNB_instances"
#define CONFIG_STRING_RU_NB_TX "nb_tx"
#define CONFIG_STRING_RU_NB_RX "nb_rx"
#define CONFIG_STRING_RU_ATT_TX "att_tx"
#define CONFIG_STRING_RU_ATT_RX "att_rx"
#define CONFIG_STRING_RU_MAX_RS_EPRE "max_pdschReferenceSignalPower"
#define CONFIG_STRING_RU_MAX_RXGAIN "max_rxgain"
#define CONFIG_STRING_RU_IF_COMPRESSION "if_compression"
#define CONFIG_STRING_RU_NBIOTRRC_LIST "NbIoT_RRC_instances"
#define CONFIG_STRING_RU_SDR_ADDRS "sdr_addrs"
#define CONFIG_STRING_RU_SDR_CLK_SRC "clock_src"
#define RU_LOCAL_IF_NAME_IDX 0
#define RU_LOCAL_ADDRESS_IDX 1
#define RU_REMOTE_ADDRESS_IDX 2
#define RU_LOCAL_PORTC_IDX 3
#define RU_REMOTE_PORTC_IDX 4
#define RU_LOCAL_PORTD_IDX 5
#define RU_REMOTE_PORTD_IDX 6
#define RU_TRANSPORT_PREFERENCE_IDX 7
#define RU_LOCAL_RF_IDX 8
#define RU_NB_TX_IDX 9
#define RU_NB_RX_IDX 10
#define RU_MAX_RS_EPRE_IDX 11
#define RU_MAX_RXGAIN_IDX 12
#define RU_BAND_LIST_IDX 13
#define RU_GNB_LIST_IDX 14
#define RU_ATT_TX_IDX 15
#define RU_ATT_RX_IDX 16
#define RU_IS_SLAVE_IDX 17
#define RU_NBIOTRRC_LIST_IDX 18
#define RU_SDR_ADDRS 19
#define RU_SDR_CLK_SRC 20
#define RU_SF_EXTENSION_IDX 21
#define RU_END_OF_BURST_DELAY_IDX 22
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/* RU configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
#define GNBRUPARAMS_DESC { \
{CONFIG_STRING_RU_LOCAL_IF_NAME, NULL, 0, strptr:NULL, defstrval:"lo", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_LOCAL_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.2", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_REMOTE_ADDRESS, NULL, 0, strptr:NULL, defstrval:"127.0.0.1", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_LOCAL_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_REMOTE_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_LOCAL_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_REMOTE_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_TRANSPORT_PREFERENCE, NULL, 0, strptr:NULL, defstrval:"udp_if5", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_LOCAL_RF, NULL, 0, strptr:NULL, defstrval:"yes", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_NB_TX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_NB_RX, NULL, 0, uptr:NULL, defuintval:1, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_MAX_RS_EPRE, NULL, 0, iptr:NULL, defintval:-29, TYPE_INT, 0}, \
{CONFIG_STRING_RU_MAX_RXGAIN, NULL, 0, iptr:NULL, defintval:120, TYPE_INT, 0}, \
{CONFIG_STRING_RU_BAND_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFNRBANDS, TYPE_INTARRAY, 1}, \
{CONFIG_STRING_RU_GNB_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
{CONFIG_STRING_RU_ATT_TX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_ATT_RX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFGNBS, TYPE_INTARRAY, 1}, \
}
/* RUs configuration for gNB is the same for eNB */
/* Check file enb_paramdef.h */
/*---------------------------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------------------------------------*/
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.beamw.usrpn300.conf
0 → 100644
View file @
da1d66b1
This diff is collapsed.
Click to expand it.
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