Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
c0b8ea95
Commit
c0b8ea95
authored
Feb 27, 2020
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More fixes for FR2
parent
d2cd1250
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
12 deletions
+29
-12
executables/nr-ue.c
executables/nr-ue.c
+24
-11
openair1/PHY/MODULATION/slot_fep_nr.c
openair1/PHY/MODULATION/slot_fep_nr.c
+1
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+4
-0
No files found.
executables/nr-ue.c
View file @
c0b8ea95
...
@@ -634,6 +634,22 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) {
...
@@ -634,6 +634,22 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) {
return
0
;
return
0
;
}
}
inline
int
get_firstSymSamp
(
uint16_t
slot
,
NR_DL_FRAME_PARMS
*
fp
)
{
if
(
fp
->
numerology_index
==
0
)
return
fp
->
nb_prefix_samples0
+
fp
->
ofdm_symbol_size
;
int
num_samples
=
(
slot
%
(
fp
->
slots_per_subframe
/
2
))
?
fp
->
nb_prefix_samples
:
fp
->
nb_prefix_samples0
;
num_samples
+=
fp
->
ofdm_symbol_size
;
return
num_samples
;
}
inline
int
get_readBlockSize
(
uint16_t
slot
,
NR_DL_FRAME_PARMS
*
fp
)
{
int
rem_samples
=
fp
->
get_samples_per_slot
(
slot
,
fp
)
-
get_firstSymSamp
(
slot
,
fp
);
int
next_slot_first_symbol
=
0
;
if
(
slot
<
(
fp
->
slots_per_frame
-
1
))
next_slot_first_symbol
=
get_firstSymSamp
(
slot
+
1
,
fp
);
return
rem_samples
+
next_slot_first_symbol
;
}
void
*
UE_thread
(
void
*
arg
)
{
void
*
UE_thread
(
void
*
arg
)
{
//this thread should be over the processing thread to keep in real time
//this thread should be over the processing thread to keep in real time
PHY_VARS_NR_UE
*
UE
=
(
PHY_VARS_NR_UE
*
)
arg
;
PHY_VARS_NR_UE
*
UE
=
(
PHY_VARS_NR_UE
*
)
arg
;
...
@@ -743,9 +759,9 @@ void *UE_thread(void *arg) {
...
@@ -743,9 +759,9 @@ void *UE_thread(void *arg) {
}*/
}*/
#endif
#endif
int
firstSymSamp
=
get_firstSymSamp
(
slot_nr
,
&
UE
->
frame_parms
);
for
(
int
i
=
0
;
i
<
UE
->
frame_parms
.
nb_antennas_rx
;
i
++
)
for
(
int
i
=
0
;
i
<
UE
->
frame_parms
.
nb_antennas_rx
;
i
++
)
rxp
[
i
]
=
(
void
*
)
&
UE
->
common_vars
.
rxdata
[
i
][
UE
->
frame_parms
.
ofdm_symbol_size
+
rxp
[
i
]
=
(
void
*
)
&
UE
->
common_vars
.
rxdata
[
i
][
firstSymSamp
+
UE
->
frame_parms
.
nb_prefix_samples0
+
UE
->
frame_parms
.
get_samples_slot_timestamp
(
slot_nr
,
&
UE
->
frame_parms
,
0
)];
get_samples_slot_timestamp
(
slot_nr
,
&
UE
->
frame_parms
,
0
)];
for
(
int
i
=
0
;
i
<
UE
->
frame_parms
.
nb_antennas_tx
;
i
++
)
for
(
int
i
=
0
;
i
<
UE
->
frame_parms
.
nb_antennas_tx
;
i
++
)
...
@@ -755,13 +771,11 @@ void *UE_thread(void *arg) {
...
@@ -755,13 +771,11 @@ void *UE_thread(void *arg) {
int
readBlockSize
,
writeBlockSize
;
int
readBlockSize
,
writeBlockSize
;
if
(
slot_nr
<
(
nb_slot_frame
-
1
))
{
if
(
slot_nr
<
(
nb_slot_frame
-
1
))
{
readBlockSize
=
UE
->
frame_parms
.
get_samples_per_slot
(
slot_nr
,
&
UE
->
frame_parms
);
readBlockSize
=
get_readBlockSize
(
slot_nr
,
&
UE
->
frame_parms
);
writeBlockSize
=
UE
->
frame_parms
.
get_samples_per_slot
(
slot_nr
,
&
UE
->
frame_parms
);
writeBlockSize
=
UE
->
frame_parms
.
get_samples_per_slot
(
slot_nr
,
&
UE
->
frame_parms
);
}
else
{
}
else
{
UE
->
rx_offset_diff
=
computeSamplesShift
(
UE
);
UE
->
rx_offset_diff
=
computeSamplesShift
(
UE
);
readBlockSize
=
UE
->
frame_parms
.
get_samples_per_slot
(
slot_nr
,
&
UE
->
frame_parms
)
-
readBlockSize
=
get_readBlockSize
(
slot_nr
,
&
UE
->
frame_parms
)
-
UE
->
frame_parms
.
ofdm_symbol_size
-
UE
->
frame_parms
.
nb_prefix_samples0
-
UE
->
rx_offset_diff
;
UE
->
rx_offset_diff
;
writeBlockSize
=
UE
->
frame_parms
.
get_samples_per_slot
(
slot_nr
,
&
UE
->
frame_parms
)
-
writeBlockSize
=
UE
->
frame_parms
.
get_samples_per_slot
(
slot_nr
,
&
UE
->
frame_parms
)
-
UE
->
rx_offset_diff
;
UE
->
rx_offset_diff
;
...
@@ -778,8 +792,7 @@ void *UE_thread(void *arg) {
...
@@ -778,8 +792,7 @@ void *UE_thread(void *arg) {
UE
->
rfdevice
.
trx_write_func
(
&
UE
->
rfdevice
,
UE
->
rfdevice
.
trx_write_func
(
&
UE
->
rfdevice
,
timestamp
+
timestamp
+
UE
->
frame_parms
.
get_samples_slot_timestamp
(
slot_nr
,
UE
->
frame_parms
.
get_samples_slot_timestamp
(
slot_nr
,
&
UE
->
frame_parms
,
DURATION_RX_TO_TX
)
-
&
UE
->
frame_parms
,
DURATION_RX_TO_TX
)
-
firstSymSamp
-
UE
->
frame_parms
.
ofdm_symbol_size
-
UE
->
frame_parms
.
nb_prefix_samples0
-
openair0_cfg
[
0
].
tx_sample_advance
,
openair0_cfg
[
0
].
tx_sample_advance
,
txp
,
txp
,
writeBlockSize
,
writeBlockSize
,
...
@@ -788,7 +801,7 @@ void *UE_thread(void *arg) {
...
@@ -788,7 +801,7 @@ void *UE_thread(void *arg) {
if
(
slot_nr
==
(
nb_slot_frame
-
1
))
{
if
(
slot_nr
==
(
nb_slot_frame
-
1
))
{
// read in first symbol of next frame and adjust for timing drift
// read in first symbol of next frame and adjust for timing drift
int
first_symbols
=
writeBlockSize
-
readBlockSize
;
int
first_symbols
=
UE
->
frame_parms
.
ofdm_symbol_size
+
UE
->
frame_parms
.
nb_prefix_samples0
;
// first symbol of every frames
if
(
first_symbols
>
0
)
if
(
first_symbols
>
0
)
AssertFatal
(
first_symbols
==
AssertFatal
(
first_symbols
==
...
@@ -803,8 +816,8 @@ void *UE_thread(void *arg) {
...
@@ -803,8 +816,8 @@ void *UE_thread(void *arg) {
curMsg
->
proc
.
timestamp_tx
=
timestamp
+
curMsg
->
proc
.
timestamp_tx
=
timestamp
+
UE
->
frame_parms
.
get_samples_slot_timestamp
(
slot_nr
,
UE
->
frame_parms
.
get_samples_slot_timestamp
(
slot_nr
,
&
UE
->
frame_parms
,
DURATION_RX_TO_TX
)
-
&
UE
->
frame_parms
,
DURATION_RX_TO_TX
)
-
firstSymSamp
;
UE
->
frame_parms
.
ofdm_symbol_size
-
UE
->
frame_parms
.
nb_prefix_samples0
;
notifiedFIFO_elt_t
*
res
;
notifiedFIFO_elt_t
*
res
;
while
(
nbSlotProcessing
>=
RX_NB_TH
)
{
while
(
nbSlotProcessing
>=
RX_NB_TH
)
{
...
...
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
c0b8ea95
...
@@ -139,7 +139,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
...
@@ -139,7 +139,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
abs_symbol
=
Ns
*
frame_parms
->
symbols_per_slot
+
symbol
;
abs_symbol
=
Ns
*
frame_parms
->
symbols_per_slot
+
symbol
;
for
(
int
idx_symb
=
Ns
*
frame_parms
->
symbols_per_slot
;
idx_symb
<
abs_symbol
;
idx_symb
++
)
for
(
int
idx_symb
=
Ns
*
frame_parms
->
symbols_per_slot
;
idx_symb
<
abs_symbol
;
idx_symb
++
)
rx_offset
+=
(
abs_symbol
%
(
0x7
<<
frame_parms
->
numerology_index
))
?
nb_prefix_samples
:
nb_prefix_samples0
;
rx_offset
+=
(
idx_symb
%
(
0x7
<<
frame_parms
->
numerology_index
))
?
nb_prefix_samples
:
nb_prefix_samples0
;
rx_offset
+=
frame_parms
->
ofdm_symbol_size
*
symbol
;
rx_offset
+=
frame_parms
->
ofdm_symbol_size
*
symbol
;
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
c0b8ea95
...
@@ -1409,6 +1409,8 @@ void nr_process_timing_advance(module_id_t Mod_id, uint8_t CC_id, uint8_t ta_com
...
@@ -1409,6 +1409,8 @@ void nr_process_timing_advance(module_id_t Mod_id, uint8_t CC_id, uint8_t ta_com
// scale the 16 factor in N_TA calculation in 38.213 section 4.2 according to the used FFT size
// scale the 16 factor in N_TA calculation in 38.213 section 4.2 according to the used FFT size
switch
(
bwp_ul_NB_RB
)
{
switch
(
bwp_ul_NB_RB
)
{
case
32
:
bw_scaling
=
4
;
break
;
case
66
:
bw_scaling
=
8
;
break
;
case
106
:
bw_scaling
=
16
;
break
;
case
106
:
bw_scaling
=
16
;
break
;
case
217
:
bw_scaling
=
32
;
break
;
case
217
:
bw_scaling
=
32
;
break
;
case
245
:
bw_scaling
=
32
;
break
;
case
245
:
bw_scaling
=
32
;
break
;
...
@@ -3782,6 +3784,8 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
...
@@ -3782,6 +3784,8 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
// scale the 16 factor in N_TA calculation in 38.213 section 4.2 according to the used FFT size
// scale the 16 factor in N_TA calculation in 38.213 section 4.2 according to the used FFT size
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
32
:
bw_scaling
=
4
;
break
;
case
66
:
bw_scaling
=
8
;
break
;
case
106
:
bw_scaling
=
16
;
break
;
case
106
:
bw_scaling
=
16
;
break
;
case
217
:
bw_scaling
=
32
;
break
;
case
217
:
bw_scaling
=
32
;
break
;
case
245
:
bw_scaling
=
32
;
break
;
case
245
:
bw_scaling
=
32
;
break
;
...
...
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