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
wangjie
OpenXG-RAN
Commits
261b586e
Commit
261b586e
authored
Sep 03, 2018
by
Guy De Souza
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Time domain alloc type DLSCH
parent
5141341c
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
301 additions
and
7 deletions
+301
-7
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
+15
-1
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+31
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
+35
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
+75
-0
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+141
-4
openair1/SCHED_NR/phy_procedures_nr_common.c
openair1/SCHED_NR/phy_procedures_nr_common.c
+2
-0
targets/RT/USER/nr-softmodem.c
targets/RT/USER/nr-softmodem.c
+2
-2
No files found.
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
View file @
261b586e
...
@@ -278,6 +278,13 @@ typedef enum {
...
@@ -278,6 +278,13 @@ typedef enum {
NFAPI_NR_SEARCH_SPACE_TYPE_UE_SPECIFIC
NFAPI_NR_SEARCH_SPACE_TYPE_UE_SPECIFIC
}
nfapi_nr_search_space_type_e
;
}
nfapi_nr_search_space_type_e
;
typedef
enum
{
NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_0
=
0
,
NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_0A
,
NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_1
,
NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_2
}
nfapi_nr_common_search_space_type_e
;
typedef
enum
{
typedef
enum
{
NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE1
=
0
,
NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE1
=
0
,
NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE2
,
NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE2
,
...
@@ -299,6 +306,12 @@ typedef enum {
...
@@ -299,6 +306,12 @@ typedef enum {
NFAPI_NR_CSET_ALL_CONTIGUOUS_RBS
NFAPI_NR_CSET_ALL_CONTIGUOUS_RBS
}
nfapi_nr_coreset_precoder_granularity_type_e
;
}
nfapi_nr_coreset_precoder_granularity_type_e
;
typedef
enum
{
NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_A
=
0
,
NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_B
,
NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_C
}
nfapi_nr_pdsch_time_domain_alloc_type_e
;
// P7 Sub Structures
// P7 Sub Structures
typedef
struct
{
typedef
struct
{
...
@@ -406,7 +419,8 @@ typedef struct {
...
@@ -406,7 +419,8 @@ typedef struct {
uint8_t
rnti_type
;
uint8_t
rnti_type
;
uint8_t
dci_format
;
uint8_t
dci_format
;
uint8_t
config_type
;
uint8_t
config_type
;
uint8_t
search_space_type
;
uint8_t
search_space_type
;
uint8_t
common_search_space_type
;
uint8_t
aggregation_level
;
uint8_t
aggregation_level
;
uint8_t
n_rb
;
uint8_t
n_rb
;
uint8_t
n_symb
;
uint8_t
n_symb
;
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
0 → 100644
View file @
261b586e
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file PHY/LTE_TRANSPORT/dlsch_decoding.c
* \brief Top-level routines for decoding Turbo-coded (DLSCH) transport channels from 36-212, V8.6 2009-03
* \author R. Knopp
* \date 2011
* \version 0.1
* \company Eurecom
* \email: knopp@eurecom.fr
* \note
* \warning
*/
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
0 → 100644
View file @
261b586e
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file PHY/LTE_TRANSPORT/defs.h
* \brief data structures for PDSCH/DLSCH/PUSCH/ULSCH physical and transport channel descriptors (TX/RX)
* \author R. Knopp
* \date 2011
* \version 0.1
* \company Eurecom
* \email: raymond.knopp@eurecom.fr, florian.kaltenberger@eurecom.fr, oscar.tonelli@yahoo.it
* \note
* \warning
*/
#include "PHY/defs_gNB.h"
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
0 → 100644
View file @
261b586e
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file PHY/LTE_TRANSPORT/dlsch_decoding.c
* \brief Top-level routines for decoding Turbo-coded (DLSCH) transport channels from 36-212, V8.6 2009-03
* \author R. Knopp
* \date 2011
* \version 0.1
* \company Eurecom
* \email: knopp@eurecom.fr
* \note
* \warning
*/
#include "nr_dlsch.h"
void
nr_get_time_domain_allocation_type
(
nfapi_nr_config_request_t
config
,
NR_gNB_DCI_ALLOC_t
dci_alloc
,
NR_gNB_DLSCH_t
*
dlsch
)
{
nfapi_nr_ssb_and_cset_mux_pattern_type_e
mux_pattern
=
dci_alloc
.
mux_pattern
;
switch
(
dci_alloc
.
rnti_type
)
{
case
NFAPI_NR_RNTI_SI
:
AssertFatal
(
dci_alloc
.
pdcch_params
.
common_search_space_type
==
NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_0
,
"Invalid common search space type %d for SI RNTI, expected %d
\n
"
,
dci_alloc
.
pdcch_params
.
common_search_space_type
,
NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_0
);
dlsch
->
time_alloc_type
=
(
mux_pattern
==
NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE1
)
?
NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_A
:
(
mux_pattern
==
NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE2
)
?
NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_B
:
(
mux_pattern
==
NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE3
)
?
NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_C
;
break
;
case
NFAPI_NR_RNTI_RA
:
case
NFAPI_NR_RNTI_TC
:
/*AssertFatal(dci_alloc.pdcch_params.common_search_space_type == NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_1,
"Invalid common search space type %d for RNTI %d, expected %d\n",dci_alloc.pdcch_params.common_search_space_type,
NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_1, dci_alloc.rnti_type);*/
if
(
!
dlsch
->
time_alloc_list_flag
)
dlsch
->
time_alloc_type
=
NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_A
;
break
;
case
NFAPI_NR_RNTI_P
:
break
;
case
NFAPI_NR_RNTI_C
:
case
NFAPI_NR_RNTI_CS
:
if
()
break
;
case
}
}
openair1/PHY/defs_gNB.h
View file @
261b586e
...
@@ -64,6 +64,143 @@ typedef struct {
...
@@ -64,6 +64,143 @@ typedef struct {
NR_gNB_DCI_ALLOC_t
dci_alloc
[
256
];
NR_gNB_DCI_ALLOC_t
dci_alloc
[
256
];
}
NR_gNB_PDCCH
;
}
NR_gNB_PDCCH
;
typedef
struct
{
/* /// Status Flag indicating for this DLSCH (idle,active,disabled)
//SCH_status_t status;
/// Transport block size
uint32_t TBS;
/// pointer to pdu from MAC interface (this is "a" in 36.212)
uint8_t *pdu;
/// The payload + CRC size in bits, "B" from 36-212
uint32_t B;
/// Pointer to the payload
uint8_t *b;
/// Pointers to transport block segments
uint8_t *c[MAX_NUM_DLSCH_SEGMENTS];
/// RTC values for each segment (for definition see 36-212 V8.6 2009-03, p.15)
uint32_t RTC[MAX_NUM_DLSCH_SEGMENTS];
/// Frame where current HARQ round was sent
uint32_t frame;
/// Subframe where current HARQ round was sent
uint32_t subframe;
/// Index of current HARQ round for this DLSCH
uint8_t round;
/// Modulation order
uint8_t Qm;
/// MCS
uint8_t mcs;
/// Redundancy-version of the current sub-frame
uint8_t rvidx;
/// MIMO mode for this DLSCH
MIMO_mode_t mimo_mode;
/// Current RB allocation
uint32_t rb_alloc[4];
/// distributed/localized flag
vrb_t vrb_type;
/// Current subband PMI allocation
uint16_t pmi_alloc;
/// Current subband RI allocation
uint32_t ri_alloc;
/// Current subband CQI1 allocation
uint32_t cqi_alloc1;
/// Current subband CQI2 allocation
uint32_t cqi_alloc2;
/// Current Number of RBs
uint16_t nb_rb;
/// Current NDI
uint8_t ndi;
/// downlink power offset field
uint8_t dl_power_off;
/// start symbold of pdsch
uint8_t pdsch_start;
/// Concatenated "e"-sequences (for definition see 36-212 V8.6 2009-03, p.17-18)
uint8_t e[MAX_NUM_CHANNEL_BITS] __attribute__((aligned(32)));
/// Turbo-code outputs (36-212 V8.6 2009-03, p.12
uint8_t *d[MAX_NUM_DLSCH_SEGMENTS];//[(96+3+(3*6144))];
/// Sub-block interleaver outputs (36-212 V8.6 2009-03, p.16-17)
uint8_t w[MAX_NUM_DLSCH_SEGMENTS][3*6144];
/// Number of code segments (for definition see 36-212 V8.6 2009-03, p.9)
uint32_t C;
/// Number of "small" code segments (for definition see 36-212 V8.6 2009-03, p.10)
uint32_t Cminus;
/// Number of "large" code segments (for definition see 36-212 V8.6 2009-03, p.10)
uint32_t Cplus;
/// Number of bits in "small" code segments (<6144) (for definition see 36-212 V8.6 2009-03, p.10)
uint32_t Kminus;
/// Number of bits in "large" code segments (<6144) (for definition see 36-212 V8.6 2009-03, p.10)
uint32_t Kplus;
/// Number of "Filler" bits (for definition see 36-212 V8.6 2009-03, p.10)
uint32_t F;
/// Number of MIMO layers (streams) (for definition see 36-212 V8.6 2009-03, p.17, TM3-4)
uint8_t Nl;
/// Number of layers for this PDSCH transmission (TM8-10)
uint8_t Nlayers;
/// First layer for this PSCH transmission
uint8_t first_layer;
/// codeword this transport block is mapped to
uint8_t codeword;*/
}
NR_DL_gNB_HARQ_t
;
typedef
struct
{
/// Pointers to 8 HARQ processes for the DLSCH
LTE_DL_eNB_HARQ_t
*
harq_processes
[
8
];
nfapi_nr_pdsch_time_domain_alloc_type_e
time_alloc_type
;
uint8_t
time_alloc_list_flag
;
//LTE remainders to be removed
/* /// TX buffers for UE-spec transmission (antenna ports 5 or 7..14, prior to precoding)
int32_t *txdataF[8];
/// beamforming weights for UE-spec transmission (antenna ports 5 or 7..14), for each codeword, maximum 4 layers?
int32_t **ue_spec_bf_weights[4];
/// dl channel estimates (estimated from ul channel estimates)
int32_t **calib_dl_ch_estimates;
/// Allocated RNTI (0 means DLSCH_t is not currently used)
uint16_t rnti;
/// Active flag for baseband transmitter processing
uint8_t active;
/// HARQ process mask, indicates which processes are currently active
uint16_t harq_mask;
/// Indicator of TX activation per subframe. Used during PUCCH detection for ACK/NAK.
uint8_t subframe_tx[10];
/// First CCE of last PDSCH scheduling per subframe. Again used during PUCCH detection for ACK/NAK.
uint8_t nCCE[10];
/// Process ID's per subframe. Used to associate received ACKs on PUSCH/PUCCH to DLSCH harq process ids
uint8_t harq_ids[10];
/// Window size (in outgoing transport blocks) for fine-grain rate adaptation
uint8_t ra_window_size;
/// First-round error threshold for fine-grain rate adaptation
uint8_t error_threshold;
/// Number of soft channel bits
uint32_t G;
/// Codebook index for this dlsch (0,1,2,3)
uint8_t codebook_index;
/// Maximum number of HARQ processes (for definition see 36-212 V8.6 2009-03, p.17)
uint8_t Mdlharq;
/// Maximum number of HARQ rounds
uint8_t Mlimit;
/// MIMO transmission mode indicator for this sub-frame (for definition see 36-212 V8.6 2009-03, p.17)
uint8_t Kmimo;
/// Nsoft parameter related to UE Category
uint32_t Nsoft;
/// amplitude of PDSCH (compared to RS) in symbols without pilots
int16_t sqrt_rho_a;
/// amplitude of PDSCH (compared to RS) in symbols containing pilots
int16_t sqrt_rho_b;
#ifdef Rel14
/// indicator that this DLSCH corresponds to SIB1-BR, needed for c_init for scrambling
uint8_t sib1_br_flag;
/// initial absolute subframe (see 36.211 Section 6.3.1), needed for c_init for scrambling
uint16_t i0;
CEmode_t CEmode;
#endif*/
}
NR_gNB_DLSCH_t
;
typedef
struct
{
typedef
struct
{
/// \brief Pointers (dynamic) to the received data in the time domain.
/// \brief Pointers (dynamic) to the received data in the time domain.
/// - first index: rx antenna [0..nb_antennas_rx[
/// - first index: rx antenna [0..nb_antennas_rx[
...
@@ -295,11 +432,11 @@ typedef struct PHY_VARS_gNB_s {
...
@@ -295,11 +432,11 @@ typedef struct PHY_VARS_gNB_s {
LTE_eNB_SRS
srs_vars
[
NUMBER_OF_UE_MAX
];
LTE_eNB_SRS
srs_vars
[
NUMBER_OF_UE_MAX
];
LTE_eNB_PUSCH
*
pusch_vars
[
NUMBER_OF_UE_MAX
];
LTE_eNB_PUSCH
*
pusch_vars
[
NUMBER_OF_UE_MAX
];
LTE_eNB_PRACH
prach_vars
;
LTE_eNB_PRACH
prach_vars
;
LTE_e
NB_DLSCH_t
*
dlsch
[
NUMBER_OF_UE_MAX
][
2
];
// Nusers times two spatial streams
NR_g
NB_DLSCH_t
*
dlsch
[
NUMBER_OF_UE_MAX
][
2
];
// Nusers times two spatial streams
LTE_eNB_ULSCH_t
*
ulsch
[
NUMBER_OF_UE_MAX
+
1
];
// Nusers + number of RA
LTE_eNB_ULSCH_t
*
ulsch
[
NUMBER_OF_UE_MAX
+
1
];
// Nusers + number of RA
LTE_e
NB_DLSCH_t
*
dlsch_SI
,
*
dlsch_ra
,
*
dlsch_p
;
NR_g
NB_DLSCH_t
*
dlsch_SI
,
*
dlsch_ra
,
*
dlsch_p
;
LTE_e
NB_DLSCH_t
*
dlsch_MCH
;
NR_g
NB_DLSCH_t
*
dlsch_MCH
;
LTE_e
NB_DLSCH_t
*
dlsch_PCH
;
NR_g
NB_DLSCH_t
*
dlsch_PCH
;
LTE_eNB_UE_stats
UE_stats
[
NUMBER_OF_UE_MAX
];
LTE_eNB_UE_stats
UE_stats
[
NUMBER_OF_UE_MAX
];
LTE_eNB_UE_stats
*
UE_stats_ptr
[
NUMBER_OF_UE_MAX
];
LTE_eNB_UE_stats
*
UE_stats_ptr
[
NUMBER_OF_UE_MAX
];
...
...
openair1/SCHED_NR/phy_procedures_nr_common.c
View file @
261b586e
...
@@ -166,6 +166,8 @@ void nr_configure_css_dci_from_mib(nfapi_nr_dl_config_pdcch_parameters_rel15_t*
...
@@ -166,6 +166,8 @@ void nr_configure_css_dci_from_mib(nfapi_nr_dl_config_pdcch_parameters_rel15_t*
AssertFatal
(
1
==
0
,
"Invalid SSB and coreset multiplexing pattern %d
\n
"
,
pdcch_params
->
mux_pattern
);
AssertFatal
(
1
==
0
,
"Invalid SSB and coreset multiplexing pattern %d
\n
"
,
pdcch_params
->
mux_pattern
);
}
}
pdcch_params
->
config_type
=
NFAPI_NR_CSET_CONFIG_MIB_SIB1
;
pdcch_params
->
config_type
=
NFAPI_NR_CSET_CONFIG_MIB_SIB1
;
pdcch_params
->
search_space_type
=
NFAPI_NR_SEARCH_SPACE_TYPE_COMMON
;
pdcch_params
->
common_search_space_type
=
NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_0
;
pdcch_params
->
cr_mapping_type
=
NFAPI_NR_CCE_REG_MAPPING_INTERLEAVED
;
pdcch_params
->
cr_mapping_type
=
NFAPI_NR_CCE_REG_MAPPING_INTERLEAVED
;
pdcch_params
->
precoder_granularity
=
NFAPI_NR_CSET_SAME_AS_REG_BUNDLE
;
pdcch_params
->
precoder_granularity
=
NFAPI_NR_CSET_SAME_AS_REG_BUNDLE
;
pdcch_params
->
reg_bundle_size
=
6
;
pdcch_params
->
reg_bundle_size
=
6
;
...
...
targets/RT/USER/nr-softmodem.c
View file @
261b586e
...
@@ -351,11 +351,11 @@ void reset_stats(FL_OBJECT *button, long arg)
...
@@ -351,11 +351,11 @@ void reset_stats(FL_OBJECT *button, long arg)
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
for
(
k
=
0
;
k
<
8
;
k
++
)
{
//harq_processes
for
(
k
=
0
;
k
<
8
;
k
++
)
{
//harq_processes
for
(
j
=
0
;
j
<
phy_vars_gNB
->
dlsch
[
i
][
0
]
->
Mlimit
;
j
++
)
{
/*
for (j=0; j<phy_vars_gNB->dlsch[i][0]->Mlimit; j++) {
phy_vars_gNB->UE_stats[i].dlsch_NAK[k][j]=0;
phy_vars_gNB->UE_stats[i].dlsch_NAK[k][j]=0;
phy_vars_gNB->UE_stats[i].dlsch_ACK[k][j]=0;
phy_vars_gNB->UE_stats[i].dlsch_ACK[k][j]=0;
phy_vars_gNB->UE_stats[i].dlsch_trials[k][j]=0;
phy_vars_gNB->UE_stats[i].dlsch_trials[k][j]=0;
}
}
*/
phy_vars_gNB
->
UE_stats
[
i
].
dlsch_l2_errors
[
k
]
=
0
;
phy_vars_gNB
->
UE_stats
[
i
].
dlsch_l2_errors
[
k
]
=
0
;
phy_vars_gNB
->
UE_stats
[
i
].
ulsch_errors
[
k
]
=
0
;
phy_vars_gNB
->
UE_stats
[
i
].
ulsch_errors
[
k
]
=
0
;
...
...
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