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
spbro
OpenXG-RAN
Commits
3c73b3aa
Commit
3c73b3aa
authored
Feb 09, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_refactor_PHY_vector_sizes' into integration_2022_wk06
parents
817ee1a2
35877242
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
148 additions
and
140 deletions
+148
-140
common/openairinterface5g_limits.h
common/openairinterface5g_limits.h
+4
-10
common/platform_constants.h
common/platform_constants.h
+0
-3
executables/nr-gnb.c
executables/nr-gnb.c
+2
-9
nfapi/oai_integration/nfapi_pnf.c
nfapi/oai_integration/nfapi_pnf.c
+2
-2
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+62
-29
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+1
-1
openair1/PHY/NR_TRANSPORT/nr_prach.c
openair1/PHY/NR_TRANSPORT/nr_prach.c
+8
-9
openair1/PHY/NR_TRANSPORT/nr_ulsch.c
openair1/PHY/NR_TRANSPORT/nr_ulsch.c
+5
-5
openair1/PHY/NR_TRANSPORT/pucch_rx.c
openair1/PHY/NR_TRANSPORT/pucch_rx.c
+9
-6
openair1/PHY/NR_TRANSPORT/srs_rx.c
openair1/PHY/NR_TRANSPORT/srs_rx.c
+3
-3
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+6
-9
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+5
-5
openair1/SCHED_NR/phy_frame_config_nr.c
openair1/SCHED_NR/phy_frame_config_nr.c
+5
-39
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+7
-7
openair1/SIMULATION/NR_PHY/dlschsim.c
openair1/SIMULATION/NR_PHY/dlschsim.c
+7
-0
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+7
-0
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+1
-1
openair1/SIMULATION/NR_PHY/pucchsim.c
openair1/SIMULATION/NR_PHY/pucchsim.c
+7
-0
openair1/SIMULATION/NR_PHY/ulschsim.c
openair1/SIMULATION/NR_PHY/ulschsim.c
+7
-1
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+0
-1
No files found.
common/openairinterface5g_limits.h
View file @
3c73b3aa
#ifndef OPENAIRINTERFACE5G_LIMITS_H_
#define OPENAIRINTERFACE5G_LIMITS_H_
# define MAX_MOBILES_PER_GNB 16
# define NUMBER_OF_eNB_MAX 1
# define NUMBER_OF_gNB_MAX 1
# define NUMBER_OF_RU_MAX 2
...
...
@@ -9,17 +10,10 @@
# define NUMBER_OF_ULSCH_MAX 8
# define NUMBER_OF_DLSCH_MAX 8
# define NUMBER_OF_SRS_MAX 16
# define NUMBER_OF_NR_ULSCH_MAX 8
# define NUMBER_OF_NR_DLSCH_MAX 8
# define NUMBER_OF_NR_UCI_MAX 16
# define NUMBER_OF_NR_SRS_MAX 16
# define NUMBER_OF_NR_CSIRS_MAX 16
# define NUMBER_OF_NR_ULSCH_MAX MAX_MOBILES_PER_GNB
# define NUMBER_OF_NR_DLSCH_MAX MAX_MOBILES_PER_GNB
# define NUMBER_OF_SCH_STATS_MAX 16
# define NUMBER_OF_NR_SCH_STATS_MAX 16
# define NUMBER_OF_NR_PUCCH_MAX 16
# define NUMBER_OF_NR_PDCCH_MAX 16
# define NUMBER_OF_NR_SCH_STATS_MAX MAX_MOBILES_PER_GNB
#define MAX_MANAGED_ENB_PER_MOBILE 2
#define MAX_MANAGED_GNB_PER_MOBILE 2
...
...
common/platform_constants.h
View file @
3c73b3aa
...
...
@@ -69,20 +69,17 @@
#ifdef LARGE_SCALE
#define MAX_MOBILES_PER_ENB 128
#define MAX_MOBILES_PER_ENB_NB_IoT 128
#define MAX_MOBILES_PER_GNB 128
#define MAX_eNB 2
#define MAX_gNB 2
#else
#define MAX_MOBILES_PER_ENB 40
#define MAX_MOBILES_PER_ENB_NB_IoT 40
#define MAX_MOBILES_PER_GNB 16
#define MAX_eNB 2
#define MAX_gNB 2
#endif
#else
#define MAX_MOBILES_PER_ENB 256
#define MAX_MOBILES_PER_ENB_NB_IoT 256
#define MAX_MOBILES_PER_GNB 256
#define MAX_eNB 2
#define MAX_gNB 2
#endif
...
...
executables/nr-gnb.c
View file @
3c73b3aa
...
...
@@ -198,21 +198,14 @@ void rx_func(void *param) {
}
up_removed
++
;
}
for
(
j
=
0
;
j
<
NUMBER_OF_NR_PUCCH_MAX
;
j
++
)
for
(
j
=
0
;
j
<
gNB
->
max_nb_pucch
;
j
++
)
if
(
gNB
->
pucch
[
j
]
->
active
>
0
&&
gNB
->
pucch
[
j
]
->
pucch_pdu
.
rnti
==
rnti_to_remove
[
i
])
{
gNB
->
pucch
[
j
]
->
active
=
0
;
gNB
->
pucch
[
j
]
->
pucch_pdu
.
rnti
=
0
;
pucch_removed
++
;
}
#if 0
for (j = 0; j < NUMBER_OF_NR_PDCCH_MAX; j++)
gNB->pdcch_pdu[j].frame = -1;
for (j = 0; j < NUMBER_OF_NR_PDCCH_MAX; j++)
gNB->ul_pdcch_pdu[j].frame = -1;
for (j = 0; j < NUMBER_OF_NR_PRACH_MAX; j++)
gNB->prach_vars.list[j].frame = -1;
#endif
}
if
(
rnti_to_remove_count
)
LOG_W
(
NR_PHY
,
"to remove rnti_to_remove_count=%d, up_removed=%d down_removed=%d pucch_removed=%d
\n
"
,
rnti_to_remove_count
,
up_removed
,
down_removed
,
pucch_removed
);
rnti_to_remove_count
=
0
;
...
...
nfapi/oai_integration/nfapi_pnf.c
View file @
3c73b3aa
...
...
@@ -1219,8 +1219,8 @@ int pnf_phy_dl_tti_req(gNB_L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7,
if
(
tx_data
!=
NULL
)
{
uint8_t
*
dlsch_sdu
=
(
uint8_t
*
)
tx_data
->
TLVs
[
0
].
value
.
direct
;
//NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() DLSCH:pdu_index:%d handle_nfapi_dlsch_pdu(eNB, proc_rxtx, dlsch_pdu, transport_blocks:%d sdu:%p) eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols:%d\n", __FUNCTION__, rel8_pdu->pdu_index, rel8_pdu->transport_blocks, dlsch_sdu, eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols);
AssertFatal
(
msgTx
->
num_pdsch_slot
<
gNB
->
number_of_nr_dlsch_max
,
"Number of PDSCH PDUs %d exceeded the limit %d
\n
"
,
msgTx
->
num_pdsch_slot
,
gNB
->
number_of_nr_dlsch_max
);
AssertFatal
(
msgTx
->
num_pdsch_slot
<
NUMBER_OF_NR_DLSCH_MAX
,
"Number of PDSCH PDUs %d exceeded the limit %d
\n
"
,
msgTx
->
num_pdsch_slot
,
NUMBER_OF_NR_DLSCH_MAX
);
handle_nr_nfapi_pdsch_pdu
(
msgTx
,
pdsch_pdu
,
dlsch_sdu
);
}
else
{
...
...
openair1/PHY/INIT/nr_init.c
View file @
3c73b3aa
...
...
@@ -134,7 +134,7 @@ int init_codebook_gNB(PHY_VARS_gNB *gNB) {
int
max_mimo_layers
=
(
CSI_RS_antenna_ports
<
NR_MAX_NB_LAYERS
)
?
CSI_RS_antenna_ports
:
NR_MAX_NB_LAYERS
;
gNB
->
nr_mimo_precoding_matrix
=
(
int32_t
***
)
malloc16
(
max_mimo_layers
*
sizeof
(
int32_t
**
));
gNB
->
nr_mimo_precoding_matrix
=
(
int32_t
***
)
malloc16
(
max_mimo_layers
*
sizeof
(
int32_t
**
));
int32_t
***
mat
=
gNB
->
nr_mimo_precoding_matrix
;
double
complex
res_code
;
...
...
@@ -489,9 +489,6 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB)
while
(
gNB
->
configured
==
0
)
usleep
(
10000
);
gNB
->
number_of_nr_dlsch_max
=
NUMBER_OF_NR_DLSCH_MAX
;
gNB
->
number_of_nr_ulsch_max
=
NUMBER_OF_NR_ULSCH_MAX
;
load_dftslib
();
crcTableInit
();
...
...
@@ -607,14 +604,6 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB)
//PRS init
nr_init_prs
(
gNB
);
for
(
int
id
=
0
;
id
<
NUMBER_OF_NR_SRS_MAX
;
id
++
)
{
gNB
->
nr_srs_info
[
id
]
=
(
nr_srs_info_t
*
)
malloc16_clear
(
sizeof
(
nr_srs_info_t
));
gNB
->
nr_srs_info
[
id
]
->
srs_generated_signal
=
(
int32_t
**
)
malloc16_clear
(
MAX_NUM_NR_SRS_AP
*
sizeof
(
int32_t
*
));
for
(
int
ap
=
0
;
ap
<
MAX_NUM_NR_SRS_AP
;
ap
++
)
{
gNB
->
nr_srs_info
[
id
]
->
srs_generated_signal
[
ap
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
ofdm_symbol_size
*
MAX_NUM_NR_SRS_SYMBOLS
*
sizeof
(
int32_t
));
}
}
generate_ul_reference_signal_sequences
(
SHRT_MAX
);
/* Generate low PAPR type 1 sequences for PUSCH DMRS, these are used if transform precoding is enabled. */
...
...
@@ -623,6 +612,15 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB)
/// Transport init necessary for NR synchro
init_nr_transport
(
gNB
);
gNB
->
nr_srs_info
=
(
nr_srs_info_t
**
)
malloc16_clear
(
gNB
->
max_nb_srs
*
sizeof
(
nr_srs_info_t
*
));
for
(
int
id
=
0
;
id
<
gNB
->
max_nb_srs
;
id
++
)
{
gNB
->
nr_srs_info
[
id
]
=
(
nr_srs_info_t
*
)
malloc16_clear
(
sizeof
(
nr_srs_info_t
));
gNB
->
nr_srs_info
[
id
]
->
srs_generated_signal
=
(
int32_t
**
)
malloc16_clear
(
MAX_NUM_NR_SRS_AP
*
sizeof
(
int32_t
*
));
for
(
int
ap
=
0
;
ap
<
MAX_NUM_NR_SRS_AP
;
ap
++
)
{
gNB
->
nr_srs_info
[
id
]
->
srs_generated_signal
[
ap
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
ofdm_symbol_size
*
MAX_NUM_NR_SRS_SYMBOLS
*
sizeof
(
int32_t
));
}
}
common_vars
->
txdataF
=
(
int32_t
**
)
malloc16
(
Ptx
*
sizeof
(
int32_t
*
));
common_vars
->
rxdataF
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
));
/* Do NOT allocate per-antenna txdataF/rxdataF: the gNB gets a pointer to the
...
...
@@ -653,7 +651,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB)
int
nb_re_pusch
=
N_RB_UL
*
NR_NB_SC_PER_RB
;
int
nb_re_pusch2
=
nb_re_pusch
+
(
nb_re_pusch
&
7
);
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
gNB
->
number_of_nr_ulsch_max
;
ULSCH_id
++
)
{
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_NR_ULSCH_MAX
;
ULSCH_id
++
)
{
pusch_vars
[
ULSCH_id
]
=
(
NR_gNB_PUSCH
*
)
malloc16_clear
(
sizeof
(
NR_gNB_PUSCH
)
);
pusch_vars
[
ULSCH_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_estimates
=
(
int32_t
**
)
malloc16
(
n_buf
*
sizeof
(
int32_t
*
)
);
...
...
@@ -760,13 +758,14 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
free_and_zero
(
nr_gold_csi_rs
);
free_and_zero
(
gNB
->
nr_csi_info
);
for
(
int
id
=
0
;
id
<
NUMBER_OF_NR_SRS_MAX
;
id
++
)
{
for
(
int
id
=
0
;
id
<
gNB
->
max_nb_srs
;
id
++
)
{
for
(
int
i
=
0
;
i
<
MAX_NUM_NR_SRS_AP
;
i
++
)
{
free_and_zero
(
gNB
->
nr_srs_info
[
id
]
->
srs_generated_signal
[
i
]);
}
free_and_zero
(
gNB
->
nr_srs_info
[
id
]
->
srs_generated_signal
);
free_and_zero
(
gNB
->
nr_srs_info
[
id
]);
}
free_and_zero
(
gNB
->
nr_srs_info
);
free_ul_reference_signal_sequences
();
free_gnb_lowpapr_sequences
();
...
...
@@ -804,7 +803,7 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
free_and_zero
(
prach_vars
->
prach_ifft
);
NR_gNB_PUSCH
**
pusch_vars
=
gNB
->
pusch_vars
;
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
gNB
->
number_of_nr_ulsch_max
;
ULSCH_id
++
)
{
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_NR_ULSCH_MAX
;
ULSCH_id
++
)
{
for
(
int
i
=
0
;
i
<
max_ul_mimo_layers
;
i
++
)
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
llr_layers
[
i
]);
for
(
int
i
=
0
;
i
<
Prx
;
i
++
)
{
...
...
@@ -982,8 +981,8 @@ void init_DLSCH_struct(PHY_VARS_gNB *gNB, processingData_L1tx_t *msg) {
msg
->
num_pdsch_slot
=
0
;
int
num_cw
=
NR_MAX_NB_LAYERS
>
4
?
2
:
1
;
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_dlsch_max
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for DLSCH %d/%d
\n
"
,
i
,
gNB
->
number_of_nr_dlsch_max
);
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_DLSCH_MAX
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for DLSCH %d/%d
\n
"
,
i
,
NUMBER_OF_NR_DLSCH_MAX
);
for
(
int
j
=
0
;
j
<
num_cw
;
j
++
)
{
msg
->
dlsch
[
i
][
j
]
=
new_gNB_dlsch
(
fp
,
grid_size
);
AssertFatal
(
msg
->
dlsch
[
i
][
j
]
!=
NULL
,
"Can't initialize dlsch %d
\n
"
,
i
);
...
...
@@ -997,30 +996,62 @@ void reset_DLSCH_struct(const PHY_VARS_gNB *gNB, processingData_L1tx_t *msg)
const
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
const
uint16_t
grid_size
=
cfg
->
carrier_config
.
dl_grid_size
[
fp
->
numerology_index
].
value
;
int
num_cw
=
NR_MAX_NB_LAYERS
>
4
?
2
:
1
;
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_dlsch_max
;
i
++
)
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_DLSCH_MAX
;
i
++
)
for
(
int
j
=
0
;
j
<
num_cw
;
j
++
)
free_gNB_dlsch
(
&
msg
->
dlsch
[
i
][
j
],
grid_size
,
fp
);
}
void
init_nr_transport
(
PHY_VARS_gNB
*
gNB
)
{
void
init_nr_transport
(
PHY_VARS_gNB
*
gNB
)
{
NR_DL_FRAME_PARMS
*
fp
=
&
gNB
->
frame_parms
;
const
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
LOG_I
(
PHY
,
"Initialise nr transport
\n
"
);
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for PUCCH %d/%d
\n
"
,
i
,
NUMBER_OF_NR_PUCCH_MAX
);
int
nb_slots_per_period
=
cfg
->
cell_config
.
frame_duplex_type
.
value
?
fp
->
slots_per_frame
/
get_nb_periods_per_frame
(
cfg
->
tdd_table
.
tdd_period
.
value
)
:
fp
->
slots_per_frame
;
int
nb_ul_slots_period
=
0
;
if
(
cfg
->
cell_config
.
frame_duplex_type
.
value
)
{
for
(
int
i
=
0
;
i
<
nb_slots_per_period
;
i
++
)
{
for
(
int
j
=
0
;
j
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
j
++
)
{
if
(
cfg
->
tdd_table
.
max_tdd_periodicity_list
[
i
].
max_num_of_symbol_per_slot_list
[
j
].
slot_config
.
value
==
1
)
{
// UL symbol
nb_ul_slots_period
++
;
break
;
}
}
}
}
else
nb_ul_slots_period
=
fp
->
slots_per_frame
;
int
buffer_ul_slots
;
// the UL channels are scheduled sl_ahead before they are transmitted
int
slot_ahead
=
gNB
->
if_inst
?
gNB
->
if_inst
->
sl_ahead
:
6
;
if
(
slot_ahead
>
nb_slots_per_period
)
buffer_ul_slots
=
nb_ul_slots_period
+
(
slot_ahead
-
nb_slots_per_period
);
else
buffer_ul_slots
=
(
nb_ul_slots_period
<
slot_ahead
)
?
nb_ul_slots_period
:
slot_ahead
;
gNB
->
max_nb_pucch
=
MAX_MOBILES_PER_GNB
*
buffer_ul_slots
;
gNB
->
max_nb_srs
=
buffer_ul_slots
<<
1
;
// assuming at most 2 SRS per slot
gNB
->
pucch
=
(
NR_gNB_PUCCH_t
**
)
malloc16
(
gNB
->
max_nb_pucch
*
sizeof
(
NR_gNB_PUCCH_t
*
));
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_pucch
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for PUCCH %d/%d
\n
"
,
i
,
gNB
->
max_nb_pucch
);
gNB
->
pucch
[
i
]
=
new_gNB_pucch
();
AssertFatal
(
gNB
->
pucch
[
i
]
!=
NULL
,
"Can't initialize pucch %d
\n
"
,
i
);
AssertFatal
(
gNB
->
pucch
[
i
]
!=
NULL
,
"Can't initialize pucch %d
\n
"
,
i
);
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_SRS_MAX
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for SRS %d/%d
\n
"
,
i
,
NUMBER_OF_NR_SRS_MAX
);
gNB
->
srs
=
(
NR_gNB_SRS_t
**
)
malloc16
(
gNB
->
max_nb_srs
*
sizeof
(
NR_gNB_SRS_t
*
));
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_srs
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for SRS %d/%d
\n
"
,
i
,
gNB
->
max_nb_srs
);
gNB
->
srs
[
i
]
=
new_gNB_srs
();
AssertFatal
(
gNB
->
srs
[
i
]
!=
NULL
,
"Can't initialize srs %d
\n
"
,
i
);
}
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_ulsch_max
;
i
++
)
{
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_ULSCH_MAX
;
i
++
)
{
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for ULSCH %d/%d
\n
"
,
i
,
gNB
->
number_of_nr_ulsch_max
);
LOG_I
(
PHY
,
"Allocating Transport Channel Buffers for ULSCH %d/%d
\n
"
,
i
,
NUMBER_OF_NR_ULSCH_MAX
);
gNB
->
ulsch
[
i
]
=
new_gNB_ulsch
(
gNB
->
max_ldpc_iterations
,
fp
->
N_RB_UL
);
...
...
@@ -1039,12 +1070,14 @@ void reset_nr_transport(PHY_VARS_gNB *gNB)
{
const
NR_DL_FRAME_PARMS
*
fp
=
&
gNB
->
frame_parms
;
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
)
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_pucch
;
i
++
)
free_gNB_pucch
(
gNB
->
pucch
[
i
]);
free
(
gNB
->
pucch
);
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_SRS_MAX
;
i
++
)
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_srs
;
i
++
)
free_gNB_srs
(
gNB
->
srs
[
i
]);
free
(
gNB
->
srs
);
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_ulsch_max
;
i
++
)
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_ULSCH_MAX
;
i
++
)
free_gNB_ulsch
(
&
gNB
->
ulsch
[
i
],
fp
->
N_RB_UL
);
}
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
3c73b3aa
...
...
@@ -582,6 +582,6 @@ void dump_pdsch_stats(FILE *fd,PHY_VARS_gNB *gNB) {
void
clear_pdsch_stats
(
PHY_VARS_gNB
*
gNB
)
{
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_dlsch_max
;
i
++
)
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_SCH_STATS_MAX
;
i
++
)
memset
((
void
*
)
&
gNB
->
dlsch_stats
[
i
],
0
,
sizeof
(
gNB
->
dlsch_stats
[
i
]));
}
openair1/PHY/NR_TRANSPORT/nr_prach.c
View file @
3c73b3aa
...
...
@@ -39,20 +39,19 @@ extern uint16_t prach_root_sequence_map_abc[138];
extern
uint16_t
nr_du
[
838
];
extern
const
char
*
prachfmt
[];
void
init_prach_list
(
PHY_VARS_gNB
*
gNB
)
{
void
init_prach_list
(
PHY_VARS_gNB
*
gNB
)
{
AssertFatal
(
gNB
!=
NULL
,
"gNB is null
\n
"
);
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PRACH_MAX
;
i
++
){
gNB
->
prach_vars
.
list
[
i
].
frame
=
-
1
;
gNB
->
prach_vars
.
list
[
i
].
slot
=
-
1
;
}
gNB
->
prach_vars
.
list
[
i
].
frame
=
-
1
;
gNB
->
prach_vars
.
list
[
i
].
slot
=
-
1
;
}
}
void
free_nr_prach_entry
(
PHY_VARS_gNB
*
gNB
,
int
prach_id
)
{
void
free_nr_prach_entry
(
PHY_VARS_gNB
*
gNB
,
int
prach_id
)
{
gNB
->
prach_vars
.
list
[
prach_id
].
frame
=
-
1
;
gNB
->
prach_vars
.
list
[
prach_id
].
slot
=
-
1
;
gNB
->
prach_vars
.
list
[
prach_id
].
slot
=
-
1
;
}
int16_t
find_nr_prach
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
find_type_t
type
)
{
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch.c
View file @
3c73b3aa
...
...
@@ -40,7 +40,7 @@ int16_t find_nr_ulsch(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type) {
int16_t
first_free_index
=-
1
;
AssertFatal
(
gNB
!=
NULL
,
"gNB is null
\n
"
);
for
(
i
=
0
;
i
<
gNB
->
number_of_nr_ulsch_max
;
i
++
)
{
for
(
i
=
0
;
i
<
NUMBER_OF_NR_ULSCH_MAX
;
i
++
)
{
AssertFatal
(
gNB
->
ulsch
[
i
]
!=
NULL
,
"gNB->ulsch[%d] is null
\n
"
,
i
);
LOG_D
(
PHY
,
"searching for rnti %x : ulsch_index %d=> harq_mask %x, rnti %x, first_free_index %d
\n
"
,
rnti
,
i
,
gNB
->
ulsch
[
i
]
->
harq_mask
,
gNB
->
ulsch
[
i
]
->
rnti
,
first_free_index
);
if
((
gNB
->
ulsch
[
i
]
->
harq_mask
>
0
)
&&
...
...
@@ -60,7 +60,7 @@ void nr_fill_ulsch(PHY_VARS_gNB *gNB,
int
ulsch_id
=
find_nr_ulsch
(
ulsch_pdu
->
rnti
,
gNB
,
SEARCH_EXIST_OR_FREE
);
AssertFatal
(
(
ulsch_id
>=
0
)
&&
(
ulsch_id
<
gNB
->
number_of_nr_ulsch_max
),
AssertFatal
(
(
ulsch_id
>=
0
)
&&
(
ulsch_id
<
NUMBER_OF_NR_ULSCH_MAX
),
"illegal or no ulsch_id found!!! rnti %04x ulsch_id %d
\n
"
,
ulsch_pdu
->
rnti
,
ulsch_id
);
NR_gNB_ULSCH_t
*
ulsch
=
gNB
->
ulsch
[
ulsch_id
];
...
...
@@ -121,7 +121,7 @@ void nr_ulsch_layer_demapping(int16_t *llr_cw,
void
dump_pusch_stats
(
FILE
*
fd
,
PHY_VARS_gNB
*
gNB
)
{
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_ulsch_max
;
i
++
)
{
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_SCH_STATS_MAX
;
i
++
)
{
if
(
gNB
->
ulsch_stats
[
i
].
rnti
>
0
&&
gNB
->
ulsch_stats
[
i
].
frame
!=
gNB
->
ulsch_stats
[
i
].
dump_frame
)
{
gNB
->
ulsch_stats
[
i
].
dump_frame
=
gNB
->
ulsch_stats
[
i
].
frame
;
...
...
@@ -155,14 +155,14 @@ void dump_pusch_stats(FILE *fd,PHY_VARS_gNB *gNB) {
void
clear_pusch_stats
(
PHY_VARS_gNB
*
gNB
)
{
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_ulsch_max
;
i
++
)
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_ULSCH_MAX
;
i
++
)
memset
((
void
*
)
&
gNB
->
ulsch_stats
[
i
],
0
,
sizeof
(
gNB
->
ulsch_stats
[
i
]));
}
NR_gNB_SCH_STATS_t
*
get_ulsch_stats
(
PHY_VARS_gNB
*
gNB
,
NR_gNB_ULSCH_t
*
ulsch
)
{
NR_gNB_SCH_STATS_t
*
stats
=
NULL
;
int
first_free
=-
1
;
for
(
int
i
=
0
;
i
<
gNB
->
number_of_nr_ulsch_max
;
i
++
)
{
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_ULSCH_MAX
;
i
++
)
{
if
(
gNB
->
ulsch_stats
[
i
].
rnti
==
0
&&
first_free
==
-
1
)
{
first_free
=
i
;
stats
=&
gNB
->
ulsch_stats
[
i
];
...
...
openair1/PHY/NR_TRANSPORT/pucch_rx.c
View file @
3c73b3aa
...
...
@@ -70,20 +70,21 @@ void free_gNB_pucch(NR_gNB_PUCCH_t *pucch)
int
nr_find_pucch
(
uint16_t
rnti
,
int
frame
,
int
slot
,
PHY_VARS_gNB
*
gNB
)
{
PHY_VARS_gNB
*
gNB
)
{
AssertFatal
(
gNB
!=
NULL
,
"gNB is null
\n
"
);
int
index
=
-
1
;
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
)
{
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_pucch
;
i
++
)
{
AssertFatal
(
gNB
->
pucch
[
i
]
!=
NULL
,
"gNB->pucch[%d] is null
\n
"
,
i
);
if
((
gNB
->
pucch
[
i
]
->
active
>
0
)
&&
(
gNB
->
pucch
[
i
]
->
pucch_pdu
.
rnti
==
rnti
)
&&
(
gNB
->
pucch
[
i
]
->
frame
==
frame
)
&&
(
gNB
->
pucch
[
i
]
->
slot
==
slot
))
return
(
i
)
;
return
i
;
else
if
((
gNB
->
pucch
[
i
]
->
active
==
0
)
&&
(
index
==
-
1
))
index
=
i
;
index
=
i
;
}
if
(
index
==-
1
)
...
...
@@ -95,11 +96,13 @@ int nr_find_pucch(uint16_t rnti,
void
nr_fill_pucch
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_pucch_pdu_t
*
pucch_pdu
)
{
nfapi_nr_pucch_pdu_t
*
pucch_pdu
)
{
if
(
NFAPI_MODE
==
NFAPI_MODE_PNF
)
gNB
->
pucch
[
0
]
->
active
=
0
;
//check if ture in monolithic mode
int
id
=
nr_find_pucch
(
pucch_pdu
->
rnti
,
frame
,
slot
,
gNB
);
AssertFatal
((
id
>=
0
)
&&
(
id
<
NUMBER_OF_NR_PUCCH_MAX
),
AssertFatal
((
id
>=
0
)
&&
(
id
<
gNB
->
max_nb_pucch
),
"invalid id found for pucch !!! rnti %04x id %d
\n
"
,
pucch_pdu
->
rnti
,
id
);
NR_gNB_PUCCH_t
*
pucch
=
gNB
->
pucch
[
id
];
...
...
openair1/PHY/NR_TRANSPORT/srs_rx.c
View file @
3c73b3aa
...
...
@@ -64,7 +64,7 @@ int nr_find_srs(rnti_t rnti,
AssertFatal
(
gNB
!=
NULL
,
"gNB is null
\n
"
);
int
index
=
-
1
;
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_SRS_MAX
;
i
++
)
{
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_srs
;
i
++
)
{
AssertFatal
(
gNB
->
srs
[
i
]
!=
NULL
,
"gNB->srs[%d] is null
\n
"
,
i
);
if
((
gNB
->
srs
[
i
]
->
active
>
0
)
&&
(
gNB
->
srs
[
i
]
->
srs_pdu
.
rnti
==
rnti
)
&&
...
...
@@ -85,8 +85,8 @@ void nr_fill_srs(PHY_VARS_gNB *gNB,
nfapi_nr_srs_pdu_t
*
srs_pdu
)
{
int
id
=
nr_find_srs
(
srs_pdu
->
rnti
,
frame
,
slot
,
gNB
);
AssertFatal
(
(
id
>=
0
)
&&
(
id
<
NUMBER_OF_NR_SRS_MAX
),
"invalid id found for srs !!! rnti %04x id %d
\n
"
,
srs_pdu
->
rnti
,
id
);
AssertFatal
(
(
id
>=
0
)
&&
(
id
<
gNB
->
max_nb_srs
),
"invalid id found for srs !!! rnti %04x id %d
\n
"
,
srs_pdu
->
rnti
,
id
);
NR_gNB_SRS_t
*
srs
=
gNB
->
srs
[
id
];
srs
->
frame
=
frame
;
...
...
openair1/PHY/defs_gNB.h
View file @
3c73b3aa
...
...
@@ -617,16 +617,15 @@ typedef struct PHY_VARS_gNB_s {
nfapi_nr_ul_tti_request_t
UL_tti_req
;
nfapi_nr_uci_indication_t
uci_indication
;
int
max_nb_pucch
;
int
max_nb_srs
;
NR_gNB_PBCH
pbch
;
NR_gNB_COMMON
common_vars
;
NR_gNB_PRACH
prach_vars
;
NR_gNB_PRS
prs_vars
;
NR_gNB_PUSCH
*
pusch_vars
[
NUMBER_OF_NR_ULSCH_MAX
];
NR_gNB_PUCCH_t
*
pucch
[
NUMBER_OF_NR_PUCCH_MAX
];
NR_gNB_SRS_t
*
srs
[
NUMBER_OF_NR_SRS_MAX
];
NR_gNB_PDCCH_t
pdcch_pdu
[
NUMBER_OF_NR_PDCCH_MAX
];
NR_gNB_UL_PDCCH_t
ul_pdcch_pdu
[
NUMBER_OF_NR_PDCCH_MAX
];
NR_gNB_DLSCH_t
*
dlsch
[
NUMBER_OF_NR_DLSCH_MAX
][
2
];
// Nusers times two spatial streams
NR_gNB_PUCCH_t
**
pucch
;
NR_gNB_SRS_t
**
srs
;
NR_gNB_ULSCH_t
*
ulsch
[
NUMBER_OF_NR_ULSCH_MAX
];
// [Nusers times]
/// statistics for DLSCH measurement collection
NR_gNB_SCH_STATS_t
dlsch_stats
[
NUMBER_OF_NR_SCH_STATS_MAX
];
...
...
@@ -636,7 +635,7 @@ typedef struct PHY_VARS_gNB_s {
t_nrPolar_params
**
polarParams
;
/// SRS variables
nr_srs_info_t
*
nr_srs_info
[
NUMBER_OF_NR_SRS_MAX
]
;
nr_srs_info_t
*
*
nr_srs_info
;
/// CSI variables
nr_csi_info_t
*
nr_csi_info
;
...
...
@@ -763,8 +762,6 @@ typedef struct PHY_VARS_gNB_s {
notifiedFIFO_t
resp_RU_tx
;
tpool_t
threadPool
;
int
nbDecode
;
int
number_of_nr_dlsch_max
;
int
number_of_nr_ulsch_max
;
void
*
scopeData
;
/// structure for analyzing high-level RT measurements
rt_L1_profiling_t
rt_L1_profiling
;
...
...
@@ -827,7 +824,7 @@ typedef struct processingData_L1tx {
PHY_VARS_gNB
*
gNB
;
nfapi_nr_dl_tti_pdcch_pdu
pdcch_pdu
[
NFAPI_NR_MAX_NB_CORESETS
];
nfapi_nr_ul_dci_request_pdus_t
ul_pdcch_pdu
[
NFAPI_NR_MAX_NB_CORESETS
];
NR_gNB_CSIRS_t
csirs_pdu
[
N
UMBER_OF_NR_CSIRS_MAX
];
NR_gNB_CSIRS_t
csirs_pdu
[
N
R_SYMBOLS_PER_SLOT
];
NR_gNB_DLSCH_t
*
dlsch
[
NUMBER_OF_NR_DLSCH_MAX
][
2
];
NR_gNB_SSB_t
ssb
[
64
];
uint16_t
num_pdsch_slot
;
...
...
openair1/SCHED_NR/fapi_nr_l1.c
View file @
3c73b3aa
...
...
@@ -102,12 +102,12 @@ void handle_nr_nfapi_ssb_pdu(processingData_L1tx_t *msgTx,int frame,int slot,
void
handle_nfapi_nr_csirs_pdu
(
processingData_L1tx_t
*
msgTx
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_csi_rs_pdu
*
csirs_pdu
)
{
int
frame
,
int
slot
,
nfapi_nr_dl_tti_csi_rs_pdu
*
csirs_pdu
)
{
int
found
=
0
;
for
(
int
id
=
0
;
id
<
NUMBER_OF_NR_CSIRS_MAX
;
id
++
)
{
for
(
int
id
=
0
;
id
<
NR_SYMBOLS_PER_SLOT
;
id
++
)
{
NR_gNB_CSIRS_t
*
csirs
=
&
msgTx
->
csirs_pdu
[
id
];
if
(
csirs
->
active
==
0
)
{
LOG_D
(
PHY
,
"Frame %d Slot %d CSI_RS with ID %d is now active
\n
"
,
frame
,
slot
,
id
);
...
...
@@ -203,8 +203,8 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
AssertFatal
(
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
==
1
,
"TX_req->pdu_list[%d].num_TLV %d != 1
\n
"
,
pduIndex
,
TX_req
->
pdu_list
[
pduIndex
].
num_TLV
);
uint8_t
*
sdu
=
(
uint8_t
*
)
TX_req
->
pdu_list
[
pduIndex
].
TLVs
[
0
].
value
.
direct
;
AssertFatal
(
msgTx
->
num_pdsch_slot
<
gNB
->
number_of_nr_dlsch_max
,
"Number of PDSCH PDUs %d exceeded the limit %d
\n
"
,
msgTx
->
num_pdsch_slot
,
gNB
->
number_of_nr_dlsch_max
);
AssertFatal
(
msgTx
->
num_pdsch_slot
<
NUMBER_OF_NR_DLSCH_MAX
,
"Number of PDSCH PDUs %d exceeded the limit %d
\n
"
,
msgTx
->
num_pdsch_slot
,
NUMBER_OF_NR_DLSCH_MAX
);
handle_nr_nfapi_pdsch_pdu
(
msgTx
,
&
dl_tti_pdu
->
pdsch_pdu
,
sdu
);
}
}
...
...
openair1/SCHED_NR/phy_frame_config_nr.c
View file @
3c73b3aa
...
...
@@ -33,6 +33,7 @@
#include "PHY/defs_gNB.h"
#include "PHY/defs_nr_UE.h"
#include "SCHED_NR/phy_frame_config_nr.h"
#include "common/utils/nr/nr_common.h"
/*******************************************************************
*
...
...
@@ -53,48 +54,13 @@
int
set_tdd_config_nr
(
nfapi_nr_config_request_scf_t
*
cfg
,
int
mu
,
int
nrofDownlinkSlots
,
int
nrofDownlinkSymbols
,
int
nrofUplinkSlots
,
int
nrofUplinkSymbols
)
{
int
nrofUplinkSlots
,
int
nrofUplinkSymbols
)
{
int
slot_number
=
0
;
int
nb_periods_per_frame
;
int
nb_periods_per_frame
=
get_nb_periods_per_frame
(
cfg
->
tdd_table
.
tdd_period
.
value
)
;
int
nb_slots_to_set
=
TDD_CONFIG_NB_FRAMES
*
(
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
;
switch
(
cfg
->
tdd_table
.
tdd_period
.
value
)
{
case
0
:
nb_periods_per_frame
=
20
;
// 10ms/0p5ms
break
;
case
1
:
nb_periods_per_frame
=
16
;
// 10ms/0p625ms
break
;
case
2
:
nb_periods_per_frame
=
10
;
// 10ms/1ms
break
;
case
3
:
nb_periods_per_frame
=
8
;
// 10ms/1p25ms
break
;
case
4
:
nb_periods_per_frame
=
5
;
// 10ms/2ms
break
;
case
5
:
nb_periods_per_frame
=
4
;
// 10ms/2p5ms
break
;
case
6
:
nb_periods_per_frame
=
2
;
// 10ms/5ms
break
;
case
7
:
nb_periods_per_frame
=
1
;
// 10ms/10ms
break
;
default:
AssertFatal
(
1
==
0
,
"Undefined tdd period %d
\n
"
,
cfg
->
tdd_table
.
tdd_period
.
value
);
}
int
nb_slots_per_period
=
((
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
)
/
nb_periods_per_frame
;
if
(
(
nrofDownlinkSymbols
+
nrofUplinkSymbols
)
==
0
)
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
3c73b3aa
...
...
@@ -184,7 +184,7 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_GENERATE_DLSCH
,
0
);
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_CSIRS_MAX
;
i
++
){
for
(
int
i
=
0
;
i
<
NR_SYMBOLS_PER_SLOT
;
i
++
){
NR_gNB_CSIRS_t
*
csirs
=
&
msgTx
->
csirs_pdu
[
i
];
if
(
csirs
->
active
==
1
)
{
LOG_D
(
PHY
,
"CSI-RS generation started in frame %d.%d
\n
"
,
frame
,
slot
);
...
...
@@ -529,7 +529,7 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
}
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_pucch
;
i
++
){
NR_gNB_PUCCH_t
*
pucch
=
gNB
->
pucch
[
i
];
if
(
pucch
)
{
if
((
pucch
->
active
==
1
)
&&
...
...
@@ -552,7 +552,7 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
}
}
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
gNB
->
number_of_nr_ulsch_max
;
ULSCH_id
++
)
{
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_NR_ULSCH_MAX
;
ULSCH_id
++
)
{
NR_gNB_ULSCH_t
*
ulsch
=
gNB
->
ulsch
[
ULSCH_id
];
int
harq_pid
;
NR_UL_gNB_HARQ_t
*
ulsch_harq
;
...
...
@@ -582,7 +582,7 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
}
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_SRS_MAX
;
i
++
)
{
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_srs
;
i
++
)
{
NR_gNB_SRS_t
*
srs
=
gNB
->
srs
[
i
];
if
(
srs
)
{
if
((
srs
->
active
==
1
)
&&
(
srs
->
frame
==
frame_rx
)
&&
(
srs
->
slot
==
slot_rx
))
{
...
...
@@ -713,7 +713,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
start_meas
(
&
gNB
->
phy_proc_rx
);
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_pucch
;
i
++
){
NR_gNB_PUCCH_t
*
pucch
=
gNB
->
pucch
[
i
];
if
(
pucch
)
{
if
(
NFAPI_MODE
==
NFAPI_MODE_PNF
)
...
...
@@ -775,7 +775,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
}
}
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
gNB
->
number_of_nr_ulsch_max
;
ULSCH_id
++
)
{
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_NR_ULSCH_MAX
;
ULSCH_id
++
)
{
NR_gNB_ULSCH_t
*
ulsch
=
gNB
->
ulsch
[
ULSCH_id
];
NR_UL_gNB_HARQ_t
*
ulsch_harq
;
...
...
@@ -870,7 +870,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
}
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_SRS_MAX
;
i
++
)
{
for
(
int
i
=
0
;
i
<
gNB
->
max_nb_srs
;
i
++
)
{
NR_gNB_SRS_t
*
srs
=
gNB
->
srs
[
i
];
if
(
srs
)
{
if
((
srs
->
active
==
1
)
&&
(
srs
->
frame
==
frame_rx
)
&&
(
srs
->
slot
==
slot_rx
))
{
...
...
openair1/SIMULATION/NR_PHY/dlschsim.c
View file @
3c73b3aa
...
...
@@ -366,6 +366,8 @@ int main(int argc, char **argv)
frame_parms
->
Ncp
=
extended_prefix_flag
?
EXTENDED
:
NORMAL
;
crcTableInit
();
nr_phy_config_request_sim
(
gNB
,
N_RB_DL
,
N_RB_DL
,
mu
,
Nid_cell
,
SSB_positions
);
gNB
->
gNB_config
.
tdd_table
.
tdd_period
.
value
=
6
;
set_tdd_config_nr
(
&
gNB
->
gNB_config
,
mu
,
7
,
6
,
2
,
4
);
phy_init_nr_gNB
(
gNB
);
//init_eNB_afterRU();
frame_length_complex_samples
=
frame_parms
->
samples_per_subframe
;
...
...
@@ -612,6 +614,11 @@ int main(int argc, char **argv)
reset_DLSCH_struct
(
gNB
,
&
msgDataTx
);
int
nb_slots_to_set
=
TDD_CONFIG_NB_FRAMES
*
(
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
;
for
(
int
i
=
0
;
i
<
nb_slots_to_set
;
++
i
)
free
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
i
].
max_num_of_symbol_per_slot_list
);
free
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
);
phy_free_nr_gNB
(
gNB
);
free
(
RC
.
gNB
[
0
]);
free
(
RC
.
gNB
);
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
3c73b3aa
...
...
@@ -471,6 +471,8 @@ int main(int argc, char **argv)
frame_parms
->
freq_range
=
mu
<
2
?
nr_FR1
:
nr_FR2
;
nr_phy_config_request_sim_pbchsim
(
gNB
,
N_RB_DL
,
N_RB_DL
,
mu
,
Nid_cell
,
SSB_positions
);
gNB
->
gNB_config
.
tdd_table
.
tdd_period
.
value
=
6
;
set_tdd_config_nr
(
&
gNB
->
gNB_config
,
mu
,
7
,
6
,
2
,
4
);
phy_init_nr_gNB
(
gNB
);
frame_parms
->
ssb_start_subcarrier
=
12
*
gNB
->
gNB_config
.
ssb_table
.
ssb_offset_point_a
.
value
+
ssb_subcarrier_offset
;
...
...
@@ -817,6 +819,11 @@ int main(int argc, char **argv)
free_channel_desc_scm
(
gNB2UE
);
int
nb_slots_to_set
=
TDD_CONFIG_NB_FRAMES
*
(
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
;
for
(
int
i
=
0
;
i
<
nb_slots_to_set
;
++
i
)
free
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
i
].
max_num_of_symbol_per_slot_list
);
free
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
);
phy_free_nr_gNB
(
gNB
);
free
(
RC
.
gNB
[
0
]);
free
(
RC
.
gNB
);
...
...
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
3c73b3aa
...
...
@@ -671,9 +671,9 @@ int main(int argc, char **argv){
memcpy
((
void
*
)
&
ru
->
config
,(
void
*
)
&
RC
.
gNB
[
0
]
->
gNB_config
,
sizeof
(
ru
->
config
));
RC
.
nb_nr_L1_inst
=
1
;
set_tdd_config_nr
(
&
gNB
->
gNB_config
,
mu
,
7
,
6
,
2
,
4
);
phy_init_nr_gNB
(
gNB
);
nr_phy_init_RU
(
ru
);
set_tdd_config_nr
(
&
gNB
->
gNB_config
,
mu
,
7
,
6
,
2
,
4
);
// Configure UE
UE
=
malloc
(
sizeof
(
PHY_VARS_NR_UE
));
...
...
openair1/SIMULATION/NR_PHY/pucchsim.c
View file @
3c73b3aa
...
...
@@ -404,6 +404,8 @@ int main(int argc, char **argv)
cfg
->
carrier_config
.
num_tx_ant
.
value
=
n_tx
;
cfg
->
carrier_config
.
num_rx_ant
.
value
=
n_rx
;
nr_phy_config_request_sim
(
gNB
,
N_RB_DL
,
N_RB_DL
,
mu
,
Nid_cell
,
SSB_positions
);
gNB
->
gNB_config
.
tdd_table
.
tdd_period
.
value
=
6
;
set_tdd_config_nr
(
&
gNB
->
gNB_config
,
mu
,
7
,
6
,
2
,
4
);
phy_init_nr_gNB
(
gNB
);
/* RU handles rxdataF, and gNB just has a pointer. Here, we don't have an RU,
* so we need to allocate that memory as well. */
...
...
@@ -721,6 +723,11 @@ int main(int argc, char **argv)
free_channel_desc_scm
(
UE2gNB
);
term_freq_channel
();
int
nb_slots_to_set
=
TDD_CONFIG_NB_FRAMES
*
(
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
;
for
(
int
i
=
0
;
i
<
nb_slots_to_set
;
++
i
)
free
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
i
].
max_num_of_symbol_per_slot_list
);
free
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
);
for
(
i
=
0
;
i
<
n_rx
;
i
++
)
free
(
gNB
->
common_vars
.
rxdataF
[
i
]);
phy_free_nr_gNB
(
gNB
);
...
...
openair1/SIMULATION/NR_PHY/ulschsim.c
View file @
3c73b3aa
...
...
@@ -418,7 +418,8 @@ int main(int argc, char **argv)
gNB
->
frame_parms
.
nb_antennas_rx
=
n_rx
;
nr_phy_config_request_sim
(
gNB
,
N_RB_UL
,
N_RB_UL
,
mu
,
Nid_cell
,
SSB_positions
);
gNB
->
gNB_config
.
tdd_table
.
tdd_period
.
value
=
6
;
set_tdd_config_nr
(
&
gNB
->
gNB_config
,
mu
,
7
,
6
,
2
,
4
);
phy_init_nr_gNB
(
gNB
);
//configure UE
...
...
@@ -639,6 +640,11 @@ int main(int argc, char **argv)
free_nr_ue_ul_harq
(
UE
->
ul_harq_processes
,
NR_MAX_ULSCH_HARQ_PROCESSES
,
UE
->
frame_parms
.
N_RB_UL
,
UE
->
frame_parms
.
nb_antennas_tx
);
int
nb_slots_to_set
=
TDD_CONFIG_NB_FRAMES
*
(
1
<<
mu
)
*
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
;
for
(
int
i
=
0
;
i
<
nb_slots_to_set
;
++
i
)
free
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
i
].
max_num_of_symbol_per_slot_list
);
free
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
);
term_nr_ue_signal
(
UE
,
1
);
free
(
UE
);
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
3c73b3aa
...
...
@@ -318,7 +318,6 @@ int main(int argc, char **argv)
int
ldpc_offload_flag
=
0
;
uint8_t
max_rounds
=
4
;
int
chest_type
[
2
]
=
{
0
};
int
enable_ptrs
=
0
;
int
modify_dmrs
=
0
;
/* L_PTRS = ptrs_arg[0], K_PTRS = ptrs_arg[1] */
...
...
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