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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
3613927b
Commit
3613927b
authored
May 19, 2021
by
sfn
Committed by
Thomas Schlichter
Jun 24, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extend rfsimulator to support 2 layers for DL transmission from cm line with option --l 1 or 2
parent
6f89a63d
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
27 additions
and
13 deletions
+27
-13
executables/nr-softmodem-common.h
executables/nr-softmodem-common.h
+1
-0
executables/nr-softmodem.h
executables/nr-softmodem.h
+2
-0
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+2
-2
openair1/PHY/INIT/nr_init_ru.c
openair1/PHY/INIT/nr_init_ru.c
+2
-2
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
+1
-1
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+8
-2
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+0
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+2
-1
targets/ARCH/rfsimulator/simulator.c
targets/ARCH/rfsimulator/simulator.c
+9
-4
No files found.
executables/nr-softmodem-common.h
View file @
3613927b
...
...
@@ -69,6 +69,7 @@
#define CONFIG_HLP_EXMCAL "Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime \n"
#define CONFIG_HLP_ITTIL "Generate ITTI analyzser logs (similar to wireshark logs but with more details)\n"
#define CONFIG_HLP_DLMCS_PHYTEST "Set the downlink MCS for PHYTEST mode\n"
#define CONFIG_HLP_DLNL_PHYTEST "Set the downlink nrOfLayers for PHYTEST mode\n"
#define CONFIG_HLP_STMON "Enable processing timing measurement of lte softmodem on per subframe basis \n"
#define CONFIG_HLP_PRB "Set the PRB, valid values: 6, 25, 50, 100 \n"
#define CONFIG_HLP_MSLOTS "Skip the missed slots/subframes \n"
...
...
executables/nr-softmodem.h
View file @
3613927b
...
...
@@ -22,6 +22,7 @@
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&threequarter_fs, defintval:0, TYPE_INT8, 0}, \
{"m" , CONFIG_HLP_DLMCS_PHYTEST,0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \
{"l" , CONFIG_HLP_DLNL_PHYTEST,0, uptr:&target_dl_Nl, defintval:0, TYPE_UINT, 0}, \
{"t" , CONFIG_HLP_ULMCS_PHYTEST,0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \
{"M" , CONFIG_HLP_DLBW_PHYTEST,0, uptr:&target_dl_bw, defintval:0, TYPE_UINT, 0}, \
{"T" , CONFIG_HLP_ULBW_PHYTEST,0, uptr:&target_ul_bw, defintval:0, TYPE_UINT, 0}, \
...
...
@@ -34,6 +35,7 @@
#include "threads_t.h"
extern
threads_t
threads
;
extern
uint32_t
target_dl_mcs
;
extern
uint32_t
target_dl_Nl
;
extern
uint32_t
target_ul_mcs
;
extern
uint32_t
target_dl_bw
;
extern
uint32_t
target_ul_bw
;
...
...
executables/nr-uesoftmodem.c
View file @
3613927b
...
...
@@ -354,8 +354,8 @@ void init_openair0(void) {
openair0_cfg
[
card
].
num_rb_dl
=
frame_parms
->
N_RB_DL
;
openair0_cfg
[
card
].
clock_source
=
get_softmodem_params
()
->
clock_source
;
openair0_cfg
[
card
].
time_source
=
get_softmodem_params
()
->
timing_source
;
openair0_cfg
[
card
].
tx_num_channels
=
min
(
2
,
frame_parms
->
nb_antennas_tx
);
openair0_cfg
[
card
].
rx_num_channels
=
min
(
2
,
frame_parms
->
nb_antennas_rx
);
openair0_cfg
[
card
].
tx_num_channels
=
min
(
4
,
frame_parms
->
nb_antennas_tx
);
openair0_cfg
[
card
].
rx_num_channels
=
min
(
4
,
frame_parms
->
nb_antennas_rx
);
LOG_I
(
PHY
,
"HW: Configuring card %d, sample_rate %f, tx/rx num_channels %d/%d, duplex_mode %s
\n
"
,
card
,
...
...
openair1/PHY/INIT/nr_init_ru.c
View file @
3613927b
...
...
@@ -131,15 +131,15 @@ int nr_phy_init_RU(RU_t *ru) {
}
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
<
ru
->
num_gNB
;
i
++
)
{
int
l_ind
=
0
;
for
(
p
=
0
;
p
<
ru
->
nb_log_antennas
;
p
++
)
{
//if ((fp->L_ssb >> (63-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
));
for
(
re
=
0
;
re
<
fp
->
ofdm_symbol_size
;
re
++
)
ru
->
beam_weights
[
i
][
p
][
j
][
re
]
=
ru
->
bw_list
[
j
][
l_ind
];
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
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
View file @
3613927b
...
...
@@ -180,7 +180,7 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
ue
->
measurements
.
wideband_cqi_avg
[
gNB_id
]
=
dB_fixed2
(
ue
->
measurements
.
rx_power_avg
[
gNB_id
],
ue
->
measurements
.
n0_power_avg
);
ue
->
measurements
.
rx_rssi_dBm
[
gNB_id
]
=
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
]
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
LOG_
I
(
PHY
,
"[gNB %d] Slot %d, RSSI %d dBm/RE, RSSI (digital) %d dB, WBandCQI %d dB, rxPwrAvg %d, n0PwrAvg %d
\n
"
,
LOG_
D
(
PHY
,
"[gNB %d] Slot %d, RSSI %d dBm/RE, RSSI (digital) %d dB, WBandCQI %d dB, rxPwrAvg %d, n0PwrAvg %d
\n
"
,
gNB_id
,
slot
,
ue
->
measurements
.
rx_rssi_dBm
[
gNB_id
],
...
...
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
View file @
3613927b
...
...
@@ -120,8 +120,14 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
dlsch0
->
g_pucch
=
dlsch_config_pdu
->
accumulated_delta_PUCCH
;
dlsch0_harq
->
harq_ack
.
pucch_resource_indicator
=
dlsch_config_pdu
->
pucch_resource_id
;
dlsch0_harq
->
harq_ack
.
slot_for_feedback_ack
=
(
slot
+
dlsch_config_pdu
->
pdsch_to_harq_feedback_time_ind
)
%
frame_parms
.
slots_per_frame
;
if
((
dlsch0_harq
->
Nl
>
2
)
||
(
dlsch0_harq
->
Nl
<=
0
))
dlsch0_harq
->
Nl
=
1
;
//printf("no of layers Nl %d\n",dlsch0_harq->Nl);
//get nrOfLayers from DCI info
uint8_t
Nl
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
if
(
dlsch_config_pdu
->
dmrs_ports
[
i
]
>=
i
)
Nl
+=
1
;
}
dlsch0_harq
->
Nl
=
Nl
;
dlsch0_harq
->
mcs_table
=
dlsch_config_pdu
->
mcs_table
;
dlsch0_harq
->
harq_ack
.
rx_status
=
downlink_harq_process
(
dlsch0_harq
,
dlsch0
->
current_harq_pid
,
dlsch_config_pdu
->
ndi
,
dlsch0
->
rnti_type
);
if
(
dlsch0_harq
->
status
!=
ACTIVE
)
{
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
3613927b
...
...
@@ -1149,7 +1149,6 @@ int main(int argc, char **argv)
}
nr_ue_dcireq
(
&
dcireq
);
//to be replaced with function pointer later
UE_harq_process
->
Nl
=
g_nrOfLayers
;
nr_ue_scheduled_response
(
&
scheduled_response
);
phy_procedures_nrUE_RX
(
UE
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
3613927b
...
...
@@ -262,6 +262,7 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP,
extern
int
getNrOfSymbols
(
NR_BWP_Downlink_t
*
bwp
,
int
tda
);
extern
uint8_t
getN_PRB_DMRS
(
NR_BWP_Downlink_t
*
bwp
,
int
numDmrsCdmGrpsNoData
);
uint32_t
target_dl_mcs
=
9
;
uint32_t
target_dl_Nl
=
1
;
uint32_t
target_dl_bw
=
50
;
uint64_t
dlsch_slot_bitmap
=
(
1
<<
1
);
/* schedules whole bandwidth for first user, all the time */
...
...
@@ -370,7 +371,7 @@ void nr_preprocessor_phytest(module_id_t module_id,
nr_set_pdsch_semi_static
(
scc
,
UE_info
->
secondaryCellGroup
[
UE_id
],
sched_ctrl
->
active_bwp
,
tda
,
num_dmrs_cdm_grps_no_data
,
ps
);
sched_pdsch
->
nrOfLayers
=
1
;
sched_pdsch
->
nrOfLayers
=
target_dl_Nl
;
sched_pdsch
->
mcs
=
target_dl_mcs
;
sched_pdsch
->
Qm
=
nr_get_Qm_dl
(
sched_pdsch
->
mcs
,
ps
->
mcsTableIdx
);
sched_pdsch
->
R
=
nr_get_code_rate_dl
(
sched_pdsch
->
mcs
,
ps
->
mcsTableIdx
);
...
...
targets/ARCH/rfsimulator/simulator.c
View file @
3613927b
...
...
@@ -618,8 +618,8 @@ static bool flushInput(rfsimulator_state_t *t, int timeout, int nsamps_for_initi
}
static
int
rfsimulator_read
(
openair0_device
*
device
,
openair0_timestamp
*
ptimestamp
,
void
**
samplesVoid
,
int
nsamps
,
int
nbAnt
)
{
if
(
nbAnt
!=
1
)
{
LOG_W
(
HW
,
"rfsimulator: only
1
antenna tested
\n
"
);
if
(
nbAnt
>
4
)
{
LOG_W
(
HW
,
"rfsimulator: only
4
antenna tested
\n
"
);
}
rfsimulator_state_t
*
t
=
device
->
priv
;
...
...
@@ -736,14 +736,19 @@ static int rfsimulator_read(openair0_device *device, openair0_timestamp *ptimest
CirSize
);
else
{
// no channel modeling
double
H_awgn_mimo
[
4
][
4
]
=
{{
1
.
0
,
0
.
5
,
0
.
25
,
0
.
125
},
//rx 0
{
0
.
5
,
1
.
0
,
0
.
5
,
0
.
25
},
//rx 1
{
0
.
25
,
0
.
5
,
1
.
0
,
0
.
5
},
//rx 2
{
0
.
125
,
0
.
25
,
0
.
5
,
1
.
0
}};
//rx 3
sample_t
*
out
=
(
sample_t
*
)
samplesVoid
[
a
];
int
nbAnt_tx
=
ptr
->
th
.
nbAnt
;
//number of Tx antennas
//LOG_I(HW, "nbAnt_tx %d\n",nbAnt_tx);
for
(
int
i
=
0
;
i
<
nsamps
;
i
++
)
{
//loop over nsamps
for
(
int
a_tx
=
0
;
a_tx
<
nbAnt_tx
;
a_tx
++
)
{
//sum up signals from nbAnt_tx antennas
out
[
i
].
r
+=
ptr
->
circularBuf
[((
t
->
nextTimestamp
+
i
)
*
nbAnt_tx
+
a_tx
)
%
CirSize
].
r
;
out
[
i
].
i
+=
ptr
->
circularBuf
[((
t
->
nextTimestamp
+
i
)
*
nbAnt_tx
+
a_tx
)
%
CirSize
].
i
;
out
[
i
].
r
+=
(
short
)(
ptr
->
circularBuf
[((
t
->
nextTimestamp
+
i
)
*
nbAnt_tx
+
a_tx
)
%
CirSize
].
r
*
H_awgn_mimo
[
a
][
a_tx
])
;
out
[
i
].
i
+=
(
short
)(
ptr
->
circularBuf
[((
t
->
nextTimestamp
+
i
)
*
nbAnt_tx
+
a_tx
)
%
CirSize
].
i
*
H_awgn_mimo
[
a
][
a_tx
])
;
}
// end for a_tx
}
// end for i (number of samps)
}
// end of no channel modeling
...
...
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