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
209d5f11
Commit
209d5f11
authored
Oct 21, 2021
by
Thomas Schlichter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
NR_UE: reset max_pos_fil in timing synchronization whenever we add/remove a sample
parent
2c2ba265
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
12 additions
and
10 deletions
+12
-10
executables/nr-ue.c
executables/nr-ue.c
+4
-2
openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
+5
-6
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+3
-2
No files found.
executables/nr-ue.c
View file @
209d5f11
...
@@ -465,6 +465,7 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) {
...
@@ -465,6 +465,7 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) {
UE
->
rx_offset
>
0
)
{
UE
->
rx_offset
>
0
)
{
//LOG_I(PHY,"!!!adjusting -1 samples!!!\n");
//LOG_I(PHY,"!!!adjusting -1 samples!!!\n");
UE
->
rx_offset
=
0
;
// reset so that it is not applied falsely in case of SSB being only in every second frame
UE
->
rx_offset
=
0
;
// reset so that it is not applied falsely in case of SSB being only in every second frame
UE
->
max_pos_fil
=
0
;
// reset IIR filter when sample shift is applied
return
-
1
;
return
-
1
;
}
}
...
@@ -472,6 +473,7 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) {
...
@@ -472,6 +473,7 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) {
UE
->
rx_offset
<
UE
->
frame_parms
.
samples_per_frame
)
{
UE
->
rx_offset
<
UE
->
frame_parms
.
samples_per_frame
)
{
//LOG_I(PHY,"!!!adjusting +1 samples!!!\n");
//LOG_I(PHY,"!!!adjusting +1 samples!!!\n");
UE
->
rx_offset
=
0
;
// reset so that it is not applied falsely in case of SSB being only in every second frame
UE
->
rx_offset
=
0
;
// reset so that it is not applied falsely in case of SSB being only in every second frame
UE
->
max_pos_fil
=
0
;
// reset IIR filter when sample shift is applied
return
1
;
return
1
;
}
}
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
View file @
209d5f11
...
@@ -42,7 +42,6 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -42,7 +42,6 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
short
coef
)
short
coef
)
{
{
static
int
max_pos_fil
=
0
;
static
int
count_max_pos_ok
=
0
;
static
int
count_max_pos_ok
=
0
;
static
int
first_time
=
1
;
static
int
first_time
=
1
;
int
max_val
=
0
,
max_pos
=
0
;
int
max_val
=
0
,
max_pos
=
0
;
...
@@ -74,14 +73,14 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -74,14 +73,14 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
// filter position to reduce jitter
// filter position to reduce jitter
if
(
clear
==
1
)
if
(
clear
==
1
)
max_pos_fil
=
max_pos
;
ue
->
max_pos_fil
=
max_pos
;
else
else
max_pos_fil
=
((
max_pos_fil
*
coef
)
+
(
max_pos
*
ncoef
))
>>
15
;
ue
->
max_pos_fil
=
((
ue
->
max_pos_fil
*
coef
)
+
(
max_pos
*
ncoef
))
>>
15
;
// do not filter to have proactive timing adjustment
// do not filter to have proactive timing adjustment
//max_pos_fil = max_pos;
//
ue->
max_pos_fil = max_pos;
int
diff
=
max_pos_fil
-
sync_pos
;
int
diff
=
ue
->
max_pos_fil
-
sync_pos
;
if
(
frame_parms
->
freq_range
==
nr_FR2
)
if
(
frame_parms
->
freq_range
==
nr_FR2
)
sync_offset
=
2
;
sync_offset
=
2
;
...
@@ -129,7 +128,7 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -129,7 +128,7 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
ue
->
rx_offset
,
ue
->
rx_offset
,
clear
,
clear
,
max_pos
,
max_pos
,
max_pos_fil
,
ue
->
max_pos_fil
,
max_val
,
max_val
,
sync_pos
);
sync_pos
);
#endif //DEBUG_PHY
#endif //DEBUG_PHY
...
...
openair1/PHY/defs_nr_UE.h
View file @
209d5f11
...
@@ -921,9 +921,10 @@ typedef struct {
...
@@ -921,9 +921,10 @@ typedef struct {
uint8_t
init_sync_frame
;
uint8_t
init_sync_frame
;
/// temporary offset during cell search prior to MIB decoding
/// temporary offset during cell search prior to MIB decoding
int
ssb_offset
;
int
ssb_offset
;
uint16_t
symbol_offset
;
// offset in terms of symbols for detected ssb in sync
uint16_t
symbol_offset
;
/
// offset in terms of symbols for detected ssb in sync
int
rx_offset
;
/// Timing offset
int
rx_offset
;
/// Timing offset
int
rx_offset_diff
;
/// Timing adjustment for ofdm symbol0 on HW USRP
int
rx_offset_diff
;
/// Timing adjustment for ofdm symbol0 on HW USRP
int
max_pos_fil
;
/// Timing offset IIR filter
int
time_sync_cell
;
int
time_sync_cell
;
/// Timing Advance updates variables
/// Timing Advance updates variables
...
...
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