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
spbro
OpenXG-RAN
Commits
86bd6de7
Commit
86bd6de7
authored
Jun 06, 2024
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/rb_mask_ul-on-stack' into integration_2024_w23
parents
4e4a59b5
f23c91cc
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
19 additions
and
25 deletions
+19
-25
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
+4
-7
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
+1
-1
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+0
-3
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+11
-11
openair1/SCHED_NR/sched_nr.h
openair1/SCHED_NR/sched_nr.h
+0
-1
openair1/SIMULATION/NR_PHY/pucchsim.c
openair1/SIMULATION/NR_PHY/pucchsim.c
+3
-2
No files found.
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
View file @
86bd6de7
...
...
@@ -114,10 +114,8 @@ void dump_nr_I0_stats(FILE *fd,PHY_VARS_gNB *gNB) {
}
void
gNB_I0_measurements
(
PHY_VARS_gNB
*
gNB
,
int
slot
,
int
first_symb
,
int
num_symb
)
{
void
gNB_I0_measurements
(
PHY_VARS_gNB
*
gNB
,
int
slot
,
int
first_symb
,
int
num_symb
,
uint32_t
rb_mask_ul
[
14
][
9
])
{
NR_DL_FRAME_PARMS
*
frame_parms
=
&
gNB
->
frame_parms
;
NR_gNB_COMMON
*
common_vars
=
&
gNB
->
common_vars
;
PHY_MEASUREMENTS_gNB
*
measurements
=
&
gNB
->
measurements
;
...
...
@@ -140,8 +138,8 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB,int slot, int first_symb,int num_symb
for
(
int
s
=
first_symb
;
s
<
(
first_symb
+
num_symb
);
s
++
)
{
int
offset0
=
((
slot
&
3
)
*
frame_parms
->
symbols_per_slot
+
s
)
*
frame_parms
->
ofdm_symbol_size
;
for
(
rb
=
0
;
rb
<
frame_parms
->
N_RB_UL
;
rb
++
)
{
if
((
gNB
->
rb_mask_ul
[
s
][
rb
>>
5
]
&
(
1U
<<
(
rb
&
31
)))
==
0
&&
// check that rb was not used in this subframe
!
(
I0_SKIP_DC
&&
rb
==
frame_parms
->
N_RB_UL
>>
1
))
{
// skip middle PRB because of artificial noise possibly created by FFT
if
((
rb_mask_ul
[
s
][
rb
>>
5
]
&
(
1U
<<
(
rb
&
31
)))
==
0
&&
// check that rb was not used in this subframe
!
(
I0_SKIP_DC
&&
rb
==
frame_parms
->
N_RB_UL
>>
1
))
{
// skip middle PRB because of artificial noise possibly created by FFT
int
offset
=
offset0
+
(
frame_parms
->
first_carrier_offset
+
(
rb
*
12
))
%
frame_parms
->
ofdm_symbol_size
;
nb_symb
[
rb
]
++
;
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
...
...
@@ -192,7 +190,6 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB,int slot, int first_symb,int num_symb
}
}
// Scope: This function computes the UL SNR from the UL channel estimates
//
// Todo:
...
...
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
View file @
86bd6de7
...
...
@@ -54,7 +54,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
void
dump_nr_I0_stats
(
FILE
*
fd
,
PHY_VARS_gNB
*
gNB
);
void
gNB_I0_measurements
(
PHY_VARS_gNB
*
gNB
,
int
slot
,
int
first_symb
,
int
num_symb
);
void
gNB_I0_measurements
(
PHY_VARS_gNB
*
gNB
,
int
slot
,
int
first_symb
,
int
num_symb
,
uint32_t
rb_mask_ul
[
14
][
9
]
);
void
nr_gnb_measurements
(
PHY_VARS_gNB
*
gNB
,
NR_gNB_ULSCH_t
*
ulsch
,
...
...
openair1/PHY/defs_gNB.h
View file @
86bd6de7
...
...
@@ -622,9 +622,6 @@ typedef struct PHY_VARS_gNB_s {
/// PUSCH DMRS
uint32_t
****
nr_gold_pusch_dmrs
;
// Mask of occupied RBs, per symbol and PRB
uint32_t
rb_mask_ul
[
14
][
9
];
/// PRS sequence
uint32_t
****
nr_gold_prs
;
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
86bd6de7
...
...
@@ -541,20 +541,20 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id,
}
// Function to fill UL RB mask to be used for N0 measurements
void
fill_ul_rb_mask
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
)
{
static
void
fill_ul_rb_mask
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
,
uint32_t
rb_mask_ul
[
14
][
9
])
{
int
rb
=
0
;
int
rb2
=
0
;
int
prbpos
=
0
;
for
(
int
symbol
=
0
;
symbol
<
14
;
symbol
++
)
{
for
(
int
m
=
0
;
m
<
9
;
m
++
)
{
gNB
->
rb_mask_ul
[
symbol
][
m
]
=
0
;
rb_mask_ul
[
symbol
][
m
]
=
0
;
for
(
int
i
=
0
;
i
<
32
;
i
++
)
{
prbpos
=
(
m
*
32
)
+
i
;
if
(
prbpos
>
gNB
->
frame_parms
.
N_RB_UL
)
break
;
gNB
->
rb_mask_ul
[
symbol
][
m
]
|=
(
gNB
->
ulprbbl
[
prbpos
]
>
0
?
1U
:
0
)
<<
i
;
rb_mask_ul
[
symbol
][
m
]
|=
(
gNB
->
ulprbbl
[
prbpos
]
>
0
?
1U
:
0
)
<<
i
;
}
}
}
...
...
@@ -574,7 +574,7 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
rb2
=
rb
+
pucch_pdu
->
bwp_start
+
((
symbol
<
pucch_pdu
->
start_symbol_index
+
(
pucch_pdu
->
nr_of_symbols
>>
1
))
||
(
pucch_pdu
->
freq_hop_flag
==
0
)
?
pucch_pdu
->
prb_start
:
pucch_pdu
->
second_hop_prb
);
gNB
->
rb_mask_ul
[
symbol
][
rb2
>>
5
]
|=
(((
uint32_t
)
1
)
<<
(
rb2
&
31
));
rb_mask_ul
[
symbol
][
rb2
>>
5
]
|=
(((
uint32_t
)
1
)
<<
(
rb2
&
31
));
}
}
}
...
...
@@ -599,7 +599,7 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
LOG_D
(
PHY
,
"symbol %d Filling rb_mask_ul rb_size %d
\n
"
,
symbol
,
ulsch_harq
->
ulsch_pdu
.
rb_size
);
for
(
rb
=
0
;
rb
<
ulsch_harq
->
ulsch_pdu
.
rb_size
;
rb
++
)
{
rb2
=
rb
+
ulsch_harq
->
ulsch_pdu
.
rb_start
+
ulsch_harq
->
ulsch_pdu
.
bwp_start
;
gNB
->
rb_mask_ul
[
symbol
][
rb2
>>
5
]
|=
1U
<<
(
rb2
&
31
);
rb_mask_ul
[
symbol
][
rb2
>>
5
]
|=
1U
<<
(
rb2
&
31
);
}
}
}
...
...
@@ -613,14 +613,13 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
nfapi_nr_srs_pdu_t
*
srs_pdu
=
&
srs
->
srs_pdu
;
for
(
int
symbol
=
0
;
symbol
<
(
1
<<
srs_pdu
->
num_symbols
);
symbol
++
)
{
for
(
rb
=
srs_pdu
->
bwp_start
;
rb
<
(
srs_pdu
->
bwp_start
+
srs_pdu
->
bwp_size
);
rb
++
)
{
gNB
->
rb_mask_ul
[
gNB
->
frame_parms
.
symbols_per_slot
-
srs_pdu
->
time_start_position
-
1
+
symbol
][
rb
>>
5
]
|=
1U
rb_mask_ul
[
gNB
->
frame_parms
.
symbols_per_slot
-
srs_pdu
->
time_start_position
-
1
+
symbol
][
rb
>>
5
]
|=
1U
<<
(
rb
&
31
);
}
}
}
}
}
}
int
fill_srs_reported_symbol_list
(
nfapi_nr_srs_reported_symbol_t
*
prgs
,
...
...
@@ -718,8 +717,9 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_UESPEC_RX
,
1
);
LOG_D
(
PHY
,
"phy_procedures_gNB_uespec_RX frame %d, slot %d
\n
"
,
frame_rx
,
slot_rx
);
fill_ul_rb_mask
(
gNB
,
frame_rx
,
slot_rx
);
// Mask of occupied RBs, per symbol and PRB
uint32_t
rb_mask_ul
[
14
][
9
];
fill_ul_rb_mask
(
gNB
,
frame_rx
,
slot_rx
,
rb_mask_ul
);
int
first_symb
=
0
,
num_symb
=
0
;
if
(
gNB
->
frame_parms
.
frame_type
==
TDD
)
...
...
@@ -731,7 +731,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
}
else
num_symb
=
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
gNB_I0_measurements
(
gNB
,
slot_rx
,
first_symb
,
num_symb
);
gNB_I0_measurements
(
gNB
,
slot_rx
,
first_symb
,
num_symb
,
rb_mask_ul
);
const
int
soffset
=
(
slot_rx
&
3
)
*
gNB
->
frame_parms
.
symbols_per_slot
*
gNB
->
frame_parms
.
ofdm_symbol_size
;
int
offset
=
10
*
gNB
->
frame_parms
.
ofdm_symbol_size
+
gNB
->
frame_parms
.
first_carrier_offset
;
...
...
openair1/SCHED_NR/sched_nr.h
View file @
86bd6de7
...
...
@@ -32,7 +32,6 @@
#include "PHY/NR_TRANSPORT/nr_dci.h"
#include "phy_frame_config_nr.h"
void
fill_ul_rb_mask
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
);
void
nr_set_ssb_first_subcarrier
(
nfapi_nr_config_request_scf_t
*
cfg
,
NR_DL_FRAME_PARMS
*
fp
);
void
phy_procedures_gNB_TX
(
processingData_L1tx_t
*
msgTx
,
int
frame_tx
,
int
slot_tx
,
int
do_meas
);
int
phy_procedures_gNB_uespec_RX
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
);
...
...
openair1/SIMULATION/NR_PHY/pucchsim.c
View file @
86bd6de7
...
...
@@ -629,16 +629,17 @@ int main(int argc, char **argv)
12
);
// set UL mask for pucch allocation
uint32_t
rb_mask_ul
[
14
][
9
]
=
{
0
};
for
(
int
s
=
0
;
s
<
frame_parms
->
symbols_per_slot
;
s
++
){
if
(
s
>=
startingSymbolIndex
&&
s
<
(
startingSymbolIndex
+
nrofSymbols
))
for
(
int
rb
=
0
;
rb
<
N_RB
;
rb
++
)
{
int
rb2
=
rb
+
startingPRB
;
gNB
->
rb_mask_ul
[
s
][
rb2
>>
5
]
|=
(
1
<<
(
rb2
&
31
));
rb_mask_ul
[
s
][
rb2
>>
5
]
|=
(
1
<<
(
rb2
&
31
));
}
}
// noise measurement (all PRBs)
gNB_I0_measurements
(
gNB
,
nr_slot_tx
,
0
,
gNB
->
frame_parms
.
symbols_per_slot
);
gNB_I0_measurements
(
gNB
,
nr_slot_tx
,
0
,
gNB
->
frame_parms
.
symbols_per_slot
,
rb_mask_ul
);
if
(
n_trials
==
1
)
printf
(
"noise rxlev %d (%d dB), rxlev pucch %d dB sigma2 %f dB, SNR %f, TX %f, I0 (pucch) %d, I0 (avg) %d
\n
"
,
rxlev
,
dB_fixed
(
rxlev
),
dB_fixed
(
rxlev_pucch
),
sigma2_dB
,
SNR
,
10
*
log10
((
double
)
txlev
*
UE
->
frame_parms
.
ofdm_symbol_size
/
12
),
gNB
->
measurements
.
n0_subband_power_tot_dB
[
startingPRB
],
gNB
->
measurements
.
n0_subband_power_avg_dB
);
if
(
format
==
0
){
...
...
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