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
canghaiwuhen
OpenXG-RAN
Commits
98311219
Commit
98311219
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
baf5f1ed
e6360d13
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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/dmrs_nr.c
View file @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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 @
98311219
...
...
@@ -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