Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG UE
Commits
2d1a4510
Commit
2d1a4510
authored
Apr 16, 2020
by
Ahmed Hussein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moving get_L_ptrs and get_K_ptrs from PHY to MAC
parent
71ab99d6
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
102 additions
and
79 deletions
+102
-79
executables/nr-ue.c
executables/nr-ue.c
+11
-2
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+7
-7
openair1/PHY/NR_REFSIG/ptrs_nr.c
openair1/PHY/NR_REFSIG/ptrs_nr.c
+0
-61
openair1/PHY/NR_REFSIG/ptrs_nr.h
openair1/PHY/NR_REFSIG/ptrs_nr.h
+0
-4
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+2
-3
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+11
-2
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+56
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+12
-0
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+3
-0
No files found.
executables/nr-ue.c
View file @
2d1a4510
...
@@ -359,9 +359,9 @@ static void UE_synch(void *arg) {
...
@@ -359,9 +359,9 @@ static void UE_synch(void *arg) {
void
processSlotTX
(
PHY_VARS_NR_UE
*
UE
,
UE_nr_rxtx_proc_t
*
proc
)
{
void
processSlotTX
(
PHY_VARS_NR_UE
*
UE
,
UE_nr_rxtx_proc_t
*
proc
)
{
uint32_t
rb_size
,
rb_start
;
uint32_t
rb_size
,
rb_start
;
uint16_t
rnti
,
l_prime_mask
,
n_rb0
,
n_rb1
;
uint8_t
nr_of_symbols
,
start_symbol_index
,
mcs_index
,
mcs_table
,
nrOfLayers
,
harq_process_id
,
rv_index
,
dmrs_config_type
;
uint8_t
nr_of_symbols
,
start_symbol_index
,
mcs_index
,
mcs_table
,
nrOfLayers
,
harq_process_id
,
rv_index
,
dmrs_config_type
;
uint16_t
rnti
,
l_prime_mask
;
uint8_t
ptrs_mcs1
,
ptrs_mcs2
,
ptrs_mcs3
,
ptrs_time_density
,
ptrs_freq_density
;
nr_dcireq_t
dcireq
;
nr_dcireq_t
dcireq
;
nr_scheduled_response_t
scheduled_response
;
nr_scheduled_response_t
scheduled_response
;
...
@@ -394,6 +394,13 @@ void processSlotTX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
...
@@ -394,6 +394,13 @@ void processSlotTX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
rv_index
=
0
;
rv_index
=
0
;
l_prime_mask
=
get_l_prime
(
nr_of_symbols
,
typeB
,
pusch_dmrs_pos0
,
pusch_len1
);
l_prime_mask
=
get_l_prime
(
nr_of_symbols
,
typeB
,
pusch_dmrs_pos0
,
pusch_len1
);
dmrs_config_type
=
0
;
dmrs_config_type
=
0
;
ptrs_mcs1
=
2
;
ptrs_mcs2
=
4
;
ptrs_mcs3
=
10
;
n_rb0
=
25
;
n_rb1
=
75
;
ptrs_time_density
=
get_L_ptrs
(
ptrs_mcs1
,
ptrs_mcs2
,
ptrs_mcs3
,
mcs_index
);
ptrs_freq_density
=
get_K_ptrs
(
n_rb0
,
n_rb1
,
rb_size
);
//------------------------------------------------------------------------------//
//------------------------------------------------------------------------------//
scheduled_response
.
ul_config
->
slot
=
8
;
scheduled_response
.
ul_config
->
slot
=
8
;
...
@@ -412,6 +419,8 @@ void processSlotTX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
...
@@ -412,6 +419,8 @@ void processSlotTX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
scheduled_response
.
ul_config
->
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
rv_index
=
rv_index
;
scheduled_response
.
ul_config
->
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
rv_index
=
rv_index
;
scheduled_response
.
ul_config
->
ul_config_list
[
0
].
pusch_config_pdu
.
nrOfLayers
=
nrOfLayers
;
scheduled_response
.
ul_config
->
ul_config_list
[
0
].
pusch_config_pdu
.
nrOfLayers
=
nrOfLayers
;
scheduled_response
.
ul_config
->
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
harq_process_id
=
harq_process_id
;
scheduled_response
.
ul_config
->
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
harq_process_id
=
harq_process_id
;
scheduled_response
.
ul_config
->
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_ptrs
.
ptrs_time_density
=
ptrs_time_density
;
scheduled_response
.
ul_config
->
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_ptrs
.
ptrs_freq_density
=
ptrs_freq_density
;
nr_ue_scheduled_response
(
&
scheduled_response
);
nr_ue_scheduled_response
(
&
scheduled_response
);
...
...
openair1/PHY/INIT/nr_init_ue.c
View file @
2d1a4510
...
@@ -658,7 +658,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
...
@@ -658,7 +658,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
fp
->
nb_antennas_tx
=
1
;
fp
->
nb_antennas_tx
=
1
;
fp
->
nb_antennas_rx
=
1
;
fp
->
nb_antennas_rx
=
1
;
// dmrs_UplinkConfig_t *dmrs_Uplink_Config = &ue->pusch_config.dmrs_UplinkConfig;
// dmrs_UplinkConfig_t *dmrs_Uplink_Config = &ue->pusch_config.dmrs_UplinkConfig;
ptrs_UplinkConfig_t
*
ptrs_Uplink_Config
=
&
ue
->
pusch_config
.
dmrs_UplinkConfig
.
ptrs_UplinkConfig
;
//
ptrs_UplinkConfig_t *ptrs_Uplink_Config = &ue->pusch_config.dmrs_UplinkConfig.ptrs_UplinkConfig;
printf
(
"Initializing UE vars (abstraction %"
PRIu8
") for eNB TXant %"
PRIu8
", UE RXant %"
PRIu8
"
\n
"
,
abstraction_flag
,
fp
->
nb_antennas_tx
,
fp
->
nb_antennas_rx
);
printf
(
"Initializing UE vars (abstraction %"
PRIu8
") for eNB TXant %"
PRIu8
", UE RXant %"
PRIu8
"
\n
"
,
abstraction_flag
,
fp
->
nb_antennas_tx
,
fp
->
nb_antennas_rx
);
//LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]\n", ue->Mod_id+NB_eNB_INST);
//LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]\n", ue->Mod_id+NB_eNB_INST);
phy_init_nr_top
(
ue
);
phy_init_nr_top
(
ue
);
...
@@ -748,12 +748,12 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
...
@@ -748,12 +748,12 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
ue
->
ptrs_configured
=
0
;
// flag to be toggled by RCC
ue
->
ptrs_configured
=
0
;
// flag to be toggled by RCC
//------------- config PTRS parameters--------------//
//------------- config PTRS parameters--------------//
ptrs_Uplink_Config
->
timeDensity
.
ptrs_mcs1
=
0
;
// setting MCS values to 0 indicate abscence of time_density field in the configuration
// ptrs_Uplink_Config->timeDensity.ptrs_mcs1 = 2
; // setting MCS values to 0 indicate abscence of time_density field in the configuration
ptrs_Uplink_Config
->
timeDensity
.
ptrs_mcs2
=
0
;
// ptrs_Uplink_Config->timeDensity.ptrs_mcs2 = 4
;
ptrs_Uplink_Config
->
timeDensity
.
ptrs_mcs3
=
0
;
// ptrs_Uplink_Config->timeDensity.ptrs_mcs3 = 1
0;
ptrs_Uplink_Config
->
frequencyDensity
.
n_rb0
=
0
;
// setting N_RB values to 0 indicate abscence of frequency_density field in the configuration
// ptrs_Uplink_Config->frequencyDensity.n_rb0 = 25
; // setting N_RB values to 0 indicate abscence of frequency_density field in the configuration
ptrs_Uplink_Config
->
frequencyDensity
.
n_rb1
=
0
;
// ptrs_Uplink_Config->frequencyDensity.n_rb1 = 75
;
ptrs_Uplink_Config
->
resourceElementOffset
=
0
;
//
ptrs_Uplink_Config->resourceElementOffset = 0;
//-------------------------------------------------//
//-------------------------------------------------//
///////////
///////////
...
...
openair1/PHY/NR_REFSIG/ptrs_nr.c
View file @
2d1a4510
...
@@ -81,35 +81,7 @@ int16_t get_kRE_ref(uint8_t dmrs_antenna_port, uint8_t pusch_dmrs_type, uint8_t
...
@@ -81,35 +81,7 @@ int16_t get_kRE_ref(uint8_t dmrs_antenna_port, uint8_t pusch_dmrs_type, uint8_t
}
}
/*******************************************************************
*
* NAME : get_K_ptrs
*
* PARAMETERS : ptrs_UplinkConfig PTRS uplink configuration
* N_RB number of RBs scheduled for PUSCH
*
* RETURN : the parameter K_ptrs
*
* DESCRIPTION : 3GPP TS 38.214 6.2.3 Table 6.2.3.1-2
*
*********************************************************************/
uint8_t
get_K_ptrs
(
ptrs_UplinkConfig_t
*
ptrs_UplinkConfig
,
uint16_t
N_RB
)
{
uint16_t
nrb0
,
nrb1
;
nrb0
=
ptrs_UplinkConfig
->
frequencyDensity
.
n_rb0
;
nrb1
=
ptrs_UplinkConfig
->
frequencyDensity
.
n_rb1
;
if
(
nrb0
==
0
||
nrb0
==
0
)
return
2
;
if
(
N_RB
<
nrb0
)
{
LOG_I
(
PHY
,
"PUSH PT-RS is not present.
\n
"
);
return
0
;
}
else
if
(
N_RB
>=
nrb0
&&
N_RB
<
nrb1
)
return
2
;
else
return
4
;
}
/*******************************************************************
/*******************************************************************
*
*
...
@@ -162,39 +134,6 @@ void set_ptrs_symb_idx(uint16_t *ptrs_symbols,
...
@@ -162,39 +134,6 @@ void set_ptrs_symb_idx(uint16_t *ptrs_symbols,
}
}
}
}
/*******************************************************************
*
* NAME : get_L_ptrs
*
* PARAMETERS : ptrs_UplinkConfig PTRS uplink configuration
* I_mcs MCS index used for PUSCH
*
* RETURN : the parameter L_ptrs
*
* DESCRIPTION : 3GPP TS 38.214 6.2.3 Table 6.2.3.1-1
*
*********************************************************************/
uint8_t
get_L_ptrs
(
ptrs_UplinkConfig_t
*
ptrs_UplinkConfig
,
uint8_t
I_mcs
)
{
uint8_t
mcs1
,
mcs2
,
mcs3
;
mcs1
=
ptrs_UplinkConfig
->
timeDensity
.
ptrs_mcs1
;
mcs2
=
ptrs_UplinkConfig
->
timeDensity
.
ptrs_mcs2
;
mcs3
=
ptrs_UplinkConfig
->
timeDensity
.
ptrs_mcs3
;
if
(
mcs1
==
0
||
mcs2
==
0
||
mcs3
==
0
)
return
1
;
if
(
I_mcs
<
mcs1
)
{
LOG_I
(
PHY
,
"PUSH PT-RS is not present.
\n
"
);
return
0
;
}
else
if
(
I_mcs
>=
mcs1
&&
I_mcs
<
mcs2
)
return
4
;
else
if
(
I_mcs
>=
mcs2
&&
I_mcs
<
mcs3
)
return
2
;
else
return
1
;
}
/*******************************************************************
/*******************************************************************
*
*
* NAME : is_ptrs_subcarrier
* NAME : is_ptrs_subcarrier
...
...
openair1/PHY/NR_REFSIG/ptrs_nr.h
View file @
2d1a4510
...
@@ -49,16 +49,12 @@
...
@@ -49,16 +49,12 @@
int16_t
get_kRE_ref
(
uint8_t
dmrs_antenna_port
,
uint8_t
pusch_dmrs_type
,
uint8_t
resourceElementOffset
);
int16_t
get_kRE_ref
(
uint8_t
dmrs_antenna_port
,
uint8_t
pusch_dmrs_type
,
uint8_t
resourceElementOffset
);
uint8_t
get_K_ptrs
(
ptrs_UplinkConfig_t
*
ptrs_UplinkConfig
,
uint16_t
N_RB
);
void
set_ptrs_symb_idx
(
uint16_t
*
ptrs_symbols
,
void
set_ptrs_symb_idx
(
uint16_t
*
ptrs_symbols
,
uint8_t
duration_in_symbols
,
uint8_t
duration_in_symbols
,
uint8_t
start_symbol
,
uint8_t
start_symbol
,
uint8_t
L_ptrs
,
uint8_t
L_ptrs
,
uint16_t
ul_dmrs_symb_pos
);
uint16_t
ul_dmrs_symb_pos
);
uint8_t
get_L_ptrs
(
ptrs_UplinkConfig_t
*
ptrs_UplinkConfig
,
uint8_t
I_mcs
);
uint8_t
is_ptrs_subcarrier
(
uint16_t
k
,
uint8_t
K_ptrs
,
uint16_t
n_rnti
,
uint16_t
N_RB
,
int16_t
k_RE_ref
,
uint16_t
start_sc
);
uint8_t
is_ptrs_subcarrier
(
uint16_t
k
,
uint8_t
K_ptrs
,
uint16_t
n_rnti
,
uint16_t
N_RB
,
int16_t
k_RE_ref
,
uint16_t
start_sc
);
uint8_t
is_ptrs_symbol
(
uint8_t
l
,
uint8_t
is_ptrs_symbol
(
uint8_t
l
,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
2d1a4510
...
@@ -284,9 +284,8 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
...
@@ -284,9 +284,8 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
if
(
UE
->
ptrs_configured
==
1
)
{
if
(
UE
->
ptrs_configured
==
1
)
{
K_ptrs
=
get_K_ptrs
(
ptrs_Uplink_Config
,
nb_rb
);
K_ptrs
=
harq_process_ul_ue
->
pusch_pdu
.
pusch_ptrs
.
ptrs_freq_density
;
L_ptrs
=
harq_process_ul_ue
->
pusch_pdu
.
pusch_ptrs
.
ptrs_time_density
;
L_ptrs
=
get_L_ptrs
(
ptrs_Uplink_Config
,
mcs
);
beta_ptrs
=
1
;
// temp value until power control is implemented
beta_ptrs
=
1
;
// temp value until power control is implemented
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
2d1a4510
...
@@ -501,9 +501,15 @@ int main(int argc, char **argv)
...
@@ -501,9 +501,15 @@ int main(int argc, char **argv)
uint8_t
nb_re_dmrs
;
uint8_t
nb_re_dmrs
;
unsigned
char
mod_order
;
unsigned
char
mod_order
;
uint16_t
code_rate
;
uint16_t
code_rate
;
uint8_t
ptrs_mcs1
=
2
;
uint8_t
ptrs_mcs2
=
4
;
uint8_t
ptrs_mcs3
=
10
;
uint16_t
n_rb0
=
25
;
uint16_t
n_rb1
=
75
;
uint8_t
length_dmrs
=
pusch_len1
;
// [hna] remove dmrs struct
uint8_t
length_dmrs
=
pusch_len1
;
// [hna] remove dmrs struct
uint16_t
l_prime_mask
=
get_l_prime
(
nb_symb_sch
,
typeB
,
pusch_dmrs_pos0
,
length_dmrs
);
// [hna] remove dmrs struct
uint16_t
l_prime_mask
=
get_l_prime
(
nb_symb_sch
,
typeB
,
pusch_dmrs_pos0
,
length_dmrs
);
// [hna] remove dmrs struct
uint8_t
ptrs_time_density
=
get_L_ptrs
(
ptrs_mcs1
,
ptrs_mcs2
,
ptrs_mcs3
,
Imcs
);
uint8_t
ptrs_freq_density
=
get_K_ptrs
(
n_rb0
,
n_rb1
,
nb_rb
);
for
(
i
=
0
;
i
<
nb_symb_sch
;
i
++
)
{
for
(
i
=
0
;
i
<
nb_symb_sch
;
i
++
)
{
number_dmrs_symbols
+=
(
l_prime_mask
>>
i
)
&
0x01
;
number_dmrs_symbols
+=
(
l_prime_mask
>>
i
)
&
0x01
;
...
@@ -568,7 +574,8 @@ int main(int argc, char **argv)
...
@@ -568,7 +574,8 @@ int main(int argc, char **argv)
pusch_pdu
->
pusch_data
.
harq_process_id
=
0
;
pusch_pdu
->
pusch_data
.
harq_process_id
=
0
;
pusch_pdu
->
pusch_data
.
new_data_indicator
=
0
;
pusch_pdu
->
pusch_data
.
new_data_indicator
=
0
;
pusch_pdu
->
pusch_data
.
num_cb
=
0
;
pusch_pdu
->
pusch_data
.
num_cb
=
0
;
pusch_pdu
->
pusch_ptrs
.
ptrs_time_density
=
ptrs_time_density
;
pusch_pdu
->
pusch_ptrs
.
ptrs_freq_density
=
ptrs_freq_density
;
// --------- setting parameters for UE --------
// --------- setting parameters for UE --------
...
@@ -596,6 +603,8 @@ int main(int argc, char **argv)
...
@@ -596,6 +603,8 @@ int main(int argc, char **argv)
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
rv_index
=
0
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
rv_index
=
0
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
nrOfLayers
=
precod_nbr_layers
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
nrOfLayers
=
precod_nbr_layers
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
harq_process_id
=
harq_pid
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_data
.
harq_process_id
=
harq_pid
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_ptrs
.
ptrs_time_density
=
ptrs_time_density
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
pusch_ptrs
.
ptrs_freq_density
=
ptrs_freq_density
;
//there are plenty of other parameters that we don't seem to be using for now. e.g.
//there are plenty of other parameters that we don't seem to be using for now. e.g.
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
absolute_delta_PUSCH
=
0
;
ul_config
.
ul_config_list
[
0
].
pusch_config_pdu
.
absolute_delta_PUSCH
=
0
;
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
2d1a4510
...
@@ -602,6 +602,62 @@ int32_t get_l_prime(uint8_t duration_in_symbols, uint8_t mapping_type, pusch_dmr
...
@@ -602,6 +602,62 @@ int32_t get_l_prime(uint8_t duration_in_symbols, uint8_t mapping_type, pusch_dmr
return
l_prime
;
return
l_prime
;
}
}
/*******************************************************************
*
* NAME : get_L_ptrs
*
* PARAMETERS : ptrs_UplinkConfig PTRS uplink configuration
* I_mcs MCS index used for PUSCH
*
* RETURN : the parameter L_ptrs
*
* DESCRIPTION : 3GPP TS 38.214 6.2.3 Table 6.2.3.1-1
*
*********************************************************************/
uint8_t
get_L_ptrs
(
uint8_t
mcs1
,
uint8_t
mcs2
,
uint8_t
mcs3
,
uint8_t
I_mcs
)
{
if
(
mcs1
==
0
||
mcs2
==
0
||
mcs3
==
0
)
return
1
;
if
(
I_mcs
<
mcs1
)
{
LOG_I
(
PHY
,
"PUSH PT-RS is not present.
\n
"
);
return
0
;
}
else
if
(
I_mcs
>=
mcs1
&&
I_mcs
<
mcs2
)
return
4
;
else
if
(
I_mcs
>=
mcs2
&&
I_mcs
<
mcs3
)
return
2
;
else
return
1
;
}
/*******************************************************************
*
* NAME : get_K_ptrs
*
* PARAMETERS : ptrs_UplinkConfig PTRS uplink configuration
* N_RB number of RBs scheduled for PUSCH
*
* RETURN : the parameter K_ptrs
*
* DESCRIPTION : 3GPP TS 38.214 6.2.3 Table 6.2.3.1-2
*
*********************************************************************/
uint8_t
get_K_ptrs
(
uint16_t
nrb0
,
uint16_t
nrb1
,
uint16_t
N_RB
)
{
if
(
nrb0
==
0
||
nrb0
==
0
)
return
2
;
if
(
N_RB
<
nrb0
)
{
LOG_I
(
PHY
,
"PUSH PT-RS is not present.
\n
"
);
return
0
;
}
else
if
(
N_RB
>=
nrb0
&&
N_RB
<
nrb1
)
return
2
;
else
return
4
;
}
uint16_t
nr_dci_size
(
nr_dci_format_t
format
,
uint16_t
nr_dci_size
(
nr_dci_format_t
format
,
nr_rnti_type_t
rnti_type
,
nr_rnti_type_t
rnti_type
,
uint16_t
N_RB
)
{
uint16_t
N_RB
)
{
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
2d1a4510
...
@@ -785,6 +785,18 @@ void nr_schedule_uss_ulsch_phytest(int Mod_idP,
...
@@ -785,6 +785,18 @@ void nr_schedule_uss_ulsch_phytest(int Mod_idP,
// and for each bit 0: DMRS port not used 1: DMRS port used
// and for each bit 0: DMRS port not used 1: DMRS port used
// --------------------------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------------------------
// --------------------
// ------- PTRS -------
// --------------------
uint8_t
ptrs_mcs1
=
2
;
uint8_t
ptrs_mcs2
=
4
;
uint8_t
ptrs_mcs3
=
10
;
uint16_t
n_rb0
=
25
;
uint16_t
n_rb1
=
75
;
pusch_pdu
->
pusch_ptrs
.
ptrs_time_density
=
get_L_ptrs
(
ptrs_mcs1
,
ptrs_mcs2
,
ptrs_mcs3
,
pusch_pdu
->
mcs_index
);
pusch_pdu
->
pusch_ptrs
.
ptrs_freq_density
=
get_K_ptrs
(
n_rb0
,
n_rb1
,
pusch_pdu
->
rb_size
);
// --------------------------------------------------------------------------------------------------------------------------------------------
//Pusch Allocation in frequency domain [TS38.214, sec 6.1.2.2]
//Pusch Allocation in frequency domain [TS38.214, sec 6.1.2.2]
//Optional Data only included if indicated in pduBitmap
//Optional Data only included if indicated in pduBitmap
pusch_pdu
->
pusch_data
.
rv_index
=
0
;
pusch_pdu
->
pusch_data
.
rv_index
=
0
;
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
2d1a4510
...
@@ -165,6 +165,9 @@ int get_num_dmrs(uint16_t dmrs_mask );
...
@@ -165,6 +165,9 @@ int get_num_dmrs(uint16_t dmrs_mask );
uint8_t
get_l0_ul
(
uint8_t
mapping_type
,
uint8_t
dmrs_typeA_position
);
uint8_t
get_l0_ul
(
uint8_t
mapping_type
,
uint8_t
dmrs_typeA_position
);
int32_t
get_l_prime
(
uint8_t
duration_in_symbols
,
uint8_t
mapping_type
,
pusch_dmrs_AdditionalPosition_t
additional_pos
,
pusch_maxLength_t
pusch_maxLength
);
int32_t
get_l_prime
(
uint8_t
duration_in_symbols
,
uint8_t
mapping_type
,
pusch_dmrs_AdditionalPosition_t
additional_pos
,
pusch_maxLength_t
pusch_maxLength
);
uint8_t
get_L_ptrs
(
uint8_t
mcs1
,
uint8_t
mcs2
,
uint8_t
mcs3
,
uint8_t
I_mcs
);
uint8_t
get_K_ptrs
(
uint16_t
nrb0
,
uint16_t
nrb1
,
uint16_t
N_RB
);
uint16_t
nr_dci_size
(
nr_dci_format_t
format
,
uint16_t
nr_dci_size
(
nr_dci_format_t
format
,
nr_rnti_type_t
rnti_type
,
nr_rnti_type_t
rnti_type
,
uint16_t
N_RB
);
uint16_t
N_RB
);
...
...
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