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
4eb78faa
Commit
4eb78faa
authored
Apr 28, 2020
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added harq stats in dlsim
parent
fd50f1b5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
10 deletions
+23
-10
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+23
-10
No files found.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
4eb78faa
...
@@ -139,6 +139,9 @@ int main(int argc, char **argv)
...
@@ -139,6 +139,9 @@ int main(int argc, char **argv)
int
i
,
aa
;
//,l;
int
i
,
aa
;
//,l;
double
sigma2
,
sigma2_dB
=
10
,
SNR
,
snr0
=-
2
.
0
,
snr1
=
2
.
0
;
double
sigma2
,
sigma2_dB
=
10
,
SNR
,
snr0
=-
2
.
0
,
snr1
=
2
.
0
;
uint8_t
snr1set
=
0
;
uint8_t
snr1set
=
0
;
float
roundStats
[
50
];
float
psnr
;
uint8_t
snrRun
;
int
**
txdata
;
int
**
txdata
;
double
**
s_re
,
**
s_im
,
**
r_re
,
**
r_im
;
double
**
s_re
,
**
s_im
,
**
r_re
,
**
r_im
;
//double iqim = 0.0;
//double iqim = 0.0;
...
@@ -682,6 +685,7 @@ int main(int argc, char **argv)
...
@@ -682,6 +685,7 @@ int main(int argc, char **argv)
nr_ue_phy_config_request
(
&
UE_mac
->
phy_config
);
nr_ue_phy_config_request
(
&
UE_mac
->
phy_config
);
NR_UE_list_t
*
UE_list
=
&
RC
.
nrmac
[
0
]
->
UE_list
;
NR_UE_list_t
*
UE_list
=
&
RC
.
nrmac
[
0
]
->
UE_list
;
NR_COMMON_channels_t
*
cc
=
RC
.
nrmac
[
0
]
->
common_channels
;
NR_COMMON_channels_t
*
cc
=
RC
.
nrmac
[
0
]
->
common_channels
;
snrRun
=
0
;
for
(
SNR
=
snr0
;
SNR
<
snr1
;
SNR
+=
.
2
)
{
for
(
SNR
=
snr0
;
SNR
<
snr1
;
SNR
+=
.
2
)
{
...
@@ -726,6 +730,8 @@ int main(int argc, char **argv)
...
@@ -726,6 +730,8 @@ int main(int argc, char **argv)
UE_harq_process
->
harq_ack
.
ack
=
0
;
UE_harq_process
->
harq_ack
.
ack
=
0
;
round
=
0
;
round
=
0
;
UE_harq_process
->
round
=
round
;
UE_harq_process
->
first_tx
=
1
;
while
((
round
<
num_rounds
)
&&
(
UE_harq_process
->
harq_ack
.
ack
==
0
))
{
while
((
round
<
num_rounds
)
&&
(
UE_harq_process
->
harq_ack
.
ack
==
0
))
{
memset
(
RC
.
nrmac
[
0
]
->
cce_list
[
1
][
0
],
0
,
MAX_NUM_CCE
*
sizeof
(
int
));
memset
(
RC
.
nrmac
[
0
]
->
cce_list
[
1
][
0
],
0
,
MAX_NUM_CCE
*
sizeof
(
int
));
...
@@ -827,11 +833,7 @@ int main(int argc, char **argv)
...
@@ -827,11 +833,7 @@ int main(int argc, char **argv)
do_pdcch_flag
,
do_pdcch_flag
,
normal_txrx
);
normal_txrx
);
if
(
UE
->
dlsch
[
UE
->
current_thread_id
[
slot
]][
0
][
0
]
->
last_iteration_cnt
>=
//printf("dlsim round %d ends\n",round);
UE
->
dlsch
[
UE
->
current_thread_id
[
slot
]][
0
][
0
]
->
max_ldpc_iterations
+
1
)
n_errors
++
;
printf
(
"dlsim round %d ends
\n
"
,
round
);
round
++
;
round
++
;
}
// round
}
// round
...
@@ -839,12 +841,13 @@ int main(int argc, char **argv)
...
@@ -839,12 +841,13 @@ int main(int argc, char **argv)
//---------------------- count errors ----------------------
//---------------------- count errors ----------------------
//----------------------------------------------------------
//----------------------------------------------------------
if
(
UE
->
dlsch
[
UE
->
current_thread_id
[
slot
]][
0
][
0
]
->
last_iteration_cnt
>=
UE
->
dlsch
[
UE
->
current_thread_id
[
slot
]][
0
][
0
]
->
max_ldpc_iterations
+
1
)
n_errors
++
;
NR_UE_PDSCH
**
pdsch_vars
=
UE
->
pdsch_vars
[
UE
->
current_thread_id
[
UE_proc
.
nr_tti_rx
]];
NR_UE_PDSCH
**
pdsch_vars
=
UE
->
pdsch_vars
[
UE
->
current_thread_id
[
UE_proc
.
nr_tti_rx
]];
int16_t
*
UE_llr
=
pdsch_vars
[
0
]
->
llr
[
0
];
int16_t
*
UE_llr
=
pdsch_vars
[
0
]
->
llr
[
0
];
uint32_t
TBS
=
rel15
->
TBSize
[
0
];
uint32_t
TBS
=
rel15
->
TBSize
[
0
];
uint16_t
length_dmrs
=
1
;
uint16_t
length_dmrs
=
1
;
uint16_t
nb_rb
=
rel15
->
rbSize
;
uint16_t
nb_rb
=
rel15
->
rbSize
;
...
@@ -892,15 +895,16 @@ int main(int argc, char **argv)
...
@@ -892,15 +895,16 @@ int main(int argc, char **argv)
if
(
n_trials
==
1
)
if
(
n_trials
==
1
)
printf
(
"errors_bit = %u (trial %d)
\n
"
,
errors_bit
,
trial
);
printf
(
"errors_bit = %u (trial %d)
\n
"
,
errors_bit
,
trial
);
}
}
roundStats
[
snrRun
]
+=
((
float
)
round
);
}
// noise trials
}
// noise trials
roundStats
[
snrRun
]
/=
((
float
)
n_trials
);
printf
(
"*****************************************
\n
"
);
printf
(
"*****************************************
\n
"
);
printf
(
"SNR %f, (false positive %f)
\n
"
,
SNR
,
printf
(
"SNR %f, (false positive %f)
\n
"
,
SNR
,
(
float
)
n_errors
/
(
float
)
n_trials
);
(
float
)
n_errors
/
(
float
)
n_trials
);
printf
(
"*****************************************
\n
"
);
printf
(
"*****************************************
\n
"
);
printf
(
"
\n
"
);
printf
(
"
\n
"
);
printf
(
"SNR %f : n_errors (negative CRC) = %d/%d,
Channel BER %e
\n
"
,
SNR
,
n_errors
,
n_trials
,(
double
)
errors_scrambling
/
available_bits
/
n_trials
);
printf
(
"SNR %f : n_errors (negative CRC) = %d/%d,
Avg round %.2f, Channel BER %e
\n
"
,
SNR
,
n_errors
,
n_trials
,
roundStats
[
snrRun
]
,(
double
)
errors_scrambling
/
available_bits
/
n_trials
);
printf
(
"
\n
"
);
printf
(
"
\n
"
);
if
(
n_trials
==
1
)
{
if
(
n_trials
==
1
)
{
...
@@ -910,7 +914,6 @@ int main(int argc, char **argv)
...
@@ -910,7 +914,6 @@ int main(int argc, char **argv)
LOG_M
(
"rxsig1.m"
,
"rxs1"
,
UE
->
common_vars
.
rxdata
[
1
],
frame_length_complex_samples
,
1
,
1
);
LOG_M
(
"rxsig1.m"
,
"rxs1"
,
UE
->
common_vars
.
rxdata
[
1
],
frame_length_complex_samples
,
1
,
1
);
LOG_M
(
"chestF0.m"
,
"chF0"
,
UE
->
pdsch_vars
[
0
][
0
]
->
dl_ch_estimates_ext
,
N_RB_DL
*
12
*
14
,
1
,
1
);
LOG_M
(
"chestF0.m"
,
"chF0"
,
UE
->
pdsch_vars
[
0
][
0
]
->
dl_ch_estimates_ext
,
N_RB_DL
*
12
*
14
,
1
,
1
);
write_output
(
"rxF_comp.m"
,
"rxFc"
,
&
UE
->
pdsch_vars
[
0
][
0
]
->
rxdataF_comp0
[
0
][
0
],
N_RB_DL
*
12
*
14
,
1
,
1
);
write_output
(
"rxF_comp.m"
,
"rxFc"
,
&
UE
->
pdsch_vars
[
0
][
0
]
->
rxdataF_comp0
[
0
][
0
],
N_RB_DL
*
12
*
14
,
1
,
1
);
break
;
}
}
if
((
float
)
n_errors
/
(
float
)
n_trials
<=
target_error_rate
)
{
if
((
float
)
n_errors
/
(
float
)
n_trials
<=
target_error_rate
)
{
...
@@ -969,8 +972,18 @@ int main(int argc, char **argv)
...
@@ -969,8 +972,18 @@ int main(int argc, char **argv)
printStatIndent2(&UE->dlsch_tc_intl2_stats,"intl2+HardDecode+CRC");
printStatIndent2(&UE->dlsch_tc_intl2_stats,"intl2+HardDecode+CRC");
*/
*/
}
}
snrRun
++
;
}
// NSR
}
// NSR
if
(
n_trials
>
1
)
{
printf
(
"HARQ stats:
\n
SNR
\t
Rounds
\n
"
);
psnr
=
snr0
;
for
(
uint8_t
i
=
0
;
i
<
snrRun
;
i
++
)
{
printf
(
"%.1f
\t
%.2f
\n
"
,
psnr
,
roundStats
[
i
]);
psnr
+=
0
.
2
;
}
}
for
(
i
=
0
;
i
<
2
;
i
++
)
{
for
(
i
=
0
;
i
<
2
;
i
++
)
{
free
(
s_re
[
i
]);
free
(
s_re
[
i
]);
free
(
s_im
[
i
]);
free
(
s_im
[
i
]);
...
...
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