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
2b7aacd3
Commit
2b7aacd3
authored
Nov 18, 2022
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_PUSCH_noise_workaround' into integration_2022_wk46
parents
2e2246f9
9eb1d245
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
23 deletions
+26
-23
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
+21
-19
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+2
-2
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+3
-2
No files found.
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
View file @
2b7aacd3
...
@@ -35,6 +35,8 @@
...
@@ -35,6 +35,8 @@
#include "PHY/phy_extern.h"
#include "PHY/phy_extern.h"
#include "nr_ul_estimation.h"
#include "nr_ul_estimation.h"
#define I0_SKIP_DC 1
extern
openair0_config_t
openair0_cfg
[
MAX_CARDS
];
extern
openair0_config_t
openair0_cfg
[
MAX_CARDS
];
int
nr_est_timing_advance_pusch
(
PHY_VARS_gNB
*
gNB
,
int
UE_id
)
int
nr_est_timing_advance_pusch
(
PHY_VARS_gNB
*
gNB
,
int
UE_id
)
...
@@ -155,43 +157,43 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB,int slot, int first_symb,int num_symb
...
@@ -155,43 +157,43 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB,int slot, int first_symb,int num_symb
memset
(
measurements
->
n0_subband_power
,
0
,
sizeof
(
measurements
->
n0_subband_power
));
memset
(
measurements
->
n0_subband_power
,
0
,
sizeof
(
measurements
->
n0_subband_power
));
for
(
int
s
=
first_symb
;
s
<
(
first_symb
+
num_symb
);
s
++
)
{
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
++
)
{
for
(
rb
=
0
;
rb
<
frame_parms
->
N_RB_UL
;
rb
++
)
{
if
(
s
==
first_symb
/*&& ((gNB->rb_mask_ul[s][rb>>5]&(1<<(rb&31))) == 0)*/
)
{
if
((
gNB
->
rb_mask_ul
[
s
][
rb
>>
5
]
&
(
1U
<<
(
rb
&
31
)))
==
0
&&
// check that rb was not used in this subframe
nb_symb
[
rb
]
=
0
;
!
(
I0_SKIP_DC
&&
rb
==
frame_parms
->
N_RB_UL
>>
1
))
{
// skip middle PRB because of artificial noise possibly created by FFT
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
int
offset
=
offset0
+
(
frame_parms
->
first_carrier_offset
+
(
rb
*
12
))
%
frame_parms
->
ofdm_symbol_size
;
measurements
->
n0_subband_power
[
aarx
][
rb
]
=
0
;
nb_symb
[
rb
]
++
;
}
int
offset0
=
(
slot
&
3
)
*
(
frame_parms
->
symbols_per_slot
*
frame_parms
->
ofdm_symbol_size
)
+
(
frame_parms
->
first_carrier_offset
+
(
rb
*
12
))
%
frame_parms
->
ofdm_symbol_size
;
if
((
gNB
->
rb_mask_ul
[
s
][
rb
>>
5
]
&
(
1U
<<
(
rb
&
31
)))
==
0
)
{
// check that rb was not used in this subframe
nb_symb
[
rb
]
++
;
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
int
offset
=
offset0
+
(
s
*
frame_parms
->
ofdm_symbol_size
);
int32_t
*
ul_ch
=
&
common_vars
->
rxdataF
[
aarx
][
offset
];
int32_t
*
ul_ch
=
&
common_vars
->
rxdataF
[
aarx
][
offset
];
int32_t
signal_energy
;
int
len
=
12
;
if
(((
frame_parms
->
N_RB_UL
&
1
)
==
1
)
&&
if
(((
frame_parms
->
N_RB_UL
&
1
)
==
1
)
&&
(
rb
==
(
frame_parms
->
N_RB_UL
>>
1
)))
{
(
rb
==
(
frame_parms
->
N_RB_UL
>>
1
)))
{
len
=
6
;
signal_energy
=
signal_energy_nodc
(
ul_ch
,
6
);
ul_ch
=
&
common_vars
->
rxdataF
[
aarx
][
offset0
];
signal_energy
+=
signal_energy_nodc
(
ul_ch
,
6
);
}
else
{
signal_energy
=
signal_energy_nodc
(
ul_ch
,
12
);
}
}
AssertFatal
(
ul_ch
,
"RX signal buffer (freq) problem
\n
"
)
;
measurements
->
n0_subband_power
[
aarx
][
rb
]
+=
signal_energy
;
measurements
->
n0_subband_power
[
aarx
][
rb
]
+=
signal_energy_nodc
(
ul_ch
,
len
);
LOG_D
(
PHY
,
"slot %d symbol %d RB %d aarx %d n0_subband_power %d
\n
"
,
slot
,
s
,
rb
,
aarx
,
signal_energy
);
}
//antenna
}
//antenna
}
}
}
//rb
}
//rb
}
// symb
}
// symb
int
nb_rb
=
0
;
int
nb_rb
=
0
;
int32_t
n0_subband_tot
=
0
;
int32_t
n0_subband_tot
=
0
;
int32_t
n0_subband_tot_perPRB
=
0
;
int32_t
n0_subband_tot_perANT
[
frame_parms
->
nb_antennas_rx
];
int32_t
n0_subband_tot_perANT
[
1
+
frame_parms
->
nb_antennas_rx
];
memset
(
n0_subband_tot_perANT
,
0
,
sizeof
(
n0_subband_tot_perANT
));
for
(
int
rb
=
0
;
rb
<
frame_parms
->
N_RB_UL
;
rb
++
)
{
for
(
int
rb
=
0
;
rb
<
frame_parms
->
N_RB_UL
;
rb
++
)
{
n0_subband_tot_perPRB
=
0
;
int32_t
n0_subband_tot_perPRB
=
0
;
if
(
nb_symb
[
rb
]
>
0
)
{
if
(
nb_symb
[
rb
]
>
0
)
{
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
measurements
->
n0_subband_power
[
aarx
][
rb
]
/=
nb_symb
[
rb
];
measurements
->
n0_subband_power
[
aarx
][
rb
]
/=
nb_symb
[
rb
];
measurements
->
n0_subband_power_dB
[
aarx
][
rb
]
=
dB_fixed
(
measurements
->
n0_subband_power
[
aarx
][
rb
]);
measurements
->
n0_subband_power_dB
[
aarx
][
rb
]
=
dB_fixed
(
measurements
->
n0_subband_power
[
aarx
][
rb
]);
n0_subband_tot_perPRB
+=
measurements
->
n0_subband_power
[
aarx
][
rb
];
n0_subband_tot_perPRB
+=
measurements
->
n0_subband_power
[
aarx
][
rb
];
if
(
rb
==
0
)
n0_subband_tot_perANT
[
aarx
]
=
measurements
->
n0_subband_power
[
aarx
][
rb
];
n0_subband_tot_perANT
[
aarx
]
+=
measurements
->
n0_subband_power
[
aarx
][
rb
];
else
n0_subband_tot_perANT
[
aarx
]
+=
measurements
->
n0_subband_power
[
aarx
][
rb
];
}
}
n0_subband_tot_perPRB
/=
frame_parms
->
nb_antennas_rx
;
n0_subband_tot_perPRB
/=
frame_parms
->
nb_antennas_rx
;
measurements
->
n0_subband_power_tot_dB
[
rb
]
=
dB_fixed
(
n0_subband_tot_perPRB
);
measurements
->
n0_subband_power_tot_dB
[
rb
]
=
dB_fixed
(
n0_subband_tot_perPRB
);
...
...
openair1/PHY/defs_gNB.h
View file @
2b7aacd3
...
@@ -647,9 +647,9 @@ typedef struct {
...
@@ -647,9 +647,9 @@ typedef struct {
//! estimated avg noise power (dB)
//! estimated avg noise power (dB)
unsigned
int
n0_power_tot_dB
;
unsigned
int
n0_power_tot_dB
;
//! estimated avg noise power per RB per RX ant (lin)
//! estimated avg noise power per RB per RX ant (lin)
unsigned
int
n0_subband_power
[
MAX_NUM_RU_PER_gNB
][
275
];
unsigned
int
n0_subband_power
[
NB_ANTENNAS_RX
][
275
];
//! estimated avg noise power per RB per RX ant (dB)
//! estimated avg noise power per RB per RX ant (dB)
unsigned
int
n0_subband_power_dB
[
MAX_NUM_RU_PER_gNB
][
275
];
unsigned
int
n0_subband_power_dB
[
NB_ANTENNAS_RX
][
275
];
//! estimated avg subband noise power (dB)
//! estimated avg subband noise power (dB)
unsigned
int
n0_subband_power_avg_dB
;
unsigned
int
n0_subband_power_avg_dB
;
//! estimated avg subband noise power per antenna (dB)
//! estimated avg subband noise power per antenna (dB)
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
2b7aacd3
...
@@ -696,8 +696,9 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
...
@@ -696,8 +696,9 @@ 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
;
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
);
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
;
int
offset
=
10
*
gNB
->
frame_parms
.
ofdm_symbol_size
+
gNB
->
frame_parms
.
first_carrier_offset
;
int
power_rxF
=
signal_energy_nodc
(
&
gNB
->
common_vars
.
rxdataF
[
0
][
offset
+
(
47
*
12
)],
12
*
18
);
int
power_rxF
=
signal_energy_nodc
(
&
gNB
->
common_vars
.
rxdataF
[
0
][
soffset
+
offset
+
(
47
*
12
)],
12
*
18
);
LOG_D
(
PHY
,
"frame %d, slot %d: UL signal energy %d
\n
"
,
frame_rx
,
slot_rx
,
power_rxF
);
LOG_D
(
PHY
,
"frame %d, slot %d: UL signal energy %d
\n
"
,
frame_rx
,
slot_rx
,
power_rxF
);
start_meas
(
&
gNB
->
phy_proc_rx
);
start_meas
(
&
gNB
->
phy_proc_rx
);
...
@@ -726,7 +727,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
...
@@ -726,7 +727,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
nfapi_nr_uci_pucch_pdu_format_0_1_t
*
uci_pdu_format0
=
&
gNB
->
uci_pdu_list
[
num_ucis
].
pucch_pdu_format_0_1
;
nfapi_nr_uci_pucch_pdu_format_0_1_t
*
uci_pdu_format0
=
&
gNB
->
uci_pdu_list
[
num_ucis
].
pucch_pdu_format_0_1
;
offset
=
pucch_pdu
->
start_symbol_index
*
gNB
->
frame_parms
.
ofdm_symbol_size
+
(
gNB
->
frame_parms
.
first_carrier_offset
+
pucch_pdu
->
prb_start
*
12
);
offset
=
pucch_pdu
->
start_symbol_index
*
gNB
->
frame_parms
.
ofdm_symbol_size
+
(
gNB
->
frame_parms
.
first_carrier_offset
+
pucch_pdu
->
prb_start
*
12
);
power_rxF
=
signal_energy_nodc
(
&
gNB
->
common_vars
.
rxdataF
[
0
][
offset
],
12
);
power_rxF
=
signal_energy_nodc
(
&
gNB
->
common_vars
.
rxdataF
[
0
][
soffset
+
offset
],
12
);
LOG_D
(
PHY
,
"frame %d, slot %d: PUCCH signal energy %d
\n
"
,
frame_rx
,
slot_rx
,
power_rxF
);
LOG_D
(
PHY
,
"frame %d, slot %d: PUCCH signal energy %d
\n
"
,
frame_rx
,
slot_rx
,
power_rxF
);
nr_decode_pucch0
(
gNB
,
nr_decode_pucch0
(
gNB
,
...
...
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