Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG
OpenXG UE
Commits
5eb4716a
Commit
5eb4716a
authored
Nov 26, 2019
by
Raphael Defosseux
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop-nr' into develop-nr_cppcheck
parents
4ab2dd0c
9916aec4
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
306 additions
and
107 deletions
+306
-107
ci-scripts/Jenkinsfile-gitlab
ci-scripts/Jenkinsfile-gitlab
+21
-2
ci-scripts/buildOnVM.sh
ci-scripts/buildOnVM.sh
+5
-1
ci-scripts/main.py
ci-scripts/main.py
+2
-2
ci-scripts/oai-ci-vm-tool
ci-scripts/oai-ci-vm-tool
+1
-1
cmake_targets/autotests/test_case_list.xml
cmake_targets/autotests/test_case_list.xml
+20
-17
common/utils/LOG/log.c
common/utils/LOG/log.c
+4
-0
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+1
-1
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
+84
-12
openair1/PHY/NR_REFSIG/dmrs_nr.h
openair1/PHY/NR_REFSIG/dmrs_nr.h
+1
-1
openair1/PHY/NR_REFSIG/nr_gold_ue.c
openair1/PHY/NR_REFSIG/nr_gold_ue.c
+1
-1
openair1/PHY/NR_UE_ESTIMATION/filt16a_32.c
openair1/PHY/NR_UE_ESTIMATION/filt16a_32.c
+37
-1
openair1/PHY/NR_UE_ESTIMATION/filt16a_32.h
openair1/PHY/NR_UE_ESTIMATION/filt16a_32.h
+24
-1
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+97
-46
openair1/PHY/NR_UE_TRANSPORT/dmrs_nr.c
openair1/PHY/NR_UE_TRANSPORT/dmrs_nr.c
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+2
-2
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+1
-1
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+2
-10
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+2
-7
No files found.
ci-scripts/Jenkinsfile-gitlab
View file @
5eb4716a
...
...
@@ -44,7 +44,7 @@ pipeline {
disableConcurrentBuilds
()
timestamps
()
gitLabConnection
(
'OAI GitLab'
)
gitlabBuilds
(
builds:
[
"Build gNB-USRP"
,
"Build nr-UE-USRP"
,
"Build eNB-USRP"
,
"Build basic-sim"
,
"Build phy-sim"
,
"Build eNB-ethernet"
,
"Build UE-ethernet"
,
"Analysis with cppcheck"
,
"Test phy-sim"
,
"Test basic-sim"
,
"Test L2-sim"
,
"Test-Mono-FDD-Band7"
,
"Test-Mono-TDD-Band40"
,
"Test-IF4p5-FDD-Band7"
,
"Test-IF4p5-TDD-Band40"
,
"Test-Mono-FDD-Band13"
,
"Test-Mono-FDD-Band13-X2-HO"
,
"Test-TDD-Band78-gNB-NR-UE"
])
gitlabBuilds
(
builds:
[
"Build gNB-USRP"
,
"Build nr-UE-USRP"
,
"Build eNB-USRP"
,
"Build basic-sim"
,
"Build phy-sim"
,
"Build eNB-ethernet"
,
"Build UE-ethernet"
,
"Analysis with cppcheck"
,
"Test phy-sim"
,
"Test basic-sim"
,
"Test L2-sim"
,
"Test-Mono-FDD-Band7"
,
"Test-Mono-TDD-Band40"
,
"Test-IF4p5-FDD-Band7"
,
"Test-IF4p5-TDD-Band40"
,
"Test-Mono-FDD-Band13"
,
"Test-
IF4p5-TDD-Band38-Multi-RRU"
,
"Test-
Mono-FDD-Band13-X2-HO"
,
"Test-TDD-Band78-gNB-NR-UE"
])
ansiColor
(
'xterm'
)
}
...
...
@@ -131,8 +131,8 @@ pipeline {
[
$class
:
'UsernamePasswordMultiBinding'
,
credentialsId:
"${params.FlexRanRtcGitLabRepository_Credentials}"
,
usernameVariable:
'git_username'
,
passwordVariable:
'git_password'
]
])
{
sh
"git clone https://${git_username}:${git_password}@gitlab.eurecom.fr/flexran/flexran-rtc.git . > ../git_clone.log 2>&1"
sh
"git checkout develop >> ../git_clone.log 2>&1"
}
sh
"sed -i -e 's#add-apt-repository.*cleishm.*neo4j#add-apt-repository ppa:cleishm/neo4j -y#' -e 's#libneo4j-client-dev#libneo4j-client-dev -y#' tools/install_dependencies"
sh
"zip -r -qq flexran.zip ."
}
}
...
...
@@ -578,6 +578,25 @@ pipeline {
}
}
}
stage
(
"Test IF4p5 - TDD - Band 38 - B210 - MultiRRU"
)
{
steps
{
script
{
triggerSlaveJob
(
'eNB-CI-IF4p5-TDD-Band38-MultiRRU-B210'
,
'Test-IF4p5-TDD-Band38-Multi-RRU'
)
}
}
post
{
always
{
script
{
finalizeSlaveJob
(
'eNB-CI-IF4p5-TDD-Band38-MultiRRU-B210'
)
}
}
failure
{
script
{
currentBuild
.
result
=
'FAILURE'
}
}
}
}
stage
(
"Test OAI UE - FDD - Band 20 - B200"
)
{
steps
{
script
{
...
...
ci-scripts/buildOnVM.sh
View file @
5eb4716a
...
...
@@ -179,8 +179,12 @@ function build_on_vm {
echo
"cp /home/ubuntu/zip-install.txt cmake_targets/log"
>>
$VM_CMDS
echo
"echo
\"
./tools/install_dependencies
\"
"
>>
$VM_CMDS
echo
"./tools/install_dependencies > cmake_targets/log/install-build.txt 2>&1"
>>
$VM_CMDS
echo
"echo
\"
mkdir build
\"
"
>>
$VM_CMDS
echo
"mkdir build"
>>
$VM_CMDS
echo
"echo
\"
cd build
\"
"
>>
$VM_CMDS
echo
"cd build"
>>
$VM_CMDS
echo
"echo
\"
$BUILD_OPTIONS
\"
"
>>
$VM_CMDS
echo
"
$BUILD_OPTIONS
> cmake_targets/log/rt_controller.Rel15.txt 2>&1"
>>
$VM_CMDS
echo
"
$BUILD_OPTIONS
>
../
cmake_targets/log/rt_controller.Rel15.txt 2>&1"
>>
$VM_CMDS
fi
if
[[
"
$VM_NAME
"
!=
*
"-cppcheck"
*
]]
&&
[[
"
$VM_NAME
"
!=
*
"-flexran-rtc"
*
]]
then
...
...
ci-scripts/main.py
View file @
5eb4716a
...
...
@@ -379,7 +379,7 @@ class SSHConnection():
self
.
air_interface
=
'lte'
self
.
command
(
'mkdir -p '
+
lSourcePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
lSourcePath
,
'\$'
,
5
)
self
.
command
(
'if [ ! -e .git ]; then stdbuf -o0 git clone '
+
self
.
ranRepository
+
' .; else stdbuf -o0 git fetch; fi'
,
'\$'
,
600
)
self
.
command
(
'if [ ! -e .git ]; then stdbuf -o0 git clone '
+
self
.
ranRepository
+
' .; else stdbuf -o0 git fetch
--prune
; fi'
,
'\$'
,
600
)
# Raphael: here add a check if git clone or git fetch went smoothly
self
.
command
(
'git config user.email "jenkins@openairinterface.org"'
,
'\$'
,
5
)
self
.
command
(
'git config user.name "OAI Jenkins"'
,
'\$'
,
5
)
...
...
@@ -544,7 +544,7 @@ class SSHConnection():
ue_prefix
=
''
self
.
command
(
'mkdir -p '
+
self
.
UESourceCodePath
,
'\$'
,
5
)
self
.
command
(
'cd '
+
self
.
UESourceCodePath
,
'\$'
,
5
)
self
.
command
(
'if [ ! -e .git ]; then stdbuf -o0 git clone '
+
self
.
ranRepository
+
' .; else stdbuf -o0 git fetch; fi'
,
'\$'
,
600
)
self
.
command
(
'if [ ! -e .git ]; then stdbuf -o0 git clone '
+
self
.
ranRepository
+
' .; else stdbuf -o0 git fetch
--prune
; fi'
,
'\$'
,
600
)
# here add a check if git clone or git fetch went smoothly
self
.
command
(
'git config user.email "jenkins@openairinterface.org"'
,
'\$'
,
5
)
self
.
command
(
'git config user.name "OAI Jenkins"'
,
'\$'
,
5
)
...
...
ci-scripts/oai-ci-vm-tool
View file @
5eb4716a
...
...
@@ -222,7 +222,7 @@ function variant__v8__ue_ethernet {
function
variant__v10__flexran_rtc
{
ARCHIVES_LOC
=
flexran
NB_PATTERN_FILES
=
1
BUILD_OPTIONS
=
"cmake . && make -j2"
BUILD_OPTIONS
=
"cmake .
.
&& make -j2"
VARIANT_INFO
=
"non-OSA"
}
...
...
cmake_targets/autotests/test_case_list.xml
View file @
5eb4716a
...
...
@@ -1084,33 +1084,32 @@
(Test3: 273 PRB),
(Test4: 106 PRB 12 CSET-Offset),
(Test5: 217 PRB 48 CSET-Offset),
<!--
(Test6: 106 PRB 25 PDSCH-Offset),
(Test6: 106 PRB 25 PDSCH-Offset),
(Test7: 106 PRB 51 PDSCH-Offset),
(Test8: 217 PRB 100 PDSCH-PRBs),
(Test9: 217 PRB 80 PDSCH-Offset),
(Test10: 217 PRB 100 PDSCH-PRBs 80 PDSCH-Offset),
(Test6: 106 PRB 0 MCS),-->
(Test7: 273 PRB 28 MCS)
</desc>
(Test11: 106 PRBs 50 PDSCH-PRBs MCS Index 28
</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_dlsim.Rel15
</main_exec>
<main_exec_args>
-n100 -R106
-n100 -R217
-n100 -R273
<main_exec_args>
-n100 -R106
-b106
-n100 -R217
-b217
-n100 -R273
-b273
-n100 -R106 -o12
-n100 -R217 -o48
<!--
-n100 -R106 -a25
-n100 -R106 -a25
-n100 -R106 -a51
-n100 -R217 -b100
-n100 -R217 -a80
-n100 -R217 -a80 -b100
-n100 -
R106 -e0--
>
-n100 -R273 -e28
</main_exec_args>
<tags>
nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5
<!--nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10-->
nr_dlsim.test6 nr_dlsim.test7
</tags>
<search_expr_true>
"PDCCH test OK" "PDSCH test OK"
</search_expr_true>
-n100 -
e28
</main_exec_args
>
<tags>
nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 nr_dlsim.test6 nr_dlsim.test7
nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10 nr_dlsim.test11
</tags>
<search_expr_true>
PDSCH test OK
</search_expr_true>
<search_expr_false>
segmentation fault|assertion|exiting|fatal
</search_expr_false>
<nruns>
3
</nruns>
</testCase>
...
...
@@ -1240,19 +1239,23 @@
<testCase
id=
"015111"
>
<class>
execution
</class>
<desc>
nr_ulsim Test cases. (Test1: MCS 9),
(Test2: MCS 16),
(Test3: MCS 28)
</desc>
<desc>
nr_ulsim Test cases. (Test1: MCS 9 106 PRBs),
(Test2: MCS 16 50 PRBs),
(Test3: MCS 28 50 PRBs),
(Test4: MCS 9 217 PRBs),
(Test5: MCS 9 273 PRBs)
</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_ulsim.Rel15
</main_exec>
<main_exec_args>
-f100 -m9 -s10
<main_exec_args>
-f100 -m9 -
r106 -
s10
-f100 -m16 -s20
-f100 -m28 -s30
</main_exec_args>
<tags>
nr_ulsim.test1 nr_ulsim.test2 nr_ulsim.test3
</tags>
-f100 -m28 -s30
-f100 -m9 -R217 -r217 -s10
-f100 -m9 -R273 -r273 -s10
</main_exec_args>
<tags>
nr_ulsim.test1 nr_ulsim.test2 nr_ulsim.test3 nr_ulsim.test4 nr_ulsim.test5
</tags>
<search_expr_true>
PUSCH test OK
</search_expr_true>
<search_expr_false>
segmentation fault|assertion|exiting|fatal
</search_expr_false>
<nruns>
3
</nruns>
...
...
common/utils/LOG/log.c
View file @
5eb4716a
...
...
@@ -434,6 +434,10 @@ int logInit (void)
register_log_component
(
"ASN"
,
"log"
,
ASN
);
register_log_component
(
"NFAPI_VNF"
,
"log"
,
NFAPI_VNF
);
register_log_component
(
"NFAPI_PNF"
,
"log"
,
NFAPI_PNF
);
register_log_component
(
"GNB_APP"
,
"log"
,
GNB_APP
);
register_log_component
(
"NR_RRC"
,
"log"
,
NR_RRC
);
register_log_component
(
"NR_MAC"
,
"log"
,
NR_MAC
);
register_log_component
(
"NR_PHY"
,
"log"
,
NR_PHY
);
for
(
int
i
=
0
;
log_level_names
[
i
].
name
!=
NULL
;
i
++
)
g_log
->
level2string
[
i
]
=
toupper
(
log_level_names
[
i
].
name
[
0
]);
// uppercased first letter of level name
...
...
executables/nr-uesoftmodem.c
View file @
5eb4716a
...
...
@@ -671,7 +671,7 @@ int main( int argc, char **argv ) {
logInit
();
// get options and fill parameters from configuration file
get_options
();
//Command-line options, enb_properties
get_common_options
();
//
get_common_options();
#if T_TRACER
T_Config_Init
();
#endif
...
...
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
View file @
5eb4716a
...
...
@@ -37,11 +37,12 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
unsigned
short
bwp_start_subcarrier
,
unsigned
short
nb_rb_pusch
)
{
int
pilot
[
132
0
]
__attribute__
((
aligned
(
16
)));
int
pilot
[
328
0
]
__attribute__
((
aligned
(
16
)));
unsigned
char
aarx
;
unsigned
short
k
;
unsigned
int
pilot_cnt
;
int16_t
ch
[
2
],
*
pil
,
*
rxF
,
*
ul_ch
,
*
fl
,
*
fm
,
*
fr
,
*
fml
,
*
fmr
,
*
fmm
;
int16_t
ch
[
2
],
*
pil
,
*
rxF
,
*
ul_ch
;
int16_t
*
fl
,
*
fm
,
*
fr
,
*
fml
,
*
fmr
,
*
fmm
,
*
fdcl
,
*
fdcr
,
*
fdclh
,
*
fdcrh
;
int
ch_offset
,
symbol_offset
,
length_dmrs
,
UE_id
=
0
;
unsigned
short
n_idDMRS
[
2
]
=
{
0
,
1
};
//to update from pusch config
int32_t
temp_in_ifft_0
[
8192
*
2
]
__attribute__
((
aligned
(
16
)));
...
...
@@ -82,6 +83,10 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
fmm
=
filt8_mm0
;
fml
=
filt8_m0
;
fmr
=
filt8_mr0
;
fdcl
=
filt8_dcl0
;
fdcr
=
filt8_dcr0
;
fdclh
=
filt8_dcl0_h
;
fdcrh
=
filt8_dcr0_h
;
break
;
case
1
:
...
...
@@ -91,6 +96,10 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
fmm
=
filt8_mm1
;
fml
=
filt8_ml1
;
fmr
=
filt8_m1
;
fdcl
=
filt8_dcl1
;
fdcr
=
filt8_dcr1
;
fdclh
=
filt8_dcl1_h
;
fdcrh
=
filt8_dcr1_h
;
break
;
default:
...
...
@@ -119,12 +128,12 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
memset
(
ul_ch
,
0
,
4
*
(
gNB
->
frame_parms
.
ofdm_symbol_size
));
#ifdef DEBUG_PUSCH
printf
(
"ch est pilot addr %p RB_DL %d
\n
"
,
&
pilot
[
0
],
gNB
->
frame_parms
.
N_RB_
D
L
);
printf
(
"ch est pilot addr %p RB_DL %d
\n
"
,
&
pilot
[
0
],
gNB
->
frame_parms
.
N_RB_
U
L
);
printf
(
"k %d, first_carrier %d
\n
"
,
k
,
gNB
->
frame_parms
.
first_carrier_offset
);
printf
(
"rxF addr %p p %d
\n
"
,
rxF
,
p
);
printf
(
"ul_ch addr %p nushift %d
\n
"
,
ul_ch
,
nushift
);
#endif
//if ((gNB->frame_parms.N_RB_
D
L&1)==0) {
//if ((gNB->frame_parms.N_RB_
U
L&1)==0) {
// Treat first 2 pilots specially (left edge)
ch
[
0
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
0
]
-
(
int32_t
)
pil
[
1
]
*
rxF
[
1
])
>>
15
);
...
...
@@ -140,7 +149,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
ul_ch
,
8
);
pil
+=
2
;
re_offset
=
(
re_offset
+
2
)
&
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
1
)
;
re_offset
=
(
re_offset
+
2
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
//for (int i= 0; i<8; i++)
//printf("ul_ch addr %p %d\n", ul_ch+i, *(ul_ch+i));
...
...
@@ -156,7 +165,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
ul_ch
,
8
);
pil
+=
2
;
re_offset
=
(
re_offset
+
2
)
&
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
1
)
;
re_offset
=
(
re_offset
+
2
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
//printf("ul_ch addr %p\n",ul_ch);
...
...
@@ -175,7 +184,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
//printf("ul_ch addr %p %d\n", ul_ch+i, *(ul_ch+i));
pil
+=
2
;
re_offset
=
(
re_offset
+
2
)
&
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
1
)
;
re_offset
=
(
re_offset
+
2
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
ul_ch
+=
8
;
...
...
@@ -193,7 +202,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
8
);
pil
+=
2
;
re_offset
=
(
re_offset
+
2
)
&
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
1
)
;
re_offset
=
(
re_offset
+
2
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
ch
[
0
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
0
]
-
(
int32_t
)
pil
[
1
]
*
rxF
[
1
])
>>
15
);
...
...
@@ -206,7 +215,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
ul_ch
,
8
);
pil
+=
2
;
re_offset
=
(
re_offset
+
2
)
&
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
1
)
;
re_offset
=
(
re_offset
+
2
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
ul_ch
+=
8
;
...
...
@@ -227,7 +236,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
//printf("ul_ch addr %p %d\n", ul_ch+i, *(ul_ch+i));
pil
+=
2
;
re_offset
=
(
re_offset
+
2
)
&
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
1
)
;
re_offset
=
(
re_offset
+
2
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
ch
[
0
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
0
]
-
(
int32_t
)
pil
[
1
]
*
rxF
[
1
])
>>
15
);
...
...
@@ -242,7 +251,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
8
);
pil
+=
2
;
re_offset
=
(
re_offset
+
2
)
&
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
1
)
;
re_offset
=
(
re_offset
+
2
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
ul_ch
+=
8
;
...
...
@@ -256,6 +265,69 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
ul_ch
,
8
);
// check if PRB crosses DC and improve estimates around DC
if
((
bwp_start_subcarrier
>=
gNB
->
frame_parms
.
ofdm_symbol_size
/
2
)
&&
(
bwp_start_subcarrier
+
nb_rb_pusch
*
12
>=
gNB
->
frame_parms
.
ofdm_symbol_size
))
{
ul_ch
=
(
int16_t
*
)
&
ul_ch_estimates
[
aarx
][
ch_offset
];
uint16_t
idxDC
=
2
*
(
gNB
->
frame_parms
.
ofdm_symbol_size
-
bwp_start_subcarrier
);
uint16_t
idxPil
=
idxDC
/
2
;
re_offset
=
k
;
pil
=
(
int16_t
*
)
&
pilot
[
0
];
pil
+=
(
idxPil
-
2
);
ul_ch
+=
(
idxDC
-
4
);
ul_ch
=
memset
(
ul_ch
,
0
,
sizeof
(
int16_t
)
*
10
);
re_offset
=
(
re_offset
+
idxDC
/
2
-
2
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
ch
[
0
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
0
]
-
(
int32_t
)
pil
[
1
]
*
rxF
[
1
])
>>
15
);
ch
[
1
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
1
]
+
(
int32_t
)
pil
[
1
]
*
rxF
[
0
])
>>
15
);
// for proper allignment of SIMD vectors
if
((
gNB
->
frame_parms
.
N_RB_UL
&
1
)
==
0
)
{
multadd_real_vector_complex_scalar
(
fdcl
,
ch
,
ul_ch
-
4
,
8
);
pil
+=
4
;
re_offset
=
(
re_offset
+
4
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
ch
[
0
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
0
]
-
(
int32_t
)
pil
[
1
]
*
rxF
[
1
])
>>
15
);
ch
[
1
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
1
]
+
(
int32_t
)
pil
[
1
]
*
rxF
[
0
])
>>
15
);
multadd_real_vector_complex_scalar
(
fdcr
,
ch
,
ul_ch
-
4
,
8
);
}
else
{
multadd_real_vector_complex_scalar
(
fdclh
,
ch
,
ul_ch
,
8
);
pil
+=
4
;
re_offset
=
(
re_offset
+
4
)
%
gNB
->
frame_parms
.
ofdm_symbol_size
;
rxF
=
(
int16_t
*
)
&
rxdataF
[
aarx
][(
symbol_offset
+
nushift
+
re_offset
)];
ch
[
0
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
0
]
-
(
int32_t
)
pil
[
1
]
*
rxF
[
1
])
>>
15
);
ch
[
1
]
=
(
int16_t
)(((
int32_t
)
pil
[
0
]
*
rxF
[
1
]
+
(
int32_t
)
pil
[
1
]
*
rxF
[
0
])
>>
15
);
multadd_real_vector_complex_scalar
(
fdcrh
,
ch
,
ul_ch
,
8
);
}
}
#ifdef DEBUG_PDSCH
ul_ch
=
(
int16_t
*
)
&
ul_ch_estimates
[
aarx
][
ch_offset
];
for
(
uint16_t
idxP
=
0
;
idxP
<
ceil
((
float
)
nb_rb_pusch
*
12
/
8
);
idxP
++
)
{
for
(
uint8_t
idxI
=
0
;
idxI
<
16
;
idxI
+=
2
)
{
printf
(
"%d
\t
%d
\t
"
,
ul_ch
[
idxP
*
16
+
idxI
],
ul_ch
[
idxP
*
16
+
idxI
+
1
]);
}
printf
(
"%d
\n
"
,
idxP
);
}
#endif
// Convert to time domain
memset
(
temp_in_ifft_0
,
0
,
gNB
->
frame_parms
.
ofdm_symbol_size
*
sizeof
(
int32_t
));
memcpy
(
temp_in_ifft_0
,
&
ul_ch_estimates
[
aarx
][
symbol_offset
],
nb_rb_pusch
*
NR_NB_SC_PER_RB
*
sizeof
(
int32_t
));
...
...
@@ -322,4 +394,4 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
#endif
return
(
0
);
}
\ No newline at end of file
}
openair1/PHY/NR_REFSIG/dmrs_nr.h
View file @
5eb4716a
...
...
@@ -55,7 +55,7 @@ int pseudo_random_sequence(int M_PN, uint32_t *c, uint32_t cinit);
void
lte_gold_new
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
lte_gold_table
[
20
][
2
][
14
],
uint16_t
Nid_cell
);
void
generate_dmrs_pbch
(
uint32_t
dmrs_pbch_bitmap
[
DMRS_PBCH_I_SSB
][
DMRS_PBCH_N_HF
][
DMRS_BITMAP_SIZE
],
uint16_t
Nid_cell
);
uint8_t
get_l0_ul
(
uint8_t
mapping_type
,
uint8_t
dmrs_typeA_position
);
uint16_t
get_dmrs_freq_idx_ul
(
uint
8
_t
n
,
uint8_t
k_prime
,
uint8_t
delta
,
uint8_t
dmrs_type
);
uint16_t
get_dmrs_freq_idx_ul
(
uint
16
_t
n
,
uint8_t
k_prime
,
uint8_t
delta
,
uint8_t
dmrs_type
);
#undef EXTERN
...
...
openair1/PHY/NR_REFSIG/nr_gold_ue.c
View file @
5eb4716a
...
...
@@ -148,7 +148,7 @@ void nr_gold_pdsch(PHY_VARS_NR_UE* ue,
//printf("x1 : %x, x2 : %x\n",x1,x2);
}
for
(
n
=
0
;
n
<
52
;
n
++
)
{
for
(
n
=
0
;
n
<
NR_MAX_PDSCH_DMRS_INIT_LENGTH_DWORD
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
...
...
openair1/PHY/NR_UE_ESTIMATION/filt16a_32.c
View file @
5eb4716a
...
...
@@ -123,6 +123,30 @@ short filt8_m0[8] = {
short
filt8_mm0
[
8
]
=
{
0
,
0
,
0
,
8192
,
16384
,
8192
,
0
,
0
};
short
filt8_dcma
[
8
]
=
{
16384
,
12288
,
8192
,
4096
,
4096
,
0
,
0
,
0
};
short
filt8_dcmb
[
8
]
=
{
0
,
4096
,
8192
,
4096
,
4096
,
0
,
0
,
0
};
short
filt8_dcmc
[
8
]
=
{
0
,
0
,
0
,
4096
,
4096
,
8192
,
4096
,
0
};
short
filt8_dcmd
[
8
]
=
{
0
,
0
,
0
,
4096
,
4096
,
8192
,
12288
,
16384
};
short
filt8_dcl0
[
8
]
=
{
0
,
0
,
16384
,
12288
,
8192
,
4096
,
0
,
0
};
short
filt8_dcr0
[
8
]
=
{
0
,
0
,
0
,
4096
,
8192
,
12288
,
16384
,
0
};
short
filt8_dcl0_h
[
8
]
=
{
16384
,
12288
,
8192
,
4096
,
0
,
0
,
0
,
0
};
short
filt8_dcr0_h
[
8
]
=
{
0
,
4096
,
8192
,
12288
,
16384
,
0
,
0
,
0
};
short
filt8_l1
[
8
]
=
{
24576
,
16384
,
0
,
0
,
0
,
0
,
0
,
0
};
...
...
@@ -136,4 +160,16 @@ short filt8_m1[8] = {
0
,
0
,
8192
,
16384
,
8192
,
0
,
0
,
0
};
short
filt8_mm1
[
8
]
=
{
0
,
0
,
0
,
0
,
8192
,
16384
,
8192
,
0
};
\ No newline at end of file
0
,
0
,
0
,
0
,
8192
,
16384
,
8192
,
0
};
short
filt8_dcl1
[
8
]
=
{
0
,
0
,
0
,
16384
,
12288
,
8192
,
4096
,
0
};
short
filt8_dcr1
[
8
]
=
{
0
,
0
,
0
,
0
,
4096
,
8192
,
12288
,
16384
};
short
filt8_dcl1_h
[
8
]
=
{
0
,
16384
,
12288
,
8192
,
4096
,
0
,
0
,
0
};
short
filt8_dcr1_h
[
8
]
=
{
0
,
0
,
4096
,
8192
,
12288
,
16384
,
0
,
0
};
openair1/PHY/NR_UE_ESTIMATION/filt16a_32.h
View file @
5eb4716a
...
...
@@ -91,6 +91,22 @@ extern short filt8_m0[8];
extern
short
filt8_mm0
[
8
];
extern
short
filt8_dcma
[
8
];
extern
short
filt8_dcmb
[
8
];
extern
short
filt8_dcmc
[
8
];
extern
short
filt8_dcmd
[
8
];
extern
short
filt8_dcl0
[
8
];
extern
short
filt8_dcr0
[
8
];
extern
short
filt8_dcl0_h
[
8
];
extern
short
filt8_dcr0_h
[
8
];
extern
short
filt8_l1
[
8
];
extern
short
filt8_ml1
[
8
];
...
...
@@ -101,4 +117,11 @@ extern short filt8_m1[8];
extern
short
filt8_mm1
[
8
];
#endif
\ No newline at end of file
extern
short
filt8_dcl1
[
8
];
extern
short
filt8_dcr1
[
8
];
extern
short
filt8_dcl1_h
[
8
];
extern
short
filt8_dcr1_h
[
8
];
#endif
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
5eb4716a
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/dmrs_nr.c
View file @
5eb4716a
...
...
@@ -258,7 +258,7 @@ uint8_t get_l0_ul(uint8_t mapping_type, uint8_t dmrs_typeA_position) {
*
*********************************************************************/
uint16_t
get_dmrs_freq_idx_ul
(
uint
8
_t
n
,
uint8_t
k_prime
,
uint8_t
delta
,
uint8_t
dmrs_type
)
{
uint16_t
get_dmrs_freq_idx_ul
(
uint
16
_t
n
,
uint8_t
k_prime
,
uint8_t
delta
,
uint8_t
dmrs_type
)
{
uint16_t
dmrs_idx
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
5eb4716a
...
...
@@ -564,13 +564,13 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
// Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int
if
(
check_crc
((
uint8_t
*
)
llrProcBuf
,
length_dec
,
harq_process
->
F
,
crc_type
))
{
printf
(
"
\x1B
[34m"
"Segment %d CRC OK
\n
"
,
r
);
printf
(
"
\x1B
[34m"
"Segment %d CRC OK
\n
\033
[0m
"
,
r
);
//Temporary hack
no_iteration_ldpc
=
dlsch
->
max_ldpc_iterations
;
ret
=
no_iteration_ldpc
;
}
else
{
printf
(
"
\x1B
[33m"
"CRC NOK
\n
"
);
printf
(
"
\x1B
[33m"
"CRC NOK
\n
\033
[0m
"
);
ret
=
1
+
dlsch
->
max_ldpc_iterations
;
}
...
...
openair1/PHY/defs_nr_UE.h
View file @
5eb4716a
...
...
@@ -994,7 +994,7 @@ typedef struct {
uint32_t
nr_gold_pbch
[
2
][
64
][
NR_PBCH_DMRS_LENGTH_DWORD
];
/// PDSCH DMRS
uint32_t
nr_gold_pdsch
[
2
][
20
][
2
][
52
];
uint32_t
nr_gold_pdsch
[
2
][
20
][
2
][
NR_MAX_PDSCH_DMRS_INIT_LENGTH_DWORD
];
/// PDCCH DMRS
uint32_t
nr_gold_pdcch
[
7
][
20
][
3
][
52
];
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
5eb4716a
...
...
@@ -875,25 +875,17 @@ int main(int argc, char **argv)
printf
(
"*****************************************
\n
"
);
printf
(
"SNR %f, (false positive %f)
\n
"
,
SNR
,
(
float
)
n_
false_positive
/
(
float
)
n_trials
);
(
float
)
n_
errors
/
(
float
)
n_trials
);
printf
(
"*****************************************
\n
"
);
printf
(
"
\n
"
);
if
(
errors_bit
==
0
)
{
printf
(
"PDSCH test OK
\n
"
);
printf
(
"
\n
"
);
}
printf
(
"SNR %f : n_errors (negative CRC) = %d/%d
\n
"
,
SNR
,
n_errors
,
n_trials
);
printf
(
"
\n
"
);
if
((
float
)
n_errors
/
(
float
)
n_trials
<=
target_error_rate
)
{
printf
(
"PD
C
CH test OK
\n
"
);
printf
(
"PD
S
CH test OK
\n
"
);
break
;
}
if
(
n_trials
==
1
)
break
;
}
// NSR
...
...
targets/RT/USER/lte-ru.c
View file @
5eb4716a
...
...
@@ -2713,13 +2713,8 @@ void init_RU(char *rf_config_file, clock_source_t clock_source, clock_source_t t
else
ru
->
generate_dmrs_sync
=
0
;
if
(
ru
->
generate_dmrs_sync
==
1
)
{
generate_ul_ref_sigs
();
ru
->
dmrssync
=
(
int16_t
*
)
malloc16_clear
(
ru
->
frame_parms
->
ofdm_symbol_size
*
2
*
sizeof
(
int16_t
));
}
ru
->
wakeup_L1_sleeptime
=
2000
;
ru
->
wakeup_L1_sleep_cnt_max
=
3
;
ru
->
wakeup_L1_sleeptime
=
2000
;
ru
->
wakeup_L1_sleep_cnt_max
=
3
;
if
(
ru
->
num_eNB
>
0
)
{
LOG_D
(
PHY
,
"%s() RC.ru[%d].num_eNB:%d ru->eNB_list[0]:%p RC.eNB[0][0]:%p rf_config_file:%s
\n
"
,
__FUNCTION__
,
ru_id
,
ru
->
num_eNB
,
ru
->
eNB_list
[
0
],
RC
.
eNB
[
0
][
0
],
ru
->
rf_config_file
);
...
...
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