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
Michael Black
OpenXG UE
Commits
86e1e6e1
Commit
86e1e6e1
authored
Mar 03, 2021
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cpu load measurements enhancements
parent
2111a6b3
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
11 additions
and
103 deletions
+11
-103
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+9
-58
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+0
-33
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+0
-8
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+2
-4
No files found.
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
86e1e6e1
...
@@ -236,11 +236,10 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -236,11 +236,10 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
uint8_t
harq_pid
,
uint8_t
harq_pid
,
uint8_t
is_crnti
,
uint8_t
is_crnti
,
uint8_t
llr8_flag
)
{
uint8_t
llr8_flag
)
{
#if UE_TIMING_TRACE
time_stats_t
*
dlsch_rate_unmatching_stats
=&
phy_vars_ue
->
dlsch_rate_unmatching_stats
;
time_stats_t
*
dlsch_rate_unmatching_stats
=&
phy_vars_ue
->
dlsch_rate_unmatching_stats
;
time_stats_t
*
dlsch_turbo_decoding_stats
=&
phy_vars_ue
->
dlsch_turbo_decoding_stats
;
time_stats_t
*
dlsch_turbo_decoding_stats
=&
phy_vars_ue
->
dlsch_turbo_decoding_stats
;
time_stats_t
*
dlsch_deinterleaving_stats
=&
phy_vars_ue
->
dlsch_deinterleaving_stats
;
time_stats_t
*
dlsch_deinterleaving_stats
=&
phy_vars_ue
->
dlsch_deinterleaving_stats
;
#endif
uint32_t
A
,
E
;
uint32_t
A
,
E
;
uint32_t
G
;
uint32_t
G
;
uint32_t
ret
,
offset
;
uint32_t
ret
,
offset
;
...
@@ -411,21 +410,15 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -411,21 +410,15 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
for
(
r
=
0
;
r
<
harq_process
->
C
;
r
++
)
{
for
(
r
=
0
;
r
<
harq_process
->
C
;
r
++
)
{
//printf("start rx segment %d\n",r);
//printf("start rx segment %d\n",r);
E
=
nr_get_E
(
G
,
harq_process
->
C
,
harq_process
->
Qm
,
harq_process
->
Nl
,
r
);
E
=
nr_get_E
(
G
,
harq_process
->
C
,
harq_process
->
Qm
,
harq_process
->
Nl
,
r
);
#if UE_TIMING_TRACE
start_meas
(
dlsch_deinterleaving_stats
);
start_meas
(
dlsch_deinterleaving_stats
);
#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING
,
VCD_FUNCTION_IN
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING
,
VCD_FUNCTION_IN
);
nr_deinterleaving_ldpc
(
E
,
nr_deinterleaving_ldpc
(
E
,
harq_process
->
Qm
,
harq_process
->
Qm
,
harq_process
->
w
[
r
],
// [hna] w is e
harq_process
->
w
[
r
],
// [hna] w is e
dlsch_llr
+
r_offset
);
dlsch_llr
+
r_offset
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_DEINTERLEAVING
,
VCD_FUNCTION_OUT
);
#if UE_TIMING_TRACE
stop_meas
(
dlsch_deinterleaving_stats
);
stop_meas
(
dlsch_deinterleaving_stats
);
#endif
#if UE_TIMING_TRACE
start_meas
(
dlsch_rate_unmatching_stats
);
start_meas
(
dlsch_rate_unmatching_stats
);
#endif
LOG_D
(
PHY
,
"HARQ_PID %d Rate Matching Segment %d (coded bits %d,E %d, F %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...
\n
"
,
LOG_D
(
PHY
,
"HARQ_PID %d Rate Matching Segment %d (coded bits %d,E %d, F %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...
\n
"
,
harq_pid
,
r
,
G
,
E
,
harq_process
->
F
,
harq_pid
,
r
,
G
,
E
,
harq_process
->
F
,
Kr
*
3
,
Kr
*
3
,
...
@@ -455,15 +448,11 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -455,15 +448,11 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
harq_process
->
F
,
harq_process
->
F
,
Kr
-
harq_process
->
F
-
2
*
(
p_decParams
->
Z
))
==-
1
)
{
Kr
-
harq_process
->
F
-
2
*
(
p_decParams
->
Z
))
==-
1
)
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_RATE_MATCHING
,
VCD_FUNCTION_OUT
);
#if UE_TIMING_TRACE
stop_meas
(
dlsch_rate_unmatching_stats
);
stop_meas
(
dlsch_rate_unmatching_stats
);
#endif
LOG_E
(
PHY
,
"dlsch_decoding.c: Problem in rate_matching
\n
"
);
LOG_E
(
PHY
,
"dlsch_decoding.c: Problem in rate_matching
\n
"
);
return
(
dlsch
->
max_ldpc_iterations
+
1
);
return
(
dlsch
->
max_ldpc_iterations
+
1
);
}
else
{
}
else
{
#if UE_TIMING_TRACE
stop_meas
(
dlsch_rate_unmatching_stats
);
stop_meas
(
dlsch_rate_unmatching_stats
);
#endif
}
}
r_offset
+=
E
;
r_offset
+=
E
;
...
@@ -492,9 +481,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -492,9 +481,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
}
}
if
(
err_flag
==
0
)
{
if
(
err_flag
==
0
)
{
#if UE_TIMING_TRACE
start_meas
(
dlsch_turbo_decoding_stats
);
start_meas
(
dlsch_turbo_decoding_stats
);
#endif
//set first 2*Z_c bits to zeros
//set first 2*Z_c bits to zeros
memset
(
&
z
[
0
],
0
,
2
*
harq_process
->
Z
*
sizeof
(
int16_t
));
memset
(
&
z
[
0
],
0
,
2
*
harq_process
->
Z
*
sizeof
(
int16_t
));
//set Filler bits
//set Filler bits
...
@@ -545,13 +532,10 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -545,13 +532,10 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
{
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
{
for
(
int
k
=
0
;
k
<
A
>>
3
;
k
++
)
for
(
int
k
=
0
;
k
<
A
>>
3
;
k
++
)
LOG_D
(
PHY
,
"output decoder [%d] = 0x%02x
\n
"
,
k
,
harq_process
->
c
[
r
][
k
]);
LOG_D
(
PHY
,
"output decoder [%d] = 0x%02x
\n
"
,
k
,
harq_process
->
c
[
r
][
k
]);
LOG_D
(
PHY
,
"no_iterations_ldpc %d (ret %u)
\n
"
,
no_iteration_ldpc
,
ret
);
LOG_D
(
PHY
,
"no_iterations_ldpc %d (ret %u)
\n
"
,
no_iteration_ldpc
,
ret
);
}
}
#if UE_TIMING_TRACE
stop_meas
(
dlsch_turbo_decoding_stats
);
stop_meas
(
dlsch_turbo_decoding_stats
);
#endif
}
}
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
...
@@ -645,11 +629,10 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -645,11 +629,10 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
uint8_t
harq_pid
,
uint8_t
harq_pid
,
uint8_t
is_crnti
,
uint8_t
is_crnti
,
uint8_t
llr8_flag
)
{
uint8_t
llr8_flag
)
{
#if UE_TIMING_TRACE
time_stats_t
*
dlsch_rate_unmatching_stats
=&
phy_vars_ue
->
dlsch_rate_unmatching_stats
;
time_stats_t
*
dlsch_rate_unmatching_stats
=&
phy_vars_ue
->
dlsch_rate_unmatching_stats
;
time_stats_t
*
dlsch_turbo_decoding_stats
=&
phy_vars_ue
->
dlsch_turbo_decoding_stats
;
time_stats_t
*
dlsch_turbo_decoding_stats
=&
phy_vars_ue
->
dlsch_turbo_decoding_stats
;
time_stats_t
*
dlsch_deinterleaving_stats
=&
phy_vars_ue
->
dlsch_deinterleaving_stats
;
time_stats_t
*
dlsch_deinterleaving_stats
=&
phy_vars_ue
->
dlsch_deinterleaving_stats
;
#endif
uint32_t
A
,
E
;
uint32_t
A
,
E
;
uint32_t
G
;
uint32_t
G
;
uint32_t
ret
,
offset
;
uint32_t
ret
,
offset
;
...
@@ -812,7 +795,6 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -812,7 +795,6 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
notifiedFIFO_elt_t
*
res_dl
;
notifiedFIFO_elt_t
*
res_dl
;
opp_enabled
=
1
;
opp_enabled
=
1
;
if
(
harq_process
->
C
>
1
)
{
if
(
harq_process
->
C
>
1
)
{
for
(
int
nb_seg
=
1
;
nb_seg
<
harq_process
->
C
;
nb_seg
++
)
{
for
(
int
nb_seg
=
1
;
nb_seg
<
harq_process
->
C
;
nb_seg
++
)
{
if
(
(
res_dl
=
tryPullTpool
(
&
nf
,
&
pool_dl
))
!=
NULL
)
{
if
(
(
res_dl
=
tryPullTpool
(
&
nf
,
&
pool_dl
))
!=
NULL
)
{
...
@@ -867,9 +849,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -867,9 +849,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
dlsch_llr+r_offset,
dlsch_llr+r_offset,
&harq_process->w[r]);
&harq_process->w[r]);
*/
*/
#if UE_TIMING_TRACE
start_meas
(
dlsch_deinterleaving_stats
);
start_meas
(
dlsch_deinterleaving_stats
);
#endif
nr_deinterleaving_ldpc
(
E
,
nr_deinterleaving_ldpc
(
E
,
harq_process
->
Qm
,
harq_process
->
Qm
,
harq_process
->
w
[
r
],
harq_process
->
w
[
r
],
...
@@ -879,12 +859,8 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -879,12 +859,8 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
for
(
int
i
=
0
;
i
<
16
;
i
++
)
for
(
int
i
=
0
;
i
<
16
;
i
++
)
LOG_D
(
PHY
,
"rx output deinterleaving w[%d]= %d r_offset %u
\n
"
,
i
,
harq_process
->
w
[
r
][
i
],
r_offset
);
LOG_D
(
PHY
,
"rx output deinterleaving w[%d]= %d r_offset %u
\n
"
,
i
,
harq_process
->
w
[
r
][
i
],
r_offset
);
#if UE_TIMING_TRACE
stop_meas
(
dlsch_deinterleaving_stats
);
stop_meas
(
dlsch_deinterleaving_stats
);
#endif
#if UE_TIMING_TRACE
start_meas
(
dlsch_rate_unmatching_stats
);
start_meas
(
dlsch_rate_unmatching_stats
);
#endif
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
LOG_I
(
PHY
,
"HARQ_PID %d Rate Matching Segment %d (coded bits %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...
\n
"
,
LOG_I
(
PHY
,
"HARQ_PID %d Rate Matching Segment %d (coded bits %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...
\n
"
,
...
@@ -915,15 +891,11 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -915,15 +891,11 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
E
,
E
,
harq_process
->
F
,
harq_process
->
F
,
Kr
-
harq_process
->
F
-
2
*
(
p_decParams
->
Z
))
==-
1
)
{
Kr
-
harq_process
->
F
-
2
*
(
p_decParams
->
Z
))
==-
1
)
{
#if UE_TIMING_TRACE
stop_meas
(
dlsch_rate_unmatching_stats
);
stop_meas
(
dlsch_rate_unmatching_stats
);
#endif
LOG_E
(
PHY
,
"dlsch_decoding.c: Problem in rate_matching
\n
"
);
LOG_E
(
PHY
,
"dlsch_decoding.c: Problem in rate_matching
\n
"
);
return
(
dlsch
->
max_ldpc_iterations
);
return
(
dlsch
->
max_ldpc_iterations
);
}
else
{
}
else
{
#if UE_TIMING_TRACE
stop_meas
(
dlsch_rate_unmatching_stats
);
stop_meas
(
dlsch_rate_unmatching_stats
);
#endif
}
}
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
...
@@ -966,9 +938,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -966,9 +938,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
Kr,r,harq_process->C,harq_process->nb_rb,crc_type,A,harq_process->TBS,
Kr,r,harq_process->C,harq_process->nb_rb,crc_type,A,harq_process->TBS,
harq_process->B,harq_process->mcs,harq_process->Qm,harq_process->rvidx,harq_process->round,dlsch->max_ldpc_iterations);
harq_process->B,harq_process->mcs,harq_process->Qm,harq_process->rvidx,harq_process->round,dlsch->max_ldpc_iterations);
*/
*/
#if UE_TIMING_TRACE
start_meas
(
dlsch_turbo_decoding_stats
);
start_meas
(
dlsch_turbo_decoding_stats
);
#endif
LOG_D
(
PHY
,
"mthread AbsSubframe %d.%d Start LDPC segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
LOG_D
(
PHY
,
"mthread AbsSubframe %d.%d Start LDPC segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
/*for (int cnt =0; cnt < (kc-2)*p_decParams->Z; cnt++){
/*for (int cnt =0; cnt < (kc-2)*p_decParams->Z; cnt++){
inv_d[cnt] = (1)*harq_process->d[r][cnt];
inv_d[cnt] = (1)*harq_process->d[r][cnt];
...
@@ -1037,11 +1007,10 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -1037,11 +1007,10 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
for
(
int
k
=
0
;
k
<
32
;
k
++
)
for
(
int
k
=
0
;
k
<
32
;
k
++
)
LOG_D
(
PHY
,
"output decoder [%d] = 0x%02x
\n
"
,
k
,
harq_process
->
c
[
r
][
k
]);
LOG_D
(
PHY
,
"output decoder [%d] = 0x%02x
\n
"
,
k
,
harq_process
->
c
[
r
][
k
]);
#if UE_TIMING_TRACE
stop_meas
(
dlsch_turbo_decoding_stats
);
stop_meas
(
dlsch_turbo_decoding_stats
);
#endif
}
}
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
LOG_D
(
PHY
,
"AbsSubframe %d.%d CRC failed, segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
LOG_D
(
PHY
,
"AbsSubframe %d.%d CRC failed, segment %d/%d
\n
"
,
frame
%
1024
,
nr_slot_rx
,
r
,
harq_process
->
C
-
1
);
err_flag
=
1
;
err_flag
=
1
;
...
@@ -1135,7 +1104,6 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -1135,7 +1104,6 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
}
}
void
nr_dlsch_decoding_process
(
void
*
arg
)
{
void
nr_dlsch_decoding_process
(
void
*
arg
)
{
nr_rxtx_thread_data_t
*
rxtxD
=
(
nr_rxtx_thread_data_t
*
)
arg
;
nr_rxtx_thread_data_t
*
rxtxD
=
(
nr_rxtx_thread_data_t
*
)
arg
;
UE_nr_rxtx_proc_t
*
proc
=
&
rxtxD
->
proc
;
UE_nr_rxtx_proc_t
*
proc
=
&
rxtxD
->
proc
;
...
@@ -1167,11 +1135,10 @@ void nr_dlsch_decoding_process(void *arg) {
...
@@ -1167,11 +1135,10 @@ void nr_dlsch_decoding_process(void *arg) {
proc
->
instance_cnt_dlsch_td
=-
1
;
proc
->
instance_cnt_dlsch_td
=-
1
;
//proc->nr_slot_rx = proc->sub_frame_start * frame_parms->slots_per_subframe;
//proc->nr_slot_rx = proc->sub_frame_start * frame_parms->slots_per_subframe;
proc
->
decoder_thread_available
=
1
;
proc
->
decoder_thread_available
=
1
;
#if UE_TIMING_TRACE
time_stats_t
*
dlsch_rate_unmatching_stats
=&
phy_vars_ue
->
dlsch_rate_unmatching_stats
;
time_stats_t
*
dlsch_rate_unmatching_stats
=&
phy_vars_ue
->
dlsch_rate_unmatching_stats
;
time_stats_t
*
dlsch_turbo_decoding_stats
=&
phy_vars_ue
->
dlsch_turbo_decoding_stats
;
time_stats_t
*
dlsch_turbo_decoding_stats
=&
phy_vars_ue
->
dlsch_turbo_decoding_stats
;
time_stats_t
*
dlsch_deinterleaving_stats
=&
phy_vars_ue
->
dlsch_deinterleaving_stats
;
time_stats_t
*
dlsch_deinterleaving_stats
=&
phy_vars_ue
->
dlsch_deinterleaving_stats
;
#endif
uint32_t
A
,
E
;
uint32_t
A
,
E
;
uint32_t
G
;
uint32_t
G
;
uint32_t
ret
;
uint32_t
ret
;
...
@@ -1272,9 +1239,7 @@ void nr_dlsch_decoding_process(void *arg) {
...
@@ -1272,9 +1239,7 @@ void nr_dlsch_decoding_process(void *arg) {
Kr_bytes
=
Kr
>>
3
;
Kr_bytes
=
Kr
>>
3
;
K_bits_F
=
Kr
-
harq_process
->
F
;
K_bits_F
=
Kr
-
harq_process
->
F
;
E
=
nr_get_E
(
G
,
harq_process
->
C
,
harq_process
->
Qm
,
harq_process
->
Nl
,
r
);
E
=
nr_get_E
(
G
,
harq_process
->
C
,
harq_process
->
Qm
,
harq_process
->
Nl
,
r
);
#if UE_TIMING_TRACE
start_meas
(
dlsch_deinterleaving_stats
);
start_meas
(
dlsch_deinterleaving_stats
);
#endif
nr_deinterleaving_ldpc
(
E
,
nr_deinterleaving_ldpc
(
E
,
harq_process
->
Qm
,
harq_process
->
Qm
,
harq_process
->
w
[
r
],
harq_process
->
w
[
r
],
...
@@ -1284,13 +1249,8 @@ void nr_dlsch_decoding_process(void *arg) {
...
@@ -1284,13 +1249,8 @@ void nr_dlsch_decoding_process(void *arg) {
for
(
int
i
=
0
;
i
<
16
;
i
++
)
for
(
int
i
=
0
;
i
<
16
;
i
++
)
LOG_D
(
PHY
,
"rx output thread 0 deinterleaving w[%d]= %d r_offset %u
\n
"
,
i
,
harq_process
->
w
[
r
][
i
],
r_offset
);
LOG_D
(
PHY
,
"rx output thread 0 deinterleaving w[%d]= %d r_offset %u
\n
"
,
i
,
harq_process
->
w
[
r
][
i
],
r_offset
);
#if UE_TIMING_TRACE
stop_meas
(
dlsch_deinterleaving_stats
);
stop_meas
(
dlsch_deinterleaving_stats
);
#endif
#if UE_TIMING_TRACE
start_meas
(
dlsch_rate_unmatching_stats
);
start_meas
(
dlsch_rate_unmatching_stats
);
#endif
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
LOG_I
(
PHY
,
"HARQ_PID %d Rate Matching Segment %d (coded bits %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...
\n
"
,
LOG_I
(
PHY
,
"HARQ_PID %d Rate Matching Segment %d (coded bits %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...
\n
"
,
harq_pid
,
r
,
G
,
harq_pid
,
r
,
G
,
...
@@ -1319,15 +1279,11 @@ void nr_dlsch_decoding_process(void *arg) {
...
@@ -1319,15 +1279,11 @@ void nr_dlsch_decoding_process(void *arg) {
E
,
E
,
harq_process
->
F
,
harq_process
->
F
,
Kr
-
harq_process
->
F
-
2
*
(
p_decParams
->
Z
))
==-
1
)
{
Kr
-
harq_process
->
F
-
2
*
(
p_decParams
->
Z
))
==-
1
)
{
#if UE_TIMING_TRACE
stop_meas
(
dlsch_rate_unmatching_stats
);
stop_meas
(
dlsch_rate_unmatching_stats
);
#endif
LOG_E
(
PHY
,
"dlsch_decoding.c: Problem in rate_matching
\n
"
);
LOG_E
(
PHY
,
"dlsch_decoding.c: Problem in rate_matching
\n
"
);
//return(dlsch->max_ldpc_iterations);
//return(dlsch->max_ldpc_iterations);
}
else
{
}
else
{
#if UE_TIMING_TRACE
stop_meas
(
dlsch_rate_unmatching_stats
);
stop_meas
(
dlsch_rate_unmatching_stats
);
#endif
}
}
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
{
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
{
...
@@ -1364,9 +1320,7 @@ void nr_dlsch_decoding_process(void *arg) {
...
@@ -1364,9 +1320,7 @@ void nr_dlsch_decoding_process(void *arg) {
Kr
,
r
,
harq_process
->
C
,
harq_process
->
nb_rb
,
A
,
harq_process
->
TBS
,
harq_process
->
B
,
harq_process
->
mcs
,
harq_process
->
Qm
,
harq_process
->
rvidx
,
harq_process
->
round
);
Kr
,
r
,
harq_process
->
C
,
harq_process
->
nb_rb
,
A
,
harq_process
->
TBS
,
harq_process
->
B
,
harq_process
->
mcs
,
harq_process
->
Qm
,
harq_process
->
rvidx
,
harq_process
->
round
);
}
}
#if UE_TIMING_TRACE
start_meas
(
dlsch_turbo_decoding_stats
);
start_meas
(
dlsch_turbo_decoding_stats
);
#endif
// LOG_D(PHY,"AbsSubframe %d.%d Start LDPC segment %d/%d \n",frame%1024,subframe,r,harq_process->C-1);
// LOG_D(PHY,"AbsSubframe %d.%d Start LDPC segment %d/%d \n",frame%1024,subframe,r,harq_process->C-1);
/*
/*
for (int cnt =0; cnt < (kc-2)*p_decParams->Z; cnt++){
for (int cnt =0; cnt < (kc-2)*p_decParams->Z; cnt++){
...
@@ -1412,10 +1366,7 @@ void nr_dlsch_decoding_process(void *arg) {
...
@@ -1412,10 +1366,7 @@ void nr_dlsch_decoding_process(void *arg) {
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
if
(
LOG_DEBUGFLAG
(
DEBUG_DLSCH_DECOD
))
for
(
int
k
=
0
;
k
<
2
;
k
++
)
for
(
int
k
=
0
;
k
<
2
;
k
++
)
LOG_D
(
PHY
,
"segment 1 output decoder [%d] = 0x%02x
\n
"
,
k
,
harq_process
->
c
[
r
][
k
]);
LOG_D
(
PHY
,
"segment 1 output decoder [%d] = 0x%02x
\n
"
,
k
,
harq_process
->
c
[
r
][
k
]);
#if UE_TIMING_TRACE
stop_meas
(
dlsch_turbo_decoding_stats
);
stop_meas
(
dlsch_turbo_decoding_stats
);
#endif
}
}
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
if
((
err_flag
==
0
)
&&
(
ret
>=
(
1
+
dlsch
->
max_ldpc_iterations
)))
{
// a Code segment is in error so break;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
86e1e6e1
...
@@ -163,9 +163,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -163,9 +163,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
// int avg_0[2];
// int avg_0[2];
// int avg_1[2];
// int avg_1[2];
#if UE_TIMING_TRACE
uint8_t
slot
=
0
;
uint8_t
slot
=
0
;
#endif
unsigned
char
aatx
=
0
,
aarx
=
0
;
unsigned
char
aatx
=
0
,
aarx
=
0
;
...
@@ -331,12 +329,10 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -331,12 +329,10 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
DevAssert
(
dlsch1_harq
);
DevAssert
(
dlsch1_harq
);
}
}
#if UE_TIMING_TRACE
if
(
symbol
>
ue
->
frame_parms
.
symbols_per_slot
>>
1
)
if
(
symbol
>
ue
->
frame_parms
.
symbols_per_slot
>>
1
)
{
{
slot
=
1
;
slot
=
1
;
}
}
#endif
#ifdef DEBUG_HARQ
#ifdef DEBUG_HARQ
printf
(
"Demod dlsch0_harq->pmi_alloc %d
\n
"
,
dlsch0_harq
->
pmi_alloc
);
printf
(
"Demod dlsch0_harq->pmi_alloc %d
\n
"
,
dlsch0_harq
->
pmi_alloc
);
...
@@ -346,9 +342,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -346,9 +342,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
uint8_t
config_type
=
dlsch0_harq
->
dmrsConfigType
;
uint8_t
config_type
=
dlsch0_harq
->
dmrsConfigType
;
if
(
beamforming_mode
==
0
)
{
//No beamforming
if
(
beamforming_mode
==
0
)
{
//No beamforming
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#endif
if
(
dlsch0_harq
->
Nl
>
1
)
//More than or equal 2 layers
if
(
dlsch0_harq
->
Nl
>
1
)
//More than or equal 2 layers
nb_rb
=
nr_dlsch_extract_rbs_multiple
(
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
,
nb_rb
=
nr_dlsch_extract_rbs_multiple
(
common_vars
->
common_vars_rx_data_per_thread
[
proc
->
thread_id
].
rxdataF
,
pdsch_vars
[
gNB_id
]
->
dl_ch_estimates
,
pdsch_vars
[
gNB_id
]
->
dl_ch_estimates
,
...
@@ -389,7 +383,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -389,7 +383,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
len
=
(
pilots
==
1
)
?
((
config_type
==
NFAPI_NR_DMRS_TYPE1
)
?
nb_rb
*
(
12
-
6
*
dlsch0_harq
->
n_dmrs_cdm_groups
)
:
nb_rb
*
(
12
-
4
*
dlsch0_harq
->
n_dmrs_cdm_groups
))
:
(
nb_rb
*
12
);
len
=
(
pilots
==
1
)
?
((
config_type
==
NFAPI_NR_DMRS_TYPE1
)
?
nb_rb
*
(
12
-
6
*
dlsch0_harq
->
n_dmrs_cdm_groups
)
:
nb_rb
*
(
12
-
4
*
dlsch0_harq
->
n_dmrs_cdm_groups
))
:
(
nb_rb
*
12
);
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#if DISABLE_LOG_X
#if DISABLE_LOG_X
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d type %d: Pilot/Data extraction %5.2f
\n
"
,
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d type %d: Pilot/Data extraction %5.2f
\n
"
,
...
@@ -398,11 +391,8 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -398,11 +391,8 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d type %d: Pilot/Data extraction %5.2f
\n
"
,
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d type %d: Pilot/Data extraction %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
type
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
frame
,
nr_slot_rx
,
slot
,
symbol
,
type
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#endif
n_tx
=
dlsch0_harq
->
Nl
;
n_tx
=
dlsch0_harq
->
Nl
;
n_rx
=
frame_parms
->
nb_antennas_rx
;
n_rx
=
frame_parms
->
nb_antennas_rx
;
...
@@ -416,18 +406,13 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -416,18 +406,13 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
len
,
len
,
nb_rb_pdsch
);
nb_rb_pdsch
);
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#if DISABLE_LOG_X
#if DISABLE_LOG_X
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d: Channel Scale %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d: Channel Scale %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
#else
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d: Channel Scale %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d: Channel Scale %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#endif
if
(
first_symbol_flag
==
1
)
{
if
(
first_symbol_flag
==
1
)
{
if
(
beamforming_mode
==
0
){
if
(
beamforming_mode
==
0
){
nr_dlsch_channel_level
(
pdsch_vars
[
gNB_id
]
->
dl_ch_estimates_ext
,
nr_dlsch_channel_level
(
pdsch_vars
[
gNB_id
]
->
dl_ch_estimates_ext
,
...
@@ -482,19 +467,14 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -482,19 +467,14 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
}
}
#endif
#endif
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#if DISABLE_LOG_X
#if DISABLE_LOG_X
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d first_symbol_flag %d: Channel Level %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
first_symbol_flag
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d first_symbol_flag %d: Channel Level %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
first_symbol_flag
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
#else
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d first_symbol_flag %d: Channel Level %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
first_symbol_flag
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d first_symbol_flag %d: Channel Level %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
first_symbol_flag
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#endif
// Now channel compensation
// Now channel compensation
if
(
dlsch0_harq
->
mimo_mode
<
NR_DUALSTREAM
)
{
if
(
dlsch0_harq
->
mimo_mode
<
NR_DUALSTREAM
)
{
nr_dlsch_channel_compensation
(
pdsch_vars
[
gNB_id
]
->
rxdataF_ext
,
nr_dlsch_channel_compensation
(
pdsch_vars
[
gNB_id
]
->
rxdataF_ext
,
...
@@ -539,18 +519,13 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -539,18 +519,13 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
0
);
0
);
}
}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#if DISABLE_LOG_X
#if DISABLE_LOG_X
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d log2_maxh %d channel_level %d: Channel Comp %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
pdsch_vars
[
gNB_id
]
->
log2_maxh
,
proc
->
channel_level
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d log2_maxh %d channel_level %d: Channel Comp %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
pdsch_vars
[
gNB_id
]
->
log2_maxh
,
proc
->
channel_level
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
#else
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d log2_maxh %d channel_level %d: Channel Comp %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
pdsch_vars
[
gNB_id
]
->
log2_maxh
,
proc
->
channel_level
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d log2_maxh %d channel_level %d: Channel Comp %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
pdsch_vars
[
gNB_id
]
->
log2_maxh
,
proc
->
channel_level
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#endif
// MRC
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#endif
if
(
frame_parms
->
nb_antennas_rx
>
1
)
{
if
(
frame_parms
->
nb_antennas_rx
>
1
)
{
if
(
dlsch0_harq
->
mimo_mode
<
NR_DUALSTREAM
)
{
if
(
dlsch0_harq
->
mimo_mode
<
NR_DUALSTREAM
)
{
...
@@ -603,19 +578,13 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -603,19 +578,13 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
//i_mod should have been passed as a parameter
//i_mod should have been passed as a parameter
}
}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#if DISABLE_LOG_X
#if DISABLE_LOG_X
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d: Channel Combine %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d: Channel Combine %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
#else
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d: Channel Combine %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d: Channel Combine %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
start_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#endif
/* Store the valid DL RE's */
/* Store the valid DL RE's */
pdsch_vars
[
gNB_id
]
->
dl_valid_re
[
symbol
-
1
]
=
len
;
pdsch_vars
[
gNB_id
]
->
dl_valid_re
[
symbol
-
1
]
=
len
;
...
@@ -692,14 +661,12 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
...
@@ -692,14 +661,12 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
}
}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
stop_meas
(
&
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
]);
#if DISABLE_LOG_X
#if DISABLE_LOG_X
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d: LLR Computation %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
printf
(
"[AbsSFN %u.%d] Slot%d Symbol %d: LLR Computation %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
#else
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d: LLR Computation %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
LOG_I
(
PHY
,
"[AbsSFN %u.%d] Slot%d Symbol %d: LLR Computation %5.2f
\n
"
,
frame
,
nr_slot_rx
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
proc
->
thread_id
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#endif
// Please keep it: useful for debugging
// Please keep it: useful for debugging
#ifdef DEBUG_PDSCH_RX
#ifdef DEBUG_PDSCH_RX
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
86e1e6e1
...
@@ -126,15 +126,11 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
...
@@ -126,15 +126,11 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
// initialization of structure
// initialization of structure
current_ssb
=
create_ssb_node
(
l
,
hf
);
current_ssb
=
create_ssb_node
(
l
,
hf
);
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
// computing correlation between received DMRS symbols and transmitted sequence for current i_ssb and n_hf
// computing correlation between received DMRS symbols and transmitted sequence for current i_ssb and n_hf
for
(
int
i
=
pbch_initial_symbol
;
i
<
pbch_initial_symbol
+
3
;
i
++
)
for
(
int
i
=
pbch_initial_symbol
;
i
<
pbch_initial_symbol
+
3
;
i
++
)
nr_pbch_dmrs_correlation
(
ue
,
proc
,
0
,
0
,
i
,
i
-
pbch_initial_symbol
,
current_ssb
);
nr_pbch_dmrs_correlation
(
ue
,
proc
,
0
,
0
,
i
,
i
-
pbch_initial_symbol
,
current_ssb
);
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
stop_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
current_ssb
->
metric
=
current_ssb
->
c_re
*
current_ssb
->
c_re
+
current_ssb
->
c_im
*
current_ssb
->
c_im
;
current_ssb
->
metric
=
current_ssb
->
c_re
*
current_ssb
->
c_re
+
current_ssb
->
c_im
*
current_ssb
->
c_im
;
...
@@ -150,15 +146,11 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
...
@@ -150,15 +146,11 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
NR_UE_SSB
*
temp_ptr
=
best_ssb
;
NR_UE_SSB
*
temp_ptr
=
best_ssb
;
while
(
ret
!=
0
&&
temp_ptr
!=
NULL
)
{
while
(
ret
!=
0
&&
temp_ptr
!=
NULL
)
{
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
// computing channel estimation for selected best ssb
// computing channel estimation for selected best ssb
for
(
int
i
=
pbch_initial_symbol
;
i
<
pbch_initial_symbol
+
3
;
i
++
)
for
(
int
i
=
pbch_initial_symbol
;
i
<
pbch_initial_symbol
+
3
;
i
++
)
nr_pbch_channel_estimation
(
ue
,
proc
,
0
,
0
,
i
,
i
-
pbch_initial_symbol
,
temp_ptr
->
i_ssb
,
temp_ptr
->
n_hf
);
nr_pbch_channel_estimation
(
ue
,
proc
,
0
,
0
,
i
,
i
-
pbch_initial_symbol
,
temp_ptr
->
i_ssb
,
temp_ptr
->
n_hf
);
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
stop_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
#endif
ret
=
nr_rx_pbch
(
ue
,
ret
=
nr_rx_pbch
(
ue
,
proc
,
proc
,
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
86e1e6e1
...
@@ -645,9 +645,7 @@ int nr_ue_pdcch_procedures(uint8_t gNB_id,
...
@@ -645,9 +645,7 @@ int nr_ue_pdcch_procedures(uint8_t gNB_id,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PDCCH_PROCEDURES, VCD_FUNCTION_IN);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PDCCH_PROCEDURES, VCD_FUNCTION_IN);
#if UE_TIMING_TRACE
start_meas(&ue->dlsch_rx_pdcch_stats);
start_meas(&ue->dlsch_rx_pdcch_stats);
#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_IN);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH, VCD_FUNCTION_IN);
#ifdef NR_PDCCH_SCHED_DEBUG
#ifdef NR_PDCCH_SCHED_DEBUG
...
...
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