Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
openairinterface5G
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Merge Requests
26
Merge Requests
26
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
oai
openairinterface5G
Commits
4bc8c6aa
Commit
4bc8c6aa
authored
Oct 26, 2018
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nr_pbchsim' into develop-nr-merge2
parents
aff8b57c
5b939f68
Changes
54
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
54 changed files
with
1969 additions
and
2149 deletions
+1969
-2149
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+13
-6
cmake_targets/autotests/test_case_list.xml
cmake_targets/autotests/test_case_list.xml
+18
-0
cmake_targets/build_oai
cmake_targets/build_oai
+5
-5
cmake_targets/phy_simulators/CMakeLists.txt
cmake_targets/phy_simulators/CMakeLists.txt
+1
-0
common/utils/LOG/log.h
common/utils/LOG/log.h
+5
-5
oaienv
oaienv
+1
-1
openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
+12
-4
openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
+1
-1
openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h
openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h
+6
-4
openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
+1
-1
openair1/PHY/CODING/nr_polar_init.c
openair1/PHY/CODING/nr_polar_init.c
+3
-3
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+11
-9
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+76
-32
openair1/PHY/INIT/nr_parms.c
openair1/PHY/INIT/nr_parms.c
+100
-202
openair1/PHY/INIT/phy_init.h
openair1/PHY/INIT/phy_init.h
+2
-1
openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
+1
-0
openair1/PHY/MODULATION/modulation_common.h
openair1/PHY/MODULATION/modulation_common.h
+2
-0
openair1/PHY/MODULATION/ofdm_mod.c
openair1/PHY/MODULATION/ofdm_mod.c
+2
-2
openair1/PHY/MODULATION/slot_fep_nr.c
openair1/PHY/MODULATION/slot_fep_nr.c
+46
-47
openair1/PHY/NR_REFSIG/nr_dmrs_rx.c
openair1/PHY/NR_REFSIG/nr_dmrs_rx.c
+36
-24
openair1/PHY/NR_REFSIG/pss_nr.h
openair1/PHY/NR_REFSIG/pss_nr.h
+7
-2
openair1/PHY/NR_REFSIG/refsig_defs_ue.h
openair1/PHY/NR_REFSIG/refsig_defs_ue.h
+1
-1
openair1/PHY/NR_REFSIG/sss_nr.h
openair1/PHY/NR_REFSIG/sss_nr.h
+1
-1
openair1/PHY/NR_TRANSPORT/nr_dci.c
openair1/PHY/NR_TRANSPORT/nr_dci.c
+21
-6
openair1/PHY/NR_TRANSPORT/nr_dci.h
openair1/PHY/NR_TRANSPORT/nr_dci.h
+1
-1
openair1/PHY/NR_TRANSPORT/nr_pbch.c
openair1/PHY/NR_TRANSPORT/nr_pbch.c
+19
-3
openair1/PHY/NR_TRANSPORT/nr_pss.c
openair1/PHY/NR_TRANSPORT/nr_pss.c
+8
-2
openair1/PHY/NR_TRANSPORT/nr_sss.c
openair1/PHY/NR_TRANSPORT/nr_sss.c
+1
-1
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+189
-161
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
+0
-3
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
+9
-1016
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+85
-114
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+347
-342
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+1
-0
openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
+107
-64
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
+79
-51
openair1/PHY/TOOLS/cdot_prod.c
openair1/PHY/TOOLS/cdot_prod.c
+122
-0
openair1/PHY/TOOLS/dB_routines.c
openair1/PHY/TOOLS/dB_routines.c
+8
-0
openair1/PHY/TOOLS/lte_dfts.c
openair1/PHY/TOOLS/lte_dfts.c
+6
-4
openair1/PHY/TOOLS/tools_defs.h
openair1/PHY/TOOLS/tools_defs.h
+5
-0
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+6
-3
openair1/PHY/defs_nr_common.h
openair1/PHY/defs_nr_common.h
+6
-2
openair1/PHY/phy_extern_nr_ue.h
openair1/PHY/phy_extern_nr_ue.h
+1
-1
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+5
-4
openair1/SCHED_NR/sched_nr.h
openair1/SCHED_NR/sched_nr.h
+1
-0
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+574
-0
openair1/SIMULATION/NR_UE_PHY/unit_tests/src/pbch_test.c
openair1/SIMULATION/NR_UE_PHY/unit_tests/src/pbch_test.c
+9
-10
openair1/SIMULATION/TOOLS/sim.h
openair1/SIMULATION/TOOLS/sim.h
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+2
-2
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+1
-1
targets/RT/USER/nr-ru.c
targets/RT/USER/nr-ru.c
+2
-2
targets/RT/USER/nr-softmodem.c
targets/RT/USER/nr-softmodem.c
+0
-2
targets/RT/USER/nr-ue.c
targets/RT/USER/nr-ue.c
+1
-1
targets/RT/USER/nr-uesoftmodem.c
targets/RT/USER/nr-uesoftmodem.c
+1
-1
No files found.
cmake_targets/CMakeLists.txt
View file @
4bc8c6aa
...
...
@@ -550,7 +550,9 @@ set (CONFIG_SOURCES
)
set
(
CONFIG_LIBCONFIG_SOURCES
${
CONFIG_ROOTDIR
}
/libconfig/config_libconfig.c
)
)
add_library
(
CONFIG_LIB
${
CONFIG_SOURCES
}
)
set
(
CONFIG_LIBRARIES CONFIG_LIB
)
add_library
(
params_libconfig MODULE
${
CONFIG_LIBCONFIG_SOURCES
}
)
target_link_libraries
(
params_libconfig config
)
# shared library loader
...
...
@@ -1305,7 +1307,7 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/NR_REFSIG/nr_gold.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/file_output.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cadd_vv.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/lte_dfts.c
#
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/log2_approx.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cmult_sv.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cmult_vv.c
...
...
@@ -1341,9 +1343,10 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/NR_REFSIG/nr_dmrs_rx.c
${
OPENAIR1_DIR
}
/PHY/NR_REFSIG/nr_gold_ue.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/lte_ue_measurements.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/file_output.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cadd_vv.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/lte_dfts.c
#
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/log2_approx.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cmult_sv.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cmult_vv.c
...
...
@@ -2450,7 +2453,7 @@ add_executable(nr-uesoftmodem
target_link_libraries
(
nr-uesoftmodem
-Wl,--start-group
RRC_LIB NR_RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB PHY_COMMON PHY_
UE PHY_
NR_UE PHY_RU LFDS NR_L2_UE
#NR_LTE_UE_REUSE_LIB
RRC_LIB NR_RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB PHY_COMMON PHY_NR_UE PHY_RU LFDS NR_L2_UE
#NR_LTE_UE_REUSE_LIB
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
LFDS7
${
ATLAS_LIBRARIES
}
-Wl,--end-group z dl
)
...
...
@@ -2536,10 +2539,14 @@ target_link_libraries (dlsim_tm4
)
add_executable
(
polartest
${
OPENAIR1_DIR
}
/PHY/CODING/TESTBENCH/polartest.c
)
target_link_libraries
(
polartest
m SIMU PHY PHY_NR PHY_COMMON -l
m
${
ATLAS_LIBRARIES
}
)
target_link_libraries
(
polartest
SIMU PHY PHY_NR PHY_COMMON
m
${
ATLAS_LIBRARIES
}
)
add_executable
(
ldpctest
${
OPENAIR1_DIR
}
/PHY/CODING/TESTBENCH/ldpctest.c
)
target_link_libraries
(
ldpctest m SIMU PHY PHY_NR
${
ATLAS_LIBRARIES
}
)
target_link_libraries
(
ldpctest SIMU PHY PHY_NR m
${
ATLAS_LIBRARIES
}
)
add_executable
(
nr_pbchsim
${
OPENAIR1_DIR
}
/SIMULATION/NR_PHY/pbchsim.c
)
target_link_libraries
(
nr_pbchsim -Wl,--start-group UTIL SIMU PHY PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB
${
CONFIG_LIBRARIES
}
-Wl,--end-group m pthread dl
${
ATLAS_LIBRARIES
}
)
foreach
(
myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim
)
...
...
cmake_targets/autotests/test_case_list.xml
View file @
4bc8c6aa
...
...
@@ -1041,7 +1041,25 @@
<search_expr_true>BLER= 0.000000</search_expr_true>
<search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
<nruns>3</nruns>
</testCase>
<testCase id="015104">
<class>execution</class>
<desc>nr_pbchsim test cases.</desc>
<pre_compile_prog></pre_compile_prog>
<compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
<compile_prog_args> --phy_simulators -c </compile_prog_args>
<pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash</pre_exec>
<pre_exec_args></pre_exec_args>
<main_exec> $OPENAIR_DIR/targets/bin/nr_pbchsim.Rel15</main_exec>
<main_exec_args>-s-11 -S-10 -n1000
-s-11 -S-10 -n10 -I</main_exec_args>
<tags>nr_pbchsim.test1</tags>
<search_expr_true>n_errors \(negative CRC\) = 0</search_expr_true>
<search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
<nruns>3</nruns>
</testCase>
<testCase id="015110">
<class>execution</class>
...
...
cmake_targets/build_oai
View file @
4bc8c6aa
...
...
@@ -679,7 +679,7 @@ function main() {
fi
if
[
"
$SIMUS_PHY
"
=
"1"
-o
"
$SIMUS_CORE
"
=
"1"
]
;
then
cd
$OPENAIR_DIR
/cmake_targets/
lte-
simulators
cd
$OPENAIR_DIR
/cmake_targets/
phy_
simulators
[
"
$CLEAN
"
=
"1"
]
&&
rm
-rf
build
mkdir
-p
build
cd
build
...
...
@@ -692,14 +692,14 @@ function main() {
echo_info
"Compiling unitary tests simulators"
# TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim
#simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
simlist
=
"dlsim ulsim polartest ldpctest"
simlist
=
"dlsim ulsim polartest ldpctest
nr_pbchsim
"
for
f
in
$simlist
;
do
compilations
\
lte-
simulators
$f
\
phy_
simulators
$f
\
$f
$dbin
/
$f
.
$REL
done
compilations
\
lte-
simulators coding
\
phy_
simulators coding
\
libcoding.so
$dbin
/libcoding.so
fi
...
...
@@ -711,7 +711,7 @@ function main() {
simlist
=
"secu_knas_encrypt_eia1 secu_kenb aes128_ctr_encrypt aes128_ctr_decrypt secu_knas_encrypt_eea2 secu_knas secu_knas_encrypt_eea1 kdf aes128_cmac_encrypt secu_knas_encrypt_eia2"
for
f
in
$simlist
;
do
compilations
\
lte-
simulators test_
$f
\
phy_
simulators test_
$f
\
test_
$f
$dbin
/test_
$f
.
$REL
done
fi
...
...
cmake_targets/
lte-
simulators/CMakeLists.txt
→
cmake_targets/
phy_
simulators/CMakeLists.txt
View file @
4bc8c6aa
...
...
@@ -9,4 +9,5 @@ set(MU_RECIEVER False)
set
(
NAS_UE False
)
set
(
MESSAGE_CHART_GENERATOR False
)
set
(
RRC_ASN1_VERSION
"Rel14"
)
set
(
T_TRACER False
)
include
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/../CMakeLists.txt
)
common/utils/LOG/log.h
View file @
4bc8c6aa
...
...
@@ -378,17 +378,17 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
/* define variable only used in LOG macro's */
# define LOG_VAR(A,B) A B
# else
/* T_TRACER: remove all debugging and tracing messages, except errors */
# define LOG_I(c, x...)
/* */
# define LOG_W(c, x...)
/* */
# define LOG_E(c, x...)
/* */
# define LOG_D(c, x...)
/* */
# define LOG_I(c, x...)
do {logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_INFO, x) ; } while(0)
/* */
# define LOG_W(c, x...)
do {logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_WARNING, x) ; } while(0)
/* */
# define LOG_E(c, x...)
do {logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_ERR, x) ; } while(0)
/* */
# define LOG_D(c, x...)
do {logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_DEBUG, x) ; } while(0)
/* */
# define LOG_T(c, x...)
/* */
# define LOG_DUMPMSG(c, b, s, x...)
/* */
# define nfapi_log(FILE, FNC, LN, COMP, LVL, FMT...)
# define LOG_DEBUGFLAG(D) ( 0 )
# define LOG_DUMPFLAG(D) ( 0 )
# define LOG_M(file, vector, data, len, dec, format)
# define LOG_M(file, vector, data, len, dec, format)
do { write_file_matlab(file, vector, data, len, dec, format);} while(0)
# define LOG_VAR(A,B)
# endif
/* T_TRACER */
/* avoid warnings for variables only used in LOG macro's but set outside debug section */
...
...
oaienv
View file @
4bc8c6aa
...
...
@@ -18,5 +18,5 @@ alias oailte='cd $OPENAIR_TARGETS/RT/USER'
alias oais='cd $OPENAIR_TARGETS/SIMU/USER'
alias oaiex='cd $OPENAIR_TARGETS/SIMU/EXAMPLES'
export IIOD_REMOTE=192.168.1
.
2
export IIOD_REMOTE=192.168.1
21.3
2
openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
View file @
4bc8c6aa
...
...
@@ -1069,9 +1069,17 @@ int8_t polar_decoder_int16(int16_t *input,
nr_polar_deinterleaver
(
polarParams
->
nr_polar_CPrime
,
polarParams
->
nr_polar_B
,
polarParams
->
interleaving_pattern
,
polarParams
->
K
);
//Remove the CRC (â)
for
(
int
j
=
0
;
j
<
polarParams
->
payloadBits
;
j
++
)
polarParams
->
nr_polar_A
[
j
]
=
polarParams
->
nr_polar_B
[
j
];
nr_byte2bit_uint8_32_t
(
polarParams
->
nr_polar_A
,
polarParams
->
payloadBits
,
out
);
//for (int j = 0; j < polarParams->payloadBits; j++) polarParams->nr_polar_A[j]=polarParams->nr_polar_B[j];
// Check the CRC
for
(
int
j
=
0
;
j
<
polarParams
->
crcParityBits
;
j
++
)
{
int
crcbit
=
0
;
for
(
int
i
=
0
;
i
<
polarParams
->
payloadBits
;
i
++
)
crcbit
=
crcbit
^
(
polarParams
->
crc_generator_matrix
[
i
][
j
]
&
polarParams
->
nr_polar_B
[
i
]);
if
(
crcbit
!=
polarParams
->
nr_polar_B
[
polarParams
->
payloadBits
+
j
])
return
(
-
1
);
}
// pack into ceil(payloadBits/32) 32 bit words, lowest index in MSB
// nr_byte2bit_uint8_32_t(polarParams->nr_polar_A, polarParams->payloadBits, out);
nr_byte2bit_uint8_32_t
(
polarParams
->
nr_polar_B
,
polarParams
->
payloadBits
,
out
);
return
(
0
);
}
openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
View file @
4bc8c6aa
...
...
@@ -443,7 +443,7 @@ void applyGtoright(t_nrPolar_params *pp,decoder_node_t *node) {
}
else
#endif
{
// equvalent scalar code to above, activated only on non x86/ARM architectures
{
// equvalent scalar code to above, activated only on non x86/ARM architectures
or Nv=1,2
for
(
int
i
=
0
;
i
<
node
->
Nv
/
2
;
i
++
)
{
alpha_r
[
i
]
=
alpha_v
[
i
+
(
node
->
Nv
/
2
)]
-
(
betal
[
i
]
*
alpha_v
[
i
]);
}
...
...
openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h
View file @
4bc8c6aa
...
...
@@ -361,11 +361,13 @@ static inline void nr_polar_interleaver(uint8_t *input,
}
static
inline
void
nr_polar_deinterleaver
(
uint8_t
*
input
,
uint8_t
*
output
,
uint16_t
*
pattern
,
uint16_t
size
)
uint8_t
*
output
,
uint16_t
*
pattern
,
uint16_t
size
)
{
for
(
int
i
=
0
;
i
<
size
;
i
++
)
output
[
pattern
[
i
]]
=
input
[
i
];
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
output
[
pattern
[
i
]]
=
input
[
i
];
}
}
#endif
openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
View file @
4bc8c6aa
...
...
@@ -54,7 +54,7 @@ void polar_encoder(uint32_t *in,
polarParams
->
nr_polar_crc
,
polarParams
->
payloadBits
,
polarParams
->
crcParityBits
);
for
(
uint8_t
i
=
0
;
i
<
polarParams
->
crcParityBits
;
i
++
)
for
(
uint8_t
i
=
0
;
i
<
polarParams
->
crcParityBits
;
i
++
)
polarParams
->
nr_polar_crc
[
i
]
=
(
polarParams
->
nr_polar_crc
[
i
]
%
2
);
//Attach CRC to the Transport Block. (a to b)
...
...
openair1/PHY/CODING/nr_polar_init.c
View file @
4bc8c6aa
...
...
@@ -185,9 +185,9 @@ void nr_polar_print_polarParams(t_nrPolar_paramsPtr polarParams)
}
t_nrPolar_paramsPtr
nr_polar_params
(
t_nrPolar_paramsPtr
polarParams
,
int8_t
messageType
,
uint16_t
messageLength
,
uint8_t
aggregation_level
)
int8_t
messageType
,
uint16_t
messageLength
,
uint8_t
aggregation_level
)
{
t_nrPolar_paramsPtr
currentPtr
=
NULL
;
...
...
openair1/PHY/INIT/nr_init.c
View file @
4bc8c6aa
...
...
@@ -92,7 +92,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
int
i
,
UE_id
;
LOG_I
(
PHY
,
"[gNB %d] %s() About to wait for gNB to be configured"
,
gNB
->
Mod_id
,
__FUNCTION__
);
LOG_I
(
PHY
,
"[gNB %d] %s() About to wait for gNB to be configured
\n
"
,
gNB
->
Mod_id
,
__FUNCTION__
);
gNB
->
total_dlsch_bitrate
=
0
;
gNB
->
total_transmitted_bits
=
0
;
...
...
@@ -100,6 +100,8 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
gNB
->
check_for_MUMIMO_transmissions
=
0
;
while
(
gNB
->
configured
==
0
)
usleep
(
10000
);
init_dfts
();
/*
LOG_I(PHY,"[gNB %"PRIu8"] Initializing DL_FRAME_PARMS : N_RB_DL %"PRIu8", PHICH Resource %d, PHICH Duration %d nb_antennas_tx:%u nb_antennas_rx:%u PRACH[rootSequenceIndex:%u prach_Config_enabled:%u configIndex:%u highSpeed:%u zeroCorrelationZoneConfig:%u freqOffset:%u]\n",
gNB->Mod_id,
...
...
@@ -324,7 +326,7 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
free_and_zero
(
srs_vars
[
UE_id
].
srs_ch_estimates_time
);
}
//UE_id
free_ul_ref_sigs
();
//
free_ul_ref_sigs();
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
free_and_zero
(
srs_vars
[
UE_id
].
srs
);
...
...
@@ -367,7 +369,7 @@ void install_schedule_handlers(IF_Module_t *if_inst)
/// this function is a temporary addition for NR configuration
/*void nr_phy_config_request(PHY_VARS_gNB *gNB
)
void
nr_phy_config_request_sim
(
PHY_VARS_gNB
*
gNB
,
int
N_RB_DL
,
int
N_RB_UL
,
int
mu
)
{
NR_DL_FRAME_PARMS
*
fp
=
&
gNB
->
frame_parms
;
nfapi_nr_config_request_t
*
gNB_config
=
&
gNB
->
gNB_config
;
...
...
@@ -375,14 +377,14 @@ void install_schedule_handlers(IF_Module_t *if_inst)
//overwrite for new NR parameters
gNB_config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
]
=
22
;
gNB_config
->
nfapi_config
.
earfcn
.
value
=
6600
;
gNB_config->subframe_config.numerology_index_mu.value =
1
;
gNB_config->subframe_config.duplex_mode.value =
F
DD;
gNB_config
->
subframe_config
.
numerology_index_mu
.
value
=
mu
;
gNB_config
->
subframe_config
.
duplex_mode
.
value
=
T
DD
;
gNB_config
->
rf_config
.
tx_antenna_ports
.
value
=
1
;
gNB_config->rf_config.dl_carrier_bandwidth.value =
106
;
gNB_config->rf_config.ul_carrier_bandwidth.value =
106
;
gNB_config
->
rf_config
.
dl_carrier_bandwidth
.
value
=
N_RB_DL
;
gNB_config
->
rf_config
.
ul_carrier_bandwidth
.
value
=
N_RB_UL
;
gNB_config
->
sch_config
.
half_frame_index
.
value
=
0
;
gNB_config
->
sch_config
.
ssb_subcarrier_offset
.
value
=
0
;
gNB_config->sch_config.n_ssb_crb.value =
86
;
gNB_config
->
sch_config
.
n_ssb_crb
.
value
=
(
N_RB_DL
-
20
)
>>
1
;
gNB_config
->
sch_config
.
ssb_subcarrier_offset
.
value
=
0
;
...
...
@@ -396,7 +398,7 @@ void install_schedule_handlers(IF_Module_t *if_inst)
gNB
->
configured
=
1
;
LOG_I
(
PHY
,
"gNB configured
\n
"
);
}
*/
}
void
nr_phy_config_request
(
NR_PHY_Config_t
*
phy_config
)
...
...
openair1/PHY/INIT/nr_init_ue.c
View file @
4bc8c6aa
...
...
@@ -655,15 +655,16 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
int
i
,
j
,
k
,
l
;
int
eNB_id
;
int
th_id
;
int
n_ssb_crb
=
(
fp
->
N_RB_DL
-
20
)
>>
1
;
abstraction_flag
=
0
;
fp
->
nb_antennas_tx
=
1
;
fp
->
nb_antennas_rx
=
1
;
printf
(
"Initializing UE vars (abstraction %"
PRIu8
") for eNB TXant %"
PRIu8
", UE RXant %"
PRIu8
"
\n
"
,
abstraction_flag
,
fp
->
nb_antennas_tx
,
fp
->
nb_antennas_rx
);
//LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]\n", ue->Mod_id+NB_eNB_INST);
nr_init_frame_parms_ue
(
&
ue
->
frame_parms
);
nr_init_frame_parms_ue
(
&
ue
->
frame_parms
,
NR_MU_1
,
NORMAL
,
n_ssb_crb
,
0
);
phy_init_nr_top
(
ue
);
// many memory allocation sizes are hard coded
...
...
@@ -699,7 +700,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
for
(
i
=
0
;
i
<
fp
->
nb_antennas_tx
;
i
++
)
{
common_vars
->
txdata
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
samples_per_subframe
*
10
*
sizeof
(
int32_t
)
);
common_vars
->
txdataF
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
ofdm_symbol_size
*
fp
->
symbols_per_
tti
*
10
*
sizeof
(
int32_t
)
);
common_vars
->
txdataF
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
ofdm_symbol_size
*
fp
->
symbols_per_
slot
*
10
*
sizeof
(
int32_t
)
);
}
// init RX buffers
...
...
@@ -728,7 +729,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
for
(
j
=
0
;
j
<
4
;
j
++
)
{
int
idx
=
(
j
<<
1
)
+
i
;
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
dl_ch_estimates
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
symbols_per_
tti
*
(
fp
->
ofdm_symbol_size
+
LTE_CE_FILTER_LENGTH
)
);
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
dl_ch_estimates
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
symbols_per_
slot
*
(
fp
->
ofdm_symbol_size
+
LTE_CE_FILTER_LENGTH
)
);
common_vars
->
common_vars_rx_data_per_thread
[
th_id
].
dl_ch_estimates_time
[
eNB_id
][
idx
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
2
);
}
}
...
...
@@ -850,7 +851,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
pbch_vars
[
eNB_id
]
->
rxdataF_ext
=
(
int32_t
**
)
malloc16
(
fp
->
nb_antennas_rx
*
sizeof
(
int32_t
*
)
);
pbch_vars
[
eNB_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pbch_vars
[
eNB_id
]
->
dl_ch_estimates_ext
=
(
int32_t
**
)
malloc16_clear
(
8
*
sizeof
(
int32_t
*
)
);
pbch_vars
[
eNB_id
]
->
llr
=
(
int
8
_t
*
)
malloc16_clear
(
1920
);
//
pbch_vars
[
eNB_id
]
->
llr
=
(
int
16
_t
*
)
malloc16_clear
(
1920
);
//
prach_vars
[
eNB_id
]
->
prachF
=
(
int16_t
*
)
malloc16_clear
(
sizeof
(
int
)
*
(
7
*
2
*
sizeof
(
int
)
*
(
fp
->
ofdm_symbol_size
*
12
))
);
prach_vars
[
eNB_id
]
->
prach
=
(
int16_t
*
)
malloc16_clear
(
sizeof
(
int
)
*
(
7
*
2
*
sizeof
(
int
)
*
(
fp
->
ofdm_symbol_size
*
12
))
);
...
...
@@ -941,43 +942,25 @@ void init_nr_ue_transport(PHY_VARS_NR_UE *ue,int abstraction_flag) {
void
phy_init_nr_top
(
PHY_VARS_NR_UE
*
ue
)
{
NR_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
NR_UE_DLSCH_t
*
dlsch0
=
ue
->
dlsch
[
0
][
0
][
0
];
dlsch0
=
(
NR_UE_DLSCH_t
*
)
malloc16
(
sizeof
(
NR_UE_DLSCH_t
));
NR_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
NR_UE_DLSCH_t
*
dlsch0
=
ue
->
dlsch
[
0
][
0
][
0
];
dlsch0
=
(
NR_UE_DLSCH_t
*
)
malloc16
(
sizeof
(
NR_UE_DLSCH_t
));
crcTableInit
();
init_dfts
();
ccodedot11_init
();
ccodedot11_init_inv
();
ccodelte_init
();
ccodelte_init_inv
();
//treillis_table_init();
phy_generate_viterbi_tables
();
phy_generate_viterbi_tables_lte
();
//init_td8();
//init_td16();
#ifdef __AVX2__
//init_td16avx2();
#endif
init_context_synchro_nr
(
frame_parms
);
generate_ul_reference_signal_sequences
(
SHRT_MAX
);
// Polar encoder init for PBCH
//nr_polar_init(&frame_parms->pbch_polar_params, 1);
/*t_nrPolar_paramsPtr nrPolar_params = NULL, currentPtr = NULL;
nr_polar_init(&ue->nrPolar_params,
NR_POLAR_PBCH_MESSAGE_TYPE,
NR_POLAR_PBCH_PAYLOAD_BITS,
NR_POLAR_PBCH_AGGREGATION_LEVEL);*/
ue
->
nrPolar_params
=
NULL
;
nr_polar_init
(
&
ue
->
nrPolar_params
,
NR_POLAR_PBCH_MESSAGE_TYPE
,
NR_POLAR_PBCH_PAYLOAD_BITS
,
NR_POLAR_PBCH_AGGREGATION_LEVEL
);
//lte_sync_time_init(frame_parms);
//generate_ul_ref_sigs();
...
...
@@ -993,3 +976,64 @@ void phy_init_nr_top(PHY_VARS_NR_UE *ue)
//set_taus_seed(1328);
}
void
set_default_frame_parms_single
(
nfapi_nr_config_request_t
*
config
,
NR_DL_FRAME_PARMS
*
frame_parms
)
{
//int CC_id;
//for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
/* Set some default values that may be overwritten while reading options */
frame_parms
=
(
NR_DL_FRAME_PARMS
*
)
malloc
(
sizeof
(
NR_DL_FRAME_PARMS
));
config
=
(
nfapi_nr_config_request_t
*
)
malloc
(
sizeof
(
nfapi_nr_config_request_t
));
config
->
subframe_config
.
numerology_index_mu
.
value
=
1
;
config
->
subframe_config
.
duplex_mode
.
value
=
1
;
//FDD
config
->
subframe_config
.
dl_cyclic_prefix_type
.
value
=
0
;
//NORMAL
config
->
rf_config
.
dl_carrier_bandwidth
.
value
=
106
;
config
->
rf_config
.
ul_carrier_bandwidth
.
value
=
106
;
config
->
rf_config
.
tx_antenna_ports
.
value
=
1
;
config
->
rf_config
.
rx_antenna_ports
.
value
=
1
;
config
->
sch_config
.
physical_cell_id
.
value
=
0
;
frame_parms
->
frame_type
=
FDD
;
frame_parms
->
tdd_config
=
3
;
//frame_parms[CC_id]->tdd_config_S = 0;
frame_parms
->
N_RB_DL
=
100
;
frame_parms
->
N_RB_UL
=
100
;
frame_parms
->
Ncp
=
NORMAL
;
//frame_parms[CC_id]->Ncp_UL = NORMAL;
frame_parms
->
Nid_cell
=
0
;
//frame_parms[CC_id]->num_MBSFN_config = 0;
frame_parms
->
nb_antenna_ports_eNB
=
1
;
frame_parms
->
nb_antennas_tx
=
1
;
frame_parms
->
nb_antennas_rx
=
1
;
//frame_parms[CC_id]->nushift = 0;
///frame_parms[CC_id]->phich_config_common.phich_resource = oneSixth;
//frame_parms[CC_id]->phich_config_common.phich_duration = normal;
// UL RS Config
/*frame_parms[CC_id]->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = 1;//n_DMRS1 set to 0
frame_parms[CC_id]->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = 1;
frame_parms[CC_id]->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = 0;
frame_parms[CC_id]->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = 0;
frame_parms[CC_id]->pusch_config_common.n_SB = 1;
frame_parms[CC_id]->pusch_config_common.hoppingMode = 0;
frame_parms[CC_id]->pusch_config_common.pusch_HoppingOffset = 0;
frame_parms[CC_id]->pusch_config_common.enable64QAM = 0;
frame_parms[CC_id]->prach_config_common.rootSequenceIndex=22;
frame_parms[CC_id]->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig=1;
frame_parms[CC_id]->prach_config_common.prach_ConfigInfo.prach_ConfigIndex=0;
frame_parms[CC_id]->prach_config_common.prach_ConfigInfo.highSpeedFlag=0;
frame_parms[CC_id]->prach_config_common.prach_ConfigInfo.prach_FreqOffset=0;*/
// NR: Init to legacy LTE 20Mhz params
frame_parms
->
numerology_index
=
0
;
frame_parms
->
ttis_per_subframe
=
1
;
frame_parms
->
slots_per_tti
=
2
;
//}
}
openair1/PHY/INIT/nr_parms.c
View file @
4bc8c6aa
This diff is collapsed.
Click to expand it.
openair1/PHY/INIT/phy_init.h
View file @
4bc8c6aa
...
...
@@ -377,11 +377,12 @@ void phy_config_request(PHY_Config_t *phy_config);
int
init_frame_parms
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
osf
);
void
dump_frame_parms
(
LTE_DL_FRAME_PARMS
*
frame_parms
);
int
nr_init_frame_parms
(
nfapi_nr_config_request_t
*
config
,
NR_DL_FRAME_PARMS
*
frame_parms
);
int
nr_init_frame_parms_ue
(
NR_DL_FRAME_PARMS
*
frame_parms
);
int
nr_init_frame_parms_ue
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
mu
,
int
Ncp
,
int
n_ssb_crb
,
int
ssb_subcarrier_offset
);
int
init_nr_ue_signal
(
PHY_VARS_NR_UE
*
ue
,
int
nb_connected_eNB
,
uint8_t
abstraction_flag
);
void
nr_dump_frame_parms
(
NR_DL_FRAME_PARMS
*
frame_parms
);
int
phy_init_nr_gNB
(
PHY_VARS_gNB
*
gNB
,
unsigned
char
is_secondary_gNB
,
unsigned
char
abstraction_flag
);
void
nr_phy_config_request
(
NR_PHY_Config_t
*
gNB
);
void
nr_phy_config_request_sim
(
PHY_VARS_gNB
*
gNB
,
int
N_RB_DL
,
int
N_RB_UL
,
int
mu
);
void
phy_free_nr_gNB
(
PHY_VARS_gNB
*
gNB
);
int
l1_north_init_gNB
(
void
);
...
...
openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
View file @
4bc8c6aa
...
...
@@ -285,6 +285,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
init_frame_parms
(
frame_parms
,
1
);
/*
LOG_M("rxdata0.m","rxd0",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
exit(-1);
*/
sync_pos
=
lte_sync_time
(
ue
->
common_vars
.
rxdata
,
...
...
openair1/PHY/MODULATION/modulation_common.h
View file @
4bc8c6aa
...
...
@@ -22,6 +22,7 @@
#ifndef __MODULATION_COMMON__H__
#define __MODULATION_COMMON__H__
#include "PHY/defs_common.h"
#include "PHY/defs_nr_common.h"
/** @addtogroup _PHY_MODULATION_
* @{
*/
...
...
@@ -48,6 +49,7 @@ void PHY_ofdm_mod(int *input,
void
normal_prefix_mod
(
int32_t
*
txdataF
,
int32_t
*
txdata
,
uint8_t
nsymb
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
void
nr_normal_prefix_mod
(
int32_t
*
txdataF
,
int32_t
*
txdata
,
uint8_t
nsymb
,
NR_DL_FRAME_PARMS
*
frame_parms
);
void
do_OFDM_mod
(
int32_t
**
txdataF
,
int32_t
**
txdata
,
uint32_t
frame
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
...
...
openair1/PHY/MODULATION/ofdm_mod.c
View file @
4bc8c6aa
...
...
@@ -122,10 +122,10 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input
case
3072
:
idft
=
idft3072
;
break
;
case
4096
:
idft
=
idft4096
;
break
;
default:
idft
=
idft512
;
break
;
...
...
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
4bc8c6aa
...
...
@@ -30,12 +30,12 @@
#define SOFFSET 0
int
nr_slot_fep
(
PHY_VARS_NR_UE
*
ue
,
unsigned
char
l
,
unsigned
char
Ns
,
int
sample_offset
,
int
no_prefix
,
int
reset_freq_est
,
NR_CHANNEL_EST_t
channel
)
unsigned
char
l
,
unsigned
char
Ns
,
int
sample_offset
,
int
no_prefix
,
int
reset_freq_est
,
NR_CHANNEL_EST_t
channel
)
{
NR_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
NR_UE_COMMON
*
common_vars
=
&
ue
->
common_vars
;
...
...
@@ -61,7 +61,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
int uespec_pilot[9][1200];*/
void
(
*
dft
)(
int16_t
*
,
int16_t
*
,
int
);
int
tmp_dft_in
[
2048
]
__attribute__
((
aligned
(
32
)));
// This is for misalignment issues for 6 and 15 PRBs
int
tmp_dft_in
[
8192
]
__attribute__
((
aligned
(
32
)));
// This is for misalignment issues for 6 and 15 PRBs
switch
(
frame_parms
->
ofdm_symbol_size
)
{
case
128
:
...
...
@@ -88,6 +88,14 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
dft
=
dft2048
;
break
;
case
4096
:
dft
=
dft4096
;
break
;
case
8192
:
dft
=
dft8192
;
break
;
default:
dft
=
dft512
;
break
;
...
...
@@ -143,7 +151,6 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
rx_dft_stats
);
#endif
}
}
else
{
rx_offset
+=
(
frame_parms
->
ofdm_symbol_size
+
nb_prefix_samples
)
*
l
;
// +
...
...
@@ -191,20 +198,17 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
switch
(
channel
){
case
NR_PBCH_EST
:
//if ((l>4) && (l<8)) {
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antenna_ports_eNB
;
aa
++
)
{
//
#ifdef DEBUG_FEP
printf
(
"Channel estimation eNB %d, aatx %d, slot %d, symbol %d
\n
"
,
eNB_id
,
aa
,
Ns
,
l
);
//
#endif
#ifdef DEBUG_FEP
printf
(
"Channel estimation eNB %d, slot %d, symbol %d
\n
"
,
eNB_id
,
Ns
,
l
);
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
nr_pbch_channel_estimation
(
ue
,
eNB_id
,
0
,
Ns
,
aa
,
l
,
symbol
);
nr_pbch_channel_estimation
(
ue
,
eNB_id
,
0
,
Ns
,
l
,
symbol
);
//}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
...
...
@@ -232,53 +236,48 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
#endif
}
}
break
;
case
NR_PDCCH_EST
:
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antenna_ports_eNB
;
aa
++
)
{
#ifdef DEBUG_FEP
printf
(
"PDCCH Channel estimation eNB %d, aatx %d, slot %d, symbol %d start_sc %d
\n
"
,
eNB_id
,
aa
,
Ns
,
l
,
coreset_start_subcarrier
);
printf
(
"PDCCH Channel estimation eNB %d, aatx %d, slot %d, symbol %d start_sc %d
\n
"
,
eNB_id
,
aa
,
Ns
,
l
,
coreset_start_subcarrier
);
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
nr_pdcch_channel_estimation
(
ue
,
eNB_id
,
0
,
Ns
,
aa
,
l
,
symbol
,
coreset_start_subcarrier
,
nb_rb_coreset
);
nr_pdcch_channel_estimation
(
ue
,
eNB_id
,
0
,
Ns
,
l
,
symbol
,
coreset_start_subcarrier
,
nb_rb_coreset
);