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
spbro
OpenXG-RAN
Commits
cd5209a7
Commit
cd5209a7
authored
Mar 01, 2024
by
Jaroslava Fiedlerova
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/fix_fr2_ssb_start_subcarrier' into integration_2024_w09
parents
4ae0fd09
3d8b38f7
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
181 additions
and
140 deletions
+181
-140
ci-scripts/conf_files/gnb.sa.band261.u3.32prb.rfsim.conf
ci-scripts/conf_files/gnb.sa.band261.u3.32prb.rfsim.conf
+47
-89
ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml
ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml
+12
-20
ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml
ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml
+0
-8
ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml
...s/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml
+95
-8
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+18
-6
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+1
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+8
-8
No files found.
ci-scripts/conf_files/gnb.
band261.32prb.rfsim.phytest-dora
.conf
→
ci-scripts/conf_files/gnb.
sa.band261.u3.32prb.rfsim
.conf
View file @
cd5209a7
Active_gNBs
= (
"gNB-
Eurecom-5GNRBox
"
);
Active_gNBs
= (
"gNB-
OAI
"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
sa
=
1
;
gNBs
=
(
{
//////////
Identification
parameters
:
gNB_ID
=
0
xe00
;
cell_type
=
"CELL_MACRO_GNB"
;
gNB_name
=
"gNB-Eurecom-5GNRBox"
;
gNB_name
=
"gNB-OAI"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
1
;
plmn_list
= ({
mcc
=
208
;
mnc
=
99
;
mnc_length
=
2
;});
plmn_list
= ({
mcc
=
208
;
mnc
=
99
;
mnc_length
=
2
;
snssaiList
= ({
sst
=
1
; }) });
nr_cellid
=
12345678
L
;
tr_s_preference
=
"local_mac"
//////////
Physical
parameters
:
sib1_tda
=
15
;
min_rxtxtime
=
6
;
servingCellConfigCommon
= (
{
#spCellConfigCommon
physCellId
=
0
;
physCellId
=
1
0
;
# downlinkConfigCommon
#frequencyInfoDL
# this is pointA +
23
PRBs@120kHz SCS (same as initial BWP)
absoluteFrequencySSB
=
2071241
;
# this is pointA +
16
PRBs@120kHz SCS (same as initial BWP)
absoluteFrequencySSB
=
2071387
;
dl_frequencyBand
=
261
;
# this is 27.900 GHz
dl_absoluteFrequencyPointA
=
207
0833
;
dl_absoluteFrequencyPointA
=
207
1001
;
#scs-SpecificCarrierList
dl_offstToCarrier
=
0
;
# subcarrierSpacing
...
...
@@ -50,7 +51,7 @@ gNBs =
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing
=
3
;
#pdcch-ConfigCommon
initialDLBWPcontrolResourceSetZero
=
1
2
;
initialDLBWPcontrolResourceSetZero
=
1
;
initialDLBWPsearchSpaceZero
=
0
;
#uplinkConfigCommon
...
...
@@ -85,12 +86,12 @@ gNBs =
powerRampingStep
=
1
;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow
=
7
;
ra_ResponseWindow
=
5
;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#
0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7
=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
=
4
;
#
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
=
7
;
ssb_perRACH_OccasionAndCB_PreamblesPerSSB
=
15
;
#ra_ContentionResolutionTimer
#(0..7) 8,16,24,32,40,48,56,64
ra_ContentionResolutionTimer
=
7
;
...
...
@@ -101,8 +102,7 @@ gNBs =
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
=
3
,
msg1_SubcarrierSpacing
=
3
;
# restrictedSetConfig
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig
=
0
,
...
...
@@ -119,7 +119,7 @@ gNBs =
# ssb_PositionsInBurs_BitmapPR
# 1=short, 2=medium, 3=long
ssb_PositionsInBurst_PR
=
3
;
ssb_PositionsInBurst_Bitmap
=
0
x0001000100010001L
;
ssb_PositionsInBurst_Bitmap
=
1
;
# ssb_periodicityServingCell
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
...
...
@@ -152,7 +152,6 @@ gNBs =
);
# ------- SCTP definitions
SCTP
:
{
...
...
@@ -162,91 +161,58 @@ gNBs =
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.18.99
"
;
//////////
AMF
parameters
:
amf_ip_address
= ( {
ipv4
=
"192.168.71.132
"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
///
X2
enable_x2
=
"no"
;
t_reloc_prep
=
1000
; /*
unit
:
millisecond
*/
tx2_reloc_overall
=
2000
; /*
unit
:
millisecond
*/
t_dc_prep
=
1000
; /*
unit
:
millisecond
*/
t_dc_overall
=
2000
; /*
unit
:
millisecond
*/
target_enb_x2_ip_address
= (
{
ipv4
=
"192.168.18.199"
;
ipv6
=
"192:168:30::17"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
GNB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
GNB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.18.198/24"
;
GNB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
GNB_IPV4_ADDRESS_FOR_S1U
=
"192.168.18.198/24"
;
GNB_INTERFACE_NAME_FOR_NG_AMF
=
"eth0"
;
GNB_IPV4_ADDRESS_FOR_NG_AMF
=
"192.168.71.140/24"
;
GNB_INTERFACE_NAME_FOR_NGU
=
"eth0"
;
GNB_IPV4_ADDRESS_FOR_NGU
=
"192.168.71.140/24"
;
GNB_PORT_FOR_S1U
=
2152
;
# Spec 2152
GNB_IPV4_ADDRESS_FOR_X2C
=
"192.168.18.198/24"
;
GNB_PORT_FOR_X2C
=
36422
;
# Spec 36422
};
}
);
MACRLCs
= (
{
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
}
);
MACRLCs
= ({
num_cc
=
1
;
tr_s_preference
=
"local_L1"
;
tr_n_preference
=
"local_RRC"
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
});
L1s
= (
{
num_cc
=
1
;
tr_n_preference
=
"local_mac"
;
ofdm_offset_divisor
=
8
;
#set this to UINT_MAX for offset 0
prach_dtx_threshold
=
120
;
#pucch0_dtx_threshold = 120;
}
);
RUs
= (
{
local_rf
=
"yes"
nb_tx
=
1
;
nb_rx
=
1
;
att_tx
=
0
;
att_rx
=
0
;
bands
= [
7
];
sl_ahead
=
12
;
max_pdschReferenceSignalPower
= -
27
;
max_rxgain
=
75
;
eNB_instances
= [
0
];
sdr_addrs
=
"addr=192.168.10.2,second_addr=192.168.20.2"
;
if_freq
=
5124520000
L
;
clock_src
=
"external"
;
time_src
=
"external"
;
}
);
RUs
= ({
local_rf
=
"yes"
nb_tx
=
1
;
nb_rx
=
1
;
att_tx
=
0
;
att_rx
=
0
;
sl_ahead
=
12
;
bands
= [
261
];
max_pdschReferenceSignalPower
= -
27
;
eNB_instances
= [
0
];
});
rfsimulator
: {
serveraddr
=
"server"
;
};
THREAD_STRUCT
= (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config
=
"PARALLEL_RU_L1_TRX_SPLIT"
;
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config
=
"WORKER_ENABLE"
;
}
);
security
= {
# preferred ciphering algorithms
# the first one of the list that an UE supports in chosen
...
...
@@ -264,14 +230,6 @@ security = {
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"
;
};
log_config
: {
global_log_level
=
"info"
;
};
ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml
View file @
cd5209a7
...
...
@@ -22,13 +22,12 @@
-->
<testCaseList>
<htmlTabRef>
rfsim-fr2-32prb-5gnr-tdd
</htmlTabRef>
<htmlTabName>
Monolithic FR2
do-ra
gNB
</htmlTabName>
<htmlTabName>
Monolithic FR2 gNB
</htmlTabName>
<htmlTabIcon>
wrench
</htmlTabIcon>
<repeatCount>
1
</repeatCount>
<TestCaseRequestedList>
111111
100001
004000
000000
000001
020001
...
...
@@ -44,42 +43,35 @@
<images_to_pull>
oai-gnb-asan oai-nr-ue-asan
</images_to_pull>
</testCase>
<testCase
id=
"004000"
>
<class>
Custom_Command
</class>
<desc>
Clean-Up any residual volume
</desc>
<node>
localhost
</node>
<command>
docker volume rm 5g_rfsimulator_fr2_32prb_rrc.config
</command>
</testCase>
<testCase
id=
"000000"
>
<class>
DeployGenObject
</class>
<desc>
Deploy OAI gNB
</desc>
<yaml_path>
yaml_files/5g_rfsimulator_fr2_32prb
</yaml_path>
<services>
oai-gnb
</services>
<nb_healthy>
1
</nb_healthy>
<services>
mysql oai-amf oai-smf oai-upf oai-ext-dn
</services>
<nb_healthy>
5
</nb_healthy>
</testCase>
<testCase
id=
"000001"
>
<class>
DeployGenObject
</class>
<desc>
Deploy OAI NR-UE
</desc>
<yaml_path>
yaml_files/5g_rfsimulator_fr2_32prb
</yaml_path>
<services>
oai-nr-ue
</services>
<nb_healthy>
2
</nb_healthy>
<services>
oai-
gnb oai-
nr-ue
</services>
<nb_healthy>
7
</nb_healthy>
</testCase>
<testCase
id=
"020001"
>
<class>
Ping
</class>
<desc>
Ping
gNB
from NR-UE
</desc>
<desc>
Ping
ext-dn
from NR-UE
</desc>
<id>
rfsim5g_ue
</id>
<ping_args>
-c
20 -i0.2 10.0.1.1
</ping_args>
<ping_args>
-c
20 -i0.2 192.168.72.135
</ping_args>
<ping_packetloss_threshold>
0
</ping_packetloss_threshold>
</testCase>
<testCase
id=
"020002"
>
<class>
Ping
</class>
<desc>
Ping NR-UE from
gNB
</desc>
<id>
rfsim5g_
gnb_nos1
</id>
<ping_args>
-c
20 -i0.2 10.0.1
.2
</ping_args>
<desc>
Ping NR-UE from
ext-dn
</desc>
<id>
rfsim5g_
ext_dn
</id>
<ping_args>
-c
20 12.1.1.2 -i0
.2
</ping_args>
<ping_packetloss_threshold>
0
</ping_packetloss_threshold>
</testCase>
...
...
@@ -87,8 +79,8 @@
<class>
UndeployGenObject
</class>
<desc>
Undeploy all OAI 5G stack
</desc>
<yaml_path>
yaml_files/5g_rfsimulator_fr2_32prb
</yaml_path>
<d_retx_th>
0,0,0,0
</d_retx_th>
<u_retx_th>
0,0,0,0
</u_retx_th>
<d_retx_th>
1
0,0,0,0
</d_retx_th>
<u_retx_th>
1
0,0,0,0
</u_retx_th>
</testCase>
</testCaseList>
ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml
View file @
cd5209a7
...
...
@@ -26,7 +26,6 @@
<htmlTabIcon>
trash
</htmlTabIcon>
<TestCaseRequestedList>
100002
004000
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
...
...
@@ -37,13 +36,6 @@
<yaml_path>
yaml_files/5g_rfsimulator_fr2_32prb
</yaml_path>
</testCase>
<testCase
id=
"004000"
>
<class>
Custom_Command
</class>
<desc>
Clean-Up any residual volume
</desc>
<node>
localhost
</node>
<command>
docker volume rm 5g_rfsimulator_fr2_32prb_rrc.config
</command>
</testCase>
<testCase
id=
"222222"
>
<class>
Clean_Test_Server_Images
</class>
<desc>
Clean Test Images on Test Server
</desc>
...
...
ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml
View file @
cd5209a7
version
:
'
3.8'
services
:
mysql
:
container_name
:
"
rfsim5g-mysql"
image
:
mysql:8.0
volumes
:
-
../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
-
../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
environment
:
-
TZ=Europe/Paris
-
MYSQL_DATABASE=oai_db
-
MYSQL_USER=test
-
MYSQL_PASSWORD=test
-
MYSQL_ROOT_PASSWORD=linux
healthcheck
:
test
:
/bin/bash -c "/tmp/mysql-healthcheck.sh"
interval
:
10s
timeout
:
5s
retries
:
30
networks
:
public_net
:
ipv4_address
:
192.168.71.131
oai-amf
:
container_name
:
"
rfsim5g-oai-amf"
image
:
oaisoftwarealliance/oai-amf:v2.0.0
environment
:
-
TZ=Europe/paris
volumes
:
-
../5g_rfsimulator/mini_nonrf_config.yaml:/openair-amf/etc/config.yaml
depends_on
:
-
mysql
networks
:
public_net
:
ipv4_address
:
192.168.71.132
oai-smf
:
container_name
:
"
rfsim5g-oai-smf"
image
:
oaisoftwarealliance/oai-smf:v2.0.0
environment
:
-
TZ=Europe/Paris
volumes
:
-
../5g_rfsimulator/mini_nonrf_config.yaml:/openair-smf/etc/config.yaml
depends_on
:
-
oai-amf
networks
:
public_net
:
ipv4_address
:
192.168.71.133
oai-upf
:
container_name
:
"
rfsim5g-oai-upf"
image
:
oaisoftwarealliance/oai-upf:v2.0.0
environment
:
-
TZ=Europe/Paris
volumes
:
-
../5g_rfsimulator/mini_nonrf_config.yaml:/openair-upf/etc/config.yaml
depends_on
:
-
oai-smf
cap_add
:
-
NET_ADMIN
-
SYS_ADMIN
cap_drop
:
-
ALL
privileged
:
true
networks
:
public_net
:
ipv4_address
:
192.168.71.134
traffic_net
:
ipv4_address
:
192.168.72.134
oai-ext-dn
:
privileged
:
true
container_name
:
rfsim5g-oai-ext-dn
image
:
oaisoftwarealliance/trf-gen-cn5g:focal
entrypoint
:
/bin/bash -c \
"iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\
"ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity"
depends_on
:
-
oai-upf
networks
:
traffic_net
:
ipv4_address
:
192.168.72.135
healthcheck
:
test
:
/bin/bash -c "ping -c 2 192.168.72.134"
interval
:
10s
timeout
:
5s
retries
:
5
oai-gnb
:
image
:
oaisoftwarealliance/oai-gnb:develop
privileged
:
true
container_name
:
rfsim5g-oai-gnb
environment
:
USE_ADDITIONAL_OPTIONS
:
--
do-ra --rfsim --rfsimulator.wait_timeout 20 --noS1
--log_config.global_log_options level,nocolor,time
USE_ADDITIONAL_OPTIONS
:
--
sa --rfsim
--log_config.global_log_options level,nocolor,time
ASAN_OPTIONS
:
detect_leaks=0
networks
:
public_net
:
ipv4_address
:
192.168.71.140
volumes
:
-
../../conf_files/gnb.band261.32prb.rfsim.phytest-dora.conf:/opt/oai-gnb/etc/gnb.conf
-
rrc.config:/opt/oai-gnb/
-
../../conf_files/gnb.sa.band261.u3.32prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf
healthcheck
:
test
:
/bin/bash -c "pgrep nr-softmodem"
interval
:
10s
...
...
@@ -24,11 +105,12 @@ services:
privileged
:
true
container_name
:
rfsim5g-oai-nr-ue
environment
:
USE_ADDITIONAL_OPTIONS
:
--do-ra --rfsim --noS1 --reconfig-file etc/rrc/reconfig.raw --rbconfig-file etc/rrc/rbconfig.raw --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
USE_ADDITIONAL_OPTIONS
:
--sa --rfsim
--rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
-r 32 --numerology 3 --band 261 -C 27533160000 --ssb
73
ASAN_OPTIONS
:
detect_leaks=0
volumes
:
-
../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
-
rrc.config:/opt/oai-nr-ue/etc/rrc/
depends_on
:
-
oai-gnb
networks
:
...
...
@@ -40,9 +122,6 @@ services:
timeout
:
5s
retries
:
5
volumes
:
rrc.config
:
networks
:
public_net
:
driver
:
bridge
...
...
@@ -52,3 +131,11 @@ networks:
-
subnet
:
192.168.71.128/26
driver_opts
:
com.docker.network.bridge.name
:
"
rfsim5g-public"
traffic_net
:
driver
:
bridge
name
:
rfsim5g-oai-traffic-net
ipam
:
config
:
-
subnet
:
192.168.72.128/26
driver_opts
:
com.docker.network.bridge.name
:
"
rfsim5g-traffic"
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
cd5209a7
...
...
@@ -70,13 +70,25 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_
int
ssb_start_symbol_abs
=
nr_get_ssb_start_symbol
(
fp
,
ssb_index
);
// computing the starting symbol for current ssb
ssb_start_symbol
=
ssb_start_symbol_abs
%
fp
->
symbols_per_slot
;
// start symbol wrt slot
// setting the first subcarrier
// Setting the first subcarrier
// 3GPP TS 38.211 sections 7.4.3.1 and 4.4.4.2
// for FR1 offsetToPointA and k_SSB are expressed in terms of 15 kHz SCS
// for FR2 offsetToPointA is expressed in terms of 60 kHz SCS and k_SSB expressed in terms of the subcarrier spacing provided
// by the higher-layer parameter subCarrierSpacingCommon
const
int
scs
=
cfg
->
ssb_config
.
scs_common
.
value
;
const
int
prb_offset
=
(
fp
->
freq_range
==
nr_FR1
)
?
ssb_pdu
.
ssb_pdu_rel15
.
ssbOffsetPointA
>>
scs
:
ssb_pdu
.
ssb_pdu_rel15
.
ssbOffsetPointA
>>
(
scs
-
2
);
const
int
sc_offset
=
(
fp
->
freq_range
==
nr_FR1
)
?
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
>>
scs
:
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
>>
(
scs
-
2
);
const
int
prb_offset
=
(
fp
->
freq_range
==
nr_FR1
)
?
ssb_pdu
.
ssb_pdu_rel15
.
ssbOffsetPointA
>>
scs
:
ssb_pdu
.
ssb_pdu_rel15
.
ssbOffsetPointA
>>
(
scs
-
2
);
const
int
sc_offset
=
(
fp
->
freq_range
==
nr_FR1
)
?
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
>>
scs
:
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
;
fp
->
ssb_start_subcarrier
=
(
12
*
prb_offset
+
sc_offset
);
LOG_D
(
PHY
,
"SSB first subcarrier %d (%d,%d)
\n
"
,
fp
->
ssb_start_subcarrier
,
prb_offset
,
sc_offset
);
LOG_D
(
PHY
,
"ssbOffsetPointA %d SSB SsbSubcarrierOffset %d prb_offset %d sc_offset %d scs %d ssb_start_subcarrier %d
\n
"
,
ssb_pdu
.
ssb_pdu_rel15
.
ssbOffsetPointA
,
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
,
prb_offset
,
sc_offset
,
scs
,
fp
->
ssb_start_subcarrier
);
LOG_D
(
PHY
,
"SS TX: frame %d, slot %d, start_symbol %d
\n
"
,
frame
,
slot
,
ssb_start_symbol
);
nr_generate_pss
(
&
txdataF
[
0
][
txdataF_offset
],
gNB
->
TX_AMP
,
ssb_start_symbol
,
cfg
,
fp
);
...
...
@@ -602,7 +614,7 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
rb2
=
rb
+
pucch_pdu
->
bwp_start
+
((
symbol
<
pucch_pdu
->
start_symbol_index
+
(
pucch_pdu
->
nr_of_symbols
>>
1
))
||
(
pucch_pdu
->
freq_hop_flag
==
0
)
?
pucch_pdu
->
prb_start
:
pucch_pdu
->
second_hop_prb
);
gNB
->
rb_mask_ul
[
symbol
][
rb2
>>
5
]
|=
(
1
<<
(
rb2
&
31
));
gNB
->
rb_mask_ul
[
symbol
][
rb2
>>
5
]
|=
(
((
uint32_t
)
1
)
<<
(
rb2
&
31
));
}
}
}
...
...
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
cd5209a7
...
...
@@ -183,7 +183,7 @@ static void config_common_ue_sa(NR_UE_MAC_INST_t *mac,
else
{
for
(
int
i
=
0
;
i
<
8
;
i
++
){
if
((
scc
->
ssb_PositionsInBurst
.
groupPresence
->
buf
[
0
]
>>
(
7
-
i
))
&
0x01
)
cfg
->
ssb_table
.
ssb_mask_list
[
i
>>
2
].
ssb_mask
|=
scc
->
ssb_PositionsInBurst
.
inOneGroup
.
buf
[
0
]
<<
(
24
-
8
*
(
i
%
4
));
cfg
->
ssb_table
.
ssb_mask_list
[
i
>>
2
].
ssb_mask
|=
((
uint32_t
)
scc
->
ssb_PositionsInBurst
.
inOneGroup
.
buf
[
0
])
<<
(
24
-
8
*
(
i
%
4
));
}
}
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
cd5209a7
...
...
@@ -197,21 +197,21 @@ static int get_ssb_arfcn(const f1ap_served_cell_info_t *cell_info, const NR_MIB_
uint32_t
dl_arfcn
=
get_dl_arfcn
(
cell_info
);
int
scs
=
get_ssb_scs
(
cell_info
);
int
band
=
get_dl_band
(
cell_info
);
uint64_t
freqpointa
=
from_nrarfcn
(
band
,
scs
,
dl_arfcn
);
uint64_t
freqssb
=
0
;
// 3GPP TS 38.211 sections 7.4.3.1 and 4.4.4.2
// for FR1 offsetToPointA and k_SSB are expressed in terms of 15 kHz SCS
// for FR2 offsetToPointA is expressed in terms of 60 kHz SCS and k_SSB expressed in terms of the subcarrier spacing provided
// by the higher-layer parameter subCarrierSpacingCommon
// FR1 includes frequency bands from 410 MHz (ARFCN 82000) to 7125 MHz (ARFCN 875000)
// FR2 includes frequency bands from 24.25 GHz (ARFCN 2016667) to 71.0 GHz (ARFCN 2795832)
uint64_t
scaling
=
0
;
if
(
dl_arfcn
>=
82000
&&
dl_arfcn
<
875000
)
scaling
=
1
;
freqssb
=
freqpointa
+
15000
*
(
offsetToPointA
*
12
+
kssb
)
+
10ll
*
12
*
(
1
<<
scs
)
*
15000
;
else
if
(
dl_arfcn
>=
2016667
&&
dl_arfcn
<
2795832
)
scaling
=
4
;
freqssb
=
freqpointa
+
60000
*
offsetToPointA
*
12
+
(
1
<<
scs
)
*
15000
*
(
kssb
+
10ll
*
12
)
;
else
AssertFatal
(
false
,
"Invalid absoluteFrequencyPointA: %d
\n
"
,
dl_arfcn
);
uint64_t
freqpointa
=
from_nrarfcn
(
band
,
scs
,
dl_arfcn
);
// offsetToPointA and kSSB are both on 15kHz SCS for FR1 and 60kHz SCS for FR2 (see 38.211 sections 7.4.3.1 and 4.4.4.2)
// SSB uses the SCS of the cell and is 20 RBs wide, so use 10
uint64_t
freqssb
=
freqpointa
+
scaling
*
15000
*
(
offsetToPointA
*
12
+
kssb
)
+
10ll
*
12
*
(
1
<<
scs
)
*
15000
;
int
bw_index
=
get_supported_band_index
(
scs
,
band
,
get_dl_bw
(
cell_info
));
int
band_size_hz
=
get_supported_bw_mhz
(
band
>
256
?
FR2
:
FR1
,
bw_index
)
*
1000
*
1000
;
uint32_t
ssb_arfcn
=
to_nrarfcn
(
band
,
freqssb
,
scs
,
band_size_hz
);
...
...
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