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
8f94e67b
Commit
8f94e67b
authored
Nov 17, 2023
by
Thomas Schlichter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
NR_UE: fix and simplify some signal quality and power calculations
parent
21f92a1f
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
19 additions
and
42 deletions
+19
-42
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+2
-3
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
+14
-32
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
+1
-2
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+2
-3
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+0
-2
No files found.
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
8f94e67b
...
...
@@ -561,10 +561,9 @@ 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
)
-
(
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
;
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
);
prs_meas
[
rxAnt
]
->
rsrp_dBm
=
10
*
log10
(
prs_meas
[
rxAnt
]
->
rsrp
)
-
(
int
)
openair0_cfg
[
0
].
rx_gain
[
0
];
//prs measurements
prs_meas
[
rxAnt
]
->
gNB_id
=
gNB_id
;
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
View file @
8f94e67b
...
...
@@ -160,23 +160,19 @@ void nr_ue_measurements(PHY_VARS_NR_UE *ue,
for
(
gNB_id
=
0
;
gNB_id
<
ue
->
n_connected_gNB
;
gNB_id
++
)
{
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
]
=
dB_fixed
(
ue
->
measurements
.
rx_power_avg
[
gNB_id
]);
ue
->
measurements
.
wideband_cqi_tot
[
gNB_id
]
=
dB_fixed2
(
ue
->
measurements
.
rx_power_tot
[
gNB_id
],
ue
->
measurements
.
n0_power_tot
);
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);
ue
->
measurements
.
rx_rssi_dBm
[
gNB_id
]
=
(
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
]
-
(
int
)
ue
->
rfdevice
.
app_rx_gain
[
0
])
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
];
//ue->measurements.rx_rssi_fixed_point_dB[gNB_id] = ue->measurements.rx_power_avg_dB[gNB_id] - ((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_fixed_point_dB
[
gNB_id
]
=
(
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
]
-
(
int
)
ue
->
rfdevice
.
app_rx_gain
[
0
])
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
]
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
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
]
-
(
int
)
ue
->
rfdevice
.
app_rx_gain
[
0
];
LOG_D
(
PHY
,
"[gNB %d] Slot %d, RSSI %d dB
(%d dBm/RE)
, WBandCQI %d dB, rxPwrAvg "
"%d
, n0PwrAvg %d, Instant CQI %d (dB), RSSI Fixed Point (dB) %d
\n
"
,
gNB_id
,
slot
,
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
],
"[gNB %d] Slot %d, RSSI %d dB
m/RE
, WBandCQI %d dB, rxPwrAvg "
"%d
dB, n0PwrAvg %d dB, Instant CQI %d dB
\n
"
,
gNB_id
,
slot
,
ue
->
measurements
.
rx_rssi_dBm
[
gNB_id
],
ue
->
measurements
.
wideband_cqi_avg
[
gNB_id
],
ue
->
measurements
.
rx_power_avg
[
gNB_id
],
ue
->
measurements
.
n0_power_tot
,
ue
->
measurements
.
wideband_cqi_tot
[
gNB_id
],
ue
->
measurements
.
rx_rssi_fixed_point_dB
[
gNB_id
]);
ue
->
measurements
.
rx_power_avg_dB
[
gNB_id
],
dB_fixed
(
ue
->
measurements
.
n0_power_avg
),
ue
->
measurements
.
wideband_cqi_tot
[
gNB_id
]);
}
#if defined(__x86_64__) || defined(__i386__)
...
...
@@ -234,7 +230,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
)
-
(
int
)
ue
->
rfdevice
.
app_rx_gain
[
0
])
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
];
ue
->
measurements
.
ssb_rsrp_dBm
[
ssb_index
]
=
10
*
log10
(
rsrp
)
-
(
int
)
ue
->
rfdevice
.
app_rx_gain
[
0
];
// to obtain non-integer dB value with a resoluion of 0.5dB
int
SNRtimes10
=
dB_fixed_x10
(
rsrp
)
-
dB_fixed_x10
(
ue
->
measurements
.
n0_power_avg
);
...
...
@@ -429,10 +425,7 @@ void *nr_ue_meas_neighboring_cell(void *param)
}
}
neighboring_cell_info
->
ssb_rsrp
=
rsrp_sum
/
nb_re
;
neighboring_cell_info
->
ssb_rsrp_dBm
=
10
*
log10
(
neighboring_cell_info
->
ssb_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
);
neighboring_cell_info
->
ssb_rsrp_dBm
=
10
*
log10
(
neighboring_cell_info
->
ssb_rsrp
)
-
(
int
)
openair0_cfg
[
0
].
rx_gain
[
0
];
#ifdef DEBUG_MEAS_NEIGHBORING_CELL
LOG_I
(
NR_PHY
,
"[Nid_cell %i] SSB RSRP = %u (%i dBm)
\n
"
,
nr_neighboring_cell
->
Nid_cell
,
neighboring_cell_info
->
ssb_rsrp
,
neighboring_cell_info
->
ssb_rsrp_dBm
);
#endif
...
...
@@ -482,7 +475,6 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue,
uint8_t
l_sss
=
(
ue
->
symbol_offset
+
2
)
%
ue
->
frame_parms
.
symbols_per_slot
;
unsigned
int
ssb_offset
=
ue
->
frame_parms
.
first_carrier_offset
+
ue
->
frame_parms
.
ssb_start_subcarrier
;
double
rx_gain
=
(
int
)
ue
->
rfdevice
.
app_rx_gain
[
0
];
double
rx_gain_offset
=
openair0_cfg
[
0
].
rx_gain_offset
[
0
];
ue
->
measurements
.
n0_power_tot
=
0
;
...
...
@@ -532,21 +524,11 @@ void nr_ue_rrc_measurements(PHY_VARS_NR_UE *ue,
/* dBm/Hz*/
const
int
psd_awgn
=
-
174
;
const
int
scs
=
15000
*
(
1
<<
ue
->
frame_parms
.
numerology_index
);
ue
->
measurements
.
noise_figure_dB
=
ue
->
measurements
.
n0_power_tot_dB
+
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
));
ue
->
measurements
.
noise_figure_dB
=
ue
->
measurements
.
n0_power_tot_dB
-
(
int
)
rx_gain
-
(
psd_awgn
+
dB_fixed
(
scs
));
/* Noise Floor calculations per dB/RE in fixed point */
ue
->
measurements
.
noise_floor_fixed
=
ue
->
measurements
.
n0_power_tot_dB
-
((
int
)
rx_gain
-
(
int
)
rx_gain_offset
)
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
ue
->
measurements
.
noise_floor_fixed
=
ue
->
measurements
.
n0_power_tot_dB
-
(
int
)
rx_gain
;
/* Noise Power spectral density calculations in dBm/RE */
/*ue->measurements.noise_psd = ue->measurements.n0_power_tot_dB + 30 -
10 * log10(pow(2, 30)) -
dB_fixed(ue->frame_parms.ofdm_symbol_size) -
((int)rx_gain - (int)rx_gain_offset);*/
ue
->
measurements
.
noise_psd
=
(
ue
->
measurements
.
n0_power_tot_dB
-
(
int
)
rx_gain
)
-
(
int
)
rx_gain_offset
;
ue
->
measurements
.
noise_psd
=
ue
->
measurements
.
n0_power_tot_dB
-
(
int
)
rx_gain
;
LOG_D
(
PHY
,
"In [%s][slot:%d] Noise Level %d Noise Level %d (dB), Noise PSD %d (dBm/RE), NF USRP %d (dB) Noise Floor %d (dB/RE)
\n
"
,
...
...
openair1/PHY/NR_UE_TRANSPORT/csi_rx.c
View file @
8f94e67b
...
...
@@ -254,8 +254,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_dB
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
*
rsrp_dBm
=
dB_fixed
(
*
rsrp
)
+
(
int
)
openair0_cfg
[
0
].
rx_gain
[
0
];
#ifdef NR_CSIRS_DEBUG
LOG_I
(
NR_PHY
,
"RSRP = %i (%i dBm)
\n
"
,
*
rsrp
,
*
rsrp_dBm
);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
View file @
8f94e67b
...
...
@@ -533,10 +533,9 @@ int nr_rx_pbch(PHY_VARS_NR_UE *ue,
#ifdef DEBUG_PBCH
double
rx_gain
=
openair0_cfg
[
0
].
rx_gain
[
0
];
double
rx_gain_offset
=
openair0_cfg
[
0
].
rx_gain_offset
[
0
];
double
DopplerEstMax
=
M_PI
/
(
2
*
M_PI
*
(
DMRS_idx_current
-
DMRS_idx_last
)
*
TOfdm
);
LOG_I
(
PHY
,
"**** DopplerEst: %f, ue->DopplerEst: %d, chLevel: %i, chLevelLog: %u, outShift: %u, re: %i, im: %i, phase: %f, rxG: %f
, rxGOff: %f
\n
"
,
DopplerEst
,
ue
->
DopplerEst
,
channelLevel
,
channelLevelLog
,
outputShift
,
Dot_Prod_Res
.
r
,
Dot_Prod_Res
.
i
,
Res_phase
,
rx_gain
,
rx_gain_offset
);
LOG_I
(
PHY
,
"**** DopplerEst: %f, ue->DopplerEst: %d, chLevel: %i, chLevelLog: %u, outShift: %u, re: %i, im: %i, phase: %f, rxG: %f
\n
"
,
DopplerEst
,
ue
->
DopplerEst
,
channelLevel
,
channelLevelLog
,
outputShift
,
Dot_Prod_Res
.
r
,
Dot_Prod_Res
.
i
,
Res_phase
,
rx_gain
);
LOG_I
(
PHY
,
"DopplerEstMax: %f, PScaling: %f, IScaling: %f
\n
"
,
DopplerEstMax
,
PScaling
,
IScaling
);
#endif
}
...
...
openair1/PHY/defs_nr_UE.h
View file @
8f94e67b
...
...
@@ -208,8 +208,6 @@ typedef struct {
//! estimated rssi (dBm)
short
rx_rssi_dBm
[
NUMBER_OF_CONNECTED_gNB_MAX
];
//! estimated rssi (dB) fixed point
short
rx_rssi_fixed_point_dB
[
NUMBER_OF_CONNECTED_gNB_MAX
];
//! estimated correlation (wideband linear) between spatial channels (computed in dlsch_demodulation)
int
rx_correlation
[
NUMBER_OF_CONNECTED_gNB_MAX
][
NB_ANTENNAS_RX
][
NR_MAX_NB_LAYERS
*
NR_MAX_NB_LAYERS
];
//
//! estimated correlation (wideband dB) between spatial channels (computed in dlsch_demodulation)
...
...
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