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
09af43b3
Commit
09af43b3
authored
Sep 26, 2018
by
Guy De Souza
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nr_pdsch' of
https://gitlab.eurecom.fr/oai/openairinterface5g
into nr_pdsch
parents
4810d7a5
d1fb8e83
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
889 additions
and
28 deletions
+889
-28
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
+364
-1
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
+413
-0
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+9
-5
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+61
-9
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+17
-10
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+25
-3
No files found.
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
View file @
09af43b3
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
0 → 100644
View file @
09af43b3
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
09af43b3
...
...
@@ -382,7 +382,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
#endif
nr_deinterleaving_ldpc
(
E
,
harq_process
->
Qm
,
&
harq_process
->
d
[
r
],
harq_process
->
d
[
r
],
harq_process
->
w
[
r
]);
#if UE_TIMING_TRACE
...
...
@@ -445,16 +445,20 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
}
printf(" \n");*/
memset
(
pv
,
0
,
2
*
p_decParams
->
Z
*
sizeof
(
int16_t
));
memset
(
pv
,
0
,
harq_process
->
K
*
sizeof
(
int16_t
));
//memset(pl,0,2*p_decParams->Z*sizeof(int8_t));
for
(
i
=
2
*
p_decParams
->
Z
/
8
,
j
=
0
;
i
<
(
kc
*
p_decParams
->
Z
/
8
+
1
);
i
++
,
j
++
)
for
(
i
=
((
2
*
p_decParams
->
Z
)
>>
3
),
j
=
0
;
i
<
(
Kr_bytes
-
(
harq_process
->
F
>>
3
));
i
++
,
j
++
)
{
pv
[
i
]
=
_mm_loadu_si128
((
__m128i
*
)(
&
inv_d
[
8
*
j
]));
}
for
(
i
=
Kr_bytes
,
j
=
(
Kr_bytes
-
(
harq_process
->
F
>>
3
));
i
<
((
kc
*
p_decParams
->
Z
)
>>
3
);
i
++
,
j
++
)
{
pv
[
i
]
=
_mm_loadu_si128
((
__m128i
*
)(
&
inv_d
[
8
*
j
]));
}
for
(
i
=
0
,
j
=
0
;
j
<
(
kc
*
p_decParams
->
Z
/
16
);
i
+=
2
,
j
++
)
for
(
i
=
0
,
j
=
0
;
j
<
(
(
kc
*
p_decParams
->
Z
)
>>
4
);
i
+=
2
,
j
++
)
{
pl
[
j
]
=
_mm_packs_epi16
(
pv
[
i
],
pv
[
i
+
1
]);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
09af43b3
...
...
@@ -856,13 +856,18 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
// -> // compute @pointer where llrs should filled for this ofdm-symbol
int8_t
*
pllr_symbol_cw0
;
int8_t
*
pllr_symbol_cw1
;
int8_t
*
pllr_symbol_cw0_deint
;
int8_t
*
pllr_symbol_cw1_deint
;
uint32_t
llr_offset_symbol
;
uint32_t
nb_rb_pdsch
=
106
;
uint16_t
bundle_L
=
2
;
llr_offset_symbol
=
pdsch_vars
[
eNB_id
]
->
llr_offset
[
symbol
];
pllr_symbol_cw0
=
(
int8_t
*
)
pdsch_vars
[
eNB_id
]
->
llr
[
0
];
pllr_symbol_cw1
=
(
int8_t
*
)
pdsch_vars
[
eNB_id
]
->
llr
[
1
];
pllr_symbol_cw0
_deint
=
(
int8_t
*
)
pdsch_vars
[
eNB_id
]
->
llr
[
0
];
pllr_symbol_cw1
_deint
=
(
int8_t
*
)
pdsch_vars
[
eNB_id
]
->
llr
[
1
];
pllr_symbol_cw0
+=
llr_offset_symbol
;
pllr_symbol_cw1
+=
llr_offset_symbol
;
/*LOG_I(PHY,"compute LLRs [AbsSubframe %d.%d-%d] NbRB %d Qm %d LLRs-Length %d LLR-Offset %d @LLR Buff %x @LLR Buff(symb) %x\n",
proc->frame_rx, proc->subframe_rx,symbol,
nb_rb,dlsch0_harq->Qm,
...
...
@@ -1198,6 +1203,8 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
}
}
nr_dlsch_deinterleaving
(
symbol
,
bundle_L
,(
int16_t
*
)
pllr_symbol_cw0
,(
int16_t
*
)
pllr_symbol_cw0_deint
,
nb_rb_pdsch
);
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
ue
->
current_thread_id
[
nr_tti_rx
]][
slot
]);
#if DISABLE_LOG_X
...
...
@@ -1256,6 +1263,51 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
}
void
nr_dlsch_deinterleaving
(
uint8_t
symbol
,
uint16_t
L
,
uint16_t
*
llr
,
uint16_t
*
llr_deint
,
uint32_t
nb_rb_pdsch
)
{
uint32_t
bundle_idx
,
N_bundle
,
R
,
C
,
r
,
c
;
int32_t
m
,
k
;
uint8_t
nb_re
;
R
=
2
;
N_bundle
=
nb_rb_pdsch
/
L
;
C
=
N_bundle
/
R
;
uint32_t
*
bundle_deint
=
malloc
(
N_bundle
*
sizeof
(
uint32_t
));
printf
(
"N_bundle %d L %d nb_rb_pdsch %d
\n
"
,
N_bundle
,
L
,
nb_rb_pdsch
);
if
(
symbol
==
2
)
nb_re
=
6
;
else
nb_re
=
12
;
AssertFatal
(
llr
!=
NULL
,
"nr_dlsch_deinterleaving: FATAL llr is Null
\n
"
);
for
(
c
=
0
;
c
<
C
;
c
++
){
for
(
r
=
0
;
r
<
R
;
r
++
){
bundle_idx
=
r
*
C
+
c
;
bundle_deint
[
bundle_idx
]
=
c
*
R
+
r
;
//printf("c %u r %u bundle_idx %u bundle_deinter %u\n", c, r, bundle_idx, bundle_deint[bundle_idx]);
}
}
for
(
k
=
0
;
k
<
N_bundle
;
k
++
)
{
for
(
m
=
0
;
m
<
nb_re
*
L
;
m
++
){
llr_deint
[
bundle_deint
[
k
]
*
nb_re
*
L
+
m
]
=
llr
[
k
*
nb_re
*
L
+
m
];
//printf("k %d m %d bundle_deint %d llr_deint %d\n", k, m, bundle_deint[k], llr_deint[bundle_deint[k]*nb_re*L+m]);
}
}
}
//==============================================================================================
// Pre-processing for LLR computation
//==============================================================================================
...
...
@@ -1302,11 +1354,11 @@ void nr_dlsch_channel_compensation(int **rxdataF_ext,
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
dl_ch128
=
(
__m128i
*
)
&
dl_ch_estimates_ext
[(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_DL
*
12
];
dl_ch_mag128
=
(
__m128i
*
)
&
dl_ch_mag
[(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_DL
*
12
];
dl_ch_mag128b
=
(
__m128i
*
)
&
dl_ch_magb
[(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_DL
*
12
];
rxdataF128
=
(
__m128i
*
)
&
rxdataF_ext
[
aarx
][
symbol
*
frame_parms
->
N_RB_DL
*
12
];
rxdataF_comp128
=
(
__m128i
*
)
&
rxdataF_comp
[(
aatx
<<
1
)
+
aarx
][
symbol
*
frame_parms
->
N_RB_DL
*
12
];
dl_ch128
=
(
__m128i
*
)
&
dl_ch_estimates_ext
[(
aatx
<<
1
)
+
aarx
][
symbol
*
nb_rb
*
12
];
dl_ch_mag128
=
(
__m128i
*
)
&
dl_ch_mag
[(
aatx
<<
1
)
+
aarx
][
symbol
*
nb_rb
*
12
];
dl_ch_mag128b
=
(
__m128i
*
)
&
dl_ch_magb
[(
aatx
<<
1
)
+
aarx
][
symbol
*
nb_rb
*
12
];
rxdataF128
=
(
__m128i
*
)
&
rxdataF_ext
[
aarx
][
symbol
*
nb_rb
*
12
];
rxdataF_comp128
=
(
__m128i
*
)
&
rxdataF_comp
[(
aatx
<<
1
)
+
aarx
][
symbol
*
nb_rb
*
12
];
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
...
...
@@ -1515,7 +1567,7 @@ void nr_dlsch_channel_compensation(int **rxdataF_ext,
}
if
(
first_symbol_flag
==
1
)
{
measurements
->
rx_correlation
[
0
][
aarx
]
=
signal_energy
(
&
rho
[
aarx
][
symbol
*
frame_parms
->
N_RB_DL
*
12
],
rb
*
12
);
measurements
->
rx_correlation
[
0
][
aarx
]
=
signal_energy
(
&
rho
[
aarx
][
symbol
*
nb_rb
*
12
],
rb
*
12
);
}
}
}
...
...
@@ -1945,7 +1997,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF,
unsigned
char
symbol_mod
,
pilots
=
0
,
j
=
0
,
poffset
=
0
;
symbol_mod
=
(
symbol
>=
(
7
-
frame_parms
->
Ncp
))
?
symbol
-
(
7
-
frame_parms
->
Ncp
)
:
symbol
;
pilots
=
(
(
symbol_mod
==
0
)
||
(
symbol_mod
==
(
4
-
frame_parms
->
Ncp
)))
?
1
:
0
;
pilots
=
(
symbol
==
2
)
?
1
:
0
;
//to updated from config
l
=
symbol
;
nsymb
=
(
frame_parms
->
Ncp
==
NORMAL
)
?
14
:
12
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
09af43b3
...
...
@@ -830,6 +830,12 @@ void nr_dlsch_channel_compensation(int32_t **rxdataF_ext,
uint8_t
output_shift
,
PHY_NR_MEASUREMENTS
*
phy_measurements
);
void
nr_dlsch_deinterleaving
(
uint8_t
symbol
,
uint16_t
L
,
uint16_t
*
llr
,
uint16_t
*
llr_deint
,
uint32_t
nb_rb_pdsch
);
void
dlsch_dual_stream_correlation
(
NR_DL_FRAME_PARMS
*
frame_parms
,
unsigned
char
symbol
,
unsigned
short
nb_rb
,
...
...
@@ -991,16 +997,17 @@ void nr_dlsch_scale_channel(int32_t **dl_ch_estimates_ext,
@param llr8_flag If 1, indicate that the 8-bit turbo decoder should be used
@returns 0 on success, 1 on unsuccessful decoding
*/
uint32_t
dlsch_decoding
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
int16_t
*
dlsch_llr
,
NR_DL_FRAME_PARMS
*
lte_frame_parms
,
NR_UE_DLSCH_t
*
dlsch
,
NR_DL_UE_HARQ_t
*
harq_process
,
uint32_t
frame
,
uint8_t
subframe
,
uint8_t
harq_pid
,
uint8_t
is_crnti
,
uint8_t
llr8_flag
);
uint32_t
nr_dlsch_decoding
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
short
*
dlsch_llr
,
NR_DL_FRAME_PARMS
*
frame_parms
,
NR_UE_DLSCH_t
*
dlsch
,
NR_DL_UE_HARQ_t
*
harq_process
,
uint32_t
frame
,
uint8_t
nr_tti_rx
,
uint8_t
harq_pid
,
uint8_t
is_crnti
,
uint8_t
llr8_flag
);
uint32_t
dlsch_decoding_emul
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
09af43b3
...
...
@@ -71,10 +71,32 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP,
memcpy
((
void
*
)
params_rel15
,
(
void
*
)
&
gNB
->
pdcch_type0_params
,
sizeof
(
nfapi_nr_dl_config_pdcch_parameters_rel15_t
));
pdu_rel15
->
frequency_domain_assignment
=
5
;
pdu_rel15
->
time_domain_assignment
=
2
;
pdu_rel15
->
vrb_to_prb_mapping
=
0
;
pdu_rel15
->
time_domain_assignment
=
3
;
pdu_rel15
->
vrb_to_prb_mapping
=
1
;
pdu_rel15
->
mcs
=
12
;
pdu_rel15
->
tb_scaling
=
1
;
pdu_rel15
->
ra_preamble_index
=
25
;
pdu_rel15
->
format_indicator
=
1
;
pdu_rel15
->
ul_sul_indicator
=
1
;
pdu_rel15
->
ss_pbch_index
=
21
;
pdu_rel15
->
prach_mask_index
=
3
;
pdu_rel15
->
ndi
=
1
;
pdu_rel15
->
rv
=
2
;
pdu_rel15
->
harq_pid
=
7
;
pdu_rel15
->
dai
=
2
;
pdu_rel15
->
tpc
=
2
;
pdu_rel15
->
pucch_resource_indicator
=
7
;
pdu_rel15
->
pdsch_to_harq_feedback_timing_indicator
=
7
;
pdu_rel15
->
tb_scaling
=
1
;
pdu_rel15
->
tb_scaling
=
1
;
pdu_rel15
->
tb_scaling
=
1
;
pdu_rel15
->
tb_scaling
=
1
;
LOG_I
(
MAC
,
"[gNB scheduler phytest] DCI type 1 payload: freq_alloc %d, time_alloc %d, vrb to prb %d, mcs %d tb_scaling %d
\n
"
,
pdu_rel15
->
frequency_domain_assignment
,
pdu_rel15
->
time_domain_assignment
,
...
...
@@ -83,7 +105,7 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP,
pdu_rel15
->
tb_scaling
);
params_rel15
->
rnti
=
0x03
;
params_rel15
->
rnti_type
=
NFAPI_NR_RNTI_
RA
;
params_rel15
->
rnti_type
=
NFAPI_NR_RNTI_
C
;
params_rel15
->
dci_format
=
NFAPI_NR_DL_DCI_FORMAT_1_0
;
//params_rel15->aggregation_level = 1;
LOG_I
(
MAC
,
"DCI type 1 params: rmsi_pdcch_config %d, rnti %d, rnti_type %d, dci_format %d
\n
\
...
...
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