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
Michael Black
OpenXG UE
Commits
dac15609
Commit
dac15609
authored
Sep 26, 2018
by
Hongzhi Wang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nr_pdsch' of
https://gitlab.eurecom.fr/oai/openairinterface5g
into nr_pdsch
parents
559a8915
09af43b3
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
56 additions
and
8 deletions
+56
-8
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
+11
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+2
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
+2
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
+24
-1
openair1/PHY/defs_nr_common.h
openair1/PHY/defs_nr_common.h
+13
-0
openair1/SCHED_NR/nr_ru_procedures.c
openair1/SCHED_NR/nr_ru_procedures.c
+2
-3
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+2
-4
No files found.
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
View file @
dac15609
...
...
@@ -323,6 +323,17 @@ typedef enum {
NFAPI_NR_PDSCH_RBG_CONFIG_TYPE2
}
nfapi_nr_pdsch_rbg_config_type_e
;
typedef
enum
{
NFAPI_NR_PRG_GRANULARITY_2
=
2
,
NFAPI_NR_PRG_GRANULARITY_4
=
4
,
NFAPI_NR_PRG_GRANULARITY_WIDEBAND
}
nfapi_nr_prg_granularity_e
;
typedef
enum
{
NFAPI_NR_PRB_BUNDLING_TYPE_STATIC
=
0
,
NFAPI_NR_PRB_BUNDLING_TYPE_DYNAMIC
}
nfapi_nr_prb_bundling_type_e
;
// P7 Sub Structures
typedef
struct
{
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
dac15609
...
...
@@ -29,3 +29,5 @@
* \note
* \warning
*/
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
View file @
dac15609
...
...
@@ -44,3 +44,5 @@ uint8_t nr_get_S(uint8_t row_idx, uint8_t CP, uint8_t time_alloc_type, uint8_t d
void
nr_get_rbg_parms
(
NR_BWP_PARMS
*
bwp
,
uint8_t
config_type
);
void
nr_get_rbg_list
(
uint32_t
bitmap
,
uint8_t
n_rbg
,
uint8_t
*
rbg_list
);
void
nr_get_PRG_parms
(
NR_BWP_PARMS
*
bwp
,
NR_gNB_DCI_ALLOC_t
dci_alloc
,
uint8_t
prb_bundling_type
);
openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c
View file @
dac15609
...
...
@@ -191,7 +191,7 @@ void nr_get_rbg_parms(NR_BWP_PARMS* bwp, uint8_t config_type) {
rbg_parms
->
P
=
get_RBG_size_P
(
bwp
->
N_RB
,
config_type
);
rbg_parms
->
start_size
=
rbg_parms
->
P
-
bwp
->
location
%
rbg_parms
->
P
;
rbg_parms
->
end_size
=
((
bwp
->
location
+
bwp
->
N_RB
)
%
rbg_parms
->
P
)
?
((
bwp
->
location
+
bwp
->
N_RB
)
%
rbg_parms
->
P
)
:
rbg_parms
->
P
;
rbg_parms
->
N_RBG
=
(
uint8_t
)
ceil
(
(
bwp
->
N_RB
+
(
bwp
->
location
%
rbg_parms
->
P
))
/
rbg_parms
->
P
);
rbg_parms
->
N_RBG
=
(
uint8_t
)
ceil
(
(
bwp
->
N_RB
+
(
bwp
->
location
%
rbg_parms
->
P
))
/
(
float
)
rbg_parms
->
P
);
LOG_I
(
PHY
,
"RBG parameters for BWP %d location %d N_RB %d:
\n
"
,
bwp
->
bwp_id
,
bwp
->
location
,
bwp
->
N_RB
);
LOG_I
(
PHY
,
"P %d
\t
start size %d
\t
endsize %d
\t
N_RBG %d
\n
"
,
rbg_parms
->
P
,
rbg_parms
->
start_size
,
rbg_parms
->
end_size
,
rbg_parms
->
N_RBG
);
}
...
...
@@ -211,3 +211,26 @@ static inline uint16_t get_RIV(uint16_t rb_start, uint16_t L, uint16_t N_RB) {
else
return
(
N_RB
*
(
N_RB
-
L
+
1
)
+
(
N_RB
-
1
-
rb_start
));
}
/// PRB bundling routines
// Precoding granularity
static
inline
uint8_t
nr_get_P_prime
(
uint8_t
rnti_type
,
uint8_t
dci_format
,
uint8_t
prb_bundling_type
)
{
if
(
dci_format
==
NFAPI_NR_DL_DCI_FORMAT_1_0
)
return
(
NFAPI_NR_PRG_GRANULARITY_2
);
else
// NFAPI_NR_DL_DCI_FORMAT_1_1
return
((
prb_bundling_type
)
?
0
:
2
);
// incomplete for 1_1
}
void
nr_get_PRG_parms
(
NR_BWP_PARMS
*
bwp
,
NR_gNB_DCI_ALLOC_t
dci_alloc
,
uint8_t
prb_bundling_type
)
{
nr_prg_parms_t
*
prg_parms
=
&
bwp
->
prg_parms
;
prg_parms
->
P_prime
=
nr_get_P_prime
(
dci_alloc
.
pdcch_params
.
rnti_type
,
dci_alloc
.
pdcch_params
.
dci_format
,
prb_bundling_type
);
prg_parms
->
start_size
=
prg_parms
->
P_prime
-
bwp
->
location
%
prg_parms
->
P_prime
;
prg_parms
->
end_size
=
(
bwp
->
location
+
bwp
->
N_RB
)
%
prg_parms
->
P_prime
;
if
(
!
prg_parms
->
end_size
)
prg_parms
->
end_size
=
prg_parms
->
P_prime
;
prg_parms
->
N_PRG
=
ceil
((
float
)
bwp
->
N_RB
/
prg_parms
->
P_prime
);
LOG_I
(
PHY
,
"PRG parameters for BWP %d location %d N_RB %d:
\n
"
,
bwp
->
bwp_id
,
bwp
->
location
,
bwp
->
N_RB
);
LOG_I
(
PHY
,
"P_prime %d
\t
start size %d
\t
endsize %d
\t
N_PRG %d
\n
"
,
prg_parms
->
P_prime
,
prg_parms
->
start_size
,
prg_parms
->
end_size
,
prg_parms
->
N_PRG
);
}
openair1/PHY/defs_nr_common.h
View file @
dac15609
...
...
@@ -123,6 +123,17 @@ typedef struct {
uint8_t
N_RBG
;
}
nr_rbg_parms_t
;
typedef
struct
{
/// Size of first PRG
uint8_t
start_size
;
/// Nominal size
uint8_t
P_prime
;
/// Size of last PRG
uint8_t
end_size
;
/// Number of PRG
uint8_t
N_PRG
;
}
nr_prg_parms_t
;
typedef
struct
NR_BWP_PARMS
{
/// BWP ID
uint8_t
bwp_id
;
...
...
@@ -138,6 +149,8 @@ typedef struct NR_BWP_PARMS {
uint8_t
cyclic_prefix
;
/// RBG params
nr_rbg_parms_t
rbg_parms
;
/// PRG params
nr_prg_parms_t
prg_parms
;
}
NR_BWP_PARMS
;
typedef
struct
{
...
...
openair1/SCHED_NR/nr_ru_procedures.c
View file @
dac15609
...
...
@@ -101,8 +101,7 @@ void nr_feptx_ofdm_2thread(RU_t *ru) {
// this copy should be done in the precoding thread (currently inactive)
for
(
int
aa
=
0
;
aa
<
ru
->
nb_tx
;
aa
++
)
memcpy
((
void
*
)
ru
->
common
.
txdataF_BF
[
aa
],
(
void
*
)
&
ru
->
gNB_list
[
0
]
->
common_vars
.
txdataF
[
aa
][
subframe
*
fp
->
samples_per_subframe_wCP
],
fp
->
samples_per_subframe_wCP
*
sizeof
(
int32_t
));
(
void
*
)
ru
->
gNB_list
[
0
]
->
common_vars
.
txdataF
[
aa
],
fp
->
samples_per_subframe_wCP
*
sizeof
(
int32_t
));
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM
,
1
);
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
dac15609
...
...
@@ -170,10 +170,8 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
if
(
do_meas
==
1
)
start_meas
(
&
gNB
->
phy_proc_tx
);
// clear the transmit data array for the current subframe
for
(
aa
=
0
;
aa
<
cfg
->
rf_config
.
tx_antenna_ports
.
value
;
aa
++
)
{
memset
(
&
gNB
->
common_vars
.
txdataF
[
aa
][
subframe
*
fp
->
samples_per_subframe_wCP
],
0
,
fp
->
samples_per_subframe_wCP
*
sizeof
(
int32_t
));
}
for
(
aa
=
0
;
aa
<
cfg
->
rf_config
.
tx_antenna_ports
.
value
;
aa
++
)
memset
(
&
gNB
->
common_vars
.
txdataF
[
aa
],
0
,
fp
->
samples_per_subframe_wCP
*
sizeof
(
int32_t
));
if
(
nfapi_mode
==
0
||
nfapi_mode
==
1
)
{
nr_common_signal_procedures
(
gNB
,
frame
,
subframe
);
...
...
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