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
常顺宇
OpenXG-RAN
Commits
f6b83fd9
Commit
f6b83fd9
authored
Jun 03, 2020
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding frequency offset to prachsim
parent
17a1a554
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
20 deletions
+24
-20
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+24
-20
No files found.
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
f6b83fd9
...
@@ -88,7 +88,7 @@ int main(int argc, char **argv){
...
@@ -88,7 +88,7 @@ int main(int argc, char **argv){
double
**
s_re
,
**
s_im
,
**
r_re
,
**
r_im
,
iqim
=
0
.
0
,
delay_avg
=
0
,
ue_speed
=
0
,
fs
,
bw
;
double
**
s_re
,
**
s_im
,
**
r_re
,
**
r_im
,
iqim
=
0
.
0
,
delay_avg
=
0
,
ue_speed
=
0
,
fs
,
bw
;
int
i
,
aa
,
aarx
,
**
txdata
,
trial
,
n_frames
=
1
,
prach_start
,
rx_prach_start
;
//, ntrials=1;
int
i
,
aa
,
aarx
,
**
txdata
,
trial
,
n_frames
=
1
,
prach_start
,
rx_prach_start
;
//, ntrials=1;
int
N_RB_UL
=
106
,
delay
=
0
,
NCS_config
=
13
,
rootSequenceIndex
=
1
,
threequarter_fs
=
0
,
mu
=
1
,
fd_occasion
=
0
,
loglvl
=
OAILOG_INFO
,
numRA
=
0
,
prachStartSymbol
=
0
;
int
N_RB_UL
=
106
,
delay
=
0
,
NCS_config
=
13
,
rootSequenceIndex
=
1
,
threequarter_fs
=
0
,
mu
=
1
,
fd_occasion
=
0
,
loglvl
=
OAILOG_INFO
,
numRA
=
0
,
prachStartSymbol
=
0
;
uint8_t
snr1set
=
0
,
ue_speed1set
=
0
,
transmission_mode
=
1
,
n_tx
=
1
,
n_rx
=
1
,
awgn_flag
=
0
,
msg1_frequencystart
=
0
,
num_prach_fd_occasions
=
1
,
prach_format
;
uint8_t
snr1set
=
0
,
ue_speed1set
=
0
,
transmission_mode
=
1
,
n_tx
=
1
,
n_rx
=
1
,
awgn_flag
=
0
,
msg1_frequencystart
=
0
,
num_prach_fd_occasions
=
1
,
prach_format
=
0
;
uint8_t
frame
=
1
,
subframe
=
9
,
slot
=
19
,
slot_gNB
=
19
,
config_index
=
98
,
prach_sequence_length
=
1
,
num_root_sequences
=
16
,
restrictedSetConfig
=
0
,
N_dur
,
N_t_slot
,
start_symbol
;
uint8_t
frame
=
1
,
subframe
=
9
,
slot
=
19
,
slot_gNB
=
19
,
config_index
=
98
,
prach_sequence_length
=
1
,
num_root_sequences
=
16
,
restrictedSetConfig
=
0
,
N_dur
,
N_t_slot
,
start_symbol
;
uint16_t
Nid_cell
=
0
,
preamble_tx
=
0
,
preamble_delay
,
format
,
format0
,
format1
;
uint16_t
Nid_cell
=
0
,
preamble_tx
=
0
,
preamble_delay
,
format
,
format0
,
format1
;
uint32_t
tx_lev
=
10000
,
prach_errors
=
0
,
samp_count
;
//,tx_lev_dB;
uint32_t
tx_lev
=
10000
,
prach_errors
=
0
,
samp_count
;
//,tx_lev_dB;
...
@@ -131,6 +131,10 @@ int main(int argc, char **argv){
...
@@ -131,6 +131,10 @@ int main(int argc, char **argv){
config_index
=
atoi
(
optarg
);
config_index
=
atoi
(
optarg
);
break
;
break
;
case
'r'
:
msg1_frequencystart
=
atoi
(
optarg
);
break
;
case
'd'
:
case
'd'
:
delay
=
atoi
(
optarg
);
delay
=
atoi
(
optarg
);
break
;
break
;
...
@@ -401,15 +405,15 @@ int main(int argc, char **argv){
...
@@ -401,15 +405,15 @@ int main(int argc, char **argv){
if
(
format1
!=
0xff
)
{
if
(
format1
!=
0xff
)
{
switch
(
format0
)
{
switch
(
format0
)
{
case
0xa1
:
case
0xa1
:
prach_format
=
9
;
prach_format
=
9
;
break
;
break
;
case
0xa2
:
case
0xa2
:
prach_format
=
10
;
prach_format
=
10
;
break
;
break
;
case
0xa3
:
case
0xa3
:
prach_format
=
11
;
prach_format
=
11
;
break
;
break
;
default:
default:
AssertFatal
(
1
==
0
,
"Only formats A1/B1 A2/B2 A3/B3 are valid for dual format"
);
AssertFatal
(
1
==
0
,
"Only formats A1/B1 A2/B2 A3/B3 are valid for dual format"
);
}
}
...
@@ -459,6 +463,8 @@ int main(int argc, char **argv){
...
@@ -459,6 +463,8 @@ int main(int argc, char **argv){
}
}
}
}
printf
(
"PRACH format %d
\n
"
,
prach_format
);
prach_config
->
num_prach_fd_occasions_list
[
fd_occasion
].
prach_root_sequence_index
.
value
=
rootSequenceIndex
;
prach_config
->
num_prach_fd_occasions_list
[
fd_occasion
].
prach_root_sequence_index
.
value
=
rootSequenceIndex
;
prach_config
->
num_prach_fd_occasions_list
[
fd_occasion
].
k1
.
value
=
msg1_frequencystart
;
prach_config
->
num_prach_fd_occasions_list
[
fd_occasion
].
k1
.
value
=
msg1_frequencystart
;
prach_config
->
restricted_set_config
.
value
=
restrictedSetConfig
;
prach_config
->
restricted_set_config
.
value
=
restrictedSetConfig
;
...
@@ -578,16 +584,14 @@ int main(int argc, char **argv){
...
@@ -578,16 +584,14 @@ int main(int argc, char **argv){
/* tx_lev_dB not used later, no need to set */
/* tx_lev_dB not used later, no need to set */
//tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
//tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
if
(
mu
==
0
)
samp_count
=
0
;
samp_count
=
frame_parms
->
samples_per_subframe
;
for
(
int
s
=
0
;
s
<
slot
;
s
++
)
samp_count
+=
frame_parms
->
get_samples_per_slot
(
s
,
frame_parms
);
else
samp_count
=
((
slot
)
%
(
frame_parms
->
slots_per_subframe
/
2
))
?
frame_parms
->
samples_per_slotN0
:
frame_parms
->
samples_per_slot0
;
prach_start
=
samp_count
-
UE
->
N_TA_offset
;
prach_start
=
slot
*
samp_count
-
UE
->
N_TA_offset
;
#ifdef NR_PRACH_DEBUG
#ifdef NR_PRACH_DEBUG
LOG_M
(
"txsig0.m"
,
"txs0"
,
&
txdata
[
0
][
prach_start
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"txsig0.m"
,
"txs0"
,
&
txdata
[
0
][
prach_start
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
//LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES
,1,1);
LOG_M
(
"txsig0_frame.m"
,
"txs0"
,
txdata
[
0
],
frame_parms
->
samples_per_frame
,
1
,
1
);
#endif
#endif
// multipath channel
// multipath channel
...
@@ -628,7 +632,7 @@ int main(int argc, char **argv){
...
@@ -628,7 +632,7 @@ int main(int argc, char **argv){
ue_speed1
=
ue_speed0
+
50
;
ue_speed1
=
ue_speed0
+
50
;
}
}
rx_prach_start
=
s
lot
*
frame_parms
->
get_samples_per_slot
(
slot
,
frame_parms
)
;
rx_prach_start
=
s
ubframe
*
frame_parms
->
samples_per_subframe
;
if
(
n_frames
==
1
)
printf
(
"slot %d, rx_prach_start %d
\n
"
,
slot
,
rx_prach_start
);
if
(
n_frames
==
1
)
printf
(
"slot %d, rx_prach_start %d
\n
"
,
slot
,
rx_prach_start
);
uint16_t
preamble_rx
,
preamble_energy
,
N_ZC
;
uint16_t
preamble_rx
,
preamble_energy
,
N_ZC
;
N_ZC
=
prach_sequence_length
==
0
?
839
:
139
;
N_ZC
=
prach_sequence_length
==
0
?
839
:
139
;
...
@@ -688,7 +692,7 @@ int main(int argc, char **argv){
...
@@ -688,7 +692,7 @@ int main(int argc, char **argv){
if
(
n_frames
==
1
)
{
if
(
n_frames
==
1
)
{
printf
(
"preamble %d (tx %d) : energy %d, delay %d
\n
"
,
preamble_rx
,
preamble_tx
,
preamble_energy
,
preamble_delay
);
printf
(
"preamble %d (tx %d) : energy %d, delay %d
\n
"
,
preamble_rx
,
preamble_tx
,
preamble_energy
,
preamble_delay
);
#ifdef NR_PRACH_DEBUG
#ifdef NR_PRACH_DEBUG
LOG_M
(
"prach0.m"
,
"prach0"
,
&
txdata
[
0
][
prach_start
],
samp_count
,
1
,
1
);
LOG_M
(
"prach0.m"
,
"prach0"
,
&
txdata
[
0
][
prach_start
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"prachF0.m"
,
"prachF0"
,
&
gNB
->
prach_vars
.
prachF
[
0
],
N_ZC
,
1
,
1
);
LOG_M
(
"prachF0.m"
,
"prachF0"
,
&
gNB
->
prach_vars
.
prachF
[
0
],
N_ZC
,
1
,
1
);
LOG_M
(
"rxsig0.m"
,
"rxs0"
,
&
gNB
->
common_vars
.
rxdata
[
0
][
rx_prach_start
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
LOG_M
(
"rxsig0.m"
,
"rxs0"
,
&
gNB
->
common_vars
.
rxdata
[
0
][
rx_prach_start
],
frame_parms
->
samples_per_subframe
,
1
,
1
);
//LOG_M("ru_rxsig0.m","rxs0", &ru->common.rxdata[0][rx_prach_start], frame_parms->samples_per_subframe, 1, 1);
//LOG_M("ru_rxsig0.m","rxs0", &ru->common.rxdata[0][rx_prach_start], frame_parms->samples_per_subframe, 1, 1);
...
...
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