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
dd0927dd
Commit
dd0927dd
authored
5 years ago
by
Khalid Ahmed
Committed by
Thomas Schlichter
5 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TDD fixes in real-time environment
parent
c7951965
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
332 additions
and
27 deletions
+332
-27
executables/nr-ru.c
executables/nr-ru.c
+1
-4
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+9
-5
openair1/PHY/INIT/nr_parms.c
openair1/PHY/INIT/nr_parms.c
+3
-1
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
+1
-1
openair1/SCHED_NR/phy_procedures_nr_common.c
openair1/SCHED_NR/phy_procedures_nr_common.c
+4
-2
openair2/LAYER2/NR_MAC_gNB/nr_mac_common.c
openair2/LAYER2/NR_MAC_gNB/nr_mac_common.c
+26
-14
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.adrv9371zc706.conf
...RIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.adrv9371zc706.conf
+288
-0
No files found.
executables/nr-ru.c
View file @
dd0927dd
...
@@ -734,8 +734,6 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
...
@@ -734,8 +734,6 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
nr_subframe_t
SF_type
=
nr_slot_select
(
cfg
,
slot
%
fp
->
slots_per_frame
);
nr_subframe_t
SF_type
=
nr_slot_select
(
cfg
,
slot
%
fp
->
slots_per_frame
);
int
sf_extension
=
0
;
int
sf_extension
=
0
;
if
((
SF_type
==
SF_DL
)
||
(
SF_type
==
SF_S
))
{
int
siglen
=
fp
->
samples_per_slot
,
flags
=
1
;
int
siglen
=
fp
->
samples_per_slot
,
flags
=
1
;
/*
/*
if (SF_type == SF_S) {
if (SF_type == SF_S) {
...
@@ -776,7 +774,6 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
...
@@ -776,7 +774,6 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
(
long
long
unsigned
int
)
timestamp
,
frame
,
proc
->
frame_tx_unwrap
,
slot
);
(
long
long
unsigned
int
)
timestamp
,
frame
,
proc
->
frame_tx_unwrap
,
slot
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE
,
0
);
AssertFatal
(
txs
==
siglen
+
sf_extension
,
"TX : Timeout (sent %d/%d)
\n
"
,
txs
,
siglen
);
AssertFatal
(
txs
==
siglen
+
sf_extension
,
"TX : Timeout (sent %d/%d)
\n
"
,
txs
,
siglen
);
}
}
}
...
@@ -1388,9 +1385,9 @@ static void *ru_thread( void *param ) {
...
@@ -1388,9 +1385,9 @@ static void *ru_thread( void *param ) {
}
}
if
(
ru
->
if_south
==
LOCAL_RF
)
{
// configure RF parameters only
if
(
ru
->
if_south
==
LOCAL_RF
)
{
// configure RF parameters only
fill_rf_config
(
ru
,
ru
->
rf_config_file
);
nr_init_frame_parms
(
&
ru
->
gNB_list
[
0
]
->
gNB_config
,
fp
);
nr_init_frame_parms
(
&
ru
->
gNB_list
[
0
]
->
gNB_config
,
fp
);
nr_dump_frame_parms
(
fp
);
nr_dump_frame_parms
(
fp
);
fill_rf_config
(
ru
,
ru
->
rf_config_file
);
nr_phy_init_RU
(
ru
);
nr_phy_init_RU
(
ru
);
ret
=
openair0_device_load
(
&
ru
->
rfdevice
,
&
ru
->
openair0_cfg
);
ret
=
openair0_device_load
(
&
ru
->
rfdevice
,
&
ru
->
openair0_cfg
);
AssertFatal
(
ret
==
0
,
"Cannot connect to local radio
\n
"
);
AssertFatal
(
ret
==
0
,
"Cannot connect to local radio
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/INIT/nr_init.c
View file @
dd0927dd
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
* contact@openairinterface.org
* contact@openairinterface.org
*/
*/
#include "executables/nr-softmodem-common.h"
#include "PHY/defs_gNB.h"
#include "PHY/defs_gNB.h"
#include "PHY/phy_extern.h"
#include "PHY/phy_extern.h"
#include "PHY/NR_REFSIG/nr_refsig.h"
#include "PHY/NR_REFSIG/nr_refsig.h"
...
@@ -31,6 +32,7 @@
...
@@ -31,6 +32,7 @@
#include "MBSFN-SubframeConfigList.h"*/
#include "MBSFN-SubframeConfigList.h"*/
#include "openair1/PHY/defs_RU.h"
#include "openair1/PHY/defs_RU.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac_proto.h"
#include "assertions.h"
#include "assertions.h"
#include <math.h>
#include <math.h>
...
@@ -428,23 +430,25 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config)
...
@@ -428,23 +430,25 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config)
gNB_config
->
sch_config
.
ssb_periodicity
.
value
=
phy_config
->
cfg
->
sch_config
.
ssb_periodicity
.
value
;
gNB_config
->
sch_config
.
ssb_periodicity
.
value
=
phy_config
->
cfg
->
sch_config
.
ssb_periodicity
.
value
;
if
(
phy_config
->
cfg
->
subframe_config
.
duplex_mode
.
value
==
0
)
{
if
(
phy_config
->
cfg
->
subframe_config
.
duplex_mode
.
value
==
0
)
{
gNB_config
->
subframe_config
.
duplex_mode
.
value
=
TDD
;
}
else
{
gNB_config
->
subframe_config
.
duplex_mode
.
value
=
FDD
;
gNB_config
->
subframe_config
.
duplex_mode
.
value
=
FDD
;
}
else
{
gNB_config
->
subframe_config
.
duplex_mode
.
value
=
TDD
;
}
}
RC
.
gNB
[
Mod_id
][
CC_id
]
->
mac_enabled
=
1
;
RC
.
gNB
[
Mod_id
][
CC_id
]
->
mac_enabled
=
1
;
fp
->
dl_CarrierFreq
=
from_nrarfcn
(
gNB_config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
],
gNB_config
->
nfapi_config
.
nrarfcn
.
value
);
fp
->
dl_CarrierFreq
=
from_nrarfcn
(
gNB_config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
],
gNB_config
->
nfapi_config
.
nrarfcn
.
value
);
fp
->
ul_CarrierFreq
=
fp
->
dl_CarrierFreq
-
(
get_nr_uldl_offset
(
gNB_config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
])
*
100000
);
get_band
(
fp
->
dl_CarrierFreq
,
&
gNB_config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
],
&
uplink_frequency_offset
[
CC_id
][
0
],
&
fp
->
frame_type
);
fp
->
ul_CarrierFreq
=
fp
->
dl_CarrierFreq
+
uplink_frequency_offset
[
CC_id
][
0
];
fp
->
threequarter_fs
=
openair0_cfg
[
0
].
threequarter_fs
;
fp
->
threequarter_fs
=
openair0_cfg
[
0
].
threequarter_fs
;
LOG_I
(
PHY
,
"Configuring MIB for instance %d, CCid %d : (band %d,N_RB_DL %d, N_RB_UL %d, Nid_cell %d,DL freq %u)
\n
"
,
LOG_I
(
PHY
,
"Configuring MIB for instance %d, CCid %d : (band %d,N_RB_DL %d, N_RB_UL %d, Nid_cell %d,DL freq %u
, UL freq %u
)
\n
"
,
Mod_id
,
Mod_id
,
CC_id
,
CC_id
,
gNB_config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
],
gNB_config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
],
gNB_config
->
rf_config
.
dl_carrier_bandwidth
.
value
,
gNB_config
->
rf_config
.
dl_carrier_bandwidth
.
value
,
gNB_config
->
rf_config
.
ul_carrier_bandwidth
.
value
,
gNB_config
->
rf_config
.
ul_carrier_bandwidth
.
value
,
gNB_config
->
sch_config
.
physical_cell_id
.
value
,
gNB_config
->
sch_config
.
physical_cell_id
.
value
,
fp
->
dl_CarrierFreq
);
fp
->
dl_CarrierFreq
,
fp
->
ul_CarrierFreq
);
nr_init_frame_parms
(
gNB_config
,
fp
);
nr_init_frame_parms
(
gNB_config
,
fp
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/INIT/nr_parms.c
View file @
dd0927dd
...
@@ -256,7 +256,7 @@ int nr_init_frame_parms(nfapi_nr_config_request_t* config,
...
@@ -256,7 +256,7 @@ int nr_init_frame_parms(nfapi_nr_config_request_t* config,
{
{
fp
->
eutra_band
=
config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
];
fp
->
eutra_band
=
config
->
nfapi_config
.
rf_bands
.
rf_band
[
0
];
fp
->
frame_type
=
!
(
config
->
subframe_config
.
duplex_mode
.
value
)
;
fp
->
frame_type
=
config
->
subframe_config
.
duplex_mode
.
value
;
fp
->
L_ssb
=
config
->
sch_config
.
ssb_scg_position_in_burst
.
value
;
fp
->
L_ssb
=
config
->
sch_config
.
ssb_scg_position_in_burst
.
value
;
return
nr_init_frame_parms0
(
fp
,
return
nr_init_frame_parms0
(
fp
,
config
->
subframe_config
.
numerology_index_mu
.
value
,
config
->
subframe_config
.
numerology_index_mu
.
value
,
...
@@ -288,6 +288,8 @@ void nr_dump_frame_parms(NR_DL_FRAME_PARMS *fp)
...
@@ -288,6 +288,8 @@ void nr_dump_frame_parms(NR_DL_FRAME_PARMS *fp)
LOG_I
(
PHY
,
"fp->samples_per_frame_wCP=%d
\n
"
,
fp
->
samples_per_frame_wCP
);
LOG_I
(
PHY
,
"fp->samples_per_frame_wCP=%d
\n
"
,
fp
->
samples_per_frame_wCP
);
LOG_I
(
PHY
,
"fp->samples_per_subframe=%d
\n
"
,
fp
->
samples_per_subframe
);
LOG_I
(
PHY
,
"fp->samples_per_subframe=%d
\n
"
,
fp
->
samples_per_subframe
);
LOG_I
(
PHY
,
"fp->samples_per_frame=%d
\n
"
,
fp
->
samples_per_frame
);
LOG_I
(
PHY
,
"fp->samples_per_frame=%d
\n
"
,
fp
->
samples_per_frame
);
LOG_I
(
PHY
,
"fp->dl_CarrierFreq=%u
\n
"
,
fp
->
dl_CarrierFreq
);
LOG_I
(
PHY
,
"fp->ul_CarrierFreq=%u
\n
"
,
fp
->
ul_CarrierFreq
);
}
}
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
View file @
dd0927dd
...
@@ -348,7 +348,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
...
@@ -348,7 +348,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
// G = 0;
// G = 0;
// G = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, nfapi_ulsch_pdu_rel15->Qm, nfapi_ulsch_pdu_rel15->n_layers);
// G = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, nfapi_ulsch_pdu_rel15->Qm, nfapi_ulsch_pdu_rel15->n_layers);
LOG_
I
(
PHY
,
"ULSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_symb_sch %d nb_rb %d
\n
"
,
harq_pid
,
A
,
G
,
mcs
,
n_layers
,
nb_symb_sch
,
nb_rb
);
LOG_
D
(
PHY
,
"ULSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_symb_sch %d nb_rb %d
\n
"
,
harq_pid
,
A
,
G
,
mcs
,
n_layers
,
nb_symb_sch
,
nb_rb
);
if
(
harq_process
->
round
==
0
)
{
if
(
harq_process
->
round
==
0
)
{
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR/phy_procedures_nr_common.c
View file @
dd0927dd
...
@@ -35,8 +35,10 @@
...
@@ -35,8 +35,10 @@
nr_subframe_t
nr_slot_select
(
nfapi_nr_config_request_t
*
cfg
,
nr_subframe_t
nr_slot_select
(
nfapi_nr_config_request_t
*
cfg
,
unsigned
char
slot
)
unsigned
char
slot
)
{
{
if
(
cfg
->
subframe_config
.
duplex_mode
.
value
==
FDD
)
if
(
cfg
->
subframe_config
.
duplex_mode
.
value
==
FDD
||
slot
==
NR_DOWNLINK_SLOT
)
return
(
SF_DL
);
return
(
SF_DL
);
LOG_E
(
PHY
,
"Not developped TDD mode
\n
"
);
else
if
(
slot
==
NR_UPLINK_SLOT
)
return
(
SF_UL
);
return
-
1
;
return
-
1
;
}
}
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/nr_mac_common.c
View file @
dd0927dd
...
@@ -75,30 +75,42 @@ void get_band(uint32_t downlink_frequency,
...
@@ -75,30 +75,42 @@ void get_band(uint32_t downlink_frequency,
lte_frame_type_t
*
current_type
)
lte_frame_type_t
*
current_type
)
{
{
int
ind
;
int
ind
;
int64_t
dl_freq_khz
=
downlink_frequency
/
1000
;
uint64_t
center_frequency_khz
;
uint64_t
center_freq_diff_khz
;
uint64_t
dl_freq_khz
=
downlink_frequency
/
1000
;
center_freq_diff_khz
=
999999999999999999
;
// 2^64
*
current_band
=
0
;
for
(
ind
=
0
;
for
(
ind
=
0
;
ind
<
sizeof
(
nr_bandtable
)
/
sizeof
(
nr_bandtable
[
0
]);
ind
<
sizeof
(
nr_bandtable
)
/
sizeof
(
nr_bandtable
[
0
]);
ind
++
)
{
ind
++
)
{
*
current_band
=
nr_bandtable
[
ind
].
band
;
LOG_I
(
PHY
,
"Scanning band %d, dl_min %"
PRIu64
", ul_min %"
PRIu64
"
\n
"
,
nr_bandtable
[
ind
].
band
,
nr_bandtable
[
ind
].
dl_min
,
nr_bandtable
[
ind
].
ul_min
);
LOG_I
(
PHY
,
"Scanning band %d, dl_min %"
PRIu64
", ul_min %"
PRIu64
"
\n
"
,
ind
,
nr_bandtable
[
ind
].
dl_min
,
nr_bandtable
[
ind
].
ul_min
);
if
(
nr_bandtable
[
ind
].
dl_min
<=
dl_freq_khz
&&
nr_bandtable
[
ind
].
dl_max
>=
dl_freq_khz
)
{
if
(
nr_bandtable
[
ind
].
dl_min
<=
dl_freq_khz
&&
nr_bandtable
[
ind
].
dl_max
>=
dl_freq_khz
)
{
*
current_offset
=
(
nr_bandtable
[
ind
].
ul_min
-
nr_bandtable
[
ind
].
dl_min
)
*
1000
;
if
(
*
current_offset
==
0
)
center_frequency_khz
=
(
nr_bandtable
[
ind
].
dl_max
+
nr_bandtable
[
ind
].
dl_min
)
/
2
;
*
current_type
=
TDD
;
else
if
(
abs
(
dl_freq_khz
-
center_frequency_khz
)
<
center_freq_diff_khz
){
*
current_type
=
FDD
;
*
current_band
=
nr_bandtable
[
ind
].
band
;
LOG_I
(
PHY
,
"DL frequency %"
PRIu32
": band %d, frame_type %d, UL frequency %"
PRIu32
"
\n
"
,
*
current_offset
=
(
nr_bandtable
[
ind
].
ul_min
-
nr_bandtable
[
ind
].
dl_min
)
*
1000
;
downlink_frequency
,
*
current_band
,
*
current_type
,
downlink_frequency
+*
current_offset
);
center_freq_diff_khz
=
abs
(
dl_freq_khz
-
center_frequency_khz
);
break
;
if
(
*
current_offset
==
0
)
*
current_type
=
TDD
;
else
*
current_type
=
FDD
;
}
}
}
}
}
AssertFatal
(
ind
!=
(
sizeof
(
nr_bandtable
)
/
sizeof
(
nr_bandtable
[
0
]))
,
LOG_I
(
PHY
,
"DL frequency %"
PRIu32
": band %d, frame_type %d, UL frequency %"
PRIu32
"
\n
"
,
"Can't find EUTRA band for frequency %d
\n
"
,
downlink_frequency
);
downlink_frequency
,
*
current_band
,
*
current_type
,
downlink_frequency
+*
current_offset
);
AssertFatal
(
*
current_band
!=
0
,
"Can't find EUTRA band for frequency %u
\n
"
,
downlink_frequency
);
}
}
uint32_t
to_nrarfcn
(
int
nr_bandP
,
uint32_t
to_nrarfcn
(
int
nr_bandP
,
...
...
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.adrv9371zc706.conf
0 → 100644
View file @
dd0927dd
This diff is collapsed.
Click to expand it.
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