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
lizhongxiao
OpenXG-RAN
Commits
7e6f8ecf
Commit
7e6f8ecf
authored
Apr 26, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixing bugs and cleaning up ulsim
parent
697d72cd
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
93 additions
and
126 deletions
+93
-126
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+93
-126
No files found.
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
7e6f8ecf
...
@@ -750,7 +750,8 @@ int main(int argc, char **argv)
...
@@ -750,7 +750,8 @@ int main(int argc, char **argv)
// common configuration
// common configuration
rrc_mac_config_req_gNB
(
0
,
0
,
conf
.
pdsch_AntennaPorts
,
n_rx
,
0
,
6
,
scc
,
&
rrc
.
carrier
.
mib
,
rrc
.
carrier
.
siblock1
,
0
,
0
,
NULL
);
rrc_mac_config_req_gNB
(
0
,
0
,
conf
.
pdsch_AntennaPorts
,
n_rx
,
0
,
6
,
scc
,
&
rrc
.
carrier
.
mib
,
rrc
.
carrier
.
siblock1
,
0
,
0
,
NULL
);
// UE dedicated configuration
// UE dedicated configuration
rrc_mac_config_req_gNB
(
0
,
0
,
conf
.
pdsch_AntennaPorts
,
n_rx
,
0
,
6
,
scc
,
&
rrc
.
carrier
.
mib
,
rrc
.
carrier
.
siblock1
,
1
,
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
rrc_mac_config_req_gNB
(
0
,
0
,
conf
.
pdsch_AntennaPorts
,
n_rx
,
0
,
6
,
scc
,
&
rrc
.
carrier
.
mib
,
rrc
.
carrier
.
siblock1
,
1
,
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
frame_parms
->
nb_antennas_tx
=
1
;
frame_parms
->
nb_antennas_tx
=
1
;
frame_parms
->
nb_antennas_rx
=
n_rx
;
frame_parms
->
nb_antennas_rx
=
n_rx
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
...
@@ -772,7 +773,7 @@ int main(int argc, char **argv)
...
@@ -772,7 +773,7 @@ int main(int argc, char **argv)
PHY_vars_UE_g
[
0
][
0
]
=
UE
;
PHY_vars_UE_g
[
0
][
0
]
=
UE
;
memcpy
(
&
UE
->
frame_parms
,
frame_parms
,
sizeof
(
NR_DL_FRAME_PARMS
));
memcpy
(
&
UE
->
frame_parms
,
frame_parms
,
sizeof
(
NR_DL_FRAME_PARMS
));
UE
->
frame_parms
.
nb_antennas_tx
=
n_tx
;
UE
->
frame_parms
.
nb_antennas_tx
=
n_tx
;
frame_parms
->
nb_antennas_rx
=
1
;
UE
->
frame_parms
.
nb_antennas_rx
=
1
;
if
(
init_nr_ue_signal
(
UE
,
1
)
!=
0
)
{
if
(
init_nr_ue_signal
(
UE
,
1
)
!=
0
)
{
printf
(
"Error at UE NR initialisation
\n
"
);
printf
(
"Error at UE NR initialisation
\n
"
);
...
@@ -858,22 +859,15 @@ int main(int argc, char **argv)
...
@@ -858,22 +859,15 @@ int main(int argc, char **argv)
/* validate parameters othwerwise default values are used */
/* validate parameters othwerwise default values are used */
/* -U flag can be used to set DMRS parameters*/
/* -U flag can be used to set DMRS parameters*/
if
(
modify_dmrs
)
if
(
modify_dmrs
)
{
{
if
(
dmrs_arg
[
0
]
==
0
)
if
(
dmrs_arg
[
0
]
==
0
)
{
mapping_type
=
typeA
;
mapping_type
=
typeA
;
}
else
if
(
dmrs_arg
[
0
]
==
1
)
else
if
(
dmrs_arg
[
0
]
==
1
)
{
mapping_type
=
typeB
;
mapping_type
=
typeB
;
}
/* Additional DMRS positions */
/* Additional DMRS positions */
if
(
dmrs_arg
[
1
]
>=
0
&&
dmrs_arg
[
1
]
<=
3
)
if
(
dmrs_arg
[
1
]
>=
0
&&
dmrs_arg
[
1
]
<=
3
)
{
add_pos
=
dmrs_arg
[
1
];
add_pos
=
dmrs_arg
[
1
];
}
}
}
printf
(
"NOTE: DMRS config is modified with Mapping Type %d , Additional Position %d
\n
"
,
mapping_type
,
add_pos
);
printf
(
"NOTE: DMRS config is modified with Mapping Type %d , Additional Position %d
\n
"
,
mapping_type
,
add_pos
);
uint8_t
length_dmrs
=
pusch_len1
;
uint8_t
length_dmrs
=
pusch_len1
;
...
@@ -882,10 +876,8 @@ int main(int argc, char **argv)
...
@@ -882,10 +876,8 @@ int main(int argc, char **argv)
printf
(
"num dmrs sym %d
\n
"
,
number_dmrs_symbols
);
printf
(
"num dmrs sym %d
\n
"
,
number_dmrs_symbols
);
uint8_t
nb_re_dmrs
=
(
dmrs_config_type
==
pusch_dmrs_type1
)
?
6
:
4
;
uint8_t
nb_re_dmrs
=
(
dmrs_config_type
==
pusch_dmrs_type1
)
?
6
:
4
;
if
((
frame_parms
->
nb_antennas_tx
==
4
)
&&
(
precod_nbr_layers
==
4
))
if
((
UE
->
frame_parms
.
nb_antennas_tx
==
4
)
&&
(
precod_nbr_layers
==
4
))
{
num_dmrs_cdm_grps_no_data
=
2
;
num_dmrs_cdm_grps_no_data
=
2
;
}
if
(
transformPrecoder
==
transformPrecoder_enabled
)
{
if
(
transformPrecoder
==
transformPrecoder_enabled
)
{
...
@@ -926,17 +918,12 @@ int main(int argc, char **argv)
...
@@ -926,17 +918,12 @@ int main(int argc, char **argv)
double
ts
=
1
.
0
/
(
frame_parms
->
subcarrier_spacing
*
frame_parms
->
ofdm_symbol_size
);
double
ts
=
1
.
0
/
(
frame_parms
->
subcarrier_spacing
*
frame_parms
->
ofdm_symbol_size
);
/* -T option enable PTRS */
/* -T option enable PTRS */
if
(
enable_ptrs
)
if
(
enable_ptrs
)
{
{
/* validate parameters othwerwise default values are used */
/* validate parameters othwerwise default values are used */
if
(
ptrs_arg
[
0
]
==
0
||
ptrs_arg
[
0
]
==
1
||
ptrs_arg
[
0
]
==
2
)
if
(
ptrs_arg
[
0
]
==
0
||
ptrs_arg
[
0
]
==
1
||
ptrs_arg
[
0
]
==
2
)
{
ptrs_time_density
=
ptrs_arg
[
0
];
ptrs_time_density
=
ptrs_arg
[
0
];
}
if
(
ptrs_arg
[
1
]
==
2
||
ptrs_arg
[
1
]
==
4
)
if
(
ptrs_arg
[
1
]
==
2
||
ptrs_arg
[
1
]
==
4
)
{
ptrs_freq_density
=
ptrs_arg
[
1
];
ptrs_freq_density
=
ptrs_arg
[
1
];
}
pdu_bit_map
|=
PUSCH_PDU_BITMAP_PUSCH_PTRS
;
pdu_bit_map
|=
PUSCH_PDU_BITMAP_PUSCH_PTRS
;
printf
(
"NOTE: PTRS Enabled with L %d, K %d
\n
"
,
ptrs_time_density
,
ptrs_freq_density
);
printf
(
"NOTE: PTRS Enabled with L %d, K %d
\n
"
,
ptrs_time_density
,
ptrs_freq_density
);
}
}
...
@@ -1216,22 +1203,18 @@ int main(int argc, char **argv)
...
@@ -1216,22 +1203,18 @@ int main(int argc, char **argv)
nr_ue_pusch_common_procedures
(
UE
,
nr_ue_pusch_common_procedures
(
UE
,
slot
,
slot
,
&
UE
->
frame_parms
,
&
UE
->
frame_parms
,
frame_parms
->
nb_antennas_tx
);
UE
->
frame_parms
.
nb_antennas_tx
);
if
(
n_trials
==
1
)
if
(
n_trials
==
1
)
{
{
LOG_M
(
"txsig0.m"
,
"txs0"
,
&
UE
->
common_vars
.
txdata
[
0
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"txsig0.m"
,
"txs0"
,
&
UE
->
common_vars
.
txdata
[
0
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"txsig0F.m"
,
"txs0F"
,
UE
->
common_vars
.
txdataF
[
0
],
frame_parms
->
ofdm_symbol_size
*
14
,
1
,
1
);
LOG_M
(
"txsig0F.m"
,
"txs0F"
,
UE
->
common_vars
.
txdataF
[
0
],
frame_parms
->
ofdm_symbol_size
*
14
,
1
,
1
);
if
(
precod_nbr_layers
>
1
)
if
(
precod_nbr_layers
>
1
)
{
{
LOG_M
(
"txsig1.m"
,
"txs1"
,
&
UE
->
common_vars
.
txdata
[
1
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"txsig1.m"
,
"txs1"
,
&
UE
->
common_vars
.
txdata
[
1
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"txsig1F.m"
,
"txs1F"
,
UE
->
common_vars
.
txdataF
[
1
],
frame_parms
->
ofdm_symbol_size
*
14
,
1
,
1
);
LOG_M
(
"txsig1F.m"
,
"txs1F"
,
UE
->
common_vars
.
txdataF
[
1
],
frame_parms
->
ofdm_symbol_size
*
14
,
1
,
1
);
if
(
precod_nbr_layers
==
4
)
if
(
precod_nbr_layers
==
4
)
{
{
LOG_M
(
"txsig2.m"
,
"txs2"
,
&
UE
->
common_vars
.
txdata
[
2
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"txsig2.m"
,
"txs2"
,
&
UE
->
common_vars
.
txdata
[
2
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"txsig3.m"
,
"txs3"
,
&
UE
->
common_vars
.
txdata
[
3
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"txsig3.m"
,
"txs3"
,
&
UE
->
common_vars
.
txdata
[
3
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"txsig2F.m"
,
"txs2F"
,
UE
->
common_vars
.
txdataF
[
2
],
frame_parms
->
ofdm_symbol_size
*
14
,
1
,
1
);
LOG_M
(
"txsig2F.m"
,
"txs2F"
,
UE
->
common_vars
.
txdataF
[
2
],
frame_parms
->
ofdm_symbol_size
*
14
,
1
,
1
);
LOG_M
(
"txsig3F.m"
,
"txs3F"
,
UE
->
common_vars
.
txdataF
[
3
],
frame_parms
->
ofdm_symbol_size
*
14
,
1
,
1
);
LOG_M
(
"txsig3F.m"
,
"txs3F"
,
UE
->
common_vars
.
txdataF
[
3
],
frame_parms
->
ofdm_symbol_size
*
14
,
1
,
1
);
}
}
...
@@ -1241,8 +1224,7 @@ int main(int argc, char **argv)
...
@@ -1241,8 +1224,7 @@ int main(int argc, char **argv)
////////////////////////////////////////////////////
////////////////////////////////////////////////////
tx_offset
=
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
);
tx_offset
=
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
);
txlev_sum
=
0
;
txlev_sum
=
0
;
for
(
int
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_tx
;
aa
++
)
for
(
int
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_rx
;
aa
++
)
{
{
atxlev
[
aa
]
=
signal_energy
(
&
UE
->
common_vars
.
txdata
[
aa
][
tx_offset
+
5
*
frame_parms
->
ofdm_symbol_size
+
4
*
frame_parms
->
nb_prefix_samples
+
frame_parms
->
nb_prefix_samples0
],
atxlev
[
aa
]
=
signal_energy
(
&
UE
->
common_vars
.
txdata
[
aa
][
tx_offset
+
5
*
frame_parms
->
ofdm_symbol_size
+
4
*
frame_parms
->
nb_prefix_samples
+
frame_parms
->
nb_prefix_samples0
],
frame_parms
->
ofdm_symbol_size
+
frame_parms
->
nb_prefix_samples
);
frame_parms
->
ofdm_symbol_size
+
frame_parms
->
nb_prefix_samples
);
...
@@ -1252,12 +1234,9 @@ int main(int argc, char **argv)
...
@@ -1252,12 +1234,9 @@ int main(int argc, char **argv)
}
}
}
}
else
else
{
n_trials
=
1
;
n_trials
=
1
;
}
if
(
input_fd
==
NULL
)
if
(
input_fd
==
NULL
)
{
{
sigma_dB
=
10
*
log10
((
double
)
txlev_sum
*
((
double
)
frame_parms
->
ofdm_symbol_size
/
(
12
*
nb_rb
)))
-
SNR
;;
sigma_dB
=
10
*
log10
((
double
)
txlev_sum
*
((
double
)
frame_parms
->
ofdm_symbol_size
/
(
12
*
nb_rb
)))
-
SNR
;;
sigma
=
pow
(
10
,
sigma_dB
/
10
);
sigma
=
pow
(
10
,
sigma_dB
/
10
);
...
@@ -1266,7 +1245,7 @@ int main(int argc, char **argv)
...
@@ -1266,7 +1245,7 @@ int main(int argc, char **argv)
frame_parms
->
ofdm_symbol_size
/
(
12
*
nb_rb
));
frame_parms
->
ofdm_symbol_size
/
(
12
*
nb_rb
));
for
(
i
=
0
;
i
<
slot_length
;
i
++
)
{
for
(
i
=
0
;
i
<
slot_length
;
i
++
)
{
for
(
int
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_tx
;
aa
++
)
{
for
(
int
aa
=
0
;
aa
<
UE
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
s_re
[
aa
][
i
]
=
((
double
)(((
short
*
)
&
UE
->
common_vars
.
txdata
[
aa
][
slot_offset
]))[(
i
<<
1
)]);
s_re
[
aa
][
i
]
=
((
double
)(((
short
*
)
&
UE
->
common_vars
.
txdata
[
aa
][
slot_offset
]))[(
i
<<
1
)]);
s_im
[
aa
][
i
]
=
((
double
)(((
short
*
)
&
UE
->
common_vars
.
txdata
[
aa
][
slot_offset
]))[(
i
<<
1
)
+
1
]);
s_im
[
aa
][
i
]
=
((
double
)(((
short
*
)
&
UE
->
common_vars
.
txdata
[
aa
][
slot_offset
]))[(
i
<<
1
)
+
1
]);
}
}
...
@@ -1274,17 +1253,13 @@ int main(int argc, char **argv)
...
@@ -1274,17 +1253,13 @@ int main(int argc, char **argv)
if
(
UE2gNB
->
max_Doppler
==
0
)
if
(
UE2gNB
->
max_Doppler
==
0
)
{
multipath_channel
(
UE2gNB
,
s_re
,
s_im
,
r_re
,
r_im
,
slot_length
,
0
,
(
n_trials
==
1
)
?
1
:
0
);
multipath_channel
(
UE2gNB
,
s_re
,
s_im
,
r_re
,
r_im
,
slot_length
,
0
,
(
n_trials
==
1
)
?
1
:
0
);
}
else
{
else
multipath_tv_channel
(
UE2gNB
,
s_re
,
s_im
,
r_re
,
r_im
,
2
*
slot_length
,
0
);
multipath_tv_channel
(
UE2gNB
,
s_re
,
s_im
,
r_re
,
r_im
,
2
*
slot_length
,
0
);
}
for
(
i
=
0
;
i
<
slot_length
;
i
++
)
for
(
i
=
0
;
i
<
slot_length
;
i
++
)
{
{
for
(
ap
=
0
;
ap
<
frame_parms
->
nb_antennas_rx
;
ap
++
)
{
for
(
ap
=
0
;
ap
<
frame_parms
->
nb_antennas_rx
;
ap
++
)
if
(
channel_model
==
AWGN
)
{
{
if
(
channel_model
==
AWGN
)
{
double
H_awgn
[
4
][
4
]
=
{{
1
.
0
,
0
.
0
,
0
.
0
,
0
.
0
},
//rx 0
double
H_awgn
[
4
][
4
]
=
{{
1
.
0
,
0
.
0
,
0
.
0
,
0
.
0
},
//rx 0
{
0
.
0
,
1
.
0
,
0
.
0
,
0
.
0
},
//rx 1
{
0
.
0
,
1
.
0
,
0
.
0
,
0
.
0
},
//rx 1
{
0
.
0
,
0
.
0
,
1
.
0
,
0
.
0
},
//rx 2
{
0
.
0
,
0
.
0
,
1
.
0
,
0
.
0
},
//rx 2
...
@@ -1299,8 +1274,7 @@ int main(int argc, char **argv)
...
@@ -1299,8 +1274,7 @@ int main(int argc, char **argv)
r_re
[
ap
][
i
]
=
0
;
r_re
[
ap
][
i
]
=
0
;
r_im
[
ap
][
i
]
=
0
;
r_im
[
ap
][
i
]
=
0
;
for
(
int
aa
=
0
;
aa
<
n_tx
;
aa
++
)
for
(
int
aa
=
0
;
aa
<
n_tx
;
aa
++
)
{
{
r_re
[
ap
][
i
]
+=
s_re
[
aa
][
i
]
*
H_awgn
[
ap
][
aa
];
r_re
[
ap
][
i
]
+=
s_re
[
aa
][
i
]
*
H_awgn
[
ap
][
aa
];
r_im
[
ap
][
i
]
+=
s_im
[
aa
][
i
]
*
H_awgn
[
ap
][
aa
];
r_im
[
ap
][
i
]
+=
s_im
[
aa
][
i
]
*
H_awgn
[
ap
][
aa
];
}
}
...
@@ -1323,8 +1297,7 @@ int main(int argc, char **argv)
...
@@ -1323,8 +1297,7 @@ int main(int argc, char **argv)
}
/*End input_fd */
}
/*End input_fd */
if
(
pusch_pdu
->
pdu_bit_map
&
PUSCH_PDU_BITMAP_PUSCH_PTRS
)
if
(
pusch_pdu
->
pdu_bit_map
&
PUSCH_PDU_BITMAP_PUSCH_PTRS
)
{
{
set_ptrs_symb_idx
(
&
ptrsSymPos
,
set_ptrs_symb_idx
(
&
ptrsSymPos
,
pusch_pdu
->
nr_of_symbols
,
pusch_pdu
->
nr_of_symbols
,
pusch_pdu
->
start_symbol_index
,
pusch_pdu
->
start_symbol_index
,
...
@@ -1346,20 +1319,15 @@ int main(int argc, char **argv)
...
@@ -1346,20 +1319,15 @@ int main(int argc, char **argv)
ul_proc_error
=
phy_procedures_gNB_uespec_RX
(
gNB
,
frame
,
slot
);
ul_proc_error
=
phy_procedures_gNB_uespec_RX
(
gNB
,
frame
,
slot
);
if
(
n_trials
==
1
&&
round
==
0
)
if
(
n_trials
==
1
&&
round
==
0
)
{
{
LOG_M
(
"rxsig0.m"
,
"rx0"
,
&
gNB
->
common_vars
.
rxdata
[
0
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"rxsig0.m"
,
"rx0"
,
&
gNB
->
common_vars
.
rxdata
[
0
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"rxsigF0.m"
,
"rxsF0"
,
gNB
->
common_vars
.
rxdataF
[
0
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"rxsigF0.m"
,
"rxsF0"
,
gNB
->
common_vars
.
rxdataF
[
0
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
if
(
precod_nbr_layers
>
1
)
if
(
precod_nbr_layers
>
1
)
{
{
LOG_M
(
"rxsig1.m"
,
"rx1"
,
&
gNB
->
common_vars
.
rxdata
[
1
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"rxsig1.m"
,
"rx1"
,
&
gNB
->
common_vars
.
rxdata
[
1
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"rxsigF1.m"
,
"rxsF1"
,
gNB
->
common_vars
.
rxdataF
[
1
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"rxsigF1.m"
,
"rxsF1"
,
gNB
->
common_vars
.
rxdataF
[
1
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
if
(
precod_nbr_layers
==
4
)
if
(
precod_nbr_layers
==
4
)
{
{
LOG_M
(
"rxsig2.m"
,
"rx2"
,
&
gNB
->
common_vars
.
rxdata
[
2
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"rxsig2.m"
,
"rx2"
,
&
gNB
->
common_vars
.
rxdata
[
2
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"rxsig3.m"
,
"rx3"
,
&
gNB
->
common_vars
.
rxdata
[
3
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"rxsig3.m"
,
"rx3"
,
&
gNB
->
common_vars
.
rxdata
[
3
][
slot_offset
],
slot_length
,
1
,
1
);
LOG_M
(
"rxsigF2.m"
,
"rxsF2"
,
gNB
->
common_vars
.
rxdataF
[
2
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"rxsigF2.m"
,
"rxsF2"
,
gNB
->
common_vars
.
rxdataF
[
2
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"rxsigF3.m"
,
"rxsF3"
,
gNB
->
common_vars
.
rxdataF
[
3
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
LOG_M
(
"rxsigF3.m"
,
"rxsF3"
,
gNB
->
common_vars
.
rxdataF
[
3
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
}
}
...
@@ -1466,9 +1434,8 @@ int main(int argc, char **argv)
...
@@ -1466,9 +1434,8 @@ int main(int argc, char **argv)
error_flag
=
1
;
error_flag
=
1
;
n_errors
[
round
][
snrRun
]
++
;
n_errors
[
round
][
snrRun
]
++
;
crc_status
=
1
;
crc_status
=
1
;
}
else
{
}
else
crc_status
=
0
;
crc_status
=
0
;
}
if
(
n_trials
==
1
)
printf
(
"end of round %d rv_index %d
\n
"
,
round
,
rv_index
);
if
(
n_trials
==
1
)
printf
(
"end of round %d rv_index %d
\n
"
,
round
,
rv_index
);
//----------------------------------------------------------
//----------------------------------------------------------
...
@@ -1477,9 +1444,9 @@ int main(int argc, char **argv)
...
@@ -1477,9 +1444,9 @@ int main(int argc, char **argv)
if
((
pusch_pdu
->
pdu_bit_map
&
PUSCH_PDU_BITMAP_PUSCH_PTRS
)
&&
(
SNR
==
snr0
)
&&
(
trial
==
0
)
&&
(
round
==
0
))
{
if
((
pusch_pdu
->
pdu_bit_map
&
PUSCH_PDU_BITMAP_PUSCH_PTRS
)
&&
(
SNR
==
snr0
)
&&
(
trial
==
0
)
&&
(
round
==
0
))
{
ptrs_symbols
=
0
;
ptrs_symbols
=
0
;
for
(
int
i
=
pusch_pdu
->
start_symbol_index
;
i
<
pusch_pdu
->
start_symbol_index
+
pusch_pdu
->
nr_of_symbols
;
i
++
){
for
(
int
i
=
pusch_pdu
->
start_symbol_index
;
i
<
pusch_pdu
->
start_symbol_index
+
pusch_pdu
->
nr_of_symbols
;
i
++
)
ptrs_symbols
+=
((
gNB
->
pusch_vars
[
UE_id
]
->
ptrs_symbols
)
>>
i
)
&
1
;
ptrs_symbols
+=
((
gNB
->
pusch_vars
[
UE_id
]
->
ptrs_symbols
)
>>
i
)
&
1
;
}
/* 2*5*(50/2), for RB = 50,K = 2 for 5 OFDM PTRS symbols */
/* 2*5*(50/2), for RB = 50,K = 2 for 5 OFDM PTRS symbols */
available_bits
-=
2
*
ptrs_symbols
*
((
nb_rb
+
ptrs_freq_density
-
1
)
/
ptrs_freq_density
);
available_bits
-=
2
*
ptrs_symbols
*
((
nb_rb
+
ptrs_freq_density
-
1
)
/
ptrs_freq_density
);
printf
(
"[ULSIM][PTRS] Available bits are: %5u, removed PTRS bits are: %5d
\n
"
,
available_bits
,
(
ptrsSymbPerSlot
*
ptrsRePerSymb
*
2
)
);
printf
(
"[ULSIM][PTRS] Available bits are: %5u, removed PTRS bits are: %5d
\n
"
,
available_bits
,
(
ptrsSymbPerSlot
*
ptrsRePerSymb
*
2
)
);
...
@@ -1488,8 +1455,8 @@ int main(int argc, char **argv)
...
@@ -1488,8 +1455,8 @@ int main(int argc, char **argv)
for
(
i
=
0
;
i
<
available_bits
;
i
++
)
{
for
(
i
=
0
;
i
<
available_bits
;
i
++
)
{
if
(((
ulsch_ue
->
harq_processes
[
harq_pid
]
->
f
[
i
]
==
0
)
&&
(
gNB
->
pusch_vars
[
UE_id
]
->
llr
[
i
]
<=
0
))
||
if
(((
ulsch_ue
->
harq_processes
[
harq_pid
]
->
f
[
i
]
==
0
)
&&
(
gNB
->
pusch_vars
[
UE_id
]
->
llr
[
i
]
<=
0
))
||
((
ulsch_ue
->
harq_processes
[
harq_pid
]
->
f
[
i
]
==
1
)
&&
(
gNB
->
pusch_vars
[
UE_id
]
->
llr
[
i
]
>=
0
)))
((
ulsch_ue
->
harq_processes
[
harq_pid
]
->
f
[
i
]
==
1
)
&&
(
gNB
->
pusch_vars
[
UE_id
]
->
llr
[
i
]
>=
0
)))
{
{
/*if(errors_scrambling == 0)
/*if(errors_scrambling == 0)
printf("\x1B[34m" "[frame %d][trial %d]\t1st bit in error in unscrambling = %d\n" "\x1B[0m", frame, trial, i);*/
printf("\x1B[34m" "[frame %d][trial %d]\t1st bit in error in unscrambling = %d\n" "\x1B[0m", frame, trial, i);*/
errors_scrambling
[
round
][
snrRun
]
++
;
errors_scrambling
[
round
][
snrRun
]
++
;
...
...
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