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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG-RAN
Commits
8b276ce2
Commit
8b276ce2
authored
Sep 29, 2021
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some additional cleanup
parent
7ed21f90
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
141 additions
and
163 deletions
+141
-163
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+6
-2
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+1
-0
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+1
-0
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+1
-0
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c
+0
-142
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.h
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.h
+0
-17
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
+124
-0
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+8
-2
No files found.
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
8b276ce2
...
...
@@ -45,7 +45,6 @@
#include "executables/nr-softmodem.h"
#include "executables/softmodem-common.h"
#include "PHY/NR_REFSIG/ul_ref_seq_nr.h"
#include "LAYER2/NR_MAC_UE/nr_l1_helpers.h"
//#define DEBUG_PUSCH_MAPPING
//#define DEBUG_MAC_PDU
...
...
@@ -142,7 +141,12 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
ulsch_ue
->
Nid_cell
=
Nid_cell
;
get_num_re_dmrs
(
pusch_pdu
,
&
nb_dmrs_re_per_rb
,
&
number_dmrs_symbols
);
for
(
int
i
=
start_symbol
;
i
<
start_symbol
+
number_of_symbols
;
i
++
)
{
if
((
ul_dmrs_symb_pos
>>
i
)
&
0x01
)
number_dmrs_symbols
+=
1
;
}
nb_dmrs_re_per_rb
=
((
dmrs_type
==
pusch_dmrs_type1
)
?
6
:
4
)
*
cdm_grps_no_data
;
LOG_D
(
PHY
,
"ulsch %x : start_rb %d bwp_start %d start_sc %d start_symbol %d num_symbols %d cdmgrpsnodata %d num_dmrs %d dmrs_re_per_rb %d
\n
"
,
rnti
,
start_rb
,
pusch_pdu
->
bwp_start
,
start_sc
,
start_symbol
,
number_of_symbols
,
cdm_grps_no_data
,
number_dmrs_symbols
,
nb_dmrs_re_per_rb
);
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
8b276ce2
...
...
@@ -27,6 +27,7 @@
#include <unistd.h>
#include "common/ran_context.h"
#include "common/config/config_userapi.h"
#include "common/utils/nr/nr_common.h"
#include "common/utils/LOG/log.h"
#include "LAYER2/NR_MAC_gNB/nr_mac_gNB.h"
#include "LAYER2/NR_MAC_UE/mac_defs.h"
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
8b276ce2
...
...
@@ -28,6 +28,7 @@
#include "common/config/config_userapi.h"
#include "common/utils/LOG/log.h"
#include "common/ran_context.h"
#include "common/utils/nr/nr_common.h"
#include "PHY/types.h"
#include "PHY/defs_nr_common.h"
#include "PHY/defs_nr_UE.h"
...
...
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
8b276ce2
...
...
@@ -47,6 +47,7 @@
#include "nr_unitary_defs.h"
#include "OCG_vars.h"
#include <openair2/LAYER2/MAC/mac_vars.h>
#include <openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h>
#include <openair2/RRC/LTE/rrc_vars.h>
#include <executables/softmodem-common.h>
#include <openair2/RRC/NR_UE/rrc_defs.h>
...
...
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c
View file @
8b276ce2
...
...
@@ -38,148 +38,6 @@
#include "LAYER2/NR_MAC_UE/nr_l1_helpers.h"
#include "NR_P-Max.h"
/* TS 38.321 subclause 7.3 - return DELTA_PREAMBLE values in dB */
int8_t
nr_get_DELTA_PREAMBLE
(
module_id_t
mod_id
,
int
CC_id
,
uint16_t
prach_format
){
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
mod_id
);
NR_RACH_ConfigCommon_t
*
nr_rach_ConfigCommon
=
(
mac
->
scc
!=
NULL
)
?
mac
->
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
:
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
rach_ConfigCommon
->
choice
.
setup
;
NR_SubcarrierSpacing_t
scs
=
*
nr_rach_ConfigCommon
->
msg1_SubcarrierSpacing
;
int
prach_sequence_length
=
(
mac
->
scc
!=
NULL
)
?
(
mac
->
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
prach_RootSequenceIndex
.
present
-
1
)
:
(
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
rach_ConfigCommon
->
choice
.
setup
->
prach_RootSequenceIndex
.
present
-
1
);
uint8_t
prachConfigIndex
,
mu
;
AssertFatal
(
CC_id
==
0
,
"Transmission on secondary CCs is not supported yet
\n
"
);
// SCS configuration from msg1_SubcarrierSpacing and table 4.2-1 in TS 38.211
switch
(
scs
){
case
NR_SubcarrierSpacing_kHz15
:
mu
=
0
;
break
;
case
NR_SubcarrierSpacing_kHz30
:
mu
=
1
;
break
;
case
NR_SubcarrierSpacing_kHz60
:
mu
=
2
;
break
;
case
NR_SubcarrierSpacing_kHz120
:
mu
=
3
;
break
;
case
NR_SubcarrierSpacing_kHz240
:
mu
=
4
;
break
;
case
NR_SubcarrierSpacing_spare3
:
mu
=
5
;
break
;
case
NR_SubcarrierSpacing_spare2
:
mu
=
6
;
break
;
case
NR_SubcarrierSpacing_spare1
:
mu
=
7
;
break
;
default:
AssertFatal
(
1
==
0
,
"Unknown msg1_SubcarrierSpacing %lu
\n
"
,
scs
);
}
// Preamble formats given by prach_ConfigurationIndex and tables 6.3.3.2-2 and 6.3.3.2-2 in TS 38.211
prachConfigIndex
=
nr_rach_ConfigCommon
->
rach_ConfigGeneric
.
prach_ConfigurationIndex
;
if
(
prach_sequence_length
==
0
)
{
AssertFatal
(
prach_format
<
4
,
"Illegal PRACH format %d for sequence length 839
\n
"
,
prach_format
);
switch
(
prach_format
)
{
// long preamble formats
case
0
:
case
3
:
return
0
;
case
1
:
return
-
3
;
case
2
:
return
-
6
;
}
}
else
{
switch
(
prach_format
)
{
// short preamble formats
case
0
:
case
3
:
return
8
+
3
*
mu
;
case
1
:
case
4
:
case
8
:
return
5
+
3
*
mu
;
case
2
:
case
5
:
return
3
+
3
*
mu
;
case
6
:
return
3
*
mu
;
case
7
:
return
5
+
3
*
mu
;
default:
AssertFatal
(
1
==
0
,
"[UE %d] ue_procedures.c: FATAL, Illegal preambleFormat %d, prachConfigIndex %d
\n
"
,
mod_id
,
prach_format
,
prachConfigIndex
);
}
}
return
0
;
}
// TS 38.321 subclause 5.1.3 - RA preamble transmission - ra_PREAMBLE_RECEIVED_TARGET_POWER configuration
// Measurement units:
// - preambleReceivedTargetPower dBm (-202..-60, 2 dBm granularity)
// - delta_preamble dB
// - RA_PREAMBLE_POWER_RAMPING_STEP dB
// - POWER_OFFSET_2STEP_RA dB
// returns receivedTargerPower in dBm
int
nr_get_Po_NOMINAL_PUSCH
(
NR_PRACH_RESOURCES_t
*
prach_resources
,
module_id_t
mod_id
,
uint8_t
CC_id
){
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
mod_id
);
int8_t
receivedTargerPower
;
int8_t
delta_preamble
;
NR_RACH_ConfigCommon_t
*
nr_rach_ConfigCommon
=
(
mac
->
scc
!=
NULL
)
?
mac
->
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
:
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
rach_ConfigCommon
->
choice
.
setup
;
long
preambleReceivedTargetPower
=
nr_rach_ConfigCommon
->
rach_ConfigGeneric
.
preambleReceivedTargetPower
;
delta_preamble
=
nr_get_DELTA_PREAMBLE
(
mod_id
,
CC_id
,
prach_resources
->
prach_format
);
receivedTargerPower
=
preambleReceivedTargetPower
+
delta_preamble
+
(
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_COUNTER
-
1
)
*
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_STEP
+
prach_resources
->
POWER_OFFSET_2STEP_RA
;
LOG_D
(
MAC
,
"In %s: receivedTargerPower is %d dBm
\n
"
,
__FUNCTION__
,
receivedTargerPower
);
return
receivedTargerPower
;
}
void
get_num_re_dmrs
(
nfapi_nr_ue_pusch_pdu_t
*
pusch_pdu
,
uint8_t
*
nb_dmrs_re_per_rb
,
uint16_t
*
number_dmrs_symbols
){
int
start_symbol
=
pusch_pdu
->
start_symbol_index
;
uint8_t
number_of_symbols
=
pusch_pdu
->
nr_of_symbols
;
uint16_t
ul_dmrs_symb_pos
=
pusch_pdu
->
ul_dmrs_symb_pos
;
uint8_t
dmrs_type
=
pusch_pdu
->
dmrs_config_type
;
uint8_t
cdm_grps_no_data
=
pusch_pdu
->
num_dmrs_cdm_grps_no_data
;
*
number_dmrs_symbols
=
0
;
for
(
int
i
=
start_symbol
;
i
<
start_symbol
+
number_of_symbols
;
i
++
)
{
if
((
ul_dmrs_symb_pos
>>
i
)
&
0x01
)
*
number_dmrs_symbols
+=
1
;
}
*
nb_dmrs_re_per_rb
=
((
dmrs_type
==
pusch_dmrs_type1
)
?
6
:
4
)
*
cdm_grps_no_data
;
}
// Implementation of 6.2.4 Configured ransmitted power
// 3GPP TS 38.101-1 version 16.5.0 Release 16
...
...
openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.h
View file @
8b276ce2
...
...
@@ -19,23 +19,6 @@
* contact@openairinterface.org
*/
void
get_num_re_dmrs
(
nfapi_nr_ue_pusch_pdu_t
*
pusch_pdu
,
uint8_t
*
nb_dmrs_re_per_rb
,
uint16_t
*
number_dmrs_symbols
);
/** \brief Function for UE/PHY to compute PUSCH transmit power in power-control procedure.
@param Mod_id Module id of UE
@returns Po_NOMINAL_PUSCH (PREAMBLE_RECEIVED_TARGET_POWER+DELTA_PREAMBLE
*/
int
nr_get_Po_NOMINAL_PUSCH
(
NR_PRACH_RESOURCES_t
*
prach_resources
,
module_id_t
module_idP
,
uint8_t
CC_id
);
/** \brief Function to compute DELTA_PREAMBLE from 38.321 subclause 7.3
(for RA power ramping procedure and Msg3 PUSCH power control policy)
@param Mod_id Module id of UE
@returns DELTA_PREAMBLE
*/
int8_t
nr_get_DELTA_PREAMBLE
(
module_id_t
mod_id
,
int
CC_id
,
uint16_t
prach_format
);
/** \brief Function to compute configured maximum output power according to clause 6.2.4 of 3GPP TS 38.101-1 version 16.5.0 Release 16
@param Mod_id Module id of UE
*/
...
...
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
8b276ce2
...
...
@@ -196,6 +196,130 @@ void init_RA(module_id_t mod_id,
}
}
/* TS 38.321 subclause 7.3 - return DELTA_PREAMBLE values in dB */
int8_t
nr_get_DELTA_PREAMBLE
(
module_id_t
mod_id
,
int
CC_id
,
uint16_t
prach_format
){
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
mod_id
);
NR_RACH_ConfigCommon_t
*
nr_rach_ConfigCommon
=
(
mac
->
scc
!=
NULL
)
?
mac
->
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
:
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
rach_ConfigCommon
->
choice
.
setup
;
NR_SubcarrierSpacing_t
scs
=
*
nr_rach_ConfigCommon
->
msg1_SubcarrierSpacing
;
int
prach_sequence_length
=
(
mac
->
scc
!=
NULL
)
?
(
mac
->
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
prach_RootSequenceIndex
.
present
-
1
)
:
(
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
rach_ConfigCommon
->
choice
.
setup
->
prach_RootSequenceIndex
.
present
-
1
);
uint8_t
prachConfigIndex
,
mu
;
AssertFatal
(
CC_id
==
0
,
"Transmission on secondary CCs is not supported yet
\n
"
);
// SCS configuration from msg1_SubcarrierSpacing and table 4.2-1 in TS 38.211
switch
(
scs
){
case
NR_SubcarrierSpacing_kHz15
:
mu
=
0
;
break
;
case
NR_SubcarrierSpacing_kHz30
:
mu
=
1
;
break
;
case
NR_SubcarrierSpacing_kHz60
:
mu
=
2
;
break
;
case
NR_SubcarrierSpacing_kHz120
:
mu
=
3
;
break
;
case
NR_SubcarrierSpacing_kHz240
:
mu
=
4
;
break
;
case
NR_SubcarrierSpacing_spare3
:
mu
=
5
;
break
;
case
NR_SubcarrierSpacing_spare2
:
mu
=
6
;
break
;
case
NR_SubcarrierSpacing_spare1
:
mu
=
7
;
break
;
default:
AssertFatal
(
1
==
0
,
"Unknown msg1_SubcarrierSpacing %lu
\n
"
,
scs
);
}
// Preamble formats given by prach_ConfigurationIndex and tables 6.3.3.2-2 and 6.3.3.2-2 in TS 38.211
prachConfigIndex
=
nr_rach_ConfigCommon
->
rach_ConfigGeneric
.
prach_ConfigurationIndex
;
if
(
prach_sequence_length
==
0
)
{
AssertFatal
(
prach_format
<
4
,
"Illegal PRACH format %d for sequence length 839
\n
"
,
prach_format
);
switch
(
prach_format
)
{
// long preamble formats
case
0
:
case
3
:
return
0
;
case
1
:
return
-
3
;
case
2
:
return
-
6
;
}
}
else
{
switch
(
prach_format
)
{
// short preamble formats
case
0
:
case
3
:
return
8
+
3
*
mu
;
case
1
:
case
4
:
case
8
:
return
5
+
3
*
mu
;
case
2
:
case
5
:
return
3
+
3
*
mu
;
case
6
:
return
3
*
mu
;
case
7
:
return
5
+
3
*
mu
;
default:
AssertFatal
(
1
==
0
,
"[UE %d] ue_procedures.c: FATAL, Illegal preambleFormat %d, prachConfigIndex %d
\n
"
,
mod_id
,
prach_format
,
prachConfigIndex
);
}
}
return
0
;
}
// TS 38.321 subclause 5.1.3 - RA preamble transmission - ra_PREAMBLE_RECEIVED_TARGET_POWER configuration
// Measurement units:
// - preambleReceivedTargetPower dBm (-202..-60, 2 dBm granularity)
// - delta_preamble dB
// - RA_PREAMBLE_POWER_RAMPING_STEP dB
// - POWER_OFFSET_2STEP_RA dB
// returns receivedTargerPower in dBm
int
nr_get_Po_NOMINAL_PUSCH
(
NR_PRACH_RESOURCES_t
*
prach_resources
,
module_id_t
mod_id
,
uint8_t
CC_id
){
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
mod_id
);
int8_t
receivedTargerPower
;
int8_t
delta_preamble
;
NR_RACH_ConfigCommon_t
*
nr_rach_ConfigCommon
=
(
mac
->
scc
!=
NULL
)
?
mac
->
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
:
mac
->
scc_SIB
->
uplinkConfigCommon
->
initialUplinkBWP
.
rach_ConfigCommon
->
choice
.
setup
;
long
preambleReceivedTargetPower
=
nr_rach_ConfigCommon
->
rach_ConfigGeneric
.
preambleReceivedTargetPower
;
delta_preamble
=
nr_get_DELTA_PREAMBLE
(
mod_id
,
CC_id
,
prach_resources
->
prach_format
);
receivedTargerPower
=
preambleReceivedTargetPower
+
delta_preamble
+
(
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_COUNTER
-
1
)
*
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_STEP
+
prach_resources
->
POWER_OFFSET_2STEP_RA
;
LOG_D
(
MAC
,
"In %s: receivedTargerPower is %d dBm
\n
"
,
__FUNCTION__
,
receivedTargerPower
);
return
receivedTargerPower
;
}
void
ssb_rach_config
(
RA_config_t
*
ra
,
NR_PRACH_RESOURCES_t
*
prach_resources
,
NR_RACH_ConfigCommon_t
*
nr_rach_ConfigCommon
,
fapi_nr_ul_config_prach_pdu
*
prach_pdu
){
// Determine the SSB to RACH mapping ratio
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
8b276ce2
...
...
@@ -45,7 +45,6 @@
#include "NR_MAC_COMMON/nr_mac.h"
#include "NR_MAC_UE/mac_proto.h"
#include "NR_MAC_UE/mac_extern.h"
#include "NR_MAC_UE/nr_l1_helpers.h"
/* utils */
#include "assertions.h"
...
...
@@ -843,7 +842,14 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
return
-
1
;
}
get_num_re_dmrs
(
pusch_config_pdu
,
&
nb_dmrs_re_per_rb
,
&
number_dmrs_symbols
);
int
start_symbol
=
pusch_config_pdu
->
start_symbol_index
;
int
number_of_symbols
=
pusch_config_pdu
->
nr_of_symbols
;
for
(
int
i
=
start_symbol
;
i
<
start_symbol
+
number_of_symbols
;
i
++
)
{
if
((
pusch_config_pdu
->
ul_dmrs_symb_pos
>>
i
)
&
0x01
)
number_dmrs_symbols
+=
1
;
}
nb_dmrs_re_per_rb
=
((
pusch_config_pdu
->
dmrs_config_type
==
pusch_dmrs_type1
)
?
6
:
4
)
*
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
;
// Compute TBS
pusch_config_pdu
->
pusch_data
.
tb_size
=
nr_compute_tbs
(
pusch_config_pdu
->
qam_mod_order
,
...
...
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