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
ZhouShuya
OpenXG-RAN
Commits
bc38ec6b
Commit
bc38ec6b
authored
Jan 31, 2020
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated samples per slot as per specs.
gNB runs fine. UE yet to be tested.
parent
0bb1bcc0
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
111 additions
and
69 deletions
+111
-69
executables/nr-gnb.c
executables/nr-gnb.c
+12
-13
executables/nr-ru.c
executables/nr-ru.c
+37
-29
openair1/PHY/INIT/nr_parms.c
openair1/PHY/INIT/nr_parms.c
+29
-6
openair1/PHY/MODULATION/slot_fep_nr.c
openair1/PHY/MODULATION/slot_fep_nr.c
+2
-2
openair1/PHY/NR_TRANSPORT/nr_prach.c
openair1/PHY/NR_TRANSPORT/nr_prach.c
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_prach.c
openair1/PHY/NR_UE_TRANSPORT/nr_prach.c
+8
-8
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+1
-1
openair1/PHY/defs_nr_common.h
openair1/PHY/defs_nr_common.h
+17
-5
openair1/SCHED_NR/nr_ru_procedures.c
openair1/SCHED_NR/nr_ru_procedures.c
+4
-4
No files found.
executables/nr-gnb.c
View file @
bc38ec6b
...
...
@@ -108,8 +108,7 @@ extern openair0_config_t openair0_cfg[MAX_CARDS];
extern
int
transmission_mode
;
uint16_t
sl_ahead
=
6
;
uint16_t
sf_ahead
=
6
;
uint16_t
sf_ahead
=
3
;
//pthread_t main_gNB_thread;
time_stats_t
softmodem_stats_mt
;
// main thread
...
...
@@ -216,7 +215,7 @@ static inline int rxtx(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int frame_t
if
(
oai_exit
)
return
(
-
1
);
// *****************************************
// TX processing for subframe n+s
l
_ahead
// TX processing for subframe n+s
f
_ahead
// run PHY TX procedures the one after the other for all CCs to avoid race conditions
// (may be relaxed in the future for performance reasons)
// *****************************************
...
...
@@ -407,11 +406,11 @@ void gNB_top(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, char *string, struct
if
(
!
oai_exit
)
{
T
(
T_ENB_MASTER_TICK
,
T_INT
(
0
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
slot_rx
));
L1_proc
->
timestamp_tx
=
ru_proc
->
timestamp_rx
+
(
s
l_ahead
*
fp
->
samples_per_slot
);
L1_proc
->
timestamp_tx
=
ru_proc
->
timestamp_rx
+
(
s
f_ahead
*
fp
->
samples_per_subframe
);
L1_proc
->
frame_rx
=
ru_proc
->
frame_rx
;
L1_proc
->
slot_rx
=
ru_proc
->
tti_rx
;
L1_proc
->
frame_tx
=
(
L1_proc
->
slot_rx
>
(
fp
->
slots_per_frame
-
1
-
sl_ahead
))
?
(
L1_proc
->
frame_rx
+
1
)
&
1023
:
L1_proc
->
frame_rx
;
L1_proc
->
slot_tx
=
(
L1_proc
->
slot_rx
+
sl_ahead
)
%
fp
->
slots_per_frame
;
L1_proc
->
frame_tx
=
(
L1_proc
->
slot_rx
>
(
fp
->
slots_per_frame
-
1
-
(
fp
->
slots_per_subframe
*
sf_ahead
)
))
?
(
L1_proc
->
frame_rx
+
1
)
&
1023
:
L1_proc
->
frame_rx
;
L1_proc
->
slot_tx
=
(
L1_proc
->
slot_rx
+
(
fp
->
slots_per_subframe
*
sf_ahead
)
)
%
fp
->
slots_per_frame
;
if
(
rxtx
(
gNB
,
L1_proc
->
frame_rx
,
L1_proc
->
slot_rx
,
L1_proc
->
frame_tx
,
L1_proc
->
slot_tx
,
string
)
<
0
)
LOG_E
(
PHY
,
"gNB %d CC_id %d failed during execution
\n
"
,
gNB
->
Mod_id
,
gNB
->
CC_id
);
...
...
@@ -571,7 +570,7 @@ int wakeup_rxtx(PHY_VARS_gNB *gNB,RU_t *ru) {
abstime
.
tv_sec
+=
1
;
}
// wake up TX for subframe n+s
l
_ahead
// wake up TX for subframe n+s
f
_ahead
// lock the TX mutex and make sure the thread is ready
AssertFatal
((
ret
=
pthread_mutex_timedlock
(
&
L1_proc
->
mutex
,
&
abstime
))
==
0
,
"mutex_lock returns %d
\n
"
,
ret
);
...
...
@@ -587,15 +586,15 @@ int wakeup_rxtx(PHY_VARS_gNB *gNB,RU_t *ru) {
// TS_rx is the last received timestamp (start of 1st slot), TS_tx is the desired
// transmitted timestamp of the next TX slot (first).
// The last (TS_rx mod samples_per_frame) was n*samples_per_tti,
// we want to generate subframe (n+s
l_ahead), so TS_tx = TX_rx+sl
_ahead*samples_per_tti,
// and proc->slot_tx = proc->slot_rx+s
l
_ahead
L1_proc
->
timestamp_tx
=
ru_proc
->
timestamp_rx
+
(
s
l_ahead
*
fp
->
samples_per_slot
);
// we want to generate subframe (n+s
f_ahead), so TS_tx = TX_rx+sf
_ahead*samples_per_tti,
// and proc->slot_tx = proc->slot_rx+s
f
_ahead
L1_proc
->
timestamp_tx
=
ru_proc
->
timestamp_rx
+
(
s
f_ahead
*
fp
->
samples_per_subframe
);
L1_proc
->
frame_rx
=
ru_proc
->
frame_rx
;
L1_proc
->
slot_rx
=
ru_proc
->
tti_rx
;
L1_proc
->
frame_tx
=
(
L1_proc
->
slot_rx
>
(
fp
->
slots_per_frame
-
1
-
sl_ahead
))
?
(
L1_proc
->
frame_rx
+
1
)
&
1023
:
L1_proc
->
frame_rx
;
L1_proc
->
slot_tx
=
(
L1_proc
->
slot_rx
+
sl_ahead
)
%
fp
->
slots_per_frame
;
L1_proc
->
frame_tx
=
(
L1_proc
->
slot_rx
>
(
fp
->
slots_per_frame
-
1
-
(
fp
->
slots_per_subframe
*
sf_ahead
)
))
?
(
L1_proc
->
frame_rx
+
1
)
&
1023
:
L1_proc
->
frame_rx
;
L1_proc
->
slot_tx
=
(
L1_proc
->
slot_rx
+
(
fp
->
slots_per_subframe
*
sf_ahead
)
)
%
fp
->
slots_per_frame
;
LOG_D
(
PHY
,
"wakeupL1: passing parameter IC = %d, RX: %d.%d, TX: %d.%d to L1 s
l_ahead = %d
\n
"
,
L1_proc
->
instance_cnt
,
L1_proc
->
frame_rx
,
L1_proc
->
slot_rx
,
L1_proc
->
frame_tx
,
L1_proc
->
slot_tx
,
sl
_ahead
);
LOG_D
(
PHY
,
"wakeupL1: passing parameter IC = %d, RX: %d.%d, TX: %d.%d to L1 s
f_ahead = %d
\n
"
,
L1_proc
->
instance_cnt
,
L1_proc
->
frame_rx
,
L1_proc
->
slot_rx
,
L1_proc
->
frame_tx
,
L1_proc
->
slot_tx
,
sf
_ahead
);
pthread_mutex_unlock
(
&
L1_proc
->
mutex
);
...
...
executables/nr-ru.c
View file @
bc38ec6b
This diff is collapsed.
Click to expand it.
openair1/PHY/INIT/nr_parms.c
View file @
bc38ec6b
...
...
@@ -221,6 +221,23 @@ void set_scs_parameters (NR_DL_FRAME_PARMS *fp, int mu, uint16_t bw)
}
}
uint32_t
get_samples_per_slot
(
int
slot
,
NR_DL_FRAME_PARMS
*
fp
)
{
if
(
slot
%
(
fp
->
slots_per_subframe
/
2
))
return
fp
->
samples_per_slotN0
;
else
return
fp
->
samples_per_slot0
;
}
uint32_t
get_samples_slot_timestamp
(
int
slot
,
NR_DL_FRAME_PARMS
*
fp
)
{
uint32_t
samp_count
=
0
;
for
(
uint8_t
idx_slot
=
0
;
idx_slot
<
slot
;
idx_slot
++
)
samp_count
+=
fp
->
get_samples_per_slot
(
idx_slot
,
fp
);
return
samp_count
;
}
int
nr_init_frame_parms
(
nfapi_nr_config_request_scf_t
*
cfg
,
NR_DL_FRAME_PARMS
*
fp
)
...
...
@@ -258,9 +275,12 @@ int nr_init_frame_parms(nfapi_nr_config_request_scf_t* cfg,
fp
->
samples_per_subframe_wCP
=
fp
->
ofdm_symbol_size
*
fp
->
symbols_per_slot
*
fp
->
slots_per_subframe
;
fp
->
samples_per_frame_wCP
=
10
*
fp
->
samples_per_subframe_wCP
;
fp
->
samples_per_slot_wCP
=
fp
->
symbols_per_slot
*
fp
->
ofdm_symbol_size
;
fp
->
samples_per_slot
=
fp
->
nb_prefix_samples0
+
((
fp
->
symbols_per_slot
-
1
)
*
fp
->
nb_prefix_samples
)
+
(
fp
->
symbols_per_slot
*
fp
->
ofdm_symbol_size
);
fp
->
samples_per_subframe
=
(
fp
->
samples_per_subframe_wCP
+
(
fp
->
nb_prefix_samples0
*
fp
->
slots_per_subframe
)
+
(
fp
->
nb_prefix_samples
*
fp
->
slots_per_subframe
*
(
fp
->
symbols_per_slot
-
1
)));
fp
->
samples_per_slotN0
=
(
fp
->
nb_prefix_samples
+
fp
->
ofdm_symbol_size
)
*
fp
->
symbols_per_slot
;
fp
->
samples_per_slot0
=
fp
->
nb_prefix_samples0
+
((
fp
->
symbols_per_slot
-
1
)
*
fp
->
nb_prefix_samples
)
+
(
fp
->
symbols_per_slot
*
fp
->
ofdm_symbol_size
);
fp
->
samples_per_subframe
=
(
fp
->
nb_prefix_samples0
+
fp
->
ofdm_symbol_size
)
*
2
+
(
fp
->
nb_prefix_samples
+
fp
->
ofdm_symbol_size
)
*
(
fp
->
symbols_per_slot
*
fp
->
slots_per_subframe
-
2
);
fp
->
get_samples_per_slot
=
&
get_samples_per_slot
;
fp
->
get_samples_slot_timestamp
=
&
get_samples_slot_timestamp
;
fp
->
samples_per_frame
=
10
*
fp
->
samples_per_subframe
;
fp
->
freq_range
=
(
fp
->
dl_CarrierFreq
<
6e9
)
?
nr_FR1
:
nr_FR2
;
...
...
@@ -331,9 +351,12 @@ int nr_init_frame_parms_ue(NR_DL_FRAME_PARMS *fp,
fp
->
samples_per_subframe_wCP
=
fp
->
ofdm_symbol_size
*
fp
->
symbols_per_slot
*
fp
->
slots_per_subframe
;
fp
->
samples_per_frame_wCP
=
10
*
fp
->
samples_per_subframe_wCP
;
fp
->
samples_per_slot_wCP
=
fp
->
symbols_per_slot
*
fp
->
ofdm_symbol_size
;
fp
->
samples_per_slot
=
fp
->
nb_prefix_samples0
+
((
fp
->
symbols_per_slot
-
1
)
*
fp
->
nb_prefix_samples
)
+
(
fp
->
symbols_per_slot
*
fp
->
ofdm_symbol_size
);
fp
->
samples_per_subframe
=
(
fp
->
samples_per_subframe_wCP
+
(
fp
->
nb_prefix_samples0
*
fp
->
slots_per_subframe
)
+
(
fp
->
nb_prefix_samples
*
fp
->
slots_per_subframe
*
(
fp
->
symbols_per_slot
-
1
)));
fp
->
samples_per_slotN0
=
(
fp
->
nb_prefix_samples
+
fp
->
ofdm_symbol_size
)
*
fp
->
symbols_per_slot
;
fp
->
samples_per_slot0
=
fp
->
nb_prefix_samples0
+
((
fp
->
symbols_per_slot
-
1
)
*
fp
->
nb_prefix_samples
)
+
(
fp
->
symbols_per_slot
*
fp
->
ofdm_symbol_size
);
fp
->
samples_per_subframe
=
(
fp
->
nb_prefix_samples0
+
fp
->
ofdm_symbol_size
)
*
2
+
(
fp
->
nb_prefix_samples
+
fp
->
ofdm_symbol_size
)
*
(
fp
->
symbols_per_slot
*
fp
->
slots_per_subframe
-
2
);
fp
->
get_samples_per_slot
=
&
get_samples_per_slot
;
fp
->
get_samples_slot_timestamp
=
&
get_samples_slot_timestamp
;
fp
->
samples_per_frame
=
10
*
fp
->
samples_per_subframe
;
fp
->
freq_range
=
(
fp
->
dl_CarrierFreq
<
6e9
)
?
nr_FR1
:
nr_FR2
;
...
...
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
bc38ec6b
...
...
@@ -109,7 +109,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
if
(
no_prefix
)
{
slot_offset
=
frame_parms
->
ofdm_symbol_size
*
(
frame_parms
->
symbols_per_slot
)
*
(
Ns
);
}
else
{
slot_offset
=
(
frame_parms
->
samples_per_slot
)
*
(
N
s
);
slot_offset
=
frame_parms
->
get_samples_per_slot
(
Ns
,
frame_parm
s
);
}
/*if (l<0 || l>=7-frame_parms->Ncp) {
...
...
@@ -258,7 +258,7 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms,
break
;
}
slot_offset
=
Ns
*
frame_parms
->
samples_per_slot
;
slot_offset
=
frame_parms
->
get_samples_per_slot
(
Ns
,
frame_parms
)
;
if
(
symbol
==
0
)
...
...
openair1/PHY/NR_TRANSPORT/nr_prach.c
View file @
bc38ec6b
...
...
@@ -65,7 +65,7 @@ void rx_nr_prach_ru(RU_t *ru,
AssertFatal
(
ru
->
if_south
==
LOCAL_RF
,
"we shouldn't call this if if_south != LOCAL_RF
\n
"
);
for
(
int
aa
=
0
;
aa
<
ru
->
nb_rx
;
aa
++
)
prach
[
aa
]
=
(
int16_t
*
)
&
ru
->
common
.
rxdata
[
aa
][(
subframe
*
fp
->
samples_per_s
lot
<<
1
)
-
ru
->
N_TA_offset
];
prach
[
aa
]
=
(
int16_t
*
)
&
ru
->
common
.
rxdata
[
aa
][(
subframe
*
fp
->
samples_per_s
ubframe
)
-
ru
->
N_TA_offset
];
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_prach.c
View file @
bc38ec6b
...
...
@@ -104,7 +104,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe,
uint16_t
first_nonzero_root_idx
=
0
;
#if defined(OAI_USRP)
prach_start
=
(
ue
->
rx_offset
+
subframe
*
(
fp
->
samples_per_slot
<<
1
)
-
ue
->
hw_timing_advance
-
ue
->
N_TA_offset
);
prach_start
=
(
ue
->
rx_offset
+
subframe
*
fp
->
samples_per_subframe
-
ue
->
hw_timing_advance
-
ue
->
N_TA_offset
);
#ifdef NR_PRACH_DEBUG
LOG_I
(
PHY
,
"[UE %d] prach_start %d, rx_offset %d, hw_timing_advance %d, N_TA_offset %d
\n
"
,
ue
->
Mod_id
,
prach_start
,
...
...
@@ -114,13 +114,13 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe,
#endif
if
(
prach_start
<
0
)
prach_start
+=
(
(
fp
->
samples_per_slot
<<
1
)
*
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
);
prach_start
+=
(
fp
->
samples_per_subframe
*
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
);
if
(
prach_start
>=
(
(
fp
->
samples_per_slot
<<
1
)
*
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
))
prach_start
-=
(
(
fp
->
samples_per_slot
<<
1
)
*
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
);
if
(
prach_start
>=
(
fp
->
samples_per_subframe
*
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
))
prach_start
-=
(
fp
->
samples_per_subframe
*
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
);
#else //normal case (simulation)
prach_start
=
subframe
*
(
fp
->
samples_per_slot
<<
1
)
-
ue
->
N_TA_offset
;
prach_start
=
subframe
*
fp
->
samples_per_subframe
-
ue
->
N_TA_offset
;
LOG_D
(
PHY
,
"[UE %d] prach_start %d, rx_offset %d, hw_timing_advance %d, N_TA_offset %d
\n
"
,
ue
->
Mod_id
,
prach_start
,
ue
->
rx_offset
,
...
...
@@ -793,10 +793,10 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe,
#if defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)
int
j
;
int
overflow
=
prach_start
+
prach_len
-
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
(
fp
->
samples_per_slot
<<
1
)
;
int
overflow
=
prach_start
+
prach_len
-
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
fp
->
samples_per_subframe
;
LOG_D
(
PHY
,
"prach_start=%d, overflow=%d
\n
"
,
prach_start
,
overflow
);
for
(
i
=
prach_start
,
j
=
0
;
i
<
min
(
(
fp
->
samples_per_slot
<<
1
)
*
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
,
prach_start
+
prach_len
);
i
++
,
j
++
)
{
for
(
i
=
prach_start
,
j
=
0
;
i
<
min
(
fp
->
samples_per_subframe
*
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
,
prach_start
+
prach_len
);
i
++
,
j
++
)
{
((
int16_t
*
)
ue
->
common_vars
.
txdata
[
0
])[
2
*
i
]
=
prach
[
2
*
j
];
((
int16_t
*
)
ue
->
common_vars
.
txdata
[
0
])[
2
*
i
+
1
]
=
prach
[
2
*
j
+
1
];
}
...
...
@@ -820,7 +820,7 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe,
#if defined(PRACH_WRITE_OUTPUT_DEBUG)
LOG_M
(
"prach_txF0.m"
,
"prachtxF0"
,
prachF
,
prach_len
-
Ncp
,
1
,
1
);
LOG_M
(
"prach_tx0.m"
,
"prachtx0"
,
prach
+
(
Ncp
<<
1
),
prach_len
-
Ncp
,
1
,
1
);
LOG_M
(
"txsig.m"
,
"txs"
,(
int16_t
*
)(
&
ue
->
common_vars
.
txdata
[
0
][
prach_start
]),
4
*
fp
->
samples_per_slot
,
1
,
1
);
LOG_M
(
"txsig.m"
,
"txs"
,(
int16_t
*
)(
&
ue
->
common_vars
.
txdata
[
0
][
prach_start
]),
fp
->
samples_per_subframe
,
1
,
1
);
exit
(
-
1
);
#endif
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
bc38ec6b
...
...
@@ -364,7 +364,7 @@ uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE,
timing_advance
=
0
;
#endif
tx_offset
=
slot
*
frame_parms
->
samples_per_slot
-
timing_advance
;
tx_offset
=
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
)
-
timing_advance
;
if
(
tx_offset
<
0
)
tx_offset
+=
frame_parms
->
samples_per_frame
;
...
...
openair1/PHY/defs_nr_common.h
View file @
bc38ec6b
...
...
@@ -223,7 +223,13 @@ typedef struct {
NR_PRACH_CONFIG_INFO
prach_ConfigInfo
;
}
NR_PRACH_CONFIG_COMMON
;
typedef
struct
NR_DL_FRAME_PARMS
{
typedef
struct
NR_DL_FRAME_PARMS
NR_DL_FRAME_PARMS
;
typedef
uint32_t
(
*
get_samples_per_slot_t
)(
int
slot
,
NR_DL_FRAME_PARMS
*
fp
);
typedef
uint32_t
(
*
get_samples_slot_timestamp_t
)(
int
slot
,
NR_DL_FRAME_PARMS
*
fp
);
struct
NR_DL_FRAME_PARMS
{
/// frequency range
nr_frequency_range_e
freq_range
;
// /// Placeholder to replace overlapping fields below
...
...
@@ -270,12 +276,18 @@ typedef struct NR_DL_FRAME_PARMS {
uint16_t
symbols_per_slot
;
/// Number of slots per subframe
uint16_t
slots_per_subframe
;
/// Number of slots per frame
/// Number of slots per frame
uint16_t
slots_per_frame
;
/// Number of samples in a subframe
uint32_t
samples_per_subframe
;
/// Number of samples in a slot
uint32_t
samples_per_slot
;
/// Number of samples in current slot
get_samples_per_slot_t
get_samples_per_slot
;
/// Number of samples before slot
get_samples_slot_timestamp_t
get_samples_slot_timestamp
;
/// Number of samples in 0th and center slot of a subframe
uint32_t
samples_per_slot0
;
/// Number of samples in other slots of the subframe
uint32_t
samples_per_slotN0
;
/// Number of OFDM/SC-FDMA symbols in one subframe (to be modified to account for potential different in UL/DL)
uint16_t
symbols_per_tti
;
/// Number of samples in a radio frame
...
...
@@ -339,7 +351,7 @@ typedef struct NR_DL_FRAME_PARMS {
/// PBCH polar encoder params
t_nrPolar_params
pbch_polar_params
;
}
NR_DL_FRAME_PARMS
;
};
#define KHz (1000UL)
#define MHz (1000*KHz)
...
...
openair1/SCHED_NR/nr_ru_procedures.c
View file @
bc38ec6b
...
...
@@ -66,7 +66,7 @@ void nr_feptx0(RU_t *ru,int tti_tx,int first_symbol, int num_symbols, int aa) {
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM+(first_symbol!=0?1:0) , 1 );
slot_offset
=
slot
*
fp
->
samples_per_slot
;
slot_offset
=
fp
->
get_samples_slot_timestamp
(
slot
,
fp
)
;
slot_offsetF
=
first_symbol
*
fp
->
ofdm_symbol_size
;
...
...
@@ -370,7 +370,7 @@ void nr_feptx_ofdm(RU_t *ru,int frame_tx,int tti_tx) {
int
slot_sizeF
=
(
fp
->
ofdm_symbol_size
)
*
((
cyclic_prefix_type
==
1
)
?
12
:
14
);
int
slot
=
tti_tx
;
int
*
txdata
=
&
ru
->
common
.
txdata
[
aa
][
slot
*
fp
->
samples_per_slot
];
int
*
txdata
=
&
ru
->
common
.
txdata
[
aa
][
fp
->
get_samples_slot_timestamp
(
slot
,
fp
)
];
if
(
nr_slot_select
(
cfg
,
frame_tx
,
slot
)
==
NR_UPLINK_SLOT
)
return
;
...
...
@@ -386,8 +386,8 @@ void nr_feptx_ofdm(RU_t *ru,int frame_tx,int tti_tx) {
stop_meas
(
&
ru
->
ofdm_mod_stats
);
LOG_D
(
PHY
,
"feptx_ofdm (TXPATH): frame %d, slot %d: txp (time %p) %d dB, txp (freq) %d dB
\n
"
,
frame_tx
,
slot
,
txdata
,
dB_fixed
(
signal_energy
((
int32_t
*
)
txdata
,
fp
->
samples_per_slot
)),
dB_fixed
(
signal_energy_nodc
(
ru
->
common
.
txdataF_BF
[
aa
],
2
*
slot_sizeF
)));
frame_tx
,
slot
,
txdata
,
dB_fixed
(
signal_energy
((
int32_t
*
)
txdata
,
fp
->
get_samples_per_slot
(
slot
,
fp
))),
dB_fixed
(
signal_energy_nodc
(
ru
->
common
.
txdataF_BF
[
aa
],
2
*
slot_sizeF
)));
}
...
...
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