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
littleBu
OpenXG-RAN
Commits
db2a66a9
Commit
db2a66a9
authored
Mar 26, 2024
by
lfq
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
trx work only
parent
3b5e8477
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
567 additions
and
12 deletions
+567
-12
executables/nr-ru.c
executables/nr-ru.c
+6
-4
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+1
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+20
-8
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.x310.conf
...TS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.x310.conf
+269
-0
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.273PRB.x310.conf
...TS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.273PRB.x310.conf
+271
-0
No files found.
executables/nr-ru.c
View file @
db2a66a9
...
...
@@ -668,7 +668,8 @@ void rx_rf(RU_t *ru,int *frame,int *slot) {
samples_per_slot_prev
=
fp
->
get_samples_per_slot
((
*
slot
-
1
)
%
fp
->
slots_per_frame
,
fp
);
if
(
proc
->
timestamp_rx
-
old_ts
!=
samples_per_slot_prev
)
{
LOG_D
(
PHY
,
"rx_rf: rfdevice timing drift of %"
PRId64
" samples (ts_off %"
PRId64
")
\n
"
,
proc
->
timestamp_rx
-
old_ts
-
samples_per_slot_prev
,
ru
->
ts_offset
);
LOG_I
(
PHY
,
"rx_rf: rfdevice timing drift of %"
PRId64
" samples (ts_off %"
PRId64
"), old_ts %"
PRId64
", timestamp_rx %"
PRId64
"
\n
"
,
proc
->
timestamp_rx
-
old_ts
-
samples_per_slot_prev
,
ru
->
ts_offset
,
old_ts
,
proc
->
timestamp_rx
);
ru
->
ts_offset
+=
(
proc
->
timestamp_rx
-
old_ts
-
samples_per_slot_prev
);
proc
->
timestamp_rx
=
ts
-
ru
->
ts_offset
;
}
...
...
@@ -857,11 +858,12 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
ru
->
nb_tx
,
flags
);
LOG_D
(
PHY
,
"[TXPATH] RU %d aa %d tx_rf, writing to TS %llu, %d.%d, unwrapped_frame %d, slot %d, flags %d, siglen+sf_extension %d, "
"[TXPATH] RU %d aa %d tx_rf, writing to TS %llu,
(%llu, off %d, tx adv %d, adv %d, ext %d)
%d.%d, unwrapped_frame %d, slot %d, flags %d, siglen+sf_extension %d, "
"returned %d, E %f
\n
"
,
ru
->
idx
,
i
,
(
long
long
unsigned
int
)(
timestamp
+
ru
->
ts_offset
-
ru
->
openair0_cfg
.
tx_sample_advance
-
timing_advance
-
sf_extension
),
timestamp
,
ru
->
ts_offset
,
ru
->
openair0_cfg
.
tx_sample_advance
,
timing_advance
,
sf_extension
,
frame
,
slot
,
proc
->
frame_tx_unwrap
,
...
...
@@ -1080,7 +1082,7 @@ void ru_tx_func(void *param) {
if
(
!
emulate_rf
)
{
// do outgoing fronthaul (south) if needed
if
((
ru
->
fh_north_asynch_in
==
NULL
)
&&
(
ru
->
fh_south_out
))
ru
->
fh_south_out
(
ru
,
frame_tx
,
slot_tx
,
info
->
timestamp_tx
);
//
if ((ru->fh_north_asynch_in == NULL) && (ru->fh_south_out)) ru->fh_south_out(ru,frame_tx,slot_tx,info->timestamp_tx);
if
(
ru
->
fh_north_out
)
ru
->
fh_north_out
(
ru
);
}
else
{
...
...
@@ -1296,7 +1298,7 @@ void *ru_thread( void *param ) {
if
(
slot_type
==
NR_UPLINK_SLOT
||
slot_type
==
NR_MIXED_SLOT
)
{
if
(
ru
->
feprx
)
{
ru
->
feprx
(
ru
,
proc
->
tti_rx
);
//
ru->feprx(ru,proc->tti_rx);
clock_gettime
(
CLOCK_MONOTONIC
,
&
ru
->
rt_ru_profiling
.
return_RU_feprx
[
rt_prof_idx
]);
//LOG_M("rxdata.m","rxs",ru->common.rxdata[0],1228800,1,1);
LOG_D
(
PHY
,
"RU proc: frame_rx = %d, tti_rx = %d
\n
"
,
proc
->
frame_rx
,
proc
->
tti_rx
);
...
...
executables/nr-uesoftmodem.c
View file @
db2a66a9
...
...
@@ -366,6 +366,7 @@ void init_openair0(void) {
if
(
oxgrf_args
)
openair0_cfg
[
card
].
sdr_addrs
=
oxgrf_args
;
if
(
tx_subdev
)
openair0_cfg
[
card
].
tx_subdev
=
tx_subdev
;
if
(
rx_subdev
)
openair0_cfg
[
card
].
rx_subdev
=
rx_subdev
;
openair0_cfg
[
card
].
sdr_addrs
=
"addr=192.168.40.2"
;
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
db2a66a9
...
...
@@ -166,7 +166,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
gNB
->
slot
=
slot
;
start_meas
(
&
gNB
->
eNB_scheduler
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_IN
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_IN
);
/* send tick to RLC, PDCP, and X2AP every ms */
if
((
slot
&
((
1
<<
*
scc
->
ssbSubcarrierSpacing
)
-
1
))
==
0
)
{
...
...
@@ -177,6 +178,11 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
if
(
is_x2ap_enabled
())
x2ap_trigger
();
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_IN
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING0
,
VCD_FUNCTION_IN
);
for
(
int
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
//mbsfn_status[CC_id] = 0;
...
...
@@ -200,14 +206,18 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
}
nr_mac_update_timers
(
module_idP
,
frame
,
slot
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING0
,
VCD_FUNCTION_OUT
);
// This schedules MIB
schedule_nr_mib
(
module_idP
,
frame
,
slot
,
&
sched_info
->
DL_req
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING1
,
VCD_FUNCTION_IN
);
//schedule_nr_mib (module_idP, frame, slot, &sched_info->DL_req);
// This schedules SIB1
if
(
get_softmodem_params
()
->
sa
==
1
)
schedule_nr_sib1
(
module_idP
,
frame
,
slot
,
&
sched_info
->
DL_req
,
&
sched_info
->
TX_req
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING1
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING2
,
VCD_FUNCTION_IN
);
// This schedule PRACH if we are not in phy_test mode
if
(
get_softmodem_params
()
->
phy_test
==
0
)
{
/* we need to make sure that resources for PRACH are free. To avoid that
...
...
@@ -235,19 +245,20 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
if
(
get_softmodem_params
()
->
phy_test
==
0
)
{
nr_schedule_RA
(
module_idP
,
frame
,
slot
,
&
sched_info
->
UL_dci_req
,
&
sched_info
->
DL_req
,
&
sched_info
->
TX_req
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING2
,
VCD_FUNCTION_OUT
);
// This schedules the DCI for Uplink and subsequently PUSCH
nr_schedule_ulsch
(
module_idP
,
frame
,
slot
,
&
sched_info
->
UL_dci_req
);
//
nr_schedule_ulsch(module_idP, frame, slot, &sched_info->UL_dci_req);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING3
,
VCD_FUNCTION_IN
);
// This schedules the DCI for Downlink and PDSCH
start_meas
(
&
gNB
->
schedule_dlsch
);
nr_schedule_ue_spec
(
module_idP
,
frame
,
slot
,
&
sched_info
->
DL_req
,
&
sched_info
->
TX_req
);
//
nr_schedule_ue_spec(module_idP, frame, slot, &sched_info->DL_req, &sched_info->TX_req);
stop_meas
(
&
gNB
->
schedule_dlsch
);
nr_sr_reporting
(
gNB
,
frame
,
slot
);
nr_schedule_pucch
(
gNB
,
frame
,
slot
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING3
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING4
,
VCD_FUNCTION_IN
);
/* TODO: we copy from gNB->UL_tti_req_ahead[0][current_index], ie. CC_id == 0,
* is more than 1 CC supported?
*/
...
...
@@ -257,5 +268,6 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
stop_meas
(
&
gNB
->
eNB_scheduler
);
NR_SCHED_UNLOCK
(
&
gNB
->
sched_lock
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING4
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_OUT
);
}
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.x310.conf
0 → 100644
View file @
db2a66a9
Active_gNBs
= (
"gNB-OAI"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
gNBs
=
(
{
//////////
Identification
parameters
:
gNB_ID
=
0
xe00
;
gNB_name
=
"gNB-OAI"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
100
;
plmn_list
= ({
mcc
=
466
;
mnc
=
92
;
mnc_length
=
2
;
snssaiList
= ({
sst
=
1
; }) });
nr_cellid
=
12345678
L
;
//////////
Physical
parameters
:
sib1_tda
=
15
;
min_rxtxtime
=
6
;
do_CSIRS
=
0
;
do_SRS
=
0
;
servingCellConfigCommon
= (
{
#spCellConfigCommon
physCellId
=
0
;
# downlinkConfigCommon
#frequencyInfoDL
# this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
absoluteFrequencySSB
=
641280
;
dl_frequencyBand
=
78
;
# this is 3600 MHz
dl_absoluteFrequencyPointA
=
640008
;
#scs-SpecificCarrierList
dl_offstToCarrier
=
0
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing
=
1
;
dl_carrierBandwidth
=
106
;
#initialDownlinkBWP
#genericParameters
# this is RBstart=27,L=48 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth
=
28875
;
# 6366 12925 12956 28875 12952
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing
=
1
;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero
=
12
;
initialDLBWPsearchSpaceZero
=
0
;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand
=
78
;
#scs-SpecificCarrierList
ul_offstToCarrier
=
0
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing
=
1
;
ul_carrierBandwidth
=
106
;
pMax
=
20
;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth
=
28875
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing
=
1
;
#rach-ConfigCommon
#rach-ConfigGeneric
prach_ConfigurationIndex
=
98
;
#prach_msg1_FDM
#0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM
=
0
;
prach_msg1_FrequencyStart
=
0
;
zeroCorrelationZoneConfig
=
13
;
preambleReceivedTargetPower
= -
96
;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax
=
6
;
#powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep
=
1
;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow
=
4
;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
=
4
;
#oneHalf (0..15) 4,8,12,16,...60,64
ssb_perRACH_OccasionAndCB_PreamblesPerSSB
=
14
;
#ra_ContentionResolutionTimer
#(0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer
=
7
;
rsrp_ThresholdSSB
=
19
;
#prach-RootSequenceIndex_PR
#1 = 839, 2 = 139
prach_RootSequenceIndex_PR
=
2
;
prach_RootSequenceIndex
=
1
;
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
#
msg1_SubcarrierSpacing
=
1
,
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig
=
0
,
msg3_DeltaPreamble
=
1
;
p0_NominalWithGrant
=-
90
;
# pucch-ConfigCommon setup :
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping
=
0
;
hoppingId
=
40
;
p0_nominal
= -
90
;
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR
=
2
;
ssb_PositionsInBurst_Bitmap
=
1
;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
ssb_periodicityServingCell
=
2
;
# dmrs_TypeA_position
# 0 = pos2, 1 = pos3
dmrs_TypeA_Position
=
0
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
subcarrierSpacing
=
1
;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing
=
1
;
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity
=
6
;
nrofDownlinkSlots
=
7
;
nrofDownlinkSymbols
=
6
;
nrofUplinkSlots
=
2
;
nrofUplinkSymbols
=
4
;
ssPBCH_BlockPower
= -
25
;
}
);
# ------- SCTP definitions
SCTP
:
{
# Number of streams to use in input/output
SCTP_INSTREAMS
=
2
;
SCTP_OUTSTREAMS
=
2
;
};
//////////
AMF
parameters
:
amf_ip_address
= ( {
ipv4
=
"172.11.200.14"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
GNB_INTERFACE_NAME_FOR_NG_AMF
=
"docker-openxg"
;
GNB_IPV4_ADDRESS_FOR_NG_AMF
=
"172.11.200.1/24"
;
GNB_INTERFACE_NAME_FOR_NGU
=
"docker-openxg"
;
GNB_IPV4_ADDRESS_FOR_NGU
=
"172.11.200.1/24"
;
GNB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
}
);
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
150
;
pucch_TargetSNRx10
=
200
;
ulsch_max_frame_inactivity
=
0
;
}
);
L1s
= (
{
num_cc
=
1
;
tr_n_preference
=
"local_mac"
;
prach_dtx_threshold
=
120
;
pucch0_dtx_threshold
=
100
;
ofdm_offset_divisor
=
8
;
#set this to UINT_MAX for offset 0
}
);
RUs
= (
{
local_rf
=
"yes"
nb_tx
=
1
;
nb_rx
=
1
;
att_tx
=
0
;
att_rx
=
0
;
bands
= [
78
];
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
75
;
eNB_instances
= [
0
];
##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights
= [
0
x00007fff
,
0
x0000
];
#clock_src = "internal";
sdr_addrs
=
"addr=192.168.40.2,second_addr=192.168.40.2,clock_source=internal,time_source=internal"
}
);
THREAD_STRUCT
= (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config
=
"PARALLEL_SINGLE_THREAD"
;
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config
=
"WORKER_ENABLE"
;
}
);
rfsimulator
:
{
serveraddr
=
"server"
;
serverport
=
"4043"
;
options
= ();
#("saviq"); or/and "chanmod"
modelname
=
"AWGN"
;
IQfile
=
"/tmp/rfsimulator.iqs"
;
};
security
= {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen
# valid values: nea0, nea1, nea2, nea3
ciphering_algorithms
= (
"nea0"
);
# preferred integrity algorithms
# the first one of the list that an UE supports in chosen
# valid values: nia0, nia1, nia2, nia3
integrity_algorithms
= (
"nia2"
,
"nia0"
);
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
drb_ciphering
=
"yes"
;
drb_integrity
=
"no"
;
};
log_config
:
{
global_log_level
=
"info"
;
hw_log_level
=
"info"
;
phy_log_level
=
"info"
;
mac_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
ngap_log_level
=
"debug"
;
f1ap_log_level
=
"debug"
;
};
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.273PRB.x310.conf
0 → 100644
View file @
db2a66a9
Active_gNBs
= (
"gNB-OAI"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
gNBs
= (
{
//////////
Identification
parameters
:
gNB_ID
=
0
xe00
;
gNB_name
=
"gNB-OAI"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
100
;
plmn_list
= ({
mcc
=
466
;
mnc
=
92
;
mnc_length
=
2
;
snssaiList
= ({
sst
=
1
; }); });
nr_cellid
=
12345678
L
;
//////////
Physical
parameters
:
min_rxtxtime
=
6
;
pdsch_AntennaPorts_XP
=
1
;
pusch_AntennaPorts
=
1
;
do_CSIRS
=
0
;
do_SRS
=
0
;
ul_prbblacklist
=
"135,136,137,138"
servingCellConfigCommon
= (
{
# spCellConfigCommon
physCellId
=
0
;
# downlinkConfigCommon
# frequencyInfoDL
# this is 3900.60 MHz + (134 PRBs + 4 SCs)@30kHz SCS (GSCN: 8158)
absoluteFrequencySSB
=
623232
;
dl_frequencyBand
=
78
;
# this is 3900.60 MHz
dl_absoluteFrequencyPointA
=
620016
;
# scs-SpecificCarrierList
dl_offstToCarrier
=
0
;
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
dl_subcarrierSpacing
=
1
;
dl_carrierBandwidth
=
273
;
# initialDownlinkBWP
# genericParameters
initialDLBWPlocationAndBandwidth
=
1099
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing
=
1
;
# pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero
=
12
;
initialDLBWPsearchSpaceZero
=
0
;
# uplinkConfigCommon
# frequencyInfoUL
ul_frequencyBand
=
78
;
# scs-SpecificCarrierList
ul_offstToCarrier
=
0
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
ul_subcarrierSpacing
=
1
;
ul_carrierBandwidth
=
273
;
pMax
=
20
;
# initialUplinkBWP
# genericParameters
initialULBWPlocationAndBandwidth
=
1099
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing
=
1
;
# rach-ConfigCommon
# rach-ConfigGeneric
prach_ConfigurationIndex
=
98
;
# prach_msg1_FDM
# 0 = one, 1=two, 2=four, 3=eight
prach_msg1_FDM
=
0
;
prach_msg1_FrequencyStart
=
0
;
zeroCorrelationZoneConfig
=
12
;
preambleReceivedTargetPower
= -
90
;
# preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax
=
6
;
# powerRampingStep
# 0=dB0,1=dB2,2=dB4,3=dB6
powerRampingStep
=
1
;
# ra_ReponseWindow
# 1,2,4,8,10,20,40,80
ra_ResponseWindow
=
4
;
# ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
# 1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
=
3
;
# oneHalf (0..15) 4,8,12,16,...60,64
ssb_perRACH_OccasionAndCB_PreamblesPerSSB
=
15
;
# ra_ContentionResolutionTimer
# (0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer
=
7
;
rsrp_ThresholdSSB
=
19
;
# prach-RootSequenceIndex_PR
# 1 = 839, 2 = 139
prach_RootSequenceIndex_PR
=
2
;
prach_RootSequenceIndex
=
1
;
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
msg1_SubcarrierSpacing
=
1
,
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig
=
0
,
msg3_DeltaPreamble
=
1
;
p0_NominalWithGrant
=-
90
;
# pucch-ConfigCommon
# pucchGroupHopping
# 0 = neither, 1= group hopping, 2=sequence hopping
pucchGroupHopping
=
0
;
hoppingId
=
40
;
p0_nominal
= -
70
;
# dmrs_TypeA_position
# 0 = pos2, 1 = pos3
dmrs_TypeA_Position
=
0
;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
subcarrierSpacing
=
1
;
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR
=
2
;
ssb_PositionsInBurst_Bitmap
=
1
;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
ssb_periodicityServingCell
=
2
;
#tdd-UL-DL-ConfigurationCommon
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
referenceSubcarrierSpacing
=
1
;
# pattern1
# dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity
=
6
;
nrofDownlinkSlots
=
7
;
nrofDownlinkSymbols
=
6
;
nrofUplinkSlots
=
2
;
nrofUplinkSymbols
=
4
;
ssPBCH_BlockPower
= -
25
;
}
);
# ------- SCTP definitions
SCTP
:
{
# Number of streams to use in input/output
SCTP_INSTREAMS
=
2
;
SCTP_OUTSTREAMS
=
2
;
};
//////////
AMF
parameters
:
amf_ip_address
= (
{
ipv4
=
"172.11.200.14"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
GNB_INTERFACE_NAME_FOR_NG_AMF
=
"docker-openxg"
;
GNB_IPV4_ADDRESS_FOR_NG_AMF
=
"172.11.200.1/24"
;
GNB_INTERFACE_NAME_FOR_NGU
=
"docker-openxg"
;
GNB_IPV4_ADDRESS_FOR_NGU
=
"172.11.200.1/24"
;
GNB_PORT_FOR_S1U
=
2152
;
# Spec 2152
}
}
);
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
300
;
pucch_TargetSNRx10
=
200
;
pusch_FailureThres
=
1000
;
ulsch_max_frame_inactivity
=
0
;
ul_max_mcs
=
28
;
}
);
L1s
= (
{
num_cc
=
1
;
tr_n_preference
=
"local_mac"
;
prach_dtx_threshold
=
120
;
pucch0_dtx_threshold
=
80
;
}
);
RUs
= (
{
local_rf
=
"yes"
nb_tx
=
1
;
nb_rx
=
1
;
att_tx
=
0
;
att_rx
=
0
;
bands
= [
78
];
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
102
;
eNB_instances
= [
0
];
##beamforming 1x2 matrix: 1 layer x 2 antennas
bf_weights
= [
0
x00007fff
,
0
x0000
];
#clock_src = "internal";
sdr_addrs
=
"addr=192.168.40.2,second_addr=192.168.40.2,clock_source=internal,time_source=internal"
}
);
THREAD_STRUCT
= (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config
=
"PARALLEL_SINGLE_THREAD"
;
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config
=
"WORKER_ENABLE"
;
}
);
rfsimulator
:
{
serveraddr
=
"server"
;
serverport
=
"4043"
;
options
= ();
#("saviq"); or/and "chanmod"
modelname
=
"AWGN"
;
IQfile
=
"/tmp/rfsimulator.iqs"
;
};
security
= {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen
# valid values: nea0, nea1, nea2, nea3
ciphering_algorithms
= (
"nea0"
);
# preferred integrity algorithms
# the first one of the list that an UE supports in chosen
# valid values: nia0, nia1, nia2, nia3
integrity_algorithms
= (
"nia2"
,
"nia0"
);
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
drb_ciphering
=
"yes"
;
drb_integrity
=
"no"
;
};
log_config
:
{
global_log_level
=
"info"
;
hw_log_level
=
"info"
;
phy_log_level
=
"info"
;
mac_log_level
=
"info"
;
rlc_log_level
=
"info"
;
pdcp_log_level
=
"info"
;
rrc_log_level
=
"info"
;
ngap_log_level
=
"debug"
;
f1ap_log_level
=
"debug"
;
};
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