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
lizhongxiao
OpenXG-RAN
Commits
e5133cf6
Commit
e5133cf6
authored
Aug 08, 2022
by
Roberto Louro Magueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move more variables to nr_srs_channel_estimation() function
parent
65b56db9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
12 additions
and
22 deletions
+12
-22
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
+12
-13
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
+0
-3
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+0
-6
No files found.
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
View file @
e5133cf6
...
...
@@ -970,9 +970,6 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB,
int32_t
srs_estimated_channel_freq
[][
1
<<
srs_pdu
->
num_ant_ports
][
gNB
->
frame_parms
.
ofdm_symbol_size
*
(
1
<<
srs_pdu
->
num_symbols
)],
int32_t
srs_estimated_channel_time
[][
1
<<
srs_pdu
->
num_ant_ports
][
gNB
->
frame_parms
.
ofdm_symbol_size
],
int32_t
srs_estimated_channel_time_shifted
[][
1
<<
srs_pdu
->
num_ant_ports
][
gNB
->
frame_parms
.
ofdm_symbol_size
],
uint32_t
*
signal_power
,
uint32_t
*
noise_power_per_rb
,
uint32_t
*
noise_power
,
int8_t
*
snr_per_rb
,
int8_t
*
snr
)
{
...
...
@@ -993,6 +990,7 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB,
}
c16_t
srs_ls_estimated_channel
[
frame_parms
->
ofdm_symbol_size
*
(
1
<<
srs_pdu
->
num_symbols
)];
uint32_t
noise_power_per_rb
[
srs_pdu
->
bwp_size
];
int16_t
ch_real
[
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
];
int16_t
ch_imag
[
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
];
int16_t
noise_real
[
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
];
...
...
@@ -1003,6 +1001,7 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB,
for
(
int
p_index
=
0
;
p_index
<
N_ap
;
p_index
++
)
{
memset
(
srs_ls_estimated_channel
,
0
,
frame_parms
->
ofdm_symbol_size
*
(
1
<<
srs_pdu
->
num_symbols
)
*
sizeof
(
c16_t
));
memset
(
srs_estimated_channel_freq
[
ant
][
p_index
],
0
,
frame_parms
->
ofdm_symbol_size
*
(
1
<<
srs_pdu
->
num_symbols
)
*
sizeof
(
int32_t
));
#ifdef SRS_DEBUG
...
...
@@ -1178,21 +1177,21 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB,
}
// for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++)
// Compute signal power
*
signal_power
=
calc_power
(
ch_real
,
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
)
+
calc_power
(
ch_imag
,
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
);
uint32_t
signal_power
=
calc_power
(
ch_real
,
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
)
+
calc_power
(
ch_imag
,
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
);
#ifdef SRS_DEBUG
LOG_I
(
NR_PHY
,
"signal_power = %u
\n
"
,
*
signal_power
);
LOG_I
(
NR_PHY
,
"signal_power = %u
\n
"
,
signal_power
);
#endif
if
(
*
signal_power
==
0
)
{
if
(
signal_power
==
0
)
{
LOG_W
(
NR_PHY
,
"Received SRS signal power is 0
\n
"
);
return
-
1
;
}
// Compute noise power
const
uint8_t
signal_power_bits
=
log2_approx
(
*
signal_power
);
const
uint8_t
signal_power_bits
=
log2_approx
(
signal_power
);
const
uint8_t
factor_bits
=
signal_power_bits
<
32
?
32
-
signal_power_bits
:
0
;
// 32 due to input of dB_fixed(uint32_t x)
const
int32_t
factor_dB
=
dB_fixed
(
1
<<
factor_bits
);
...
...
@@ -1224,7 +1223,7 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB,
noise_power_per_rb
[
rb
]
=
max
(
sum_re2
/
n_noise_est
-
(
sum_re
/
n_noise_est
)
*
(
sum_re
/
n_noise_est
)
+
sum_im2
/
n_noise_est
-
(
sum_im
/
n_noise_est
)
*
(
sum_im
/
n_noise_est
),
1
);
snr_per_rb
[
rb
]
=
dB_fixed
((
int32_t
)((
*
signal_power
<<
factor_bits
)
/
noise_power_per_rb
[
rb
]))
-
factor_dB
;
snr_per_rb
[
rb
]
=
dB_fixed
((
int32_t
)((
signal_power
<<
factor_bits
)
/
noise_power_per_rb
[
rb
]))
-
factor_dB
;
#ifdef SRS_DEBUG
LOG_I
(
NR_PHY
,
"noise_power_per_rb[%i] = %i, snr_per_rb[%i] = %i dB
\n
"
,
rb
,
noise_power_per_rb
[
rb
],
rb
,
snr_per_rb
[
rb
]);
...
...
@@ -1232,13 +1231,13 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB,
}
// for (int rb = 0; rb < m_SRS_b; rb++)
*
noise_power
=
calc_power
(
noise_real
,
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
)
+
calc_power
(
noise_imag
,
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
);
uint32_t
noise_power
=
calc_power
(
noise_real
,
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
)
+
calc_power
(
noise_imag
,
frame_parms
->
nb_antennas_rx
*
N_ap
*
M_sc_b_SRS
);
*
snr
=
dB_fixed
((
int32_t
)((
*
signal_power
<<
factor_bits
)
/
(
*
noise_power
)))
-
factor_dB
;
*
snr
=
dB_fixed
((
int32_t
)((
signal_power
<<
factor_bits
)
/
(
noise_power
)))
-
factor_dB
;
#ifdef SRS_DEBUG
LOG_I
(
NR_PHY
,
"noise_power = %u, SNR = %i dB
\n
"
,
*
noise_power
,
*
snr
);
LOG_I
(
NR_PHY
,
"noise_power = %u, SNR = %i dB
\n
"
,
noise_power
,
*
snr
);
#endif
return
0
;
...
...
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
View file @
e5133cf6
...
...
@@ -76,9 +76,6 @@ int nr_srs_channel_estimation(const PHY_VARS_gNB *gNB,
int32_t
srs_estimated_channel_freq
[][
1
<<
srs_pdu
->
num_ant_ports
][
gNB
->
frame_parms
.
ofdm_symbol_size
*
(
1
<<
srs_pdu
->
num_symbols
)],
int32_t
srs_estimated_channel_time
[][
1
<<
srs_pdu
->
num_ant_ports
][
gNB
->
frame_parms
.
ofdm_symbol_size
],
int32_t
srs_estimated_channel_time_shifted
[][
1
<<
srs_pdu
->
num_ant_ports
][
gNB
->
frame_parms
.
ofdm_symbol_size
],
uint32_t
*
signal_power
,
uint32_t
*
noise_power_per_rb
,
uint32_t
*
noise_power
,
int8_t
*
snr_per_rb
,
int8_t
*
snr
);
#endif
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
e5133cf6
...
...
@@ -885,10 +885,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
int32_t
srs_estimated_channel_freq
[
frame_parms
->
nb_antennas_rx
][
1
<<
srs_pdu
->
num_ant_ports
][
frame_parms
->
ofdm_symbol_size
*
N_symb_SRS
]
__attribute__
((
aligned
(
32
)));
int32_t
srs_estimated_channel_time
[
frame_parms
->
nb_antennas_rx
][
1
<<
srs_pdu
->
num_ant_ports
][
frame_parms
->
ofdm_symbol_size
]
__attribute__
((
aligned
(
32
)));
int32_t
srs_estimated_channel_time_shifted
[
frame_parms
->
nb_antennas_rx
][
1
<<
srs_pdu
->
num_ant_ports
][
frame_parms
->
ofdm_symbol_size
];
uint32_t
noise_power_per_rb
[
srs_pdu
->
bwp_size
];
int8_t
snr_per_rb
[
srs_pdu
->
bwp_size
];
uint32_t
signal_power
;
uint32_t
noise_power
;
int8_t
snr
;
// At least currently, the configuration is constant, so it is enough to generate the sequence just once.
...
...
@@ -909,9 +906,6 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
srs_estimated_channel_freq
,
srs_estimated_channel_time
,
srs_estimated_channel_time_shifted
,
&
signal_power
,
noise_power_per_rb
,
&
noise_power
,
snr_per_rb
,
&
snr
);
}
...
...
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