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
canghaiwuhen
OpenXG-RAN
Commits
a8301b9a
Commit
a8301b9a
authored
Feb 27, 2020
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More fixes for FR2
parent
f59f8032
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 @
a8301b9a
...
@@ -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 @
a8301b9a
...
@@ -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 @
a8301b9a
...
@@ -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