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
ZhouShuya
OpenXG-RAN
Commits
5917cdaf
Commit
5917cdaf
authored
Aug 01, 2017
by
gabrielC
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
correct dlsim execution problem
parent
1661294d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
46 deletions
+46
-46
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+46
-46
No files found.
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
5917cdaf
...
...
@@ -2022,7 +2022,7 @@ int main(int argc, char **argv)
}
*/
UE
->
pdcch_vars
[
subframe
&
0x1
][
0
]
->
crnti
=
n_rnti
;
UE
->
pdcch_vars
[
UE
->
current_thread_id
[
subframe
]
][
0
]
->
crnti
=
n_rnti
;
// Fill in UL_alloc
UL_alloc_pdu
.
type
=
0
;
...
...
@@ -2296,7 +2296,7 @@ int main(int argc, char **argv)
reset_meas
(
&
eNB
->
dlsch_rate_matching_stats
);
reset_meas
(
&
eNB
->
dlsch_turbo_encoding_stats
);
reset_meas
(
&
UE
->
phy_proc_rx
[
subframe
&
0x1
]);
// total UE rx
reset_meas
(
&
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]
]);
// total UE rx
reset_meas
(
&
UE
->
ofdm_demod_stats
);
reset_meas
(
&
UE
->
dlsch_channel_estimation_stats
);
reset_meas
(
&
UE
->
dlsch_freq_offset_estimation_stats
);
...
...
@@ -2341,10 +2341,10 @@ int main(int argc, char **argv)
//if (trials%100==0)
eNB2UE
[
0
]
->
first_run
=
1
;
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_ack
[
subframe
].
ack
=
0
;
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
]
->
harq_ack
[
subframe
].
ack
=
0
;
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
eNB_id
][
0
]
->
harq_ack
[
subframe
].
ack
=
0
;
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
eNB_id
][
1
]
->
harq_ack
[
subframe
].
ack
=
0
;
while
((
round
<
num_rounds
)
&&
(
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_ack
[
subframe
].
ack
==
0
))
{
while
((
round
<
num_rounds
)
&&
(
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
eNB_id
][
0
]
->
harq_ack
[
subframe
].
ack
==
0
))
{
// printf("Trial %d, round %d\n",trials,round);
round_trials
[
round
]
++
;
...
...
@@ -2552,10 +2552,10 @@ int main(int argc, char **argv)
dump_dci
(
&
UE
->
frame_parms
,
&
dci_alloc
[
0
]);
//UE->dlsch[
proc->subframe_rx&0x1
][eNB_id][0]->active = 1;
//UE->dlsch[
proc->subframe_rx&0x1
][eNB_id][1]->active = 1;
//UE->dlsch[
UE->current_thread_id[proc->subframe_rx]
][eNB_id][0]->active = 1;
//UE->dlsch[
UE->current_thread_id[proc->subframe_rx]
][eNB_id][1]->active = 1;
UE
->
pdcch_vars
[
proc
->
subframe_rx
&
0x1
][
eNB_id
]
->
num_pdcch_symbols
=
num_pdcch_symbols
;
UE
->
pdcch_vars
[
UE
->
current_thread_id
[
proc
->
subframe_rx
]
][
eNB_id
]
->
num_pdcch_symbols
=
num_pdcch_symbols
;
UE
->
dlsch_received
[
eNB_id
]
++
;
}
else
{
...
...
@@ -2563,11 +2563,11 @@ int main(int argc, char **argv)
}
}
dci_received
=
UE
->
pdcch_vars
[
proc
->
subframe_rx
&
0x1
][
eNB_id
]
->
dci_received
;
dci_received
=
UE
->
pdcch_vars
[
UE
->
current_thread_id
[
proc
->
subframe_rx
]
][
eNB_id
]
->
dci_received
;
phy_procedures_UE_RX
(
UE
,
proc
,
0
,
0
,
dci_flag
,
normal_txrx
,
no_relay
,
NULL
);
dci_received
=
dci_received
-
UE
->
pdcch_vars
[
proc
->
subframe_rx
&
0x1
][
eNB_id
]
->
dci_received
;
dci_received
=
dci_received
-
UE
->
pdcch_vars
[
UE
->
current_thread_id
[
proc
->
subframe_rx
]
][
eNB_id
]
->
dci_received
;
if
(
dci_flag
&&
(
dci_received
==
0
))
{
//printf("DCI not received\n");
...
...
@@ -2598,35 +2598,35 @@ int main(int argc, char **argv)
//common vars
write_output
(
"rxsig0.m"
,
"rxs0"
,
&
UE
->
common_vars
.
rxdata
[
0
][
0
],
10
*
UE
->
frame_parms
.
samples_per_tti
,
1
,
1
);
write_output
(
"rxsigF0.m"
,
"rxsF0"
,
&
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
0
][
0
],
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
write_output
(
"rxsigF0.m"
,
"rxsF0"
,
&
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
rxdataF
[
0
][
0
],
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
if
(
UE
->
frame_parms
.
nb_antennas_rx
>
1
)
{
write_output
(
"rxsig1.m"
,
"rxs1"
,
UE
->
common_vars
.
rxdata
[
1
],
UE
->
frame_parms
.
samples_per_tti
,
1
,
1
);
write_output
(
"rxsigF1.m"
,
"rxsF1"
,
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
1
],
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
write_output
(
"rxsigF1.m"
,
"rxsF1"
,
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
rxdataF
[
1
],
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
}
write_output
(
"dlsch00_r0.m"
,
"dl00_r0"
,
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
0
][
0
]),
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
0
][
0
]),
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
if
(
UE
->
frame_parms
.
nb_antennas_rx
>
1
)
write_output
(
"dlsch01_r0.m"
,
"dl01_r0"
,
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
1
][
0
]),
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
1
][
0
]),
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
if
(
eNB
->
frame_parms
.
nb_antennas_tx
>
1
)
write_output
(
"dlsch10_r0.m"
,
"dl10_r0"
,
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
][
0
]),
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
2
][
0
]),
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
if
((
UE
->
frame_parms
.
nb_antennas_rx
>
1
)
&&
(
eNB
->
frame_parms
.
nb_antennas_tx
>
1
))
write_output
(
"dlsch11_r0.m"
,
"dl11_r0"
,
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
3
][
0
]),
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
3
][
0
]),
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
/
2
,
1
,
1
);
//pdsch_vars
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
&
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
current_harq_pid
);
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
&
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
0
]
->
current_harq_pid
);
write_output
(
"dlsch_e.m"
,
"e"
,
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
e
,
coded_bits_per_codeword
,
1
,
4
);
...
...
@@ -2642,15 +2642,15 @@ int main(int argc, char **argv)
if
(
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_ack
[
subframe
].
ack
==
1
)
{
if
(
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
eNB_id
][
0
]
->
harq_ack
[
subframe
].
ack
==
1
)
{
avg_iter
+=
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
last_iteration_cnt
;
avg_iter
+=
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
eNB_id
][
0
]
->
last_iteration_cnt
;
iter_trials
++
;
if
(
n_frames
==
1
)
printf
(
"No DLSCH errors found (round %d),uncoded ber %f
\n
"
,
round
,
uncoded_ber
);
UE
->
total_TBS
[
eNB_id
]
=
UE
->
total_TBS
[
eNB_id
]
+
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
current_harq_pid
]
->
TBS
;
UE
->
total_TBS
[
eNB_id
]
=
UE
->
total_TBS
[
eNB_id
]
+
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]][
eNB_id
][
0
]
->
harq_processes
[
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
eNB_id
][
0
]
->
current_harq_pid
]
->
TBS
;
TB0_active
=
0
;
...
...
@@ -2658,25 +2658,25 @@ int main(int argc, char **argv)
else
{
errs
[
round
]
++
;
avg_iter
+=
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
last_iteration_cnt
-
1
;
avg_iter
+=
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
eNB_id
][
0
]
->
last_iteration_cnt
-
1
;
iter_trials
++
;
if
(
n_frames
==
1
)
{
//if ((n_frames==1) || (SNR>=30)) {
printf
(
"DLSCH errors found (round %d), uncoded ber %f
\n
"
,
round
,
uncoded_ber
);
for
(
s
=
0
;
s
<
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
C
;
s
++
)
{
if
(
s
<
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Cminus
)
Kr
=
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kminus
;
for
(
s
=
0
;
s
<
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
0
]
->
harq_processes
[
0
]
->
C
;
s
++
)
{
if
(
s
<
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
0
]
->
harq_processes
[
0
]
->
Cminus
)
Kr
=
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
0
]
->
harq_processes
[
0
]
->
Kminus
;
else
Kr
=
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kplus
;
Kr
=
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
0
]
->
harq_processes
[
0
]
->
Kplus
;
Kr_bytes
=
Kr
>>
3
;
printf
(
"Decoded_output (Segment %d):
\n
"
,
s
);
for
(
i
=
0
;
i
<
Kr_bytes
;
i
++
)
printf
(
"%d : %x (%x)
\n
"
,
i
,
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
],
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
]
^
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
]);
printf
(
"%d : %x (%x)
\n
"
,
i
,
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]][
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
],
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
]
^
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
]);
}
sprintf
(
fname
,
"rxsig0_r%d.m"
,
round
);
...
...
@@ -2685,7 +2685,7 @@ int main(int argc, char **argv)
sprintf
(
fname
,
"rxsigF0_r%d.m"
,
round
);
sprintf
(
vname
,
"rxs0F_r%d"
,
round
);
write_output
(
fname
,
vname
,
&
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
0
][
0
],
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
write_output
(
fname
,
vname
,
&
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
rxdataF
[
0
][
0
],
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
if
(
UE
->
frame_parms
.
nb_antennas_rx
>
1
)
{
sprintf
(
fname
,
"rxsig1_r%d.m"
,
round
);
...
...
@@ -2693,20 +2693,20 @@ int main(int argc, char **argv)
write_output
(
fname
,
vname
,
UE
->
common_vars
.
rxdata
[
1
],
UE
->
frame_parms
.
samples_per_tti
,
1
,
1
);
sprintf
(
fname
,
"rxsigF1_r%d.m"
,
round
);
sprintf
(
vname
,
"rxs1F_r%d.m"
,
round
);
write_output
(
fname
,
vname
,
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
1
],
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
write_output
(
fname
,
vname
,
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
rxdataF
[
1
],
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
}
sprintf
(
fname
,
"dlsch00_r%d.m"
,
round
);
sprintf
(
vname
,
"dl00_r%d"
,
round
);
write_output
(
fname
,
vname
,
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
0
][
0
]),
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
0
][
0
]),
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
,
1
,
1
);
if
(
UE
->
frame_parms
.
nb_antennas_rx
>
1
)
{
sprintf
(
fname
,
"dlsch01_r%d.m"
,
round
);
sprintf
(
vname
,
"dl01_r%d"
,
round
);
write_output
(
fname
,
vname
,
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
1
][
0
]),
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
1
][
0
]),
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
/
2
,
1
,
1
);
}
...
...
@@ -2714,7 +2714,7 @@ int main(int argc, char **argv)
sprintf
(
fname
,
"dlsch10_r%d.m"
,
round
);
sprintf
(
vname
,
"dl10_r%d"
,
round
);
write_output
(
fname
,
vname
,
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
2
][
0
]),
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
2
][
0
]),
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
/
2
,
1
,
1
);
}
...
...
@@ -2722,18 +2722,18 @@ int main(int argc, char **argv)
sprintf
(
fname
,
"dlsch11_r%d.m"
,
round
);
sprintf
(
vname
,
"dl11_r%d"
,
round
);
write_output
(
fname
,
vname
,
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
dl_ch_estimates
[
eNB_id
][
3
][
0
]),
&
(
UE
->
common_vars
.
common_vars_rx_data_per_thread
[
UE
->
current_thread_id
[
subframe
]
].
dl_ch_estimates
[
eNB_id
][
3
][
0
]),
UE
->
frame_parms
.
ofdm_symbol_size
*
nsymb
/
2
,
1
,
1
);
}
//pdsch_vars
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
&
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
current_harq_pid
);
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
&
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
0
]
->
current_harq_pid
);
//write_output("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
//write_output("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
//write_output("dlsch_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4);
//write_output("dlsch_w.m","w",UE->dlsch[
subframe&0x1
][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
//write_output("dlsch_w.m","w",UE->dlsch[
UE->current_thread_id[subframe]
][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
//pdcch_vars
write_output
(
"pdcchF0_ext.m"
,
"pdcchF_ext"
,
UE
->
pdcch_vars
[
0
][
eNB_id
]
->
rxdataF_ext
[
0
],
2
*
3
*
UE
->
frame_parms
.
ofdm_symbol_size
,
1
,
1
);
write_output
(
"pdcch00_ch0_ext.m"
,
"pdcch00_ch0_ext"
,
UE
->
pdcch_vars
[
0
][
eNB_id
]
->
dl_ch_estimates_ext
[
0
],
300
*
3
,
1
,
1
);
...
...
@@ -2747,7 +2747,7 @@ int main(int argc, char **argv)
// printf("round %d errors %d/%d\n",round,errs[round],trials);
round
++
;
// UE->dlsch[
subframe&0x1
][0][0]->harq_processes[0]->round++;
// UE->dlsch[
UE->current_thread_id[subframe]
][0][0]->harq_processes[0]->round++;
}
if
(
xforms
==
1
)
{
...
...
@@ -2788,7 +2788,7 @@ int main(int argc, char **argv)
double
t_tx_enc
=
(
double
)
eNB
->
dlsch_encoding_stats
.
p_time
/
cpu_freq_GHz
/
1000
.
0
;
double
t_rx
=
(
double
)
UE
->
phy_proc_rx
[
subframe
&
0x1
].
p_time
/
cpu_freq_GHz
/
1000
.
0
;
double
t_rx
=
(
double
)
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]
].
p_time
/
cpu_freq_GHz
/
1000
.
0
;
double
t_rx_fft
=
(
double
)
UE
->
ofdm_demod_stats
.
p_time
/
cpu_freq_GHz
/
1000
.
0
;
double
t_rx_demod
=
(
double
)
UE
->
dlsch_rx_pdcch_stats
.
p_time
/
cpu_freq_GHz
/
1000
.
0
;
double
t_rx_dec
=
(
double
)
UE
->
dlsch_decoding_stats
[
UE
->
current_thread_id
[
subframe
]].
p_time
/
cpu_freq_GHz
/
1000
.
0
;
...
...
@@ -2937,7 +2937,7 @@ int main(int argc, char **argv)
//rate*effective_rate,
100
*
effective_rate
,
//rate,
//rate*get_Qm(UE->dlsch[
subframe&0x1][0][0]->harq_processes[UE->dlsch[subframe&0x1
][0][0]->current_harq_pid]->mcs),
//rate*get_Qm(UE->dlsch[
UE->current_thread_id[subframe]][0][0]->harq_processes[UE->dlsch[UE->current_thread_id[subframe]
][0][0]->current_harq_pid]->mcs),
(
1
.
0
*
(
round_trials
[
0
]
-
errs
[
0
])
+
2
.
0
*
(
round_trials
[
1
]
-
errs
[
1
])
+
3
.
0
*
(
round_trials
[
2
]
-
errs
[
2
])
+
4
.
0
*
(
round_trials
[
3
]
-
errs
[
3
]))
/
((
double
)
round_trials
[
0
])
/
(
double
)
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
TBS
,
(
1
.
0
*
(
round_trials
[
0
]
-
errs
[
0
])
+
2
.
0
*
(
round_trials
[
1
]
-
errs
[
1
])
+
3
.
0
*
(
round_trials
[
2
]
-
errs
[
2
])
+
4
.
0
*
(
round_trials
[
3
]
-
errs
[
3
]))
/
((
double
)
round_trials
[
0
]));
...
...
@@ -2977,10 +2977,10 @@ int main(int argc, char **argv)
eNB
->
dlsch_interleaving_stats
.
diff
/
eNB
->
dlsch_interleaving_stats
.
trials
/
cpu_freq_GHz
/
1000
.
0
,
eNB
->
dlsch_interleaving_stats
.
trials
);
printf
(
"
\n\n
UE RX function statistics (per 1ms subframe)
\n\n
"
);
std_phy_proc_rx
=
sqrt
((
double
)
UE
->
phy_proc_rx
[
subframe
&
0x1
].
diff_square
/
pow
(
cpu_freq_GHz
,
2
)
/
pow
(
1000
,
2
)
/
UE
->
phy_proc_rx
[
subframe
&
0x1
].
trials
-
pow
((
double
)
UE
->
phy_proc_rx
[
subframe
&
0x1
].
diff
/
UE
->
phy_proc_rx
[
subframe
&
0x1
].
trials
/
cpu_freq_GHz
/
1000
,
2
));
printf
(
"Total PHY proc rx :%f us (%d trials)
\n
"
,(
double
)
UE
->
phy_proc_rx
[
subframe
&
0x1
].
diff
/
UE
->
phy_proc_rx
[
subframe
&
0x1
].
trials
/
cpu_freq_GHz
/
1000
.
0
,
UE
->
phy_proc_rx
[
subframe
&
0x1
].
trials
*
2
/
3
);
std_phy_proc_rx
=
sqrt
((
double
)
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]
].
diff_square
/
pow
(
cpu_freq_GHz
,
2
)
/
pow
(
1000
,
2
)
/
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]].
trials
-
pow
((
double
)
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]].
diff
/
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]
].
trials
/
cpu_freq_GHz
/
1000
,
2
));
printf
(
"Total PHY proc rx :%f us (%d trials)
\n
"
,(
double
)
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]].
diff
/
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]
].
trials
/
cpu_freq_GHz
/
1000
.
0
,
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]
].
trials
*
2
/
3
);
printf
(
"|__Statistcs std: %fus max: %fus min: %fus median %fus q1 %fus q3 %fus n_dropped: %d packet
\n
"
,
std_phy_proc_rx
,
t_rx_max
,
t_rx_min
,
rx_median
,
rx_q1
,
rx_q3
,
n_rx_dropped
);
std_phy_proc_rx_fft
=
sqrt
((
double
)
UE
->
ofdm_demod_stats
.
diff_square
/
pow
(
cpu_freq_GHz
,
2
)
/
pow
(
1000
,
...
...
@@ -3014,7 +3014,7 @@ int main(int argc, char **argv)
printf
(
"|__ DLSCH Rate Unmatching :%f us (%d trials)
\n
"
,
(
double
)
UE
->
dlsch_rate_unmatching_stats
.
diff
/
UE
->
dlsch_rate_unmatching_stats
.
trials
/
cpu_freq_GHz
/
1000
.
0
,
UE
->
dlsch_rate_unmatching_stats
.
trials
);
printf
(
"|__ DLSCH Turbo Decoding(%d bits) :%f us (%d trials)
\n
"
,
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Cminus
?
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kminus
:
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kplus
,
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]][
0
][
0
]
->
harq_processes
[
0
]
->
Cminus
?
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]][
0
][
0
]
->
harq_processes
[
0
]
->
Kminus
:
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
0
]
->
harq_processes
[
0
]
->
Kplus
,
(
double
)
UE
->
dlsch_turbo_decoding_stats
.
diff
/
UE
->
dlsch_turbo_decoding_stats
.
trials
/
cpu_freq_GHz
/
1000
.
0
,
UE
->
dlsch_turbo_decoding_stats
.
trials
);
printf
(
" |__ init %f us (cycles/iter %f, %d trials)
\n
"
,
(
double
)
UE
->
dlsch_tc_init_stats
.
diff
/
UE
->
dlsch_tc_init_stats
.
trials
/
cpu_freq_GHz
/
1000
.
0
,
...
...
@@ -3192,7 +3192,7 @@ int main(int argc, char **argv)
eNB
->
dlsch_modulation_stats
.
trials
,
eNB
->
dlsch_scrambling_stats
.
trials
,
eNB
->
dlsch_encoding_stats
.
trials
,
UE
->
phy_proc_rx
[
subframe
&
0x1
].
trials
,
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]
].
trials
,
UE
->
ofdm_demod_stats
.
trials
,
UE
->
dlsch_rx_pdcch_stats
.
trials
,
UE
->
dlsch_llr_stats
.
trials
,
...
...
@@ -3205,7 +3205,7 @@ int main(int argc, char **argv)
get_time_meas_us
(
&
eNB
->
dlsch_modulation_stats
),
get_time_meas_us
(
&
eNB
->
dlsch_scrambling_stats
),
get_time_meas_us
(
&
eNB
->
dlsch_encoding_stats
),
get_time_meas_us
(
&
UE
->
phy_proc_rx
[
subframe
&
0x1
]),
get_time_meas_us
(
&
UE
->
phy_proc_rx
[
UE
->
current_thread_id
[
subframe
]
]),
nsymb
*
get_time_meas_us
(
&
UE
->
ofdm_demod_stats
),
get_time_meas_us
(
&
UE
->
dlsch_rx_pdcch_stats
),
3
*
get_time_meas_us
(
&
UE
->
dlsch_llr_stats
),
...
...
@@ -3245,7 +3245,7 @@ int main(int argc, char **argv)
eNB->dlsch_modulation_stats.trials,
eNB->dlsch_scrambling_stats.trials,
eNB->dlsch_encoding_stats.trials,
UE->phy_proc_rx[
subframe&0x1
].trials,
UE->phy_proc_rx[
UE->current_thread_id[subframe]
].trials,
UE->ofdm_demod_stats.trials,
UE->dlsch_rx_pdcch_stats.trials,
UE->dlsch_llr_stats.trials,
...
...
@@ -3305,7 +3305,7 @@ int main(int argc, char **argv)
printf
(
"eNB %d
\n
"
,
i
);
free_eNB_dlsch
(
eNB
->
dlsch
[
0
][
i
]);
printf
(
"UE %d
\n
"
,
i
);
free_ue_dlsch
(
UE
->
dlsch
[
subframe
&
0x1
][
0
][
i
]);
free_ue_dlsch
(
UE
->
dlsch
[
UE
->
current_thread_id
[
subframe
]
][
0
][
i
]);
}
if
(
test_perf
&&
!
test_passed
)
...
...
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