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
4622d33e
Commit
4622d33e
authored
May 20, 2024
by
Bartosz Podrygajlo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Demystifying 10log10(2^30) in signal energy calculations.
parent
168b172f
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
15 additions
and
12 deletions
+15
-12
common/utils/nr/nr_common.h
common/utils/nr/nr_common.h
+6
-0
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
+1
-1
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+2
-2
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
+5
-5
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
+1
-4
No files found.
common/utils/nr/nr_common.h
View file @
4622d33e
...
...
@@ -79,6 +79,12 @@ static inline const char *rnti_types(nr_rnti_type_t rr)
#define NR_MAX_NB_LAYERS 4 // 8
// Since the IQ samples are represented by SQ15 R+I (see https://en.wikipedia.org/wiki/Q_(number_format)) we need to compensate when
// calcualting signal energy. Instead of shifting each sample right by 15, we can normalize the result in dB scale once its
// calcualted. Signal energy is calculated using RMS^2, where each sample is squared before taking the average of the sum, therefore
// the total shift is 2 * 15, in dB scale thats 10log10(2^(15*2))
#define SQ15_SQUARED_NORM_FACTOR_DB 90.3089986992
typedef
struct
nr_bandentry_s
{
int16_t
band
;
uint64_t
ul_min
;
...
...
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
View file @
4622d33e
...
...
@@ -251,7 +251,7 @@ void nr_gnb_measurements(PHY_VARS_gNB *gNB,
ulsch_measurements
->
wideband_cqi_tot
=
dB_fixed2
(
rx_power_tot
,
meas
->
n0_power_tot
);
ulsch_measurements
->
rx_rssi_dBm
=
rx_power_avg_dB
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
(
rx_gain
-
rx_gain_offset
)
-
dB_fixed
(
fp
->
ofdm_symbol_size
);
rx_power_avg_dB
+
30
-
SQ15_SQUARED_NORM_FACTOR_DB
-
(
rx_gain
-
rx_gain_offset
)
-
dB_fixed
(
fp
->
ofdm_symbol_size
);
LOG_D
(
PHY
,
"[RNTI %04x] RSSI %d dBm/RE, RSSI (digital) %d dB (N_RB_UL %d), WBand CQI tot %d dB, N0 Power tot %d, RX Power tot %d
\n
"
,
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
4622d33e
...
...
@@ -489,10 +489,10 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
peak_estimator
(
&
chT_interpol
[
rxAnt
][
0
],
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
,
&
prs_toa
,
&
ch_pwr
,
mean_val
);
// adjusting the rx_gains for channel peak power
ch_pwr_dbm
=
10
*
log10
(
ch_pwr
)
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
frame_params
->
ofdm_symbol_size
);
ch_pwr_dbm
=
10
*
log10
(
ch_pwr
)
+
30
-
SQ15_SQUARED_NORM_FACTOR_DB
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
frame_params
->
ofdm_symbol_size
);
prs_meas
[
rxAnt
]
->
rsrp_dBm
=
10
*
log10
(
prs_meas
[
rxAnt
]
->
rsrp
)
+
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
);
10
*
log10
(
prs_meas
[
rxAnt
]
->
rsrp
)
+
30
-
SQ15_SQUARED_NORM_FACTOR_DB
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
//prs measurements
prs_meas
[
rxAnt
]
->
gNB_id
=
gNB_id
;
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
View file @
4622d33e
...
...
@@ -157,7 +157,7 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
]
=
dB_fixed
(
ue
->
measurements
.
rx_power_avg
[
gNB_id
]);
ue
->
measurements
.
wideband_cqi_tot
[
gNB_id
]
=
ue
->
measurements
.
rx_power_tot_dB
[
gNB_id
]
-
ue
->
measurements
.
n0_power_tot_dB
;
ue
->
measurements
.
wideband_cqi_avg
[
gNB_id
]
=
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
]
-
dB_fixed
(
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
);
ue
->
measurements
.
rx_rssi_dBm
[
gNB_id
]
=
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
]
+
30
-
SQ15_SQUARED_NORM_FACTOR_DB
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
LOG_D
(
PHY
,
"[gNB %d] Slot %d, RSSI %d dB (%d dBm/RE), WBandCQI %d dB, rxPwrAvg %d, n0PwrAvg %d
\n
"
,
gNB_id
,
...
...
@@ -219,7 +219,7 @@ void nr_ue_ssb_rsrp_measurements(PHY_VARS_NR_UE *ue,
rsrp
/=
nb_re
;
ue
->
measurements
.
ssb_rsrp_dBm
[
ssb_index
]
=
10
*
log10
(
rsrp
)
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
30
-
SQ15_SQUARED_NORM_FACTOR_DB
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
...
...
@@ -296,7 +296,7 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue,
#ifdef DEBUG_MEAS_RRC
const
int
psd_awgn
=
-
174
;
const
int
scs
=
15000
*
(
1
<<
ue
->
frame_parms
.
numerology_index
);
const
int
nf_usrp
=
ue
->
measurements
.
n0_power_tot_dB
+
3
+
30
-
((
int
)
rx_gain
-
(
int
)
rx_gain_offset
)
-
10
*
log10
(
pow
(
2
,
30
))
-
(
psd_awgn
+
dB_fixed
(
scs
)
+
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
));
const
int
nf_usrp
=
ue
->
measurements
.
n0_power_tot_dB
+
3
+
30
-
((
int
)
rx_gain
-
(
int
)
rx_gain_offset
)
-
SQ15_SQUARED_NORM_FACTOR_DB
-
(
psd_awgn
+
dB_fixed
(
scs
)
+
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
));
LOG_D
(
PHY
,
"In [%s][slot:%d] NF USRP %d dB
\n
"
,
__FUNCTION__
,
slot
,
nf_usrp
);
#endif
...
...
@@ -306,7 +306,7 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue,
slot
,
ue
->
measurements
.
n0_power_tot
,
ue
->
measurements
.
n0_power_tot_dB
,
ue
->
measurements
.
n0_power_tot_dB
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
)
ue
->
measurements
.
n0_power_tot_dB
+
30
-
SQ15_SQUARED_NORM_FACTOR_DB
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
)
-
((
int
)
rx_gain
-
(
int
)
rx_gain_offset
));
}
...
...
@@ -347,7 +347,7 @@ void nr_sl_psbch_rsrp_measurements(sl_nr_ue_phy_params_t *sl_phy_params,
}
psbch_rx
->
rsrp_dB_per_RE
=
10
*
log10
(
rsrp
/
num_re
);
psbch_rx
->
rsrp_dBm_per_RE
=
psbch_rx
->
rsrp_dB_per_RE
+
30
-
10
*
log10
(
pow
(
2
,
30
))
psbch_rx
->
rsrp_dBm_per_RE
=
psbch_rx
->
rsrp_dB_per_RE
+
30
-
SQ15_SQUARED_NORM_FACTOR_DB
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
fp
->
ofdm_symbol_size
);
...
...
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
View file @
4622d33e
...
...
@@ -40,9 +40,6 @@
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
#include "PHY/NR_UE_ESTIMATION/filt16a_32.h"
// 10*log10(pow(2,30))
#define pow_2_30_dB 90
// Additional memory allocation, because of applying the filter and the memory offset to ensure memory alignment
#define FILTER_MARGIN 32
...
...
@@ -254,7 +251,7 @@ int nr_get_csi_rs_signal(const PHY_VARS_NR_UE *ue,
*
rsrp
=
rsrp_sum
/
meas_count
;
*
rsrp_dBm
=
dB_fixed
(
*
rsrp
)
+
30
-
pow_2_30_d
B
*
rsrp_dBm
=
dB_fixed
(
*
rsrp
)
+
30
-
SQ15_SQUARED_NORM_FACTOR_D
B
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
#ifdef NR_CSIRS_DEBUG
...
...
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