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
7a3dea31
Commit
7a3dea31
authored
Sep 05, 2022
by
francescomani
Committed by
luis_pereira87
Sep 05, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix at UE for DMRS when there is a bwp start offset
parent
fc10fd3f
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
71 additions
and
72 deletions
+71
-72
openair1/PHY/NR_REFSIG/nr_dmrs_rx.c
openair1/PHY/NR_REFSIG/nr_dmrs_rx.c
+9
-10
openair1/PHY/NR_REFSIG/refsig_defs_ue.h
openair1/PHY/NR_REFSIG/refsig_defs_ue.h
+0
-1
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+31
-17
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
+10
-10
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+10
-14
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+11
-20
No files found.
openair1/PHY/NR_REFSIG/nr_dmrs_rx.c
View file @
7a3dea31
...
...
@@ -167,7 +167,6 @@ int nr_pdsch_dmrs_rx(PHY_VARS_NR_UE *ue,
int
nr_pdcch_dmrs_rx
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
eNB_offset
,
unsigned
int
Ns
,
unsigned
int
*
nr_gold_pdcch
,
int32_t
*
output
,
...
...
openair1/PHY/NR_REFSIG/refsig_defs_ue.h
View file @
7a3dea31
...
...
@@ -39,7 +39,6 @@ int nr_pbch_dmrs_rx(int dmrss,
@param PHY_VARS_NR_UE* ue structure provides configuration, frame parameters and the pointers to the 32 bits sequence storage tables
*/
int
nr_pdcch_dmrs_rx
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
eNB_offset
,
unsigned
int
Ns
,
unsigned
int
*
nr_gold_pdcch
,
int32_t
*
output
,
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
7a3dea31
...
...
@@ -28,6 +28,7 @@
#include "PHY/NR_REFSIG/dmrs_nr.h"
#include "PHY/NR_REFSIG/ptrs_nr.h"
#include "PHY/NR_TRANSPORT/nr_sch_dmrs.h"
#include "common/utils/nr/nr_common.h"
#include "filt16a_32.h"
#include <openair1/PHY/TOOLS/phy_scope_interface.h>
...
...
@@ -463,14 +464,14 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
return
(
0
);
}
int
nr_pdcch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
void
nr_pdcch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
gNB_id
,
unsigned
char
Ns
,
unsigned
char
symbol
,
unsigned
short
scrambling_id
,
unsigned
short
coreset_start_subcarrier
,
unsigned
short
nb_rb_corese
t
,
fapi_nr_coreset_t
*
coreset
,
uint16_t
first_carrier_offset
,
uint16_t
BWPStar
t
,
int32_t
pdcch_est_size
,
int32_t
pdcch_dl_ch_estimates
[][
pdcch_est_size
])
{
...
...
@@ -487,6 +488,17 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
symbol_offset
=
ue
->
frame_parms
.
ofdm_symbol_size
*
symbol
;
int
nb_rb_coreset
=
0
;
int
coreset_start_rb
=
0
;
get_coreset_rballoc
(
coreset
->
frequency_domain_resource
,
&
nb_rb_coreset
,
&
coreset_start_rb
);
if
(
nb_rb_coreset
==
0
)
return
;
#ifdef DEBUG_PDCCH
printf
(
PHY
,
"pdcch_channel_estimation: first_carrier_offset %d, BWPStart %d, coreset_start_rb %d, coreset_nb_rb %d
\n
"
,
first_carrier_offset
,
BWPStart
,
coreset_start_rb
,
nb_rb_coreset
);
#endif
unsigned
short
coreset_start_subcarrier
=
first_carrier_offset
+
(
BWPStart
+
coreset_start_rb
)
*
12
;
#ifdef DEBUG_PDCCH
printf
(
"PDCCH Channel Estimation : ThreadId %d, gNB_id %d ch_offset %d, OFDM size %d, Ncp=%d, Ns=%d, symbol %d
\n
"
,
...
...
@@ -499,28 +511,32 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
int16_t
*
fr
=
filt16a_r1
;
#endif
unsigned
short
scrambling_id
=
coreset
->
pdcch_dmrs_scrambling_id
;
// checking if re-initialization of scrambling IDs is needed (should be done here but scrambling ID for PDCCH is not taken from RRC)
if
(
scrambling_id
!=
ue
->
scramblingID_pdcch
){
ue
->
scramblingID_pdcch
=
scrambling_id
;
nr_gold_pdcch
(
ue
,
ue
->
scramblingID_pdcch
);
}
// generate pilot
i
nt
pilot
[
nb_rb_coreset
*
3
]
__attribute__
((
aligned
(
16
)));
nr_pdcch_dmrs_rx
(
ue
,
gNB_id
,
Ns
,
ue
->
nr_gold_pdcch
[
gNB_id
][
Ns
][
symbol
],
&
pilot
[
0
],
2000
,
nb_rb_coreset
)
;
int
dmrs_ref
=
0
;
i
f
(
coreset
->
CoreSetType
==
NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG
)
dmrs_ref
=
BWPStart
;
// generate pilot
int
pilot
[(
nb_rb_coreset
+
dmrs_ref
)
*
3
]
__attribute__
((
aligned
(
16
)));
nr_pdcch_dmrs_rx
(
ue
,
Ns
,
ue
->
nr_gold_pdcch
[
gNB_id
][
Ns
][
symbol
],
&
pilot
[
0
],
2000
,(
nb_rb_coreset
+
dmrs_ref
));
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
k
=
coreset_start_subcarrier
;
pil
=
(
int16_t
*
)
&
pilot
[
0
];
pil
=
(
int16_t
*
)
&
pilot
[
dmrs_ref
*
3
];
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
k
+
1
)];
dl_ch
=
(
int16_t
*
)
&
pdcch_dl_ch_estimates
[
aarx
][
ch_offset
];
memset
(
dl_ch
,
0
,
4
*
(
ue
->
frame_parms
.
ofdm_symbol_size
));
#ifdef DEBUG_PDCCH
printf
(
"pdcch ch est pilot addr %p RB_DL %d
\n
"
,
&
pilot
[
0
],
ue
->
frame_parms
.
N_RB_DL
);
printf
(
"pdcch ch est pilot addr %p RB_DL %d
\n
"
,
&
pilot
[
dmrs_ref
*
3
],
ue
->
frame_parms
.
N_RB_DL
);
printf
(
"k %d, first_carrier %d
\n
"
,
k
,
ue
->
frame_parms
.
first_carrier_offset
);
printf
(
"rxF addr %p
\n
"
,
rxF
);
...
...
@@ -687,8 +703,6 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
//}
}
return
(
0
);
}
int
nr_pdsch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
View file @
7a3dea31
...
...
@@ -39,14 +39,14 @@
\param Ns slot number (0..19)
\param symbol symbol within slot
*/
int
nr_pdcch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
void
nr_pdcch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
gNB_id
,
unsigned
char
Ns
,
unsigned
char
symbol
,
unsigned
short
scrambling_id
,
unsigned
short
coreset_start_subcarrier
,
unsigned
short
nb_rb_corese
t
,
fapi_nr_coreset_t
*
coreset
,
uint16_t
first_carrier_offset
,
uint16_t
BWPStar
t
,
int32_t
pdcch_est_size
,
int32_t
pdcch_dl_ch_estimates
[][
pdcch_est_size
]);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
7a3dea31
...
...
@@ -532,8 +532,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
if
(
sa
==
1
&&
ret
==
0
)
{
bool
dec
=
false
;
int
gnb_id
=
0
;
//FIXME
int
coreset_nb_rb
=
0
;
int
coreset_start_rb
=
0
;
// Hold the channel estimates in frequency domain.
int32_t
pdcch_est_size
=
((((
fp
->
symbols_per_slot
*
(
fp
->
ofdm_symbol_size
+
LTE_CE_FILTER_LENGTH
))
+
15
)
/
16
)
*
16
);
...
...
@@ -543,7 +541,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
for
(
int
n_ss
=
0
;
n_ss
<
phy_pdcch_config
.
nb_search_space
;
n_ss
++
)
{
uint8_t
nb_symb_pdcch
=
phy_pdcch_config
.
pdcch_config
[
n_ss
].
coreset
.
duration
;
int
start_symb
=
phy_pdcch_config
.
pdcch_config
[
n_ss
].
coreset
.
StartSymbolIndex
;
get_coreset_rballoc
(
phy_pdcch_config
.
pdcch_config
[
n_ss
].
coreset
.
frequency_domain_resource
,
&
coreset_nb_rb
,
&
coreset_start_rb
);
for
(
uint16_t
l
=
start_symb
;
l
<
start_symb
+
nb_symb_pdcch
;
l
++
)
{
nr_slot_fep_init_sync
(
ue
,
proc
,
...
...
@@ -551,15 +548,14 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
phy_pdcch_config
.
slot
,
is
*
fp
->
samples_per_frame
+
phy_pdcch_config
.
sfn
*
fp
->
samples_per_frame
+
ue
->
rx_offset
);
if
(
coreset_nb_rb
>
0
)
nr_pdcch_channel_estimation
(
ue
,
proc
,
0
,
phy_pdcch_config
.
slot
,
l
,
fp
->
Nid_cell
,
fp
->
first_carrier_offset
+
(
phy_pdcch_config
.
pdcch_config
[
n_ss
].
BWPStart
+
coreset_start_rb
)
*
12
,
coreset_nb_rb
,
&
phy_pdcch_config
.
pdcch_config
[
n_ss
].
coreset
,
fp
->
first_carrier_offset
,
phy_pdcch_config
.
pdcch_config
[
n_ss
].
BWPStart
,
pdcch_est_size
,
pdcch_dl_ch_estimates
);
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
7a3dea31
...
...
@@ -1445,29 +1445,20 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
int32_t
pdcch_est_size
=
((((
fp
->
symbols_per_slot
*
(
fp
->
ofdm_symbol_size
+
LTE_CE_FILTER_LENGTH
))
+
15
)
/
16
)
*
16
);
__attribute__
((
aligned
(
16
)))
int32_t
pdcch_dl_ch_estimates
[
4
*
fp
->
nb_antennas_rx
][
pdcch_est_size
];
int
coreset_nb_rb
=
0
;
int
coreset_start_rb
=
0
;
if
(
phy_pdcch_config
->
nb_search_space
>
0
)
get_coreset_rballoc
(
phy_pdcch_config
->
pdcch_config
[
0
].
coreset
.
frequency_domain_resource
,
&
coreset_nb_rb
,
&
coreset_start_rb
);
uint8_t
dci_cnt
=
0
;
for
(
int
n_ss
=
0
;
n_ss
<
phy_pdcch_config
->
nb_search_space
;
n_ss
++
)
{
for
(
uint16_t
l
=
0
;
l
<
nb_symb_pdcch
;
l
++
)
{
// note: this only works if RBs for PDCCH are contigous!
LOG_D
(
PHY
,
"pdcch_channel_estimation: first_carrier_offset %d, BWPStart %d, coreset_start_rb %d, coreset_nb_rb %d
\n
"
,
fp
->
first_carrier_offset
,
phy_pdcch_config
->
pdcch_config
[
n_ss
].
BWPStart
,
coreset_start_rb
,
coreset_nb_rb
);
if
(
coreset_nb_rb
>
0
)
nr_pdcch_channel_estimation
(
ue
,
proc
,
gNB_id
,
nr_slot_rx
,
l
,
phy_pdcch_config
->
pdcch_config
[
n_ss
].
coreset
.
pdcch_dmrs_scrambling_id
,
fp
->
first_carrier_offset
+
(
phy_pdcch_config
->
pdcch_config
[
n_ss
].
BWPStart
+
coreset_start_rb
)
*
12
,
coreset_nb_rb
,
&
phy_pdcch_config
->
pdcch_config
[
n_ss
].
coreset
,
fp
->
first_carrier_offset
,
phy_pdcch_config
->
pdcch_config
[
n_ss
].
BWPStart
,
pdcch_est_size
,
pdcch_dl_ch_estimates
);
...
...
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