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
8b23085d
Commit
8b23085d
authored
Jul 14, 2021
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed phy simulators
parent
89fbb37b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
38 additions
and
19 deletions
+38
-19
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+0
-2
openair1/PHY/INIT/phy_init.h
openair1/PHY/INIT/phy_init.h
+1
-0
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+2
-1
openair1/SIMULATION/NR_PHY/dlschsim.c
openair1/SIMULATION/NR_PHY/dlschsim.c
+4
-2
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+26
-10
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+5
-4
No files found.
openair1/PHY/INIT/nr_init.c
View file @
8b23085d
...
...
@@ -565,9 +565,7 @@ void init_DLSCH_struct(PHY_VARS_gNB *gNB, processingData_L1tx_t *msg) {
void
init_nr_transport
(
PHY_VARS_gNB
*
gNB
)
{
NR_DL_FRAME_PARMS
*
fp
=
&
gNB
->
frame_parms
;
nfapi_nr_config_request_scf_t
*
cfg
=
&
gNB
->
gNB_config
;
LOG_I
(
PHY
,
"Initialise nr transport
\n
"
);
uint16_t
grid_size
=
cfg
->
carrier_config
.
dl_grid_size
[
fp
->
numerology_index
].
value
;
memset
(
gNB
->
num_pdsch_rnti
,
0
,
sizeof
(
uint16_t
)
*
80
);
...
...
openair1/PHY/INIT/phy_init.h
View file @
8b23085d
...
...
@@ -409,6 +409,7 @@ void init_nr_transport(PHY_VARS_gNB *gNB);
void
init_dfts
(
void
);
void
fill_subframe_mask
(
PHY_VARS_eNB
*
eNB
);
void
init_DLSCH_struct
(
PHY_VARS_gNB
*
gNB
,
processingData_L1tx_t
*
msg
);
/** @} */
#endif
...
...
openair1/SCHED_NR/fapi_nr_l1.c
View file @
8b23085d
...
...
@@ -187,7 +187,8 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
}
if
(
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
msgTx
->
ul_pdcch_pdu
=
UL_dci_req
->
ul_dci_pdu_list
[
number_ul_dci_pdu
-
1
];
// copy the last pdu
if
(
number_ul_dci_pdu
>
0
)
msgTx
->
ul_pdcch_pdu
=
UL_dci_req
->
ul_dci_pdu_list
[
number_ul_dci_pdu
-
1
];
// copy the last pdu
pushNotifiedFIFO
(
gNB
->
resp_L1_tx
,
res
);
...
...
openair1/SIMULATION/NR_PHY/dlschsim.c
View file @
8b23085d
...
...
@@ -426,7 +426,9 @@ int main(int argc, char **argv)
UE
->
dlsch_SI
[
0
]
=
new_nr_ue_dlsch
(
1
,
1
,
Nsoft
,
5
,
N_RB_DL
,
0
);
UE
->
dlsch_ra
[
0
]
=
new_nr_ue_dlsch
(
1
,
1
,
Nsoft
,
5
,
N_RB_DL
,
0
);
unsigned
char
harq_pid
=
0
;
//dlsch->harq_ids[subframe];
NR_gNB_DLSCH_t
*
dlsch
=
gNB
->
dlsch
[
0
][
0
];
processingData_L1tx_t
msgDataTx
;
init_DLSCH_struct
(
gNB
,
&
msgDataTx
);
NR_gNB_DLSCH_t
*
dlsch
=
msgDataTx
.
dlsch
[
0
][
0
];
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
rel15
=
&
dlsch
->
harq_process
.
pdsch_pdu
.
pdsch_pdu_rel15
;
//time_stats_t *rm_stats, *te_stats, *i_stats;
uint8_t
is_crnti
=
0
,
llr8_flag
=
0
;
...
...
@@ -634,7 +636,7 @@ int main(int argc, char **argv)
for
(
i
=
0
;
i
<
2
;
i
++
)
{
printf
(
"gNB %d
\n
"
,
i
);
free_gNB_dlsch
(
&
(
gNB
->
dlsch
[
0
][
i
]),
N_RB_DL
);
free_gNB_dlsch
(
&
(
msgDataTx
.
dlsch
[
0
][
i
]),
N_RB_DL
);
printf
(
"UE %d
\n
"
,
i
);
free_nr_ue_dlsch
(
&
(
UE
->
dlsch
[
0
][
0
][
i
]),
N_RB_DL
);
}
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
8b23085d
...
...
@@ -924,8 +924,6 @@ int main(int argc, char **argv)
// generate signal
AssertFatal
(
input_fd
==
NULL
,
"Not ready for input signal file
\n
"
);
gNB
->
pbch_configured
=
1
;
gNB
->
ssb
[
0
].
ssb_pdu
.
ssb_pdu_rel15
.
bchPayload
=
0x001234
;
gNB
->
ssb
[
0
].
ssb_pdu
.
ssb_pdu_rel15
.
SsbBlockIndex
=
0
;
//Configure UE
rrc
.
carrier
.
MIB
=
(
uint8_t
*
)
malloc
(
4
);
...
...
@@ -954,11 +952,25 @@ int main(int argc, char **argv)
//NR_COMMON_channels_t *cc = RC.nrmac[0]->common_channels;
snrRun
=
0
;
gNB
->
threadPool
=
(
tpool_t
*
)
malloc
(
sizeof
(
tpool_t
));
char
tp_param
[]
=
"n"
;
initTpool
(
tp_param
,
gNB
->
threadPool
,
true
);
gNB
->
resp_L1_tx
=
(
notifiedFIFO_t
*
)
malloc
(
sizeof
(
notifiedFIFO_t
));
initNotifiedFIFO
(
gNB
->
resp_L1_tx
);
// we create 2 threads for L1 tx processing
notifiedFIFO_elt_t
*
msgL1Tx
=
newNotifiedFIFO_elt
(
sizeof
(
processingData_L1tx_t
),
0
,
gNB
->
resp_L1_tx
,
processSlotTX
);
processingData_L1tx_t
*
msgDataTx
=
(
processingData_L1tx_t
*
)
NotifiedFifoData
(
msgL1Tx
);
init_DLSCH_struct
(
gNB
,
msgDataTx
);
msgDataTx
->
slot
=
slot
;
msgDataTx
->
frame
=
frame
;
memset
(
msgDataTx
->
ssb
,
0
,
64
*
sizeof
(
NR_gNB_SSB_t
));
reset_meas
(
&
msgDataTx
->
phy_proc_tx
);
gNB
->
phy_proc_tx_0
=
&
msgDataTx
->
phy_proc_tx
;
pushTpool
(
gNB
->
threadPool
,
msgL1Tx
);
for
(
SNR
=
snr0
;
SNR
<
snr1
;
SNR
+=
.
2
)
{
varArray_t
*
table_tx
=
initVarArray
(
1000
,
sizeof
(
double
));
reset_meas
(
&
gNB
->
phy_proc_tx
);
// total gNB tx
reset_meas
(
&
gNB
->
dlsch_scrambling_stats
);
reset_meas
(
&
gNB
->
dlsch_interleaving_stats
);
reset_meas
(
&
gNB
->
dlsch_rate_matching_stats
);
...
...
@@ -999,7 +1011,7 @@ int main(int argc, char **argv)
int
harq_pid
=
slot
;
NR_DL_UE_HARQ_t
*
UE_harq_process
=
dlsch0
->
harq_processes
[
harq_pid
];
NR_gNB_DLSCH_t
*
gNB_dlsch
=
gNB
->
dlsch
[
0
][
0
];
NR_gNB_DLSCH_t
*
gNB_dlsch
=
msgDataTx
->
dlsch
[
0
][
0
];
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
rel15
=
&
gNB_dlsch
->
harq_process
.
pdsch_pdu
.
pdsch_pdu_rel15
;
UE_harq_process
->
harq_ack
.
ack
=
0
;
...
...
@@ -1049,10 +1061,14 @@ int main(int argc, char **argv)
ptrsRePerSymb
=
((
rel15
->
rbSize
+
rel15
->
PTRSFreqDensity
-
1
)
/
rel15
->
PTRSFreqDensity
);
printf
(
"[DLSIM] PTRS Symbols in a slot: %2u, RE per Symbol: %3u, RE in a slot %4d
\n
"
,
ptrsSymbPerSlot
,
ptrsRePerSymb
,
ptrsSymbPerSlot
*
ptrsRePerSymb
);
}
msgDataTx
->
ssb
[
0
].
ssb_pdu
.
ssb_pdu_rel15
.
bchPayload
=
0x001234
;
msgDataTx
->
ssb
[
0
].
ssb_pdu
.
ssb_pdu_rel15
.
SsbBlockIndex
=
0
;
msgDataTx
->
gNB
=
gNB
;
if
(
run_initial_sync
)
nr_common_signal_procedures
(
gNB
,
frame
,
slot
,
gNB
->
ssb
[
0
].
ssb_pdu
);
nr_common_signal_procedures
(
gNB
,
frame
,
slot
,
msgDataTx
->
ssb
[
0
].
ssb_pdu
);
else
phy_procedures_gNB_TX
(
gNB
,
frame
,
slot
,
1
);
phy_procedures_gNB_TX
(
msgDataTx
,
frame
,
slot
,
1
);
int
txdataF_offset
=
(
slot
%
2
)
*
frame_parms
->
samples_per_slot_wCP
;
...
...
@@ -1255,10 +1271,10 @@ int main(int argc, char **argv)
if
(
print_perf
==
1
)
{
printf
(
"
\n
gNB TX function statistics (per %d us slot, NPRB %d, mcs %d, TBS %d, Kr %d (Zc %d))
\n
"
,
1000
>>*
scc
->
ssbSubcarrierSpacing
,
g_rbSize
,
g_mcsIndex
,
gNB
->
dlsch
[
0
][
0
]
->
harq_process
.
pdsch_pdu
.
pdsch_pdu_rel15
.
TBSize
[
0
]
<<
3
,
gNB
->
dlsch
[
0
][
0
]
->
harq_process
.
K
,
gNB
->
dlsch
[
0
][
0
]
->
harq_process
.
K
/
((
gNB
->
dlsch
[
0
][
0
]
->
harq_process
.
pdsch_pdu
.
pdsch_pdu_rel15
.
TBSize
[
0
]
<<
3
)
>
3824
?
22
:
10
));
printDistribution
(
&
gNB
->
phy_proc_tx
,
table_tx
,
"PHY proc tx"
);
msgDataTx
->
dlsch
[
0
][
0
]
->
harq_process
.
pdsch_pdu
.
pdsch_pdu_rel15
.
TBSize
[
0
]
<<
3
,
msgDataTx
->
dlsch
[
0
][
0
]
->
harq_process
.
K
,
msgDataTx
->
dlsch
[
0
][
0
]
->
harq_process
.
K
/
((
msgDataTx
->
dlsch
[
0
][
0
]
->
harq_process
.
pdsch_pdu
.
pdsch_pdu_rel15
.
TBSize
[
0
]
<<
3
)
>
3824
?
22
:
10
));
printDistribution
(
gNB
->
phy_proc_tx_0
,
table_tx
,
"PHY proc tx"
);
printStatIndent2
(
&
gNB
->
dlsch_encoding_stats
,
"DLSCH encoding time"
);
printStatIndent3
(
&
gNB
->
dlsch_segmentation_stats
,
"DLSCH segmentation time"
);
printStatIndent3
(
&
gNB
->
tinput
,
"DLSCH LDPC input processing time"
);
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
8b23085d
...
...
@@ -537,14 +537,15 @@ int main(int argc, char **argv)
nr_gold_pbch
(
UE
);
processingData_L1tx_t
msgDataTx
;
// generate signal
if
(
input_fd
==
NULL
)
{
for
(
i
=
0
;
i
<
frame_parms
->
Lmax
;
i
++
)
{
if
((
SSB_positions
>>
i
)
&
0x01
)
{
gNB
->
ssb
[
i
].
ssb_pdu
.
ssb_pdu_rel15
.
bchPayload
=
0x55dd33
;
gNB
->
ssb
[
i
].
ssb_pdu
.
ssb_pdu_rel15
.
SsbBlockIndex
=
i
;
msgDataTx
.
ssb
[
i
].
ssb_pdu
.
ssb_pdu_rel15
.
bchPayload
=
0x55dd33
;
msgDataTx
.
ssb
[
i
].
ssb_pdu
.
ssb_pdu_rel15
.
SsbBlockIndex
=
i
;
start_symbol
=
nr_get_ssb_start_symbol
(
frame_parms
,
i
);
int
slot
=
start_symbol
/
14
;
...
...
@@ -552,7 +553,7 @@ int main(int argc, char **argv)
for
(
aa
=
0
;
aa
<
gNB
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
memset
(
gNB
->
common_vars
.
txdataF
[
aa
],
0
,
frame_parms
->
samples_per_slot_wCP
*
sizeof
(
int32_t
));
nr_common_signal_procedures
(
gNB
,
frame
,
slot
,
gNB
->
ssb
[
i
].
ssb_pdu
);
nr_common_signal_procedures
(
gNB
,
frame
,
slot
,
msgDataTx
.
ssb
[
i
].
ssb_pdu
);
for
(
aa
=
0
;
aa
<
gNB
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
if
(
cyclic_prefix_type
==
1
)
{
...
...
@@ -723,7 +724,7 @@ int main(int argc, char **argv)
payload_ret
=
(
UE
->
pbch_vars
[
0
]
->
xtra_byte
==
gNB_xtra_byte
);
for
(
i
=
0
;
i
<
3
;
i
++
){
payload_ret
+=
(
UE
->
pbch_vars
[
0
]
->
decoded_output
[
i
]
==
((
gNB
->
ssb
[
ssb_index
].
ssb_pdu
.
ssb_pdu_rel15
.
bchPayload
>>
(
8
*
i
))
&
0xff
));
payload_ret
+=
(
UE
->
pbch_vars
[
0
]
->
decoded_output
[
i
]
==
((
msgDataTx
.
ssb
[
ssb_index
].
ssb_pdu
.
ssb_pdu_rel15
.
bchPayload
>>
(
8
*
i
))
&
0xff
));
}
//printf("xtra byte gNB: 0x%02x UE: 0x%02x\n",gNB_xtra_byte, UE->pbch_vars[0]->xtra_byte);
//printf("ret %d\n", payload_ret);
...
...
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