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
alex037yang
OpenXG-RAN
Commits
6be2d8f0
Commit
6be2d8f0
authored
Nov 18, 2019
by
Wang Tsu-Han
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
using switch buffer for txdataF in L1
parent
d252696b
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
43 additions
and
34 deletions
+43
-34
executables/nr-gnb.c
executables/nr-gnb.c
+1
-1
executables/nr-ru.c
executables/nr-ru.c
+12
-3
openair1/PHY/MODULATION/ofdm_mod.c
openair1/PHY/MODULATION/ofdm_mod.c
+2
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+8
-8
openair1/PHY/NR_TRANSPORT/nr_tbs_tools.c
openair1/PHY/NR_TRANSPORT/nr_tbs_tools.c
+0
-1
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
+1
-1
openair1/SCHED_NR/nr_ru_procedures.c
openair1/SCHED_NR/nr_ru_procedures.c
+10
-11
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+7
-7
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
+1
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf
+1
-1
No files found.
executables/nr-gnb.c
View file @
6be2d8f0
...
@@ -425,7 +425,7 @@ int wakeup_txfh(PHY_VARS_gNB *gNB,gNB_L1_rxtx_proc_t *proc,int frame_tx,int slot
...
@@ -425,7 +425,7 @@ int wakeup_txfh(PHY_VARS_gNB *gNB,gNB_L1_rxtx_proc_t *proc,int frame_tx,int slot
// note this should depend on the numerology used by the TX L1 thread, set here for 500us slot time
// note this should depend on the numerology used by the TX L1 thread, set here for 500us slot time
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL
,
1
);
waitret
=
timedwait_on_condition
(
&
proc
->
mutex_RUs_tx
,
&
proc
->
cond_RUs
,
&
proc
->
instance_cnt_RUs
,
"wakeup_txfh"
,
1000000
);
waitret
=
wait_on_condition
(
&
proc
->
mutex_RUs_tx
,
&
proc
->
cond_RUs
,
&
proc
->
instance_cnt_RUs
,
"wakeup_txfh"
);
AssertFatal
(
release_thread
(
&
proc
->
mutex_RUs_tx
,
&
proc
->
instance_cnt_RUs
,
"wakeup_txfh"
)
==
0
,
"error releaseing gNB lock on RUs
\n
"
);
AssertFatal
(
release_thread
(
&
proc
->
mutex_RUs_tx
,
&
proc
->
instance_cnt_RUs
,
"wakeup_txfh"
)
==
0
,
"error releaseing gNB lock on RUs
\n
"
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL
,
0
);
...
...
executables/nr-ru.c
View file @
6be2d8f0
...
@@ -1291,8 +1291,17 @@ static void *ru_thread_tx( void *param ) {
...
@@ -1291,8 +1291,17 @@ static void *ru_thread_tx( void *param ) {
}
else
{
}
else
{
if
(
proc
->
frame_tx
==
print_frame
)
{
if
(
proc
->
frame_tx
==
print_frame
)
{
for
(
i
=
0
;
i
<
ru
->
nb_tx
;
i
++
)
{
for
(
i
=
0
;
i
<
ru
->
nb_tx
;
i
++
)
{
sprintf
(
filename
,
"tx%ddataF_frame%d_sl%d.m"
,
i
,
print_frame
,
proc
->
tti_tx
);
LOG_M
(
filename
,
"txdataF_frame"
,
&
ru
->
common
.
txdataF_BF
[
i
][
0
],
fp
->
samples_per_subframe_wCP
,
1
,
1
);
if
(
proc
->
tti_tx
==
0
)
{
sprintf
(
filename
,
"gNBdataF_frame%d_sl%d.m"
,
print_frame
,
proc
->
tti_tx
);
LOG_M
(
filename
,
"txdataF_frame"
,
&
ru
->
gNB_list
[
0
]
->
common_vars
.
txdataF
[
i
][
0
],
fp
->
samples_per_frame_wCP
,
1
,
1
);
sprintf
(
filename
,
"tx%ddataF_frame%d_sl%d.m"
,
i
,
print_frame
,
proc
->
tti_tx
);
LOG_M
(
filename
,
"txdataF_frame"
,
&
ru
->
common
.
txdataF
[
i
][
0
],
fp
->
samples_per_frame_wCP
,
1
,
1
);
sprintf
(
filename
,
"tx%ddataF_BF_frame%d_sl%d.m"
,
i
,
print_frame
,
proc
->
tti_tx
);
LOG_M
(
filename
,
"txdataF_BF_frame"
,
&
ru
->
common
.
txdataF_BF
[
i
][
0
],
fp
->
samples_per_subframe_wCP
,
1
,
1
);
}
if
(
proc
->
tti_tx
==
9
)
{
if
(
proc
->
tti_tx
==
9
)
{
sprintf
(
filename
,
"tx%ddata_frame%d.m"
,
i
,
print_frame
);
sprintf
(
filename
,
"tx%ddata_frame%d.m"
,
i
,
print_frame
);
...
@@ -1350,9 +1359,9 @@ static void *ru_thread_tx( void *param ) {
...
@@ -1350,9 +1359,9 @@ static void *ru_thread_tx( void *param ) {
AssertFatal
(
pthread_cond_signal
(
&
L1_proc
->
cond_RUs
)
==
0
,
AssertFatal
(
pthread_cond_signal
(
&
L1_proc
->
cond_RUs
)
==
0
,
"ERROR pthread_cond_signal for gNB_L1_thread
\n
"
);
"ERROR pthread_cond_signal for gNB_L1_thread
\n
"
);
//} //else AssertFatal(1==0,"gNB TX thread is not ready\n");
//} //else AssertFatal(1==0,"gNB TX thread is not ready\n");
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_UE
,
L1_proc
->
instance_cnt_RUs
);
ret
=
pthread_mutex_unlock
(
&
L1_proc
->
mutex_RUs_tx
);
ret
=
pthread_mutex_unlock
(
&
L1_proc
->
mutex_RUs_tx
);
AssertFatal
(
ret
==
0
,
"mutex_unlock returns %d
\n
"
,
ret
);
AssertFatal
(
ret
==
0
,
"mutex_unlock returns %d
\n
"
,
ret
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_UE
,
L1_proc
->
instance_cnt_RUs
);
}
}
}
}
}
}
...
...
openair1/PHY/MODULATION/ofdm_mod.c
View file @
6be2d8f0
...
@@ -86,6 +86,8 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input
...
@@ -86,6 +86,8 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input
)
)
{
{
if
(
nb_symbols
==
0
)
return
;
short
temp
[
4096
*
4
]
__attribute__
((
aligned
(
32
)));
short
temp
[
4096
*
4
]
__attribute__
((
aligned
(
32
)));
unsigned
short
i
,
j
;
unsigned
short
i
,
j
;
short
k
;
short
k
;
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
6be2d8f0
...
@@ -225,12 +225,12 @@ ap, Wt[0], Wt[1], Wf[0], Wf[1], delta, l_prime[0], l0, dmrs_symbol);
...
@@ -225,12 +225,12 @@ ap, Wt[0], Wt[1], Wf[0], Wf[1], delta, l_prime[0], l0, dmrs_symbol);
k
=
start_sc
;
k
=
start_sc
;
for
(
int
i
=
0
;
i
<
rel15
->
n_prb
*
NR_NB_SC_PER_RB
;
i
++
)
{
for
(
int
i
=
0
;
i
<
rel15
->
n_prb
*
NR_NB_SC_PER_RB
;
i
++
)
{
if
((
l
==
dmrs_symbol
)
&&
(
k
==
((
start_sc
+
get_dmrs_freq_idx
(
n
,
k_prime
,
delta
,
dmrs_type
))
%
(
frame_parms
->
ofdm_symbol_size
))))
{
if
((
l
==
dmrs_symbol
)
&&
(
k
==
((
start_sc
+
get_dmrs_freq_idx
(
n
,
k_prime
,
delta
,
dmrs_type
))
%
(
frame_parms
->
ofdm_symbol_size
))))
{
((
int16_t
*
)
txdataF
[
ap
])[(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
]
=
(
Wt
[
l_prime
[
0
]]
*
Wf
[
k_prime
]
*
amp
*
mod_dmrs
[
dmrs_idx
<<
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
ap
])[(
(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
((
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
)
]
=
(
Wt
[
l_prime
[
0
]]
*
Wf
[
k_prime
]
*
amp
*
mod_dmrs
[
dmrs_idx
<<
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
]
=
(
Wt
[
l_prime
[
0
]]
*
Wf
[
k_prime
]
*
amp
*
mod_dmrs
[(
dmrs_idx
<<
1
)
+
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
+
((
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
)
]
=
(
Wt
[
l_prime
[
0
]]
*
Wf
[
k_prime
]
*
amp
*
mod_dmrs
[(
dmrs_idx
<<
1
)
+
1
])
>>
15
;
#ifdef DEBUG_DLSCH_MAPPING
#ifdef DEBUG_DLSCH_MAPPING
printf
(
"dmrs_idx %d
\t
l %d
\t
k %d
\t
k_prime %d
\t
n %d
\t
txdataF: %d %d
\n
"
,
printf
(
"dmrs_idx %d
\t
l %d
\t
k %d
\t
k_prime %d
\t
n %d
\t
txdataF: %d %d
\n
"
,
dmrs_idx
,
l
,
k
,
k_prime
,
n
,
((
int16_t
*
)
txdataF
[
ap
])[(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
],
dmrs_idx
,
l
,
k
,
k_prime
,
n
,
((
int16_t
*
)
txdataF
[
ap
])[(
(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
((
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
)
],
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
]);
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
+
((
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
)
]);
#endif
#endif
dmrs_idx
++
;
dmrs_idx
++
;
k_prime
++
;
k_prime
++
;
...
@@ -240,12 +240,12 @@ dmrs_idx, l, k, k_prime, n, ((int16_t*)txdataF[ap])[(l*frame_parms->ofdm_symbol_
...
@@ -240,12 +240,12 @@ dmrs_idx, l, k, k_prime, n, ((int16_t*)txdataF[ap])[(l*frame_parms->ofdm_symbol_
else
{
else
{
((
int16_t
*
)
txdataF
[
ap
])[(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
]
=
(
amp
*
tx_layers
[
ap
][
m
<<
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
ap
])[(
(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
((
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
)
]
=
(
amp
*
tx_layers
[
ap
][
m
<<
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
]
=
(
amp
*
tx_layers
[
ap
][(
m
<<
1
)
+
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
+
((
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
)
]
=
(
amp
*
tx_layers
[
ap
][(
m
<<
1
)
+
1
])
>>
15
;
#ifdef DEBUG_DLSCH_MAPPING
#ifdef DEBUG_DLSCH_MAPPING
printf
(
"m %d
\t
l %d
\t
k %d
\t
txdataF: %d %d
\n
"
,
printf
(
"m %d
\t
l %d
\t
k %d
\t
txdataF: %d %d
\n
"
,
m
,
l
,
k
,
((
int16_t
*
)
txdataF
[
ap
])[(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
],
m
,
l
,
k
,
((
int16_t
*
)
txdataF
[
ap
])[(
(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
((
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
)
],
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
]);
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
+
((
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
)
]);
#endif
#endif
m
++
;
m
++
;
}
}
...
...
openair1/PHY/NR_TRANSPORT/nr_tbs_tools.c
View file @
6be2d8f0
...
@@ -168,7 +168,6 @@ void nr_get_tbs(nfapi_nr_dl_config_dlsch_pdu *dlsch_pdu,
...
@@ -168,7 +168,6 @@ void nr_get_tbs(nfapi_nr_dl_config_dlsch_pdu *dlsch_pdu,
dlsch_rel15
->
nb_re_dmrs
=
N_PRB_DMRS
;
dlsch_rel15
->
nb_re_dmrs
=
N_PRB_DMRS
;
dlsch_rel15
->
nb_mod_symbols
=
N_RE_prime
*
dlsch_rel15
->
n_prb
*
dlsch_rel15
->
nb_codewords
;
dlsch_rel15
->
nb_mod_symbols
=
N_RE_prime
*
dlsch_rel15
->
n_prb
*
dlsch_rel15
->
nb_codewords
;
LOG_D
(
MAC
,
"TBS %d : N_RE %d N_PRB_DMRS %d N_sh_symb %d N_PRB_oh %d Ninfo %d Ninfo_prime %d R %d Qm %d table %d scale %d nb_symbols %d
\n
"
,
LOG_D
(
MAC
,
"TBS %d : N_RE %d N_PRB_DMRS %d N_sh_symb %d N_PRB_oh %d Ninfo %d Ninfo_prime %d R %d Qm %d table %d scale %d nb_symbols %d
\n
"
,
TBS
,
N_RE
,
N_PRB_DMRS
,
N_sh_symb
,
N_PRB_oh
,
Ninfo
,
Ninfo_prime
,
R
,
Qm
,
table_idx
,
scale
,
dlsch_rel15
->
nb_mod_symbols
);
TBS
,
N_RE
,
N_PRB_DMRS
,
N_sh_symb
,
N_PRB_oh
,
Ninfo
,
Ninfo_prime
,
R
,
Qm
,
table_idx
,
scale
,
dlsch_rel15
->
nb_mod_symbols
);
}
}
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
View file @
6be2d8f0
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
//#define DEBUG_ULSCH_DECODING
//#define DEBUG_ULSCH_DECODING
#define OAI_UL_LDPC_MAX_NUM_LLR 27000//26112 // NR_LDPC_NCOL_BG1*NR_LDPC_ZMAX = 68*384
#define OAI_UL_LDPC_MAX_NUM_LLR 27000//26112 // NR_LDPC_NCOL_BG1*NR_LDPC_ZMAX = 68*384
#define PRINT_CRC_CHECK
//
#define PRINT_CRC_CHECK
static
uint64_t
nb_total_decod
=
0
;
static
uint64_t
nb_total_decod
=
0
;
static
uint64_t
nb_error_decod
=
0
;
static
uint64_t
nb_error_decod
=
0
;
...
...
openair1/SCHED_NR/nr_ru_procedures.c
View file @
6be2d8f0
...
@@ -121,11 +121,15 @@ void nr_feptx_ofdm_2thread(RU_t *ru,int frame_tx,int tti_tx) {
...
@@ -121,11 +121,15 @@ void nr_feptx_ofdm_2thread(RU_t *ru,int frame_tx,int tti_tx) {
int
slot
=
tti_tx
;
int
slot
=
tti_tx
;
int
i
=
0
;
int
i
=
0
;
int
j
=
0
;
int
j
=
0
;
int
aa
=
0
;
int
ret
=
0
;
int
ret
=
0
;
int
nb_antenna_ports
=
4
;
int
nb_antenna_ports
=
fp
->
N_ssb
;
int
ofdm_mask_full
=
(
1
<<
(
ru
->
nb_tx
*
2
))
-
1
;
int
ofdm_mask_full
=
(
1
<<
(
ru
->
nb_tx
*
2
))
-
1
;
start_meas
(
&
ru
->
ofdm_total_stats
);
if
(
nr_slot_select
(
cfg
,
slot
)
==
SF_UL
)
return
;
for
(
aa
=
0
;
aa
<
fp
->
Lmax
;
aa
++
)
{
memset
(
ru
->
common
.
txdataF
[
aa
],
0
,
fp
->
samples_per_slot_wCP
*
sizeof
(
int32_t
));
}
for
(
j
=
0
;
j
<
fp
->
symbols_per_slot
;
++
j
){
for
(
j
=
0
;
j
<
fp
->
symbols_per_slot
;
++
j
){
...
@@ -134,21 +138,17 @@ void nr_feptx_ofdm_2thread(RU_t *ru,int frame_tx,int tti_tx) {
...
@@ -134,21 +138,17 @@ void nr_feptx_ofdm_2thread(RU_t *ru,int frame_tx,int tti_tx) {
if
(
ru
->
num_gNB
==
1
){
if
(
ru
->
num_gNB
==
1
){
gNB
=
ru
->
gNB_list
[
0
];
gNB
=
ru
->
gNB_list
[
0
];
cfg
=
&
gNB
->
gNB_config
;
cfg
=
&
gNB
->
gNB_config
;
if
(
nr_slot_select
(
cfg
,
tti_tx
)
==
SF_UL
)
return
;
for
(
i
=
0
;
i
<
nb_antenna_ports
;
++
i
){
for
(
i
=
0
;
i
<
nb_antenna_ports
;
++
i
){
memcpy
((
void
*
)
&
ru
->
common
.
txdataF
[
i
][
j
],
memcpy
((
void
*
)
&
ru
->
common
.
txdataF
[
i
][
j
*
fp
->
ofdm_symbol_size
],
(
void
*
)
&
gNB
->
common_vars
.
txdataF
[
i
][
j
],
(
void
*
)
&
gNB
->
common_vars
.
txdataF
[
i
][
j
*
fp
->
ofdm_symbol_size
+
((
tti_tx
%
2
)
*
fp
->
samples_per_slot_wCP
)
],
fp
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
fp
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
}
}
}
//num_gNB == 1
}
//num_gNB == 1
//printf("~~~~~~~~~~~memery copy index: nb_antenna_ports = %d, samples_per_slot_wCP = %d\n", nb_antenna_ports, fp->samples_per_slot_wCP);
stop_meas
(
&
ru
->
txdataF_copy_stats
);
stop_meas
(
&
ru
->
txdataF_copy_stats
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC
+
j
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_PREC
+
j
,
0
);
if
(
nr_slot_select
(
cfg
,
slot
)
==
SF_UL
)
return
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM
,
1
);
if
(
nr_slot_select
(
cfg
,
slot
)
==
SF_DL
)
{
if
(
nr_slot_select
(
cfg
,
slot
)
==
SF_DL
)
{
...
@@ -168,7 +168,6 @@ void nr_feptx_ofdm_2thread(RU_t *ru,int frame_tx,int tti_tx) {
...
@@ -168,7 +168,6 @@ void nr_feptx_ofdm_2thread(RU_t *ru,int frame_tx,int tti_tx) {
feptx
[
i
].
instance_cnt_feptx
=
0
;
feptx
[
i
].
instance_cnt_feptx
=
0
;
AssertFatal
(
pthread_cond_signal
(
&
feptx
[
i
].
cond_feptx
)
==
0
,
"ERROR pthread_cond_signal for feptx_ofdm_thread
\n
"
);
AssertFatal
(
pthread_cond_signal
(
&
feptx
[
i
].
cond_feptx
)
==
0
,
"ERROR pthread_cond_signal for feptx_ofdm_thread
\n
"
);
AssertFatal
((
ret
=
pthread_mutex_unlock
(
&
feptx
[
i
].
mutex_feptx
))
==
0
,
"mutex_lock returns %d
\n
"
,
ret
);
AssertFatal
((
ret
=
pthread_mutex_unlock
(
&
feptx
[
i
].
mutex_feptx
))
==
0
,
"mutex_lock returns %d
\n
"
,
ret
);
//printf("~~~~~~~~~~~~waking up thread %d with physical antenna %d, slot %d, symbol %d, total logical antenna port %d \n", feptx[i].index, feptx[i].aa, feptx[i].slot, feptx[i].symbol, feptx[i].nb_antenna_ports);
}
}
else
{
else
{
while
(
feptx
[
i
+
ru
->
nb_tx
].
instance_cnt_feptx
!=
-
1
){
while
(
feptx
[
i
+
ru
->
nb_tx
].
instance_cnt_feptx
!=
-
1
){
...
@@ -244,7 +243,7 @@ static void *nr_feptx_thread(void *param) {
...
@@ -244,7 +243,7 @@ static void *nr_feptx_thread(void *param) {
fp
,
fp
,
bw
,
bw
,
slot
,
slot
,
l
+
start
,
l
,
aa
,
aa
,
nb_antenna_ports
);
nb_antenna_ports
);
stop_meas
(
&
ru
->
precoding_stats
);
stop_meas
(
&
ru
->
precoding_stats
);
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
6be2d8f0
...
@@ -125,18 +125,18 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int slot) {
...
@@ -125,18 +125,18 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int slot) {
// it is supposed that each logical antenna port correspont to a different beam so each SSB is stored into its own index of txdataF
// it is supposed that each logical antenna port correspont to a different beam so each SSB is stored into its own index of txdataF
LOG_D
(
PHY
,
"SS TX: frame %d, slot %d, start_symbol %d
\n
"
,
frame
,
slot
,
ssb_start_symbol
);
LOG_D
(
PHY
,
"SS TX: frame %d, slot %d, start_symbol %d
\n
"
,
frame
,
slot
,
ssb_start_symbol
);
nr_generate_pss
(
gNB
->
d_pss
,
txdataF
[
ssb_index
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_pss
(
gNB
->
d_pss
,
&
txdataF
[
ssb_index
][((
slot
%
2
)
*
fp
->
samples_per_slot_wCP
)
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_sss
(
gNB
->
d_sss
,
txdataF
[
ssb_index
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_sss
(
gNB
->
d_sss
,
&
txdataF
[
ssb_index
][((
slot
%
2
)
*
fp
->
samples_per_slot_wCP
)
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
if
(
fp
->
Lmax
==
4
)
if
(
fp
->
Lmax
==
4
)
nr_generate_pbch_dmrs
(
gNB
->
nr_gold_pbch_dmrs
[
n_hf
][
ssb_index
],
txdataF
[
ssb_index
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_pbch_dmrs
(
gNB
->
nr_gold_pbch_dmrs
[
n_hf
][
ssb_index
],
&
txdataF
[
ssb_index
][((
slot
%
2
)
*
fp
->
samples_per_slot_wCP
)
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
else
else
nr_generate_pbch_dmrs
(
gNB
->
nr_gold_pbch_dmrs
[
0
][
ssb_index
],
txdataF
[
ssb_index
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_pbch_dmrs
(
gNB
->
nr_gold_pbch_dmrs
[
0
][
ssb_index
],
&
txdataF
[
ssb_index
][((
slot
%
2
)
*
fp
->
samples_per_slot_wCP
)
],
AMP
,
ssb_start_symbol
,
cfg
,
fp
);
nr_generate_pbch
(
&
gNB
->
pbch
,
nr_generate_pbch
(
&
gNB
->
pbch
,
pbch_pdu
,
pbch_pdu
,
gNB
->
nr_pbch_interleaver
,
gNB
->
nr_pbch_interleaver
,
txdataF
[
ssb_index
],
&
txdataF
[
ssb_index
][((
slot
%
2
)
*
fp
->
samples_per_slot_wCP
)
],
AMP
,
AMP
,
ssb_start_symbol
,
ssb_start_symbol
,
n_hf
,
fp
->
Lmax
,
ssb_index
,
n_hf
,
fp
->
Lmax
,
ssb_index
,
...
@@ -169,7 +169,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
...
@@ -169,7 +169,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
// clear the transmit data array for the current subframe
// clear the transmit data array for the current subframe
for
(
aa
=
0
;
aa
<
fp
->
Lmax
;
aa
++
)
{
for
(
aa
=
0
;
aa
<
fp
->
Lmax
;
aa
++
)
{
memset
(
gNB
->
common_vars
.
txdataF
[
aa
],
0
,
fp
->
samples_per_slot_wCP
*
sizeof
(
int32_t
));
memset
(
&
gNB
->
common_vars
.
txdataF
[
aa
][((
slot
%
2
)
*
fp
->
samples_per_slot_wCP
)
],
0
,
fp
->
samples_per_slot_wCP
*
sizeof
(
int32_t
));
}
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_COMMON_TX
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_COMMON_TX
,
1
);
...
@@ -190,7 +190,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
...
@@ -190,7 +190,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
if
(
nfapi_mode
==
0
||
nfapi_mode
==
1
)
{
if
(
nfapi_mode
==
0
||
nfapi_mode
==
1
)
{
nr_generate_dci_top
(
gNB
->
pdcch_vars
,
nr_generate_dci_top
(
gNB
->
pdcch_vars
,
gNB
->
nr_gold_pdcch_dmrs
[
slot
],
gNB
->
nr_gold_pdcch_dmrs
[
slot
],
gNB
->
common_vars
.
txdataF
[
0
],
// hardcoded to beam 0
&
gNB
->
common_vars
.
txdataF
[
0
][((
slot
%
2
)
*
fp
->
samples_per_slot_wCP
)
],
// hardcoded to beam 0
AMP
,
*
fp
,
*
cfg
);
AMP
,
*
fp
,
*
cfg
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX
,
0
);
if
(
num_pdsch_rnti
)
{
if
(
num_pdsch_rnti
)
{
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf
View file @
6be2d8f0
...
@@ -246,7 +246,7 @@ L1s = (
...
@@ -246,7 +246,7 @@ L1s = (
RUs
= (
RUs
= (
{
{
local_rf
=
"yes"
local_rf
=
"yes"
nb_tx
=
4
;
nb_tx
=
1
;
nb_rx
=
1
;
nb_rx
=
1
;
att_tx
=
0
;
att_tx
=
0
;
att_rx
=
0
;
att_rx
=
0
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf
View file @
6be2d8f0
...
@@ -70,7 +70,7 @@ gNBs =
...
@@ -70,7 +70,7 @@ gNBs =
UL_BWP_prefix_type
=
"NORMAL"
;
UL_BWP_prefix_type
=
"NORMAL"
;
UL_timeAlignmentTimerCommon
=
"infinity"
;
UL_timeAlignmentTimerCommon
=
"infinity"
;
ServingCellConfigCommon_n_TimingAdvanceOffset
=
"n0"
ServingCellConfigCommon_n_TimingAdvanceOffset
=
"n0"
ServingCellConfigCommon_ssb_PositionsInBurst_PR
=
0
x0
ff
;
#####
ServingCellConfigCommon_ssb_PositionsInBurst_PR
=
0
x0
1
;
#####
ServingCellConfigCommon_ssb_periodicityServingCell
=
10
;
ServingCellConfigCommon_ssb_periodicityServingCell
=
10
;
ServingCellConfigCommon_dmrs_TypeA_Position
=
2
;
ServingCellConfigCommon_dmrs_TypeA_Position
=
2
;
NIA_SubcarrierSpacing
=
"kHz15"
;
NIA_SubcarrierSpacing
=
"kHz15"
;
...
...
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