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
ao gleen
OpenXG-RAN
Commits
00e1ad12
Commit
00e1ad12
authored
Oct 30, 2024
by
Romain Beurdouche
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(nrLDPC_coding_interface): Use reworked interface in gNB
parent
5f22b056
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
578 additions
and
821 deletions
+578
-821
executables/nr-gnb.c
executables/nr-gnb.c
+0
-1
executables/softmodem-common.h
executables/softmodem-common.h
+0
-2
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+4
-9
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+75
-29
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
+12
-12
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
+175
-251
openair1/PHY/NR_TRANSPORT/nr_ulsch.h
openair1/PHY/NR_TRANSPORT/nr_ulsch.h
+8
-13
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
+188
-344
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+4
-2
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+112
-158
No files found.
executables/nr-gnb.c
View file @
00e1ad12
...
@@ -403,7 +403,6 @@ void init_eNB_afterRU(void) {
...
@@ -403,7 +403,6 @@ void init_eNB_afterRU(void) {
for
(
inst
=
0
;
inst
<
RC
.
nb_nr_inst
;
inst
++
)
{
for
(
inst
=
0
;
inst
<
RC
.
nb_nr_inst
;
inst
++
)
{
gNB
=
RC
.
gNB
[
inst
];
gNB
=
RC
.
gNB
[
inst
];
gNB
->
ldpc_offload_flag
=
get_softmodem_params
()
->
ldpc_offload_flag
;
phy_init_nr_gNB
(
gNB
);
phy_init_nr_gNB
(
gNB
);
...
...
executables/softmodem-common.h
View file @
00e1ad12
...
@@ -142,7 +142,6 @@ extern "C"
...
@@ -142,7 +142,6 @@ extern "C"
#define EMULATE_L1 softmodem_params.emulate_l1
#define EMULATE_L1 softmodem_params.emulate_l1
#define CONTINUOUS_TX softmodem_params.continuous_tx
#define CONTINUOUS_TX softmodem_params.continuous_tx
#define SYNC_REF softmodem_params.sync_ref
#define SYNC_REF softmodem_params.sync_ref
#define LDPC_OFFLOAD_FLAG softmodem_params.ldpc_offload_flag
#define DEFAULT_RFCONFIG_FILE "/usr/local/etc/syriq/ue.band7.tm1.PRB100.NR40.dat";
#define DEFAULT_RFCONFIG_FILE "/usr/local/etc/syriq/ue.band7.tm1.PRB100.NR40.dat";
...
@@ -321,7 +320,6 @@ typedef struct {
...
@@ -321,7 +320,6 @@ typedef struct {
int
continuous_tx
;
int
continuous_tx
;
uint32_t
sync_ref
;
uint32_t
sync_ref
;
int
no_itti
;
int
no_itti
;
int
ldpc_offload_flag
;
int
threequarter_fs
;
int
threequarter_fs
;
}
softmodem_params_t
;
}
softmodem_params_t
;
...
...
openair1/PHY/INIT/nr_init.c
View file @
00e1ad12
...
@@ -26,6 +26,7 @@
...
@@ -26,6 +26,7 @@
#include "PHY/defs_gNB.h"
#include "PHY/defs_gNB.h"
#include "PHY/NR_REFSIG/nr_refsig.h"
#include "PHY/NR_REFSIG/nr_refsig.h"
#include "PHY/INIT/nr_phy_init.h"
#include "PHY/INIT/nr_phy_init.h"
#include "PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface.h"
#include "PHY/CODING/nrPolar_tools/nr_polar_pbch_defs.h"
#include "PHY/CODING/nrPolar_tools/nr_polar_pbch_defs.h"
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
...
@@ -40,6 +41,7 @@
...
@@ -40,6 +41,7 @@
#include "PHY/NR_REFSIG/nr_refsig.h"
#include "PHY/NR_REFSIG/nr_refsig.h"
#include "SCHED_NR/fapi_nr_l1.h"
#include "SCHED_NR/fapi_nr_l1.h"
#include "PHY/NR_REFSIG/ul_ref_seq_nr.h"
#include "PHY/NR_REFSIG/ul_ref_seq_nr.h"
#include <string.h>
int
l1_north_init_gNB
()
int
l1_north_init_gNB
()
{
{
...
@@ -96,9 +98,6 @@ void reset_active_stats(PHY_VARS_gNB *gNB, int frame)
...
@@ -96,9 +98,6 @@ void reset_active_stats(PHY_VARS_gNB *gNB, int frame)
}
}
}
}
// A global var to reduce the changes size
ldpc_interface_t
ldpc_interface
=
{
0
},
ldpc_interface_offload
=
{
0
};
void
phy_init_nr_gNB
(
PHY_VARS_gNB
*
gNB
)
void
phy_init_nr_gNB
(
PHY_VARS_gNB
*
gNB
)
{
{
// shortcuts
// shortcuts
...
@@ -134,15 +133,11 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB)
...
@@ -134,15 +133,11 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB)
nr_init_fde
();
// Init array for frequency equalization of transform precoding of PUSCH
nr_init_fde
();
// Init array for frequency equalization of transform precoding of PUSCH
load_LDPClib
(
NULL
,
&
ldpc_interface
);
int
ret_loader
=
load_nrLDPC_coding_interface
(
NULL
,
&
gNB
->
nrLDPC_coding_interface
);
AssertFatal
(
ret_loader
==
0
,
"error loading LDPC library
\n
"
);
pthread_mutex_init
(
&
gNB
->
UL_INFO
.
crc_rx_mutex
,
NULL
);
pthread_mutex_init
(
&
gNB
->
UL_INFO
.
crc_rx_mutex
,
NULL
);
if
(
gNB
->
ldpc_offload_flag
)
load_LDPClib
(
"_t2"
,
&
ldpc_interface_offload
);
else
load_LDPClib
(
NULL
,
&
ldpc_interface
);
gNB
->
max_nb_pdsch
=
MAX_MOBILES_PER_GNB
;
gNB
->
max_nb_pdsch
=
MAX_MOBILES_PER_GNB
;
init_delay_table
(
fp
->
ofdm_symbol_size
,
MAX_DELAY_COMP
,
NR_MAX_OFDM_SYMBOL_SIZE
,
fp
->
delay_table
);
init_delay_table
(
fp
->
ofdm_symbol_size
,
MAX_DELAY_COMP
,
NR_MAX_OFDM_SYMBOL_SIZE
,
fp
->
delay_table
);
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
00e1ad12
...
@@ -65,6 +65,67 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx, int frame, int slot)
...
@@ -65,6 +65,67 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx, int frame, int slot)
time_stats_t
*
dlsch_interleaving_stats
=&
gNB
->
dlsch_interleaving_stats
;
time_stats_t
*
dlsch_interleaving_stats
=&
gNB
->
dlsch_interleaving_stats
;
time_stats_t
*
dlsch_segmentation_stats
=&
gNB
->
dlsch_segmentation_stats
;
time_stats_t
*
dlsch_segmentation_stats
=&
gNB
->
dlsch_segmentation_stats
;
size_t
size_output
=
0
;
for
(
int
dlsch_id
=
0
;
dlsch_id
<
msgTx
->
num_pdsch_slot
;
dlsch_id
++
)
{
NR_gNB_DLSCH_t
*
dlsch
=
msgTx
->
dlsch
[
dlsch_id
];
NR_DL_gNB_HARQ_t
*
harq
=
&
dlsch
->
harq_process
;
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
rel15
=
&
harq
->
pdsch_pdu
.
pdsch_pdu_rel15
;
LOG_D
(
PHY
,
"pdsch: BWPStart %d, BWPSize %d, rbStart %d, rbsize %d
\n
"
,
rel15
->
BWPStart
,
rel15
->
BWPSize
,
rel15
->
rbStart
,
rel15
->
rbSize
);
const
int
Qm
=
rel15
->
qamModOrder
[
0
];
/* PTRS */
uint16_t
dlPtrsSymPos
=
0
;
int
n_ptrs
=
0
;
uint32_t
ptrsSymbPerSlot
=
0
;
if
(
rel15
->
pduBitmap
&
0x1
)
{
set_ptrs_symb_idx
(
&
dlPtrsSymPos
,
rel15
->
NrOfSymbols
,
rel15
->
StartSymbolIndex
,
1
<<
rel15
->
PTRSTimeDensity
,
rel15
->
dlDmrsSymbPos
);
n_ptrs
=
(
rel15
->
rbSize
+
rel15
->
PTRSFreqDensity
-
1
)
/
rel15
->
PTRSFreqDensity
;
ptrsSymbPerSlot
=
get_ptrs_symbols_in_slot
(
dlPtrsSymPos
,
rel15
->
StartSymbolIndex
,
rel15
->
NrOfSymbols
);
}
harq
->
unav_res
=
ptrsSymbPerSlot
*
n_ptrs
;
/// CRC, coding, interleaving and rate matching
AssertFatal
(
harq
->
pdu
!=
NULL
,
"harq->pdu is null
\n
"
);
/* output and its parts for each dlsch should be aligned on 64 bytes
* => size_output is a sum of parts sizes rounded up to a multiple of 64
*/
size_t
size_output_tb
=
rel15
->
rbSize
*
NR_SYMBOLS_PER_SLOT
*
NR_NB_SC_PER_RB
*
Qm
*
rel15
->
nrOfLayers
;
size_output
+=
(
size_output_tb
+
63
-
((
size_output_tb
+
63
)
%
64
));
}
unsigned
char
output
[
size_output
]
__attribute__
((
aligned
(
64
)));
bzero
(
output
,
size_output
);
size_t
offset_output
=
0
;
start_meas
(
dlsch_encoding_stats
);
if
(
nr_dlsch_encoding
(
gNB
,
msgTx
,
frame
,
slot
,
frame_parms
,
output
,
tinput
,
tprep
,
tparity
,
toutput
,
dlsch_rate_matching_stats
,
dlsch_interleaving_stats
,
dlsch_segmentation_stats
)
==
-
1
)
{
return
;
}
stop_meas
(
dlsch_encoding_stats
);
for
(
int
dlsch_id
=
0
;
dlsch_id
<
msgTx
->
num_pdsch_slot
;
dlsch_id
++
)
{
for
(
int
dlsch_id
=
0
;
dlsch_id
<
msgTx
->
num_pdsch_slot
;
dlsch_id
++
)
{
NR_gNB_DLSCH_t
*
dlsch
=
msgTx
->
dlsch
[
dlsch_id
];
NR_gNB_DLSCH_t
*
dlsch
=
msgTx
->
dlsch
[
dlsch_id
];
...
@@ -100,45 +161,24 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx, int frame, int slot)
...
@@ -100,45 +161,24 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx, int frame, int slot)
}
}
harq
->
unav_res
=
ptrsSymbPerSlot
*
n_ptrs
;
harq
->
unav_res
=
ptrsSymbPerSlot
*
n_ptrs
;
/// CRC, coding, interleaving and rate matching
AssertFatal
(
harq
->
pdu
!=
NULL
,
"harq->pdu is null
\n
"
);
unsigned
char
output
[
rel15
->
rbSize
*
NR_SYMBOLS_PER_SLOT
*
NR_NB_SC_PER_RB
*
Qm
*
rel15
->
nrOfLayers
]
__attribute__
((
aligned
(
64
)));
bzero
(
output
,
rel15
->
rbSize
*
NR_SYMBOLS_PER_SLOT
*
NR_NB_SC_PER_RB
*
Qm
*
rel15
->
nrOfLayers
);
start_meas
(
dlsch_encoding_stats
);
if
(
nr_dlsch_encoding
(
gNB
,
frame
,
slot
,
harq
,
frame_parms
,
output
,
tinput
,
tprep
,
tparity
,
toutput
,
dlsch_rate_matching_stats
,
dlsch_interleaving_stats
,
dlsch_segmentation_stats
)
==
-
1
)
return
;
stop_meas
(
dlsch_encoding_stats
);
#ifdef DEBUG_DLSCH
#ifdef DEBUG_DLSCH
printf
(
"PDSCH encoding:
\n
Payload:
\n
"
);
printf
(
"PDSCH encoding:
\n
Payload:
\n
"
);
for
(
int
i
=
0
;
i
<
harq
->
B
>>
7
;
i
++
)
{
for
(
int
i
=
0
;
i
<
(
harq
->
B
>>
3
);
i
+=
16
)
{
for
(
int
j
=
0
;
j
<
16
;
j
++
)
for
(
int
j
=
0
;
j
<
16
;
j
++
)
printf
(
"0x%02x
\t
"
,
harq
->
pdu
[(
i
<<
4
)
+
j
]);
printf
(
"0x%02x
\t
"
,
harq
->
pdu
[
i
+
j
]);
printf
(
"
\n
"
);
printf
(
"
\n
"
);
}
}
printf
(
"
\n
Encoded payload:
\n
"
);
printf
(
"
\n
Encoded payload:
\n
"
);
for
(
int
i
=
0
;
i
<
encoded_length
>>
3
;
i
++
)
{
for
(
int
i
=
0
;
i
<
encoded_length
;
i
+=
8
)
{
for
(
int
j
=
0
;
j
<
8
;
j
++
)
for
(
int
j
=
0
;
j
<
8
;
j
++
)
printf
(
"%d"
,
output
[(
i
<<
3
)
+
j
]);
printf
(
"%d"
,
output
[
offset_output
+
i
+
j
]);
printf
(
"
\t
"
);
printf
(
"
\t
"
);
}
}
printf
(
"
\n
"
);
printf
(
"
\n
"
);
#endif
#endif
if
(
IS_SOFTMODEM_DLSIM
)
if
(
IS_SOFTMODEM_DLSIM
)
memcpy
(
harq
->
f
,
output
,
encoded_length
);
memcpy
(
harq
->
f
,
&
output
[
offset_output
]
,
encoded_length
);
c16_t
mod_symbs
[
rel15
->
NrOfCodewords
][
encoded_length
];
c16_t
mod_symbs
[
rel15
->
NrOfCodewords
][
encoded_length
];
for
(
int
codeWord
=
0
;
codeWord
<
rel15
->
NrOfCodewords
;
codeWord
++
)
{
for
(
int
codeWord
=
0
;
codeWord
<
rel15
->
NrOfCodewords
;
codeWord
++
)
{
...
@@ -147,7 +187,7 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx, int frame, int slot)
...
@@ -147,7 +187,7 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx, int frame, int slot)
uint32_t
scrambled_output
[(
encoded_length
>>
5
)
+
4
];
// modulator acces by 4 bytes in some cases
uint32_t
scrambled_output
[(
encoded_length
>>
5
)
+
4
];
// modulator acces by 4 bytes in some cases
memset
(
scrambled_output
,
0
,
sizeof
(
scrambled_output
));
memset
(
scrambled_output
,
0
,
sizeof
(
scrambled_output
));
if
(
encoded_length
>
rel15
->
rbSize
*
NR_SYMBOLS_PER_SLOT
*
NR_NB_SC_PER_RB
*
Qm
*
rel15
->
nrOfLayers
)
abort
();
if
(
encoded_length
>
rel15
->
rbSize
*
NR_SYMBOLS_PER_SLOT
*
NR_NB_SC_PER_RB
*
Qm
*
rel15
->
nrOfLayers
)
abort
();
nr_pdsch_codeword_scrambling
(
output
,
encoded_length
,
codeWord
,
rel15
->
dataScramblingId
,
rel15
->
rnti
,
scrambled_output
);
nr_pdsch_codeword_scrambling
(
&
output
[
offset_output
]
,
encoded_length
,
codeWord
,
rel15
->
dataScramblingId
,
rel15
->
rnti
,
scrambled_output
);
#ifdef DEBUG_DLSCH
#ifdef DEBUG_DLSCH
printf
(
"PDSCH scrambling:
\n
"
);
printf
(
"PDSCH scrambling:
\n
"
);
...
@@ -176,6 +216,12 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx, int frame, int slot)
...
@@ -176,6 +216,12 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx, int frame, int slot)
}
}
/// Resource mapping
/// Resource mapping
/* output and its parts for each dlsch should be aligned on 64 bytes
* => offset_output should remain a multiple of 64 with enough offset to fit each dlsch
*/
uint32_t
size_output_tb
=
rel15
->
rbSize
*
NR_SYMBOLS_PER_SLOT
*
NR_NB_SC_PER_RB
*
Qm
*
rel15
->
nrOfLayers
;
offset_output
+=
(
size_output_tb
+
63
)
&
~
63
;
// Non interleaved VRB to PRB mapping
// Non interleaved VRB to PRB mapping
uint16_t
start_sc
=
frame_parms
->
first_carrier_offset
+
(
rel15
->
rbStart
+
rel15
->
BWPStart
)
*
NR_NB_SC_PER_RB
;
uint16_t
start_sc
=
frame_parms
->
first_carrier_offset
+
(
rel15
->
rbStart
+
rel15
->
BWPStart
)
*
NR_NB_SC_PER_RB
;
if
(
start_sc
>=
frame_parms
->
ofdm_symbol_size
)
if
(
start_sc
>=
frame_parms
->
ofdm_symbol_size
)
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
View file @
00e1ad12
...
@@ -44,18 +44,18 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx,
...
@@ -44,18 +44,18 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx,
int
slot
);
int
slot
);
int
nr_dlsch_encoding
(
PHY_VARS_gNB
*
gNB
,
int
nr_dlsch_encoding
(
PHY_VARS_gNB
*
gNB
,
int
frame
,
processingData_L1tx_t
*
msgTx
,
uint8_t
slot
,
int
frame
,
NR_DL_gNB_HARQ_t
*
harq
,
uint8_t
slot
,
NR_DL_FRAME_PARMS
*
frame_parms
,
NR_DL_FRAME_PARMS
*
frame_parms
,
unsigned
char
*
output
,
unsigned
char
*
output
,
time_stats_t
*
tinput
,
time_stats_t
*
tinput
,
time_stats_t
*
tprep
,
time_stats_t
*
tprep
,
time_stats_t
*
tparity
,
time_stats_t
*
tparity
,
time_stats_t
*
toutput
,
time_stats_t
*
toutput
,
time_stats_t
*
dlsch_rate_matching_stats
,
time_stats_t
*
dlsch_rate_matching_stats
,
time_stats_t
*
dlsch_interleaving_stats
,
time_stats_t
*
dlsch_interleaving_stats
,
time_stats_t
*
dlsch_segmentation_stats
);
time_stats_t
*
dlsch_segmentation_stats
);
void
nr_emulate_dlsch_payload
(
uint8_t
*
payload
,
uint16_t
size
);
void
nr_emulate_dlsch_payload
(
uint8_t
*
payload
,
uint16_t
size
);
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
View file @
00e1ad12
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_ulsch.h
View file @
00e1ad12
...
@@ -42,28 +42,23 @@ void free_gNB_ulsch(NR_gNB_ULSCH_t *ulsch, uint16_t N_RB_UL);
...
@@ -42,28 +42,23 @@ void free_gNB_ulsch(NR_gNB_ULSCH_t *ulsch, uint16_t N_RB_UL);
NR_gNB_ULSCH_t
new_gNB_ulsch
(
uint8_t
max_ldpc_iterations
,
uint16_t
N_RB_UL
);
NR_gNB_ULSCH_t
new_gNB_ulsch
(
uint8_t
max_ldpc_iterations
,
uint16_t
N_RB_UL
);
/*! \brief Perform PUSCH decoding. TS 38.212 V15.4.0 subclause 6.2
/*! \brief Perform PUSCH decoding
for the whole current received TTI
. TS 38.212 V15.4.0 subclause 6.2
@param phy_vars_gNB, Pointer to PHY data structure for gNB
@param phy_vars_gNB, Pointer to PHY data structure for gNB
@param UE_id, ID of UE transmitting this PUSCH
@param ulsch_llr, Pointer to received llr in ulsch
@param frame_parms, Pointer to frame descriptor structure
@param frame_parms, Pointer to frame descriptor structure
@param nb_symb_sch, number of symbols used in the uplink shared channel
@param frame, current received frame
@param nb_re_dmrs, number of DMRS resource elements in one RB
@param nr_tti_rx, current received TTI
@param nr_tti_rx, current received TTI
@param harq_pid, harq process id
@param G
@param is_crnti
@param ULSCH_ids, array of ULSCH ids
@param nb_pusch, number of uplink shared channels
*/
*/
int
nr_ulsch_decoding
(
PHY_VARS_gNB
*
phy_vars_gNB
,
int
nr_ulsch_decoding
(
PHY_VARS_gNB
*
phy_vars_gNB
,
uint8_t
UE_id
,
short
*
ulsch_llr
,
NR_DL_FRAME_PARMS
*
frame_parms
,
NR_DL_FRAME_PARMS
*
frame_parms
,
nfapi_nr_pusch_pdu_t
*
pusch_pdu
,
uint32_t
frame
,
uint32_t
frame
,
uint8_t
nr_tti_rx
,
uint8_t
nr_tti_rx
,
uint
8_t
harq_pid
,
uint
32_t
*
G
,
uint
32_t
G
,
uint
8_t
*
ULSCH_ids
,
thread_info_tm_t
*
t_info
);
int
nb_pusch
);
/*! \brief Perform PUSCH unscrambling. TS 38.211 V15.4.0 subclause 6.3.1.1
/*! \brief Perform PUSCH unscrambling. TS 38.211 V15.4.0 subclause 6.3.1.1
@param llr, Pointer to llr bits
@param llr, Pointer to llr bits
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
View file @
00e1ad12
This diff is collapsed.
Click to expand it.
openair1/PHY/defs_gNB.h
View file @
00e1ad12
...
@@ -40,6 +40,7 @@
...
@@ -40,6 +40,7 @@
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/impl_defs_top.h"
#include "PHY/impl_defs_top.h"
#include "PHY/defs_common.h"
#include "PHY/defs_common.h"
#include "PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface.h"
#include "PHY/CODING/nrLDPC_extern.h"
#include "PHY/CODING/nrLDPC_extern.h"
#include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h"
#include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h"
#include "executables/rt_profiling.h"
#include "executables/rt_profiling.h"
...
@@ -494,9 +495,10 @@ typedef struct PHY_VARS_gNB_s {
...
@@ -494,9 +495,10 @@ typedef struct PHY_VARS_gNB_s {
/// OFDM symbol offset divisor for UL
/// OFDM symbol offset divisor for UL
uint32_t
ofdm_offset_divisor
;
uint32_t
ofdm_offset_divisor
;
int
ldpc_offload_flag
;
/// NR LDPC coding related
nrLDPC_coding_interface_t
nrLDPC_coding_interface
;
int
max_ldpc_iterations
;
int
max_ldpc_iterations
;
/// indicate the channel estimation technique in time domain
/// indicate the channel estimation technique in time domain
int
chest_time
;
int
chest_time
;
/// indicate the channel estimation technique in freq domain
/// indicate the channel estimation technique in freq domain
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
00e1ad12
This diff is collapsed.
Click to expand it.
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