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
常顺宇
OpenXG-RAN
Commits
3613927b
Commit
3613927b
authored
3 years ago
by
sfn
Committed by
Thomas Schlichter
3 years ago
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"
...
...
This diff is collapsed.
Click to expand it.
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
;
...
...
This diff is collapsed.
Click to expand it.
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
,
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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
],
...
...
This diff is collapsed.
Click to expand it.
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
)
{
...
...
This diff is collapsed.
Click to expand it.
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
,
...
...
This diff is collapsed.
Click to expand it.
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
);
...
...
This diff is collapsed.
Click to expand it.
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
...
...
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