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
promise
OpenXG-RAN
Commits
6f0e4fe1
Commit
6f0e4fe1
authored
4 years ago
by
Francesco Mani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
using numDmrsCdmGrpsNoData for PDSCH in PHY
parent
ad246f96
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
60 additions
and
25 deletions
+60
-25
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+13
-10
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
+5
-4
openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.c
openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.c
+21
-0
openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.h
openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.h
+6
-1
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+9
-5
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+4
-3
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+1
-1
No files found.
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
6f0e4fe1
...
...
@@ -133,19 +133,22 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
int16_t
**
mod_symbs
=
(
int16_t
**
)
dlsch
->
mod_symbs
;
int16_t
**
tx_layers
=
(
int16_t
**
)
dlsch
->
txdataF
;
int8_t
Wf
[
2
],
Wt
[
2
],
l0
,
l_prime
[
2
],
delta
;
uint8_t
nodata_dmrs
=
1
;
uint8_t
dmrs_Type
=
rel15
->
dmrsConfigType
;
int
nb_re_dmrs
=
(
dmrs_Type
==
NFAPI_NR_DMRS_TYPE1
)
?
6
:
4
;
uint16_t
n_dmrs
=
((
rel15
->
rbSize
+
rel15
->
rbStart
)
*
nb_re_dmrs
)
<<
1
;
int16_t
mod_dmrs
[
n_dmrs
<<
1
];
int
nb_re_dmrs
;
uint16_t
n_dmrs
;
if
(
rel15
->
dmrsConfigType
==
NFAPI_NR_DMRS_TYPE1
)
{
nb_re_dmrs
=
6
*
rel15
->
numDmrsCdmGrpsNoData
;
n_dmrs
=
((
rel15
->
rbSize
+
rel15
->
rbStart
)
*
6
)
<<
1
;
}
else
{
nb_re_dmrs
=
4
*
rel15
->
numDmrsCdmGrpsNoData
;
n_dmrs
=
((
rel15
->
rbSize
+
rel15
->
rbStart
)
*
4
)
<<
1
;
}
uint16_t
nb_re
;
if
(
nodata_dmrs
)
// no data in dmrs symbol
nb_re
=
((
12
*
rel15
->
NrOfSymbols
)
-
12
-
xOverhead
)
*
rel15
->
rbSize
*
rel15
->
NrOfCodewords
;
else
nb_re
=
((
12
*
rel15
->
NrOfSymbols
)
-
nb_re_dmrs
-
xOverhead
)
*
rel15
->
rbSize
*
rel15
->
NrOfCodewords
;
uint8_t
Qm
=
rel15
->
qamModOrder
[
0
];
uint32_t
encoded_length
=
nb_re
*
Qm
;
int16_t
mod_dmrs
[
n_dmrs
<<
1
];
/// CRC, coding, interleaving and rate matching
AssertFatal
(
harq
->
pdu
!=
NULL
,
"harq->pdu is null
\n
"
);
...
...
@@ -301,7 +304,7 @@ uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch,
}
else
{
if
(
(
l
!=
dmrs_symbol
)
||
!
nodata_dmrs
)
{
if
(
(
l
!=
dmrs_symbol
)
||
allowed_pdsch_re_in_dmrs_symbol
(
k
,
start_sc
,
rel15
->
numDmrsCdmGrpsNoData
,
dmrs_Type
)
)
{
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
(
2
*
txdataF_offset
)]
=
(
amp
*
tx_layers
[
ap
][
m
<<
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
ap
])[((
l
*
frame_parms
->
ofdm_symbol_size
+
k
)
<<
1
)
+
1
+
(
2
*
txdataF_offset
)]
=
(
amp
*
tx_layers
[
ap
][(
m
<<
1
)
+
1
])
>>
15
;
#ifdef DEBUG_DLSCH_MAPPING
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
View file @
6f0e4fe1
...
...
@@ -336,12 +336,13 @@ int nr_dlsch_encoding(unsigned char *a,
uint32_t
E
;
uint8_t
Ilbrm
=
1
;
uint32_t
Tbslbrm
=
950984
;
//max tbs
uint8_t
nodata_dmrs
=
1
;
uint8_t
nb_re_dmrs
;
if
(
nodata_dmrs
)
nb_re_dmrs
=
12
;
if
(
rel15
->
dmrsConfigType
==
NFAPI_NR_DMRS_TYPE1
)
nb_re_dmrs
=
6
*
rel15
->
numDmrsCdmGrpsNoData
;
else
nb_re_dmrs
=
rel15
->
dmrsConfigType
==
NFAPI_NR_DMRS_TYPE1
?
6
:
4
;
nb_re_dmrs
=
4
*
rel15
->
numDmrsCdmGrpsNoData
;
uint16_t
length_dmrs
=
get_num_dmrs
(
rel15
->
dlDmrsSymbPos
);
uint16_t
R
=
rel15
->
targetCodeRate
[
0
];
float
Coderate
=
0
.
0
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.c
View file @
6f0e4fe1
...
...
@@ -84,6 +84,27 @@ uint16_t get_dmrs_freq_idx(uint16_t n, uint8_t k_prime, uint8_t delta, uint8_t d
return
dmrs_idx
;
}
uint8_t
allowed_pdsch_re_in_dmrs_symbol
(
uint16_t
k
,
uint16_t
start_sc
,
uint8_t
numDmrsCdmGrpsNoData
,
uint8_t
dmrs_type
)
{
uint8_t
delta
;
for
(
int
i
=
0
;
i
<
numDmrsCdmGrpsNoData
;
i
++
){
if
(
dmrs_type
==
NFAPI_NR_DMRS_TYPE1
)
{
delta
=
i
;
if
(((
k
-
start_sc
)
%
2
)
==
delta
)
return
(
0
);
}
else
{
delta
=
i
<<
1
;
if
(
(((
k
-
start_sc
)
%
6
)
==
delta
)
||
(((
k
-
start_sc
)
%
6
)
==
(
delta
+
1
))
)
return
(
0
);
}
}
return
(
1
);
}
uint8_t
get_l0
(
uint16_t
dlDmrsSymbPos
)
{
uint16_t
mask
=
dlDmrsSymbPos
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.h
View file @
6f0e4fe1
...
...
@@ -48,6 +48,11 @@ uint8_t get_delta(uint8_t ap, uint8_t config);
uint16_t
get_dmrs_freq_idx
(
uint16_t
n
,
uint8_t
k_prime
,
uint8_t
delta
,
uint8_t
dmrs_type
);
uint8_t
allowed_pdsch_re_in_dmrs_symbol
(
uint16_t
k
,
uint16_t
start_sc
,
uint8_t
numDmrsCdmGrpsNoData
,
uint8_t
dmrs_type
);
uint8_t
get_l0
(
uint16_t
dlDmrsSymbPos
);
#endif
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
6f0e4fe1
...
...
@@ -1419,7 +1419,7 @@ int32_t get_nr_uldl_offset(int nr_bandP)
void
nr_get_tbs_dl
(
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
,
int
x_overhead
,
uint8_t
n
odata_dmrs
,
uint8_t
n
umdmrscdmgroupnodata
,
uint8_t
tb_scaling
)
{
LOG_D
(
MAC
,
"TBS calculation
\n
"
);
...
...
@@ -1427,10 +1427,14 @@ void nr_get_tbs_dl(nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu,
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_rel15
=
&
pdsch_pdu
->
pdsch_pdu_rel15
;
uint16_t
N_PRB_oh
=
x_overhead
;
uint8_t
N_PRB_DMRS
;
if
(
nodata_dmrs
)
N_PRB_DMRS
=
12
;
else
N_PRB_DMRS
=
(
pdsch_rel15
->
dmrsConfigType
==
NFAPI_NR_DMRS_TYPE1
)
?
6
:
4
;
//This only works for antenna port 1000
if
(
pdsch_rel15
->
dmrsConfigType
==
NFAPI_NR_DMRS_TYPE1
)
{
// if no data in dmrs cdm group is 1 only even REs have no data
// if no data in dmrs cdm group is 2 both odd and even REs have no data
N_PRB_DMRS
=
numdmrscdmgroupnodata
*
6
;
}
else
{
N_PRB_DMRS
=
numdmrscdmgroupnodata
*
4
;
}
uint8_t
N_sh_symb
=
pdsch_rel15
->
NrOfSymbols
;
uint8_t
Imcs
=
pdsch_rel15
->
mcsIndex
[
0
];
uint16_t
N_RE_prime
=
NR_NB_SC_PER_RB
*
N_sh_symb
-
N_PRB_DMRS
-
N_PRB_oh
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
6f0e4fe1
...
...
@@ -698,7 +698,7 @@ void nr_generate_Msg2(module_id_t module_idP,
LOG_D
(
MAC
,
"[gNB %d][RAPROC] Frame %d, Subframe %d: RA state %d
\n
"
,
module_idP
,
frameP
,
slotP
,
ra
->
state
);
x_Overhead
=
0
;
nr_get_tbs_dl
(
&
dl_tti_pdsch_pdu
->
pdsch_pdu
,
x_Overhead
,
1
,
dci_pdu_rel15
[
0
].
tb_scaling
);
nr_get_tbs_dl
(
&
dl_tti_pdsch_pdu
->
pdsch_pdu
,
x_Overhead
,
pdsch_pdu_rel15
->
numDmrsCdmGrpsNoData
,
dci_pdu_rel15
[
0
].
tb_scaling
);
// DL TX request
tx_req
->
PDU_length
=
pdsch_pdu_rel15
->
TBSize
[
0
];
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
6f0e4fe1
...
...
@@ -369,6 +369,7 @@ int configure_fapi_dl_pdu(int Mod_idP,
dci_pdu_rel15
[
0
].
harq_pid
=
0
;
// DAI
dci_pdu_rel15
[
0
].
dai
[
0
].
val
=
(
pucch_sched
->
dai_c
-
1
)
&
3
;
// TPC for PUCCH
dci_pdu_rel15
[
0
].
tpc
=
1
;
// table 7.2.1-1 in 38.213
// PUCCH resource indicator
...
...
@@ -444,7 +445,7 @@ int configure_fapi_dl_pdu(int Mod_idP,
pdcch_pdu_rel15
->
DurationSymbols
);
int
x_Overhead
=
0
;
// should be 0 for initialBWP
nr_get_tbs_dl
(
&
dl_tti_pdsch_pdu
->
pdsch_pdu
,
x_Overhead
,
1
,
0
);
nr_get_tbs_dl
(
&
dl_tti_pdsch_pdu
->
pdsch_pdu
,
x_Overhead
,
pdsch_pdu_rel15
->
numDmrsCdmGrpsNoData
,
0
);
// Hardcode it for now
TBS
=
dl_tti_pdsch_pdu
->
pdsch_pdu
.
pdsch_pdu_rel15
.
TBSize
[
0
];
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
6f0e4fe1
...
...
@@ -226,7 +226,7 @@ int to_absslot(nfapi_nr_config_request_scf_t *cfg,int frame,int slot);
void
nr_get_tbs_dl
(
nfapi_nr_dl_tti_pdsch_pdu
*
pdsch_pdu
,
int
x_overhead
,
uint8_t
n
odata_dmrs
,
uint8_t
n
umdmrscdmgroupnodata
,
uint8_t
tb_scaling
);
/** \brief Computes Q based on I_MCS PDSCH and table_idx for downlink. Implements MCS Tables from 38.214. */
uint8_t
nr_get_Qm_dl
(
uint8_t
Imcs
,
uint8_t
table_idx
);
...
...
This diff is collapsed.
Click to expand it.
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