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
450346c7
Commit
450346c7
authored
Sep 02, 2024
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_gNB_cleanup' into integration_2024_w35
parents
fa7040f3
01ae8fbb
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
365 additions
and
565 deletions
+365
-565
executables/nr-gnb.c
executables/nr-gnb.c
+1
-2
executables/nr-softmodem.c
executables/nr-softmodem.c
+0
-5
nfapi/oai_integration/nfapi_vnf.c
nfapi/oai_integration/nfapi_vnf.c
+2
-3
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+0
-14
openair1/PHY/NR_TRANSPORT/nr_pbch.c
openair1/PHY/NR_TRANSPORT/nr_pbch.c
+161
-128
openair1/PHY/NR_TRANSPORT/nr_prach.c
openair1/PHY/NR_TRANSPORT/nr_prach.c
+100
-99
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
+17
-19
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
+26
-21
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+1
-1
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+28
-170
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+5
-12
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+11
-12
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+10
-16
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+2
-62
No files found.
executables/nr-gnb.c
View file @
450346c7
...
...
@@ -497,8 +497,7 @@ void init_gNB(int wait_for_sync) {
RC
.
gNB
[
inst
]
=
(
PHY_VARS_gNB
*
)
calloc
(
1
,
sizeof
(
PHY_VARS_gNB
));
LOG_I
(
PHY
,
"[nr-gnb.c] gNB structure RC.gNB[%d] allocated @ %p
\n
"
,
inst
,
RC
.
gNB
[
inst
]);
}
gNB
=
RC
.
gNB
[
inst
];
gNB
->
abstraction_flag
=
0
;
gNB
=
RC
.
gNB
[
inst
];
/*nr_polar_init(&gNB->nrPolar_params,
NR_POLAR_PBCH_MESSAGE_TYPE,
NR_POLAR_PBCH_PAYLOAD_BITS,
...
...
executables/nr-softmodem.c
View file @
450346c7
...
...
@@ -163,11 +163,6 @@ void pdcp_run(const protocol_ctxt_t *const ctxt_pP)
abort
();
}
/* see file openair2/LAYER2/MAC/main.c for why abstraction_flag is needed
* this is very hackish - find a proper solution
*/
uint8_t
abstraction_flag
=
0
;
/* forward declarations */
void
set_default_frame_parms
(
nfapi_nr_config_request_scf_t
*
config
[
MAX_NUM_CCs
],
NR_DL_FRAME_PARMS
*
frame_parms
[
MAX_NUM_CCs
]);
...
...
nfapi/oai_integration/nfapi_vnf.c
View file @
450346c7
...
...
@@ -260,9 +260,8 @@ void oai_create_gnb(void) {
PHY_VARS_gNB
*
gNB
=
RC
.
gNB
[
0
];
RC
.
nb_nr_CC
=
(
int
*
)
malloc
(
sizeof
(
int
));
// TODO: find a better function to place this in
gNB
->
Mod_id
=
bodge_counter
;
gNB
->
CC_id
=
bodge_counter
;
gNB
->
abstraction_flag
=
0
;
gNB
->
Mod_id
=
bodge_counter
;
gNB
->
CC_id
=
bodge_counter
;
RC
.
nb_nr_CC
[
bodge_counter
]
=
1
;
if
(
gNB
->
if_inst
==
0
)
{
...
...
openair1/PHY/INIT/nr_init.c
View file @
450346c7
...
...
@@ -190,7 +190,6 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB)
common_vars
->
debugBuff_sample_offset
=
0
;
// PRACH
prach_vars
->
prachF
=
(
int16_t
*
)
malloc16_clear
(
1024
*
2
*
sizeof
(
int16_t
)
);
prach_vars
->
rxsigF
=
(
int16_t
**
)
malloc16_clear
(
Prx
*
sizeof
(
int16_t
*
));
prach_vars
->
prach_ifft
=
(
int32_t
*
)
malloc16_clear
(
1024
*
2
*
sizeof
(
int32_t
));
...
...
@@ -205,19 +204,13 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB)
gNB
->
pusch_vars
=
(
NR_gNB_PUSCH
*
)
malloc16_clear
(
gNB
->
max_nb_pusch
*
sizeof
(
NR_gNB_PUSCH
));
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
gNB
->
max_nb_pusch
;
ULSCH_id
++
)
{
NR_gNB_PUSCH
*
pusch
=
&
gNB
->
pusch_vars
[
ULSCH_id
];
pusch
->
rxdataF_ext
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
));
pusch
->
ul_ch_estimates
=
(
int32_t
**
)
malloc16
(
n_buf
*
sizeof
(
int32_t
*
));
pusch
->
ul_ch_estimates_ext
=
(
int32_t
**
)
malloc16
(
n_buf
*
sizeof
(
int32_t
*
));
pusch
->
ptrs_phase_per_slot
=
(
int32_t
**
)
malloc16
(
n_buf
*
sizeof
(
int32_t
*
));
pusch
->
ul_ch_estimates_time
=
(
int32_t
**
)
malloc16
(
n_buf
*
sizeof
(
int32_t
*
));
pusch
->
rxdataF_comp
=
(
int32_t
**
)
malloc16
(
n_buf
*
sizeof
(
int32_t
*
));
pusch
->
llr_layers
=
(
int16_t
**
)
malloc16
(
max_ul_mimo_layers
*
sizeof
(
int32_t
*
));
for
(
i
=
0
;
i
<
Prx
;
i
++
)
{
pusch
->
rxdataF_ext
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
nb_re_pusch2
*
fp
->
symbols_per_slot
);
}
for
(
i
=
0
;
i
<
n_buf
;
i
++
)
{
pusch
->
ul_ch_estimates
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
fp
->
symbols_per_slot
);
pusch
->
ul_ch_estimates_ext
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
nb_re_pusch2
*
fp
->
symbols_per_slot
);
pusch
->
ul_ch_estimates_time
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
);
pusch
->
ptrs_phase_per_slot
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
symbols_per_slot
);
// symbols per slot
pusch
->
rxdataF_comp
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
nb_re_pusch2
*
fp
->
symbols_per_slot
);
...
...
@@ -279,7 +272,6 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
free_and_zero
(
common_vars
->
debugBuff
);
NR_gNB_PRACH
*
prach_vars
=
&
gNB
->
prach_vars
;
free_and_zero
(
prach_vars
->
prachF
);
free_and_zero
(
prach_vars
->
rxsigF
);
free_and_zero
(
prach_vars
->
prach_ifft
);
...
...
@@ -287,20 +279,14 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
NR_gNB_PUSCH
*
pusch_vars
=
&
gNB
->
pusch_vars
[
ULSCH_id
];
for
(
int
i
=
0
;
i
<
max_ul_mimo_layers
;
i
++
)
free_and_zero
(
pusch_vars
->
llr_layers
[
i
]);
for
(
int
i
=
0
;
i
<
Prx
;
i
++
)
{
free_and_zero
(
pusch_vars
->
rxdataF_ext
[
i
]);
}
for
(
int
i
=
0
;
i
<
n_buf
;
i
++
)
{
free_and_zero
(
pusch_vars
->
ul_ch_estimates
[
i
]);
free_and_zero
(
pusch_vars
->
ul_ch_estimates_ext
[
i
]);
free_and_zero
(
pusch_vars
->
ul_ch_estimates_time
[
i
]);
free_and_zero
(
pusch_vars
->
ptrs_phase_per_slot
[
i
]);
free_and_zero
(
pusch_vars
->
rxdataF_comp
[
i
]);
}
free_and_zero
(
pusch_vars
->
llr_layers
);
free_and_zero
(
pusch_vars
->
rxdataF_ext
);
free_and_zero
(
pusch_vars
->
ul_ch_estimates
);
free_and_zero
(
pusch_vars
->
ul_ch_estimates_ext
);
free_and_zero
(
pusch_vars
->
ptrs_phase_per_slot
);
free_and_zero
(
pusch_vars
->
ul_ch_estimates_time
);
free_and_zero
(
pusch_vars
->
ul_valid_re_per_slot
);
...
...
openair1/PHY/NR_TRANSPORT/nr_pbch.c
View file @
450346c7
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_prach.c
View file @
450346c7
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
View file @
450346c7
...
...
@@ -72,33 +72,30 @@ int nr_generate_sss(c16_t *txdataF,
NR_DL_FRAME_PARMS
*
frame_parms
);
/*!
\fn
int
nr_generate_pbch_dmrs
\fn
void
nr_generate_pbch_dmrs
\brief Generation of the DMRS for the PBCH
@param
@returns 0 on success
*/
int
nr_generate_pbch_dmrs
(
uint32_t
*
gold_pbch_dmrs
,
c16_t
*
txdataF
,
int16_t
amp
,
uint8_t
ssb_start_symbol
,
nfapi_nr_config_request_scf_t
*
config
,
NR_DL_FRAME_PARMS
*
frame_parms
);
void
nr_generate_pbch_dmrs
(
uint32_t
*
gold_pbch_dmrs
,
c16_t
*
txdataF
,
int16_t
amp
,
uint8_t
ssb_start_symbol
,
nfapi_nr_config_request_scf_t
*
config
,
NR_DL_FRAME_PARMS
*
frame_parms
);
/*!
\fn
int
nr_generate_pbch
\fn
void
nr_generate_pbch
\brief Generation of the PBCH
@param
@returns 0 on success
*/
int
nr_generate_pbch
(
nfapi_nr_dl_tti_ssb_pdu
*
ssb_pdu
,
uint8_t
*
interleaver
,
c16_t
*
txdataF
,
int16_t
amp
,
uint8_t
ssb_start_symbol
,
uint8_t
n_hf
,
int
sfn
,
nfapi_nr_config_request_scf_t
*
config
,
NR_DL_FRAME_PARMS
*
frame_parms
);
void
nr_generate_pbch
(
PHY_VARS_gNB
*
gNB
,
const
nfapi_nr_dl_tti_ssb_pdu
*
ssb_pdu
,
c16_t
*
txdataF
,
uint8_t
ssb_start_symbol
,
uint8_t
n_hf
,
int
sfn
,
nfapi_nr_config_request_scf_t
*
config
,
NR_DL_FRAME_PARMS
*
frame_parms
);
/*!
\fn int nr_generate_pbch
...
...
@@ -107,6 +104,7 @@ int nr_generate_pbch(nfapi_nr_dl_tti_ssb_pdu *ssb_pdu,
@returns the bit index of the output
*/
void
nr_init_pbch_interleaver
(
uint8_t
*
interleaver
);
uint32_t
nr_pbch_extra_byte_generation
(
int
sfn
,
int
n_hf
,
int
ssb_index
,
int
ssb_sc_offset
,
int
Lmax
);
NR_gNB_DLSCH_t
new_gNB_dlsch
(
NR_DL_FRAME_PARMS
*
frame_parms
,
uint16_t
N_RB
);
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
View file @
450346c7
...
...
@@ -288,14 +288,11 @@ static void nr_ulsch_extract_rbs(c16_t* const rxdataF,
NR_DL_FRAME_PARMS
*
frame_parms
)
{
uint8_t
delta
=
0
;
int
start_re
=
(
frame_parms
->
first_carrier_offset
+
(
pusch_pdu
->
rb_start
+
pusch_pdu
->
bwp_start
)
*
NR_NB_SC_PER_RB
)
%
frame_parms
->
ofdm_symbol_size
;
int
nb_re_pusch
=
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
;
c16_t
*
rxF
=
&
rxdataF
[
rxoffset
];
c16_t
*
rxF_ext
=
&
rxFext
[
0
];
c16_t
*
ul_ch0
=
&
chF
[
choffset
];
c16_t
*
rxF
=
&
rxdataF
[
rxoffset
];
c16_t
*
rxF_ext
=
&
rxFext
[
0
];
c16_t
*
ul_ch0
=
&
chF
[
choffset
];
c16_t
*
ul_ch0_ext
=
&
chFext
[
0
];
if
(
is_dmrs_symbol
==
0
)
{
...
...
@@ -307,11 +304,11 @@ static void nr_ulsch_extract_rbs(c16_t* const rxdataF,
memcpy
(
rxF_ext
,
&
rxF
[
start_re
],
neg_length
*
sizeof
(
c16_t
));
memcpy
(
&
rxF_ext
[
neg_length
],
rxF
,
pos_length
*
sizeof
(
c16_t
));
}
memcpy
(
ul_ch0_ext
,
ul_ch0
,
nb_re_pusch
*
sizeof
(
c16_t
));
memcpy
(
ul_ch0_ext
,
ul_ch0
,
nb_re_pusch
*
sizeof
(
c16_t
));
}
else
if
(
pusch_pdu
->
dmrs_config_type
==
pusch_dmrs_type1
)
{
// 6 REs / PRB
AssertFatal
(
delta
==
0
||
delta
==
1
,
"Illegal delta %d
\n
"
,
delta
);
c16_t
*
rxF32
=
&
rxF
[
start_re
];
c16_t
*
rxF32
=
&
rxF
[
start_re
];
if
(
start_re
+
nb_re_pusch
<
frame_parms
->
ofdm_symbol_size
)
{
for
(
int
idx
=
1
-
delta
;
idx
<
nb_re_pusch
;
idx
+=
2
)
{
*
rxF_ext
++
=
rxF32
[
idx
];
...
...
@@ -367,7 +364,8 @@ static void nr_ulsch_extract_rbs(c16_t* const rxdataF,
}
}
static
void
nr_ulsch_scale_channel
(
int
**
ul_ch_estimates_ext
,
static
void
nr_ulsch_scale_channel
(
int
size_est
,
int
ul_ch_estimates_ext
[][
size_est
],
NR_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
symbol
,
uint8_t
is_dmrs_symbol
,
...
...
@@ -419,7 +417,8 @@ static int get_nb_re_pusch (NR_DL_FRAME_PARMS *frame_parms, nfapi_nr_pusch_pdu_t
}
// compute average channel_level on each (TX,RX) antenna pair
static
void
nr_ulsch_channel_level
(
int
**
ul_ch_estimates_ext
,
static
void
nr_ulsch_channel_level
(
int
size_est
,
int
ul_ch_estimates_ext
[][
size_est
],
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
avg
,
uint8_t
symbol
,
...
...
@@ -436,7 +435,7 @@ static void nr_ulsch_channel_level(int **ul_ch_estimates_ext,
//clear average level
avg128U
=
simde_mm_setzero_si128
();
ul_ch128
=
(
simde__m128i
*
)
&
ul_ch_estimates_ext
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
len
];
ul_ch128
=
(
simde__m128i
*
)
&
ul_ch_estimates_ext
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
symbol
*
len
];
for
(
int
i
=
0
;
i
<
len
>>
2
;
i
++
)
{
avg128U
=
simde_mm_add_epi32
(
avg128U
,
simde_mm_srai_epi32
(
simde_mm_madd_epi16
(
ul_ch128
[
i
],
ul_ch128
[
i
]),
x
));
...
...
@@ -1638,17 +1637,21 @@ int nr_rx_pusch_tp(PHY_VARS_gNB *gNB,
dmrs_symbol
=
get_valid_dmrs_idx_for_channel_est
(
rel15_ul
->
ul_dmrs_symb_pos
,
meas_symbol
);
else
// average of channel estimates stored in first symbol
dmrs_symbol
=
get_next_dmrs_symbol_in_slot
(
rel15_ul
->
ul_dmrs_symb_pos
,
rel15_ul
->
start_symbol_index
,
end_symbol
);
int
size_est
=
nb_re_pusch
*
frame_parms
->
symbols_per_slot
;
__attribute__
((
aligned
(
32
)))
int
ul_ch_estimates_ext
[
rel15_ul
->
nrOfLayers
*
frame_parms
->
nb_antennas_rx
][
size_est
];
memset
(
ul_ch_estimates_ext
,
0
,
sizeof
(
ul_ch_estimates_ext
));
int
buffer_length
=
rel15_ul
->
rb_size
*
NR_NB_SC_PER_RB
;
c16_t
temp_rxFext
[
frame_parms
->
nb_antennas_rx
][
buffer_length
]
__attribute__
((
aligned
(
32
)));
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
for
(
int
aatx
=
0
;
aatx
<
rel15_ul
->
nrOfLayers
;
aatx
++
)
for
(
int
nl
=
0
;
nl
<
rel15_ul
->
nrOfLayers
;
nl
++
)
nr_ulsch_extract_rbs
(
gNB
->
common_vars
.
rxdataF
[
aarx
],
(
c16_t
*
)
pusch_vars
->
ul_ch_estimates
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
],
(
c16_t
*
)
&
pusch_vars
->
rxdataF_ext
[
aarx
][
meas_symbol
*
nb_re_pusch
],
(
c16_t
*
)
&
pusch_vars
->
ul_ch_estimates_ext
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
][
meas_symbol
*
nb_re_pusch
],
(
c16_t
*
)
pusch_vars
->
ul_ch_estimates
[
nl
*
frame_parms
->
nb_antennas_rx
+
aarx
],
temp_rxFext
[
aarx
],
(
c16_t
*
)
&
ul_ch_estimates_ext
[
nl
*
frame_parms
->
nb_antennas_rx
+
aarx
][
meas_symbol
*
nb_re_pusch
],
soffset
+
meas_symbol
*
frame_parms
->
ofdm_symbol_size
,
dmrs_symbol
*
frame_parms
->
ofdm_symbol_size
,
aarx
,
(
rel15_ul
->
ul_dmrs_symb_pos
>>
meas_symbol
)
&
0x01
,
(
rel15_ul
->
ul_dmrs_symb_pos
>>
meas_symbol
)
&
0x01
,
rel15_ul
,
frame_parms
);
...
...
@@ -1659,7 +1662,8 @@ int nr_rx_pusch_tp(PHY_VARS_gNB *gNB,
//----------------------------------------------------------
//--------------------- Channel Scaling --------------------
//----------------------------------------------------------
nr_ulsch_scale_channel
(
pusch_vars
->
ul_ch_estimates_ext
,
nr_ulsch_scale_channel
(
size_est
,
ul_ch_estimates_ext
,
frame_parms
,
meas_symbol
,
(
rel15_ul
->
ul_dmrs_symb_pos
>>
meas_symbol
)
&
0x01
,
...
...
@@ -1668,16 +1672,17 @@ int nr_rx_pusch_tp(PHY_VARS_gNB *gNB,
rel15_ul
->
rb_size
,
shift_ch_ext
);
nr_ulsch_channel_level
(
pusch_vars
->
ul_ch_estimates_ext
,
nr_ulsch_channel_level
(
size_est
,
ul_ch_estimates_ext
,
frame_parms
,
avg
,
meas_symbol
,
// index of the start symbol
nb_re_pusch
,
// number of the re in pusch
rel15_ul
->
nrOfLayers
);
for
(
int
aatx
=
0
;
aatx
<
rel15_ul
->
nrOfLayers
;
aatx
++
)
for
(
int
nl
=
0
;
nl
<
rel15_ul
->
nrOfLayers
;
nl
++
)
for
(
int
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
avgs
=
cmax
(
avgs
,
avg
[
aatx
*
frame_parms
->
nb_antennas_rx
+
aarx
]);
avgs
=
cmax
(
avgs
,
avg
[
nl
*
frame_parms
->
nb_antennas_rx
+
aarx
]);
pusch_vars
->
log2_maxh
=
(
log2_approx
(
avgs
)
>>
1
);
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
View file @
450346c7
...
...
@@ -24,7 +24,7 @@
#include "PHY/defs_nr_UE.h"
//#include "PHY/defs_gNB.h"
/** @addtogroup _PHY_PARAMETER_ESTIMATION_BLOCKS_
* @{
*/
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
450346c7
...
...
@@ -417,7 +417,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
//printf("start rx segment %d\n",r);
uint32_t
E
=
nr_get_E
(
G
,
harq_process
->
C
,
dlsch
->
dlsch_config
.
qamModOrder
,
dlsch
->
Nl
,
r
);
decParams
.
R
=
nr_get_R_ldpc_decoder
(
dlsch
->
dlsch_config
.
rv
,
E
,
decParams
.
BG
,
decParams
.
Z
,
&
harq_process
->
llrLen
,
harq_process
->
DLround
);
union
ldpcReqUnion
id
=
{.
s
=
{
dlsch
->
rnti
,
frame
,
nr_slot_rx
,
0
,
0
}};
union
ldpcReqUnion
id
=
{.
s
=
{
dlsch
->
rnti
,
frame
,
nr_slot_rx
,
0
,
0
}};
notifiedFIFO_elt_t
*
req
=
newNotifiedFIFO_elt
(
sizeof
(
ldpcDecode_ue_t
),
id
.
p
,
&
nf
,
&
nr_processDLSegment
);
ldpcDecode_ue_t
*
rdata
=
(
ldpcDecode_ue_t
*
)
NotifiedFifoData
(
req
);
...
...
openair1/PHY/defs_gNB.h
View file @
450346c7
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
450346c7
...
...
@@ -45,7 +45,7 @@
extern
uint8_t
nfapi_mode
;
void
nr_common_signal_procedures
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_ssb_pdu
ssb_pdu
)
void
nr_common_signal_procedures
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
int
slot
,
nfapi_nr_dl_tti_ssb_pdu
ssb_pdu
)
{
NR_DL_FRAME_PARMS
*
fp
=
&
gNB
->
frame_parms
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
...
...
@@ -135,10 +135,9 @@ void nr_common_signal_procedures(PHY_VARS_gNB *gNB,int frame,int slot, nfapi_nr_
gNB
->
common_vars
.
beam_id
[
0
][
slot
*
fp
->
symbols_per_slot
+
j
]
=
cfg
->
ssb_table
.
ssb_beam_id_list
[
ssb_index
].
beam_id
.
value
;
}
nr_generate_pbch
(
&
ssb_pdu
,
gNB
->
nr_pbch_interleaver
,
nr_generate_pbch
(
gNB
,
&
ssb_pdu
,
&
txdataF
[
0
][
txdataF_offset
],
gNB
->
TX_AMP
,
ssb_start_symbol
,
n_hf
,
frame
,
...
...
@@ -346,10 +345,7 @@ static void nr_postDecode(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req)
ulsch_harq->ulsch_pdu.rb_size],ulsch_harq->ulsch_pdu.nr_of_symbols*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size)),1,1); LOG_M("chestF0.m","chF0",
&gNB->pusch_vars[0].ul_ch_estimates[0][ulsch_harq->ulsch_pdu.start_symbol_index*gNB->frame_parms.ofdm_symbol_size],gNB->frame_parms.ofdm_symbol_size,1,1);
LOG_M("chestF0_ext.m","chF0_ext",
&gNB->pusch_vars[0]->ul_ch_estimates_ext[0][(ulsch_harq->ulsch_pdu.start_symbol_index+1)*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size))], (ulsch_harq->ulsch_pdu.nr_of_symbols-1)*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size)),1,1); LOG_M("rxsigF0_comp.m","rxsF0_comp",
LOG_M("rxsigF0_comp.m","rxsF0_comp",
&gNB->pusch_vars[0].rxdataF_comp[0][ulsch_harq->ulsch_pdu.start_symbol_index*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size))],ulsch_harq->ulsch_pdu.nr_of_symbols*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size)),1,1); LOG_M("rxsigF0_llr.m","rxsF0_llr",
...
...
@@ -361,10 +357,7 @@ static void nr_postDecode(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req)
ulsch_harq->ulsch_pdu.rb_size],ulsch_harq->ulsch_pdu.nr_of_symbols*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size)),1,1); LOG_M("chestF1.m","chF1",
&gNB->pusch_vars[0].ul_ch_estimates[1][ulsch_harq->ulsch_pdu.start_symbol_index*gNB->frame_parms.ofdm_symbol_size],gNB->frame_parms.ofdm_symbol_size,1,1);
LOG_M("chestF1_ext.m","chF1_ext",
&gNB->pusch_vars[0].ul_ch_estimates_ext[1][(ulsch_harq->ulsch_pdu.start_symbol_index+1)*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size))], (ulsch_harq->ulsch_pdu.nr_of_symbols-1)*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size)),1,1); LOG_M("rxsigF1_comp.m","rxsF1_comp",
LOG_M("rxsigF1_comp.m","rxsF1_comp",
&gNB->pusch_vars[0].rxdataF_comp[1][ulsch_harq->ulsch_pdu.start_symbol_index*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size))],ulsch_harq->ulsch_pdu.nr_of_symbols*(off+(NR_NB_SC_PER_RB *
ulsch_harq->ulsch_pdu.rb_size)),1,1);
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
450346c7
...
...
@@ -204,6 +204,7 @@ int main(int argc, char **argv)
channel_desc_t
*
gNB2UE
;
get_softmodem_params
()
->
sa
=
1
;
get_softmodem_params
()
->
usim_test
=
1
;
//uint8_t extended_prefix_flag=0;
//int8_t interf1=-21,interf2=-21;
...
...
@@ -230,7 +231,7 @@ int main(int argc, char **argv)
int
frame_length_complex_samples_no_prefix
;
NR_DL_FRAME_PARMS
*
frame_parms
;
int
ret
,
payload_ret
=
0
;
int
ret
;
int
run_initial_sync
=
0
;
int
loglvl
=
OAILOG_WARNING
;
...
...
@@ -835,17 +836,15 @@ int main(int argc, char **argv)
rxdataF
);
if
(
ret
==
0
)
{
// UE->rx_ind.rx_indication_body->mib_pdu.ssb_index; //not yet detected automatically
// UE->rx_ind.rx_indication_body->mib_pdu.ssb_length; //Lmax, not yet detected automatically
uint8_t
gNB_xtra_byte
=
0
;
for
(
int
i
=
0
;
i
<
8
;
i
++
)
gNB_xtra_byte
|=
((
gNB
->
pbch
.
pbch_a
>>
(
31
-
i
))
&
1
)
<<
(
7
-
i
);
payload_ret
=
(
result
.
xtra_byte
==
gNB_xtra_byte
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
payload_ret
+=
(
result
.
decoded_output
[
i
]
==
((
msgDataTx
.
ssb
[
ssb_index
].
ssb_pdu
.
ssb_pdu_rel15
.
bchPayload
>>
(
8
*
i
))
&
0xff
));
}
uint32_t
xtra_byte
=
nr_pbch_extra_byte_generation
(
frame
,
n_hf
,
ssb_index
,
gNB
->
gNB_config
.
ssb_table
.
ssb_subcarrier_offset
.
value
,
frame_parms
->
Lmax
);
int
payload_ret
=
(
result
.
xtra_byte
==
xtra_byte
);
nfapi_nr_dl_tti_ssb_pdu_rel15_t
*
pdu
=
&
msgDataTx
.
ssb
[
ssb_index
].
ssb_pdu
.
ssb_pdu_rel15
;
for
(
int
i
=
0
;
i
<
3
;
i
++
)
payload_ret
+=
(
result
.
decoded_output
[
i
]
==
((
pdu
->
bchPayload
>>
(
8
*
i
))
&
0xff
));
// printf("ret %d\n", payload_ret);
if
(
payload_ret
!=
4
)
n_errors_payload
++
;
...
...
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
450346c7
...
...
@@ -135,11 +135,6 @@ int main(int argc, char **argv){
int
prachOccasion
=
0
;
double
DS_TDL
=
.
03
;
// int8_t interf1=-19,interf2=-19;
// uint8_t abstraction_flag=0,calibration_flag=0;
// double prach_sinr;
// uint32_t nsymb;
// uint16_t preamble_max, preamble_energy_max;
FILE
*
input_fd
=
NULL
;
char
*
input_file
=
NULL
;
int
n_bytes
=
0
;
...
...
@@ -784,22 +779,21 @@ int main(int argc, char **argv){
if
(
n_frames
==
1
)
{
printf
(
"preamble %d (tx %d) : energy %d, delay %d
\n
"
,
preamble_rx
,
preamble_tx
,
preamble_energy
,
preamble_delay
);
#ifdef NR_PRACH_DEBUG
LOG_M
(
"prach0.m"
,
"prach0"
,
&
txdata
[
0
][
prach_start
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"prachF0.m"
,
"prachF0"
,
&
gNB
->
prach_vars
.
prachF
[
0
],
N_ZC
,
1
,
1
);
LOG_M
(
"rxsig0.m"
,
"rxs0"
,
&
ru
->
common
.
rxdata
[
0
][
subframe
*
frame_parms
->
samples_per_subframe
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"ru_rxsig0.m"
,
"rxs0"
,
&
ru
->
common
.
rxdata
[
0
][
subframe
*
frame_parms
->
samples_per_subframe
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"ru_rxsigF0.m"
,
"rxsF0"
,
ru
->
common
.
rxdataF
[
0
],
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_slot
,
1
,
1
);
LOG_M
(
"ru_prach_rxsigF0.m"
,
"rxsF0"
,
ru
->
prach_rxsigF
[
0
][
0
],
N_ZC
,
1
,
1
);
LOG_M
(
"prach_preamble.m"
,
"prachp"
,
&
gNB
->
X_u
[
0
],
N_ZC
,
1
,
1
);
LOG_M
(
"ue_prach_preamble.m"
,
"prachp"
,
&
UE
->
X_u
[
0
],
N_ZC
,
1
,
1
);
#endif
#ifdef NR_PRACH_DEBUG
LOG_M
(
"prach0.m"
,
"prach0"
,
&
txdata
[
0
][
prach_start
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"rxsig0.m"
,
"rxs0"
,
&
ru
->
common
.
rxdata
[
0
][
subframe
*
frame_parms
->
samples_per_subframe
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"ru_rxsig0.m"
,
"rxs0"
,
&
ru
->
common
.
rxdata
[
0
][
subframe
*
frame_parms
->
samples_per_subframe
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"ru_rxsigF0.m"
,
"rxsF0"
,
ru
->
common
.
rxdataF
[
0
],
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_slot
,
1
,
1
);
LOG_M
(
"ru_prach_rxsigF0.m"
,
"rxsF0"
,
ru
->
prach_rxsigF
[
0
][
0
],
N_ZC
,
1
,
1
);
LOG_M
(
"prach_preamble.m"
,
"prachp"
,
&
gNB
->
X_u
[
0
],
N_ZC
,
1
,
1
);
LOG_M
(
"ue_prach_preamble.m"
,
"prachp"
,
&
UE
->
X_u
[
0
],
N_ZC
,
1
,
1
);
#endif
}
}
printf
(
"SNR %f dB, UE Speed %f km/h: errors %u/%d (delay %f)
\n
"
,
SNR
,
ue_speed
,
prach_errors
,
n_frames
,
delay_avg
/
(
double
)(
n_frames
-
prach_errors
));
if
(
input_fd
)
break
;
break
;
if
(
prach_errors
)
break
;
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
450346c7
...
...
@@ -1266,30 +1266,20 @@ int main(int argc, char *argv[])
if
(
n_trials
==
1
&&
round
==
0
)
{
__attribute__
((
unused
))
int
off
=
((
nb_rb
&
1
)
==
1
)
?
4
:
0
;
LOG_M
(
"rxsigF0_ext.m"
,
"rxsF0_ext"
,
&
pusch_vars
->
rxdataF_ext
[
0
][
start_symbol
*
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
],
nb_symb_sch
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"chestF0.m"
,
"chF0"
,
&
pusch_vars
->
ul_ch_estimates
[
0
][
start_symbol
*
frame_parms
->
ofdm_symbol_size
],
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"chestF0_ext.m"
,
"chF0_ext"
,
&
pusch_vars
->
ul_ch_estimates_ext
[
0
][(
start_symbol
+
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
))],
(
nb_symb_sch
-
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"rxsigF0_comp.m"
,
"rxsF0_comp"
,
&
pusch_vars
->
rxdataF_comp
[
0
][
start_symbol
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
))],
nb_symb_sch
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"rxsigF0_llrlayers0.m"
,
"rxsF0_llrlayers0"
,
&
pusch_vars
->
llr_layers
[
0
][
0
],
...
...
@@ -1298,12 +1288,6 @@ int main(int argc, char *argv[])
0
);
if
(
precod_nbr_layers
==
2
)
{
LOG_M
(
"rxsigF1_ext.m"
,
"rxsF1_ext"
,
&
pusch_vars
->
rxdataF_ext
[
1
][
start_symbol
*
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
],
nb_symb_sch
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"chestF3.m"
,
"chF3"
,
...
...
@@ -1312,13 +1296,6 @@ int main(int argc, char *argv[])
1
,
1
);
LOG_M
(
"chestF3_ext.m"
,
"chF3_ext"
,
&
pusch_vars
->
ul_ch_estimates_ext
[
3
][(
start_symbol
+
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
))],
(
nb_symb_sch
-
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"rxsigF2_comp.m"
,
"rxsF2_comp"
,
&
pusch_vars
->
rxdataF_comp
[
2
][
start_symbol
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
))],
...
...
@@ -1335,24 +1312,6 @@ int main(int argc, char *argv[])
}
if
(
precod_nbr_layers
==
4
)
{
LOG_M
(
"rxsigF1_ext.m"
,
"rxsF1_ext"
,
&
pusch_vars
->
rxdataF_ext
[
1
][
start_symbol
*
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
],
nb_symb_sch
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"rxsigF2_ext.m"
,
"rxsF2_ext"
,
&
pusch_vars
->
rxdataF_ext
[
2
][
start_symbol
*
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
],
nb_symb_sch
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"rxsigF3_ext.m"
,
"rxsF3_ext"
,
&
pusch_vars
->
rxdataF_ext
[
3
][
start_symbol
*
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
],
nb_symb_sch
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"chestF5.m"
,
"chF5"
,
...
...
@@ -1373,25 +1332,6 @@ int main(int argc, char *argv[])
1
,
1
);
LOG_M
(
"chestF5_ext.m"
,
"chF5_ext"
,
&
pusch_vars
->
ul_ch_estimates_ext
[
5
][(
start_symbol
+
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
))],
(
nb_symb_sch
-
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"chestF10_ext.m"
,
"chF10_ext"
,
&
pusch_vars
->
ul_ch_estimates_ext
[
10
][(
start_symbol
+
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
))],
(
nb_symb_sch
-
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"chestF15_ext.m"
,
"chF15_ext"
,
&
pusch_vars
->
ul_ch_estimates_ext
[
15
][(
start_symbol
+
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
))],
(
nb_symb_sch
-
1
)
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
)),
1
,
1
);
LOG_M
(
"rxsigF4_comp.m"
,
"rxsF4_comp"
,
&
pusch_vars
->
rxdataF_comp
[
4
][
start_symbol
*
(
off
+
(
NR_NB_SC_PER_RB
*
pusch_pdu
->
rb_size
))],
...
...
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