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
ZhouShuya
OpenXG-RAN
Commits
698dfac0
Commit
698dfac0
authored
Oct 05, 2018
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nr_pdsch' of
https://gitlab.eurecom.fr/oai/openairinterface5g
into nr_pdsch
parents
bc5cb28d
6fc37985
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
8743 additions
and
84 deletions
+8743
-84
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+3
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
+5
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
+25
-16
openair1/PHY/NR_TRANSPORT/nr_tbs_tools.c
openair1/PHY/NR_TRANSPORT/nr_tbs_tools.c
+6
-0
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+12
-6
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+31
-37
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
+8641
-0
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+20
-25
No files found.
cmake_targets/CMakeLists.txt
View file @
698dfac0
...
@@ -1298,6 +1298,7 @@ set(PHY_SRC_UE
...
@@ -1298,6 +1298,7 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_dci_tools.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_dci_tools.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_dlsch.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_dlsch.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_dlsch_tools.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_dlsch_tools.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_dlsch_coding.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_tbs_tools.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_tbs_tools.c
${
OPENAIR1_DIR
}
/PHY/NR_REFSIG/nr_gold.c
${
OPENAIR1_DIR
}
/PHY/NR_REFSIG/nr_gold.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/file_output.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/file_output.c
...
@@ -1330,6 +1331,8 @@ set(PHY_SRC_UE
...
@@ -1330,6 +1331,8 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_pbch.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_pbch.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
${
OPENAIR1_DIR
}
/PHY/NR_TRANSPORT/nr_tbs_tools.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/dci_nr.c
${
OPENAIR1_DIR
}
/PHY/NR_UE_TRANSPORT/dci_nr.c
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
View file @
698dfac0
...
@@ -50,3 +50,8 @@ void nr_get_PRG_parms(NR_BWP_PARMS* bwp, NR_gNB_DCI_ALLOC_t dci_alloc, uint8_t p
...
@@ -50,3 +50,8 @@ void nr_get_PRG_parms(NR_BWP_PARMS* bwp, NR_gNB_DCI_ALLOC_t dci_alloc, uint8_t p
uint8_t
nr_get_Qm
(
uint8_t
Imcs
,
uint8_t
table_idx
);
uint8_t
nr_get_Qm
(
uint8_t
Imcs
,
uint8_t
table_idx
);
uint32_t
nr_get_code_rate
(
uint8_t
Imcs
,
uint8_t
table_idx
);
uint32_t
nr_get_code_rate
(
uint8_t
Imcs
,
uint8_t
table_idx
);
/** \brief Computes available bits G.
@param nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs */
uint32_t
nr_get_G
(
uint16_t
nb_rb
,
uint16_t
nb_symb_sch
,
uint8_t
nb_re_dmrs
,
uint16_t
length_dmrs
,
uint8_t
Qm
);
openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
View file @
698dfac0
...
@@ -37,6 +37,7 @@
...
@@ -37,6 +37,7 @@
#include "PHY/CODING/lte_interleaver_inline.h"
#include "PHY/CODING/lte_interleaver_inline.h"
#include "PHY/NR_TRANSPORT/nr_transport.h"
#include "PHY/NR_TRANSPORT/nr_transport.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
#include "SCHED_NR/sched_nr.h"
#include "SCHED_NR/sched_nr.h"
#include "defs.h"
#include "defs.h"
#include "UTIL/LOG/vcd_signal_dumper.h"
#include "UTIL/LOG/vcd_signal_dumper.h"
...
@@ -85,11 +86,11 @@ void free_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
...
@@ -85,11 +86,11 @@ void free_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
#endif
#endif
if
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
])
{
if
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
])
{
free16
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
],
((
r
==
0
)
?
8
:
0
)
+
3
+
1056
);
free16
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
],
1056
);
dlsch
->
harq_processes
[
i
]
->
c
[
r
]
=
NULL
;
dlsch
->
harq_processes
[
i
]
->
c
[
r
]
=
NULL
;
}
}
if
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
])
{
if
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
])
{
free16
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],
(
96
+
12
+
3
+
(
3
*
8448
))
);
free16
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],
3
*
8448
);
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
NULL
;
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
NULL
;
}
}
...
@@ -109,7 +110,7 @@ NR_gNB_DLSCH_t *new_gNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_t
...
@@ -109,7 +110,7 @@ NR_gNB_DLSCH_t *new_gNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_t
{
{
NR_gNB_DLSCH_t
*
dlsch
;
NR_gNB_DLSCH_t
*
dlsch
;
unsigned
char
exit_flag
=
0
,
i
,
j
,
r
,
aa
,
layer
;
unsigned
char
exit_flag
=
0
,
i
,
r
,
aa
,
layer
;
int
re
;
int
re
;
unsigned
char
bw_scaling
=
1
;
unsigned
char
bw_scaling
=
1
;
...
@@ -229,7 +230,7 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
...
@@ -229,7 +230,7 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
for
(
i
=
0
;
i
<
Mdlharq
;
i
++
)
{
for
(
i
=
0
;
i
<
Mdlharq
;
i
++
)
{
if
(
dlsch
->
harq_processes
[
i
])
{
if
(
dlsch
->
harq_processes
[
i
])
{
// dlsch->harq_processes[i]->Ndi = 0;
// dlsch->harq_processes[i]->Ndi = 0;
dlsch
->
harq_processes
[
i
]
->
status
=
0
;
//
dlsch->harq_processes[i]->status = 0;
dlsch
->
harq_processes
[
i
]
->
round
=
0
;
dlsch
->
harq_processes
[
i
]
->
round
=
0
;
for
(
j
=
0
;
j
<
96
;
j
++
)
for
(
j
=
0
;
j
<
96
;
j
++
)
...
@@ -242,7 +243,7 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
...
@@ -242,7 +243,7 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
}
}
}
}
int
dlsch_encoding
(
PHY_VARS_gNB
*
gNB
,
int
nr_
dlsch_encoding
(
PHY_VARS_gNB
*
gNB
,
unsigned
char
*
a
,
unsigned
char
*
a
,
uint8_t
num_pdcch_symbols
,
uint8_t
num_pdcch_symbols
,
NR_gNB_DLSCH_t
*
dlsch
,
NR_gNB_DLSCH_t
*
dlsch
,
...
@@ -255,31 +256,39 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
...
@@ -255,31 +256,39 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
unsigned
int
G
;
unsigned
int
G
;
unsigned
int
crc
=
1
;
unsigned
int
crc
=
1
;
unsigned
short
iind
;
NR_DL_FRAME_PARMS
*
frame_parms
=
&
gNB
->
frame_parms
;
NR_DL_FRAME_PARMS
*
frame_parms
=
&
gNB
->
frame_parms
;
unsigned
char
harq_pid
=
dlsch
->
current_harq_pid
;
unsigned
char
harq_pid
=
dlsch
->
harq_ids
[
subframe
]
;
unsigned
short
nb_rb
=
dlsch
->
harq_processes
[
harq_pid
]
->
nb_rb
;
unsigned
short
nb_rb
=
dlsch
->
harq_processes
[
harq_pid
]
->
nb_rb
;
unsigned
int
A
,
Z
;
unsigned
int
A
,
Z
;
unsigned
*
pz
=
&
Z
;
unsigned
*
pz
=
&
Z
;
unsigned
char
mod_order
;
unsigned
char
mod_order
;
unsigned
int
Kr
=
0
,
Kr_bytes
,
r
,
r_offset
=
0
,
Kr_int
=
0
;
unsigned
int
Kr
=
0
,
r
,
r_offset
=
0
;
//Kr_bytes
unsigned
short
m
=
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
;
//
unsigned short m=dlsch->harq_processes[harq_pid]->mcs;
uint8_t
beamforming_mode
=
0
;
//
uint8_t beamforming_mode=0;
uint8_t
*
d_tmp
[
MAX_NUM_DLSCH_SEGMENTS
];
uint8_t
*
d_tmp
[
MAX_NUM_DLSCH_SEGMENTS
];
double
rate
=
0
.
33
;
//
double rate = 0.33;
uint8_t
kb
,
BG
;
uint8_t
kb
,
BG
=
1
;
uint32_t
E
;
uint32_t
E
;
uint8_t
Ilbrm
=
0
;
uint8_t
Ilbrm
=
0
;
uint32_t
Tbslbrm
=
950984
;
//to compute tbs
uint32_t
Tbslbrm
=
950984
;
//max tbs
uint16_t
nb_symb_sch
=
2
;
uint8_t
nb_re_dmrs
=
6
;
uint16_t
length_dmrs
=
1
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_IN
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_IN
);
dlsch
->
harq_processes
[
harq_pid
]
->
TBS
=
nr_compute_tbs
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
,
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
);
A
=
dlsch
->
harq_processes
[
harq_pid
]
->
TBS
;
A
=
dlsch
->
harq_processes
[
harq_pid
]
->
TBS
;
//printf("Encoder: A: %d frame.subframe %d.%d \n",A, frame,subframe);
//printf("Encoder: A: %d frame.subframe %d.%d \n",A, frame,subframe);
mod_order
=
get_nr_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
);
mod_order
=
get_nr_Qm
(
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
);
G
=
get_G
(
frame_parms
,
nb_rb
,
dlsch
->
harq_processes
[
harq_pid
]
->
rb_alloc
,
mod_order
,
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
,
num_pdcch_symbols
,
frame
,
subframe
,
beamforming_mode
);
G
=
nr_get_G
(
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
mod_order
);
Tbslbrm
=
nr_compute_tbs
(
28
,
nb_rb
,
frame_parms
->
symbols_per_slot
,
0
,
0
,
dlsch
->
harq_processes
[
harq_pid
]
->
Nl
);
// if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet
// if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
round
==
0
)
{
// this is a new packet
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
round
==
0
)
{
// this is a new packet
...
@@ -324,7 +333,7 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
...
@@ -324,7 +333,7 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
//printf("Encoder: B %d F %d \n",dlsch->harq_processes[harq_pid]->B, dlsch->harq_processes[harq_pid]->F);
//printf("Encoder: B %d F %d \n",dlsch->harq_processes[harq_pid]->B, dlsch->harq_processes[harq_pid]->F);
Kr
=
dlsch
->
harq_processes
[
harq_pid
]
->
K
;
Kr
=
dlsch
->
harq_processes
[
harq_pid
]
->
K
;
Kr_bytes
=
Kr
>>
3
;
//
Kr_bytes = Kr>>3;
start_meas
(
te_stats
);
start_meas
(
te_stats
);
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
...
@@ -394,7 +403,7 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
...
@@ -394,7 +403,7 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
start_meas
(
i_stats
);
start_meas
(
i_stats
);
nr_interleaving_ldpc
(
E
,
nr_interleaving_ldpc
(
E
,
&
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
,
dlsch
->
harq_processes
[
harq_pid
]
->
Qm
,
dlsch
->
harq_processes
[
harq_pid
]
->
e
+
r_offset
,
dlsch
->
harq_processes
[
harq_pid
]
->
e
+
r_offset
,
dlsch
->
harq_processes
[
harq_pid
]
->
f
+
r_offset
);
dlsch
->
harq_processes
[
harq_pid
]
->
f
+
r_offset
);
stop_meas
(
i_stats
);
stop_meas
(
i_stats
);
...
...
openair1/PHY/NR_TRANSPORT/nr_tbs_tools.c
View file @
698dfac0
...
@@ -79,3 +79,9 @@ uint32_t nr_get_code_rate(uint8_t Imcs, uint8_t table_idx) {
...
@@ -79,3 +79,9 @@ uint32_t nr_get_code_rate(uint8_t Imcs, uint8_t table_idx) {
AssertFatal
(
0
,
"Invalid MCS table index %d (expected in range [1,3])
\n
"
,
table_idx
);
AssertFatal
(
0
,
"Invalid MCS table index %d (expected in range [1,3])
\n
"
,
table_idx
);
}
}
}
}
uint32_t
nr_get_G
(
uint16_t
nb_rb
,
uint16_t
nb_symb_sch
,
uint8_t
nb_re_dmrs
,
uint16_t
length_dmrs
,
uint8_t
Qm
)
{
uint32_t
G
;
G
=
((
12
*
nb_symb_sch
)
-
(
nb_re_dmrs
*
length_dmrs
))
*
nb_rb
*
Qm
;
return
(
G
);
}
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
698dfac0
...
@@ -35,6 +35,7 @@
...
@@ -35,6 +35,7 @@
#include "PHY/CODING/coding_extern.h"
#include "PHY/CODING/coding_extern.h"
#include "PHY/CODING/coding_defs.h"
#include "PHY/CODING/coding_defs.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
//#include "SCHED/extern.h"
//#include "SCHED/extern.h"
#include "SIMULATION/TOOLS/sim.h"
#include "SIMULATION/TOOLS/sim.h"
#include "targets/RT/USER/nr-uesoftmodem.h"
#include "targets/RT/USER/nr-uesoftmodem.h"
...
@@ -65,13 +66,13 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t *dlsch)
...
@@ -65,13 +66,13 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t *dlsch)
}
}
for
(
r
=
0
;
r
<
MAX_NUM_NR_DLSCH_SEGMENTS
;
r
++
)
{
for
(
r
=
0
;
r
<
MAX_NUM_NR_DLSCH_SEGMENTS
;
r
++
)
{
free16
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
],
((
r
==
0
)
?
8
:
0
)
+
3
+
1056
);
free16
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
],
1056
);
dlsch
->
harq_processes
[
i
]
->
c
[
r
]
=
NULL
;
dlsch
->
harq_processes
[
i
]
->
c
[
r
]
=
NULL
;
}
}
for
(
r
=
0
;
r
<
MAX_NUM_NR_DLSCH_SEGMENTS
;
r
++
)
for
(
r
=
0
;
r
<
MAX_NUM_NR_DLSCH_SEGMENTS
;
r
++
)
if
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
])
{
if
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
])
{
free16
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],(
(
3
*
8
*
8448
)
+
12
+
96
)
*
sizeof
(
short
));
free16
(
dlsch
->
harq_processes
[
i
]
->
d
[
r
],(
3
*
8448
)
*
sizeof
(
short
));
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
NULL
;
dlsch
->
harq_processes
[
i
]
->
d
[
r
]
=
NULL
;
}
}
...
@@ -201,8 +202,11 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -201,8 +202,11 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
// int16_t *p_invd =&inv_d;
// int16_t *p_invd =&inv_d;
uint8_t
kb
,
kc
;
uint8_t
kb
,
kc
;
uint8_t
Ilbrm
=
0
;
uint8_t
Ilbrm
=
0
;
uint32_t
Tbslbrm
=
950984
;
//to compute tbs
uint32_t
Tbslbrm
=
950984
;
uint16_t
nb_prb
=
106
;
//to update
uint16_t
nb_rb
=
106
;
//to update
uint16_t
nb_symb_sch
=
2
;
uint8_t
nb_re_dmrs
=
6
;
uint16_t
length_dmrs
=
1
;
uint32_t
i
,
j
;
uint32_t
i
,
j
;
// uint32_t k;
// uint32_t k;
...
@@ -252,10 +256,12 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -252,10 +256,12 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
harq_process
->
trials
[
harq_process
->
round
]
++
;
harq_process
->
trials
[
harq_process
->
round
]
++
;
harq_process
->
TBS
=
nr_compute_tbs
(
harq_process
->
mcs
,
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
harq_process
->
Nl
);
A
=
harq_process
->
TBS
;
A
=
harq_process
->
TBS
;
ret
=
dlsch
->
max_ldpc_iterations
;
ret
=
dlsch
->
max_ldpc_iterations
;
harq_process
->
G
=
nr_get_G
(
nb_rb
,
nb_symb_sch
,
nb_re_dmrs
,
length_dmrs
,
harq_process
->
Qm
);
G
=
harq_process
->
G
;
G
=
harq_process
->
G
;
//get_G(frame_parms,nb_rb,dlsch->rb_alloc,mod_order,num_pdcch_symbols,phy_vars_ue->frame,subframe);
//get_G(frame_parms,nb_rb,dlsch->rb_alloc,mod_order,num_pdcch_symbols,phy_vars_ue->frame,subframe);
...
@@ -326,7 +332,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -326,7 +332,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
K_bytes_F
=
Kr_bytes
-
(
harq_process
->
F
>>
3
);
K_bytes_F
=
Kr_bytes
-
(
harq_process
->
F
>>
3
);
Tbslbrm
=
nr_compute_tbs
(
harq_process
->
mcs
,
nb_p
rb
,
frame_parms
->
symbols_per_slot
,
0
,
0
,
harq_process
->
Nl
);
Tbslbrm
=
nr_compute_tbs
(
28
,
nb_
rb
,
frame_parms
->
symbols_per_slot
,
0
,
0
,
harq_process
->
Nl
);
for
(
r
=
0
;
r
<
harq_process
->
C
;
r
++
)
{
for
(
r
=
0
;
r
<
harq_process
->
C
;
r
++
)
{
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
View file @
698dfac0
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
0 → 100644
View file @
698dfac0
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
698dfac0
...
@@ -106,7 +106,7 @@ void qpsk_qpsk(int16_t *stream0_in,
...
@@ -106,7 +106,7 @@ void qpsk_qpsk(int16_t *stream0_in,
@param nb_rb number of RBs for this allocation
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr128p pointer to pointer to symbol in dlsch_llr*/
@param llr128p pointer to pointer to symbol in dlsch_llr*/
int32_t
dlsch_qpsk_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
nr_
dlsch_qpsk_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp_i
,
int32_t
**
rxdataF_comp_i
,
int32_t
**
rho_i
,
int32_t
**
rho_i
,
...
@@ -142,7 +142,7 @@ void qpsk_qam16(int16_t *stream0_in,
...
@@ -142,7 +142,7 @@ void qpsk_qam16(int16_t *stream0_in,
@param nb_rb number of RBs for this allocation
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr128p pointer to pointer to symbol in dlsch_llr*/
@param llr128p pointer to pointer to symbol in dlsch_llr*/
int32_t
dlsch_qpsk_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
nr_
dlsch_qpsk_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp_i
,
int32_t
**
rxdataF_comp_i
,
int
**
dl_ch_mag_i
,
//|h_1|^2*(2/sqrt{10})
int
**
dl_ch_mag_i
,
//|h_1|^2*(2/sqrt{10})
...
@@ -154,6 +154,7 @@ int32_t dlsch_qpsk_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -154,6 +154,7 @@ int32_t dlsch_qpsk_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
uint16_t
pbch_pss_sss_adj
,
uint16_t
pbch_pss_sss_adj
,
int16_t
**
llr128p
);
int16_t
**
llr128p
);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/64QAM reception.
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/64QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param stream1_in Input from channel compensated (MR combined) stream 1
...
@@ -179,7 +180,7 @@ void qpsk_qam64(int16_t *stream0_in,
...
@@ -179,7 +180,7 @@ void qpsk_qam64(int16_t *stream0_in,
@param nb_rb number of RBs for this allocation
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr128p pointer to pointer to symbol in dlsch_llr*/
@param llr128p pointer to pointer to symbol in dlsch_llr*/
int32_t
dlsch_qpsk_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
nr_
dlsch_qpsk_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp_i
,
int32_t
**
rxdataF_comp_i
,
int
**
dl_ch_mag_i
,
//|h_1|^2*(2/sqrt{10})
int
**
dl_ch_mag_i
,
//|h_1|^2*(2/sqrt{10})
...
@@ -217,7 +218,7 @@ void qam16_qpsk(short *stream0_in,
...
@@ -217,7 +218,7 @@ void qam16_qpsk(short *stream0_in,
@param nb_rb number of RBs for this allocation
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/
@param llr16p pointer to pointer to symbol in dlsch_llr*/
int
dlsch_16qam_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
nr_
dlsch_16qam_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
//|h_0|^2*(2/sqrt{10})
int
**
dl_ch_mag
,
//|h_0|^2*(2/sqrt{10})
...
@@ -258,7 +259,7 @@ void qam16_qam16(short *stream0_in,
...
@@ -258,7 +259,7 @@ void qam16_qam16(short *stream0_in,
@param nb_rb number of RBs for this allocation
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/
@param llr16p pointer to pointer to symbol in dlsch_llr*/
int
dlsch_16qam_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
nr_
dlsch_16qam_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
//|h_0|^2*(2/sqrt{10})
int
**
dl_ch_mag
,
//|h_0|^2*(2/sqrt{10})
...
@@ -300,7 +301,7 @@ void qam16_qam64(short *stream0_in,
...
@@ -300,7 +301,7 @@ void qam16_qam64(short *stream0_in,
@param nb_rb number of RBs for this allocation
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/
@param llr16p pointer to pointer to symbol in dlsch_llr*/
int
dlsch_16qam_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
nr_
dlsch_16qam_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp_i
,
int
**
rxdataF_comp_i
,
int
**
dl_ch_mag
,
//|h_0|^2*(2/sqrt{10})
int
**
dl_ch_mag
,
//|h_0|^2*(2/sqrt{10})
...
@@ -480,15 +481,13 @@ int dlsch_64qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -480,15 +481,13 @@ int dlsch_64qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
@param llr128p pointer to pointer to symbol in dlsch_llr
@param llr128p pointer to pointer to symbol in dlsch_llr
@param beamforming_mode beamforming mode
@param beamforming_mode beamforming mode
*/
*/
int32_t
dlsch_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
nr_dlsch_qpsk_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp
,
int16_t
*
dlsch_llr
,
int16_t
*
dlsch_llr
,
uint8_t
symbol
,
uint8_t
symbol
,
uint8_t
first_symbol_flag
,
uint8_t
first_symbol_flag
,
uint16_t
nb_rb
,
uint16_t
nb_rb
,
uint16_t
pbch_pss_sss_adj
,
uint8_t
beamforming_mode
);
//int16_t **llr128p,
uint8_t
beamforming_mode
);
/**
/**
\brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms
\brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms
...
@@ -504,7 +503,7 @@ int32_t dlsch_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -504,7 +503,7 @@ int32_t dlsch_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
@param beamforming_mode beamforming mode
@param beamforming_mode beamforming mode
*/
*/
int32_t
dlsch_qpsk_llr_SIC
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
nr_
dlsch_qpsk_llr_SIC
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int
**
rxdataF_comp
,
int
**
rxdataF_comp
,
int32_t
**
sic_buffer
,
int32_t
**
sic_buffer
,
int
**
rho_i
,
int
**
rho_i
,
...
@@ -515,15 +514,14 @@ int32_t dlsch_qpsk_llr_SIC(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -515,15 +514,14 @@ int32_t dlsch_qpsk_llr_SIC(NR_DL_FRAME_PARMS *frame_parms,
uint16_t
mod_order_0
,
uint16_t
mod_order_0
,
uint32_t
rb_alloc
);
uint32_t
rb_alloc
);
void
dlsch_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
void
nr_
dlsch_16qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp
,
int16_t
*
dlsch_llr
,
int16_t
*
dlsch_llr
,
int32_t
**
dl_ch_mag
,
int32_t
**
dl_ch_mag
,
uint8_t
symbol
,
uint8_t
symbol
,
uint8_t
first_symbol_flag
,
uint8_t
first_symbol_flag
,
uint16_t
nb_rb
,
uint16_t
nb_rb
,
uint16_t
pbch_pss_sss_adjust
,
int16_t
**
llr32p
,
int16_t
**
llr128p
,
uint8_t
beamforming_mode
);
uint8_t
beamforming_mode
);
/**
/**
\brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms
\brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms
...
@@ -538,7 +536,7 @@ void dlsch_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -538,7 +536,7 @@ void dlsch_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
@param pbch_pss_sss_adjust PBCH/PSS/SSS RE adjustment (in REs)
@param pbch_pss_sss_adjust PBCH/PSS/SSS RE adjustment (in REs)
@param beamforming_mode beamforming mode
@param beamforming_mode beamforming mode
*/
*/
void
dlsch_16qam_llr_SIC
(
NR_DL_FRAME_PARMS
*
frame_parms
,
void
nr_
dlsch_16qam_llr_SIC
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp
,
int32_t
**
sic_buffer
,
//Q15
int32_t
**
sic_buffer
,
//Q15
int32_t
**
rho_i
,
int32_t
**
rho_i
,
...
@@ -563,8 +561,7 @@ void dlsch_64qam_llr_SIC(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -563,8 +561,7 @@ void dlsch_64qam_llr_SIC(NR_DL_FRAME_PARMS *frame_parms,
uint16_t
mod_order_0
,
uint16_t
mod_order_0
,
uint32_t
rb_alloc
);
uint32_t
rb_alloc
);
void
nr_dlsch_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
void
dlsch_64qam_llr
(
NR_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp
,
int16_t
*
dlsch_llr
,
int16_t
*
dlsch_llr
,
int32_t
**
dl_ch_mag
,
int32_t
**
dl_ch_mag
,
...
@@ -572,8 +569,6 @@ void dlsch_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
...
@@ -572,8 +569,6 @@ void dlsch_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
uint8_t
symbol
,
uint8_t
symbol
,
uint8_t
first_symbol_flag
,
uint8_t
first_symbol_flag
,
uint16_t
nb_rb
,
uint16_t
nb_rb
,
uint16_t
pbch_pss_sss_adjust
,
//int16_t **llr_save,
uint32_t
llr_offset
,
uint32_t
llr_offset
,
uint8_t
beamforming_mode
);
uint8_t
beamforming_mode
);
...
@@ -1044,7 +1039,7 @@ int32_t nr_rx_pdsch(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -1044,7 +1039,7 @@ int32_t nr_rx_pdsch(PHY_VARS_NR_UE *phy_vars_ue,
uint8_t
i_mod
,
uint8_t
i_mod
,
uint8_t
harq_pid
);
uint8_t
harq_pid
);
int32_t
rx_pdcch
(
PHY_VARS_NR_UE
*
ue
,
int32_t
nr_
rx_pdcch
(
PHY_VARS_NR_UE
*
ue
,
uint32_t
frame
,
uint32_t
frame
,
uint8_t
subframe
,
uint8_t
subframe
,
uint8_t
eNB_id
,
uint8_t
eNB_id
,
...
...
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