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
wangjie
OpenXG-RAN
Commits
4d33b341
Commit
4d33b341
authored
Feb 05, 2020
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updated phy simulators
parent
30750781
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
27 additions
and
27 deletions
+27
-27
executables/nr-ru.c
executables/nr-ru.c
+1
-1
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+6
-6
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+2
-2
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+17
-17
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+1
-1
No files found.
executables/nr-ru.c
View file @
4d33b341
...
...
@@ -720,7 +720,7 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
unsigned
int
txs
;
int
i
,
txsymb
;
T
(
T_ENB_PHY_OUTPUT_SIGNAL
,
T_INT
(
0
),
T_INT
(
0
),
T_INT
(
frame
),
T_INT
(
slot
),
T_INT
(
0
),
T_BUFFER
(
&
ru
->
common
.
txdata
[
0
][
fp
->
get_samples_slot_timestamp
(
slot
,
fp
,
0
)],
fp
->
samples_per_subframe
));
T_INT
(
0
),
T_BUFFER
(
&
ru
->
common
.
txdata
[
0
][
fp
->
get_samples_slot_timestamp
(
slot
,
fp
,
0
)],
fp
->
samples_per_subframe
*
4
));
int
slot_type
=
nr_slot_select
(
cfg
,
frame
,
slot
%
fp
->
slots_per_frame
);
int
prevslot_type
=
nr_slot_select
(
cfg
,
frame
,(
slot
+
(
fp
->
slots_per_frame
-
1
))
%
fp
->
slots_per_frame
);
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
4d33b341
...
...
@@ -740,7 +740,7 @@ int main(int argc, char **argv)
if
(
gNB
->
frame_parms
.
nb_antennas_tx
>
1
)
LOG_M
(
"txsigF1.m"
,
"txsF1"
,
gNB
->
common_vars
.
txdataF
[
1
],
frame_length_complex_samples_no_prefix
,
1
,
1
);
}
int
tx_offset
=
slot
*
frame_parms
->
samples_per_slot
;
int
tx_offset
=
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
)
;
if
(
n_trials
==
1
)
printf
(
"samples_per_slot_wCP = %d
\n
"
,
frame_parms
->
samples_per_slot_wCP
);
//TODO: loop over slots
...
...
@@ -769,13 +769,13 @@ int main(int argc, char **argv)
if
(
output_fd
)
fwrite
(
txdata
[
0
],
sizeof
(
int32_t
),
frame_length_complex_samples
,
output_fd
);
int
txlev
=
signal_energy
(
&
txdata
[
0
][
(
slot
*
frame_parms
->
samples_per_slot
)
+
5
*
frame_parms
->
ofdm_symbol_size
+
4
*
frame_parms
->
nb_prefix_samples
+
frame_parms
->
nb_prefix_samples0
],
int
txlev
=
signal_energy
(
&
txdata
[
0
][
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
)
+
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
);
// if (n_trials==1) printf("txlev %d (%f)\n",txlev,10*log10((double)txlev));
for
(
i
=
(
slot
*
frame_parms
->
samples_per_slot
);
i
<
(
(
slot
+
1
)
*
frame_parms
->
samples_per_slot
);
for
(
i
=
(
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
)
);
i
<
(
frame_parms
->
get_samples_slot_timestamp
(
slot
+
1
,
frame_parms
,
0
)
);
i
++
)
{
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_tx
;
aa
++
)
{
r_re
[
aa
][
i
]
=
((
double
)(((
short
*
)
txdata
[
aa
]))[(
i
<<
1
)]);
...
...
@@ -791,8 +791,8 @@ int main(int argc, char **argv)
sigma2
=
pow
(
10
,
sigma2_dB
/
10
);
if
(
n_trials
==
1
)
printf
(
"sigma2 %f (%f dB), txlev %f (factor %f)
\n
"
,
sigma2
,
sigma2_dB
,
10
*
log10
((
double
)
txlev
),(
double
)(
double
)
UE
->
frame_parms
.
ofdm_symbol_size
/
(
12
*
rel15
.
rbSize
));
for
(
i
=
(
slot
*
frame_parms
->
samples_per_slot
);
i
<
((
slot
+
1
)
*
frame_parms
->
samples_per_slot
);
for
(
i
=
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
);
i
<
frame_parms
->
get_samples_slot_timestamp
(
slot
+
1
,
frame_parms
,
0
);
i
++
)
{
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_rx
;
aa
++
)
{
((
short
*
)
UE
->
common_vars
.
rxdata
[
aa
])[
2
*
i
]
=
(
short
)
((
r_re
[
aa
][
i
]
+
sqrt
(
sigma2
/
2
)
*
gaussdouble
(
0
.
0
,
1
.
0
)));
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
4d33b341
...
...
@@ -479,14 +479,14 @@ int main(int argc, char **argv)
for
(
aa
=
0
;
aa
<
gNB
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
if
(
cyclic_prefix_type
==
1
)
{
PHY_ofdm_mod
(
gNB
->
common_vars
.
txdataF
[
aa
],
&
txdata
[
aa
][
slot
*
frame_parms
->
samples_per_slot
],
&
txdata
[
aa
][
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
)
],
frame_parms
->
ofdm_symbol_size
,
12
,
frame_parms
->
nb_prefix_samples
,
CYCLIC_PREFIX
);
}
else
{
nr_normal_prefix_mod
(
gNB
->
common_vars
.
txdataF
[
aa
],
&
txdata
[
aa
][
slot
*
frame_parms
->
samples_per_slot
],
&
txdata
[
aa
][
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
)
],
14
,
frame_parms
);
}
...
...
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
4d33b341
...
...
@@ -393,7 +393,7 @@ int main(int argc, char **argv)
nsymb
=
(
frame_parms
->
Ncp
==
0
)
?
14
:
12
;
printf
(
"FFT Size %d, Extended Prefix %d, Samples per subframe %d,Frame type %s, Frequency Range %s
\n
"
,
NUMBER_OF_OFDM_CARRIERS
,
frame_parms
->
Ncp
,
frame_parms
->
samples_per_s
lot
<<
1
,
frame_parms
->
frame_type
==
FDD
?
"FDD"
:
"TDD"
,
frame_parms
->
freq_range
==
nr_FR1
?
"FR1"
:
"FR2"
);
frame_parms
->
Ncp
,
frame_parms
->
samples_per_s
ubframe
,
frame_parms
->
frame_type
==
FDD
?
"FDD"
:
"TDD"
,
frame_parms
->
freq_range
==
nr_FR1
?
"FR1"
:
"FR2"
);
ru
->
nr_frame_parms
=
frame_parms
;
ru
->
if_south
=
LOCAL_RF
;
...
...
@@ -421,7 +421,7 @@ int main(int argc, char **argv)
}
txdata
=
UE
->
common_vars
.
txdata
;
printf
(
"txdata %p
\n
"
,
&
txdata
[
0
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
]);
printf
(
"txdata %p
\n
"
,
&
txdata
[
0
][
subframe
*
frame_parms
->
samples_per_s
ubframe
]);
double
fs
,
bw
;
...
...
@@ -524,25 +524,25 @@ int main(int argc, char **argv)
/* tx_lev_dB not used later, no need to set */
//tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
LOG_M
(
"txsig0.m"
,
"txs0"
,
&
txdata
[
0
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
],
frame_parms
->
samples_per_slot
<<
1
,
1
,
1
);
LOG_M
(
"txsig0.m"
,
"txs0"
,
&
txdata
[
0
][
subframe
*
frame_parms
->
samples_per_s
ubframe
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
//LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
// multipath channel
dump_nr_prach_config
(
&
gNB
->
frame_parms
,
subframe
);
for
(
i
=
0
;
i
<
2
*
frame_parms
->
samples_per_s
lot
<<
1
;
i
++
)
{
for
(
i
=
0
;
i
<
2
*
frame_parms
->
samples_per_s
ubframe
;
i
++
)
{
for
(
aa
=
0
;
aa
<
1
;
aa
++
)
{
if
(
awgn_flag
==
0
)
{
s_re
[
aa
][
i
]
=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
]))[(
i
<<
1
)]);
s_im
[
aa
][
i
]
=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
]))[(
i
<<
1
)
+
1
]);
s_re
[
aa
][
i
]
=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
ubframe
]))[(
i
<<
1
)]);
s_im
[
aa
][
i
]
=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
ubframe
]))[(
i
<<
1
)
+
1
]);
}
else
{
for
(
aarx
=
0
;
aarx
<
gNB
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
{
if
(
aa
==
0
)
{
r_re
[
aarx
][
i
]
=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
]))[(
i
<<
1
)]);
r_im
[
aarx
][
i
]
=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
]))[(
i
<<
1
)
+
1
]);
r_re
[
aarx
][
i
]
=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
ubframe
]))[(
i
<<
1
)]);
r_im
[
aarx
][
i
]
=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
ubframe
]))[(
i
<<
1
)
+
1
]);
}
else
{
r_re
[
aarx
][
i
]
+=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
]))[(
i
<<
1
)]);
r_im
[
aarx
][
i
]
+=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
]))[(
i
<<
1
)
+
1
]);
r_re
[
aarx
][
i
]
+=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
ubframe
]))[(
i
<<
1
)]);
r_im
[
aarx
][
i
]
+=
((
double
)(((
short
*
)
&
txdata
[
aa
][
subframe
*
frame_parms
->
samples_per_s
ubframe
]))[(
i
<<
1
)
+
1
]);
}
}
}
...
...
@@ -573,7 +573,7 @@ int main(int argc, char **argv)
if
(
awgn_flag
==
0
)
{
multipath_tv_channel
(
UE2gNB
,
s_re
,
s_im
,
r_re
,
r_im
,
2
*
frame_parms
->
samples_per_s
lot
<<
1
,
0
);
2
*
frame_parms
->
samples_per_s
ubframe
,
0
);
}
if
(
n_frames
==
1
)
{
...
...
@@ -582,11 +582,11 @@ int main(int argc, char **argv)
10
*
log10
(
tx_lev
));
}
for
(
i
=
0
;
i
<
frame_parms
->
samples_per_s
lot
<<
1
;
i
++
)
{
for
(
i
=
0
;
i
<
frame_parms
->
samples_per_s
ubframe
;
i
++
)
{
for
(
aa
=
0
;
aa
<
gNB
->
frame_parms
.
nb_antennas_rx
;
aa
++
)
{
((
short
*
)
&
gNB
->
common_vars
.
rxdata
[
aa
][
subframe
*
(
frame_parms
->
samples_per_s
lot
<<
1
)])[
2
*
i
]
=
(
short
)
(.
167
*
(
r_re
[
aa
][
i
]
+
sqrt
(
sigma2
/
2
)
*
gaussdouble
(
0
.
0
,
1
.
0
)));
((
short
*
)
&
gNB
->
common_vars
.
rxdata
[
aa
][
subframe
*
(
frame_parms
->
samples_per_s
lot
<<
1
)])[
2
*
i
+
1
]
=
(
short
)
(.
167
*
(
r_im
[
aa
][
i
]
+
(
iqim
*
r_re
[
aa
][
i
])
+
sqrt
(
sigma2
/
2
)
*
gaussdouble
(
0
.
0
,
1
.
0
)));
((
short
*
)
&
gNB
->
common_vars
.
rxdata
[
aa
][
subframe
*
(
frame_parms
->
samples_per_s
ubframe
)])[
2
*
i
]
=
(
short
)
(.
167
*
(
r_re
[
aa
][
i
]
+
sqrt
(
sigma2
/
2
)
*
gaussdouble
(
0
.
0
,
1
.
0
)));
((
short
*
)
&
gNB
->
common_vars
.
rxdata
[
aa
][
subframe
*
(
frame_parms
->
samples_per_s
ubframe
)])[
2
*
i
+
1
]
=
(
short
)
(.
167
*
(
r_im
[
aa
][
i
]
+
(
iqim
*
r_re
[
aa
][
i
])
+
sqrt
(
sigma2
/
2
)
*
gaussdouble
(
0
.
0
,
1
.
0
)));
}
}
uint16_t
preamble_rx
;
...
...
@@ -612,11 +612,11 @@ int main(int argc, char **argv)
printf
(
"preamble %d (tx %d) : energy %d, delay %d
\n
"
,
preamble_rx
,
preamble_tx
,
preamble_energy_list
[
0
],
preamble_delay_list
[
0
]);
LOG_M
(
"prach0.m"
,
"prach0"
,
&
txdata
[
0
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
],
frame_parms
->
samples_per_slot
<<
1
,
1
,
1
);
LOG_M
(
"prach0.m"
,
"prach0"
,
&
txdata
[
0
][
subframe
*
frame_parms
->
samples_per_s
ubframe
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"prachF0.m"
,
"prachF0"
,
&
gNB
->
prach_vars
.
prachF
[
0
],
24576
,
1
,
1
);
LOG_M
(
"rxsig0.m"
,
"rxs0"
,
&
gNB
->
common_vars
.
rxdata
[
0
][
subframe
*
frame_parms
->
samples_per_s
lot
<<
1
],
frame_parms
->
samples_per_s
lot
<<
1
,
1
,
1
);
&
gNB
->
common_vars
.
rxdata
[
0
][
subframe
*
frame_parms
->
samples_per_s
ubframe
],
frame_parms
->
samples_per_s
ubframe
,
1
,
1
);
LOG_M
(
"rxsigF0.m"
,
"rxsF0"
,
gNB
->
prach_vars
.
rxsigF
[
0
],
839
*
4
,
1
,
1
);
LOG_M
(
"prach_preamble.m"
,
"prachp"
,
&
gNB
->
X_u
[
0
],
839
,
1
,
1
);
}
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
4d33b341
...
...
@@ -594,7 +594,7 @@ int main(int argc, char **argv)
///////////
////////////////////////////////////////////////////
tx_offset
=
slot
*
frame_parms
->
samples_per_slot
;
tx_offset
=
frame_parms
->
get_samples_slot_timestamp
(
slot
,
frame_parms
,
0
)
;
txlev
=
signal_energy_amp_shift
(
&
UE
->
common_vars
.
txdata
[
0
][
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
);
...
...
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