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
zzha zzha
OpenXG-RAN
Commits
a8a5897a
Commit
a8a5897a
authored
Jan 20, 2022
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cherry pick ldpc-decoder-crc-check
commit:
3cfefe3c
parent
b0d462e0
Changes
11
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
121 additions
and
256 deletions
+121
-256
openair1/PHY/CODING/TESTBENCH/ldpctest.c
openair1/PHY/CODING/TESTBENCH/ldpctest.c
+1
-8
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_bnProc.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_bnProc.h
+2
-11
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
+4
-16
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
+47
-154
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
+8
-24
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/nrLDPC_debug.h
...ir1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/nrLDPC_debug.h
+7
-7
openair1/PHY/CODING/nrLDPC_defs.h
openair1/PHY/CODING/nrLDPC_defs.h
+1
-1
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
+51
-22
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+0
-9
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
+0
-2
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+0
-2
No files found.
openair1/PHY/CODING/TESTBENCH/ldpctest.c
View file @
a8a5897a
...
@@ -139,8 +139,6 @@ int test_ldpc(short No_iteration,
...
@@ -139,8 +139,6 @@ int test_ldpc(short No_iteration,
//double code_rate_actual_vec[8] = {0.2, 0.33333, 0.4, 0.5, 0.66667, 0.73333, 0.81481, 0.88};
//double code_rate_actual_vec[8] = {0.2, 0.33333, 0.4, 0.5, 0.66667, 0.73333, 0.81481, 0.88};
t_nrLDPC_dec_params
decParams
;
t_nrLDPC_dec_params
decParams
;
t_nrLDPC_procBuf
nrLDPC_procBuf
;
t_nrLDPC_procBuf
*
p_nrLDPC_procBuf
=
&
nrLDPC_procBuf
;
t_nrLDPC_time_stats
decoder_profiler
=
{
0
};
t_nrLDPC_time_stats
decoder_profiler
=
{
0
};
t_nrLDPC_time_stats
*
p_decoder_profiler
=&
decoder_profiler
;
t_nrLDPC_time_stats
*
p_decoder_profiler
=&
decoder_profiler
;
...
@@ -194,9 +192,6 @@ int test_ldpc(short No_iteration,
...
@@ -194,9 +192,6 @@ int test_ldpc(short No_iteration,
reset_meas
(
&
decoder_profiler
.
llr2bit
);
reset_meas
(
&
decoder_profiler
.
llr2bit
);
//reset_meas(&decoder_profiler.total);
//reset_meas(&decoder_profiler.total);
// Allocate LDPC decoder buffers
p_nrLDPC_procBuf
=
nrLDPC_init_mem
();
for
(
j
=
0
;
j
<
MAX_NUM_DLSCH_SEGMENTS
;
j
++
)
{
for
(
j
=
0
;
j
<
MAX_NUM_DLSCH_SEGMENTS
;
j
++
)
{
for
(
i
=
0
;
i
<
block_length
/
8
;
i
++
)
{
for
(
i
=
0
;
i
<
block_length
/
8
;
i
++
)
{
test_input
[
j
][
i
]
=
(
unsigned
char
)
rand
();
test_input
[
j
][
i
]
=
(
unsigned
char
)
rand
();
...
@@ -398,7 +393,7 @@ int test_ldpc(short No_iteration,
...
@@ -398,7 +393,7 @@ int test_ldpc(short No_iteration,
nrLDPC_initcall
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
]);
nrLDPC_initcall
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
]);
for
(
j
=
0
;
j
<
n_segments
;
j
++
)
{
for
(
j
=
0
;
j
<
n_segments
;
j
++
)
{
start_meas
(
time_decoder
);
start_meas
(
time_decoder
);
n_iter
=
nrLDPC_decoder
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
],
p_
nrLDPC_procBuf
,
p_
decoder_profiler
);
n_iter
=
nrLDPC_decoder
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
],
p_decoder_profiler
);
stop_meas
(
time_decoder
);
stop_meas
(
time_decoder
);
}
}
...
@@ -472,8 +467,6 @@ int test_ldpc(short No_iteration,
...
@@ -472,8 +467,6 @@ int test_ldpc(short No_iteration,
//free(channel_output_fixed);
//free(channel_output_fixed);
//free(estimated_output);
//free(estimated_output);
nrLDPC_free_mem
(
p_nrLDPC_procBuf
);
print_meas
(
&
time
,
"ldpc_encoder"
,
NULL
,
NULL
);
print_meas
(
&
time
,
"ldpc_encoder"
,
NULL
,
NULL
);
print_meas
(
time_optim
,
"ldpc_encoder_optim"
,
NULL
,
NULL
);
print_meas
(
time_optim
,
"ldpc_encoder_optim"
,
NULL
,
NULL
);
print_meas
(
&
tinput
,
"ldpc_encoder_optim(input)"
,
NULL
,
NULL
);
print_meas
(
&
tinput
,
"ldpc_encoder_optim(input)"
,
NULL
,
NULL
);
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_bnProc.h
View file @
a8a5897a
...
@@ -37,17 +37,12 @@
...
@@ -37,17 +37,12 @@
\param p_lut Pointer to decoder LUTs
\param p_lut Pointer to decoder LUTs
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_bnProcPc
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_bnProcPc
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
bnProcBuf
,
int8_t
*
bnProcBufRes
,
int8_t
*
llrProcBuf
,
int8_t
*
llrRes
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numBnInBnGroups
=
p_lut
->
numBnInBnGroups
;
const
uint8_t
*
lut_numBnInBnGroups
=
p_lut
->
numBnInBnGroups
;
const
uint32_t
*
lut_startAddrBnGroups
=
p_lut
->
startAddrBnGroups
;
const
uint32_t
*
lut_startAddrBnGroups
=
p_lut
->
startAddrBnGroups
;
const
uint16_t
*
lut_startAddrBnGroupsLlr
=
p_lut
->
startAddrBnGroupsLlr
;
const
uint16_t
*
lut_startAddrBnGroupsLlr
=
p_lut
->
startAddrBnGroupsLlr
;
int8_t
*
bnProcBuf
=
p_procBuf
->
bnProcBuf
;
int8_t
*
bnProcBufRes
=
p_procBuf
->
bnProcBufRes
;
int8_t
*
llrRes
=
p_procBuf
->
llrRes
;
int8_t
*
llrProcBuf
=
p_procBuf
->
llrProcBuf
;
__m128i
*
p_bnProcBuf
;
__m128i
*
p_bnProcBuf
;
__m256i
*
p_bnProcBufRes
;
__m256i
*
p_bnProcBufRes
;
__m128i
*
p_llrProcBuf
;
__m128i
*
p_llrProcBuf
;
...
@@ -1681,7 +1676,7 @@ static inline void nrLDPC_bnProcPc(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_proc
...
@@ -1681,7 +1676,7 @@ static inline void nrLDPC_bnProcPc(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_proc
\param p_lut Pointer to decoder LUTs
\param p_lut Pointer to decoder LUTs
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_bnProc
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_bnProc
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
bnProcBuf
,
int8_t
*
bnProcBufRes
,
int8_t
*
llrRes
,
uint16_t
Z
)
{
{
// BN Processing calculating the values to send back to the CNs for next iteration
// BN Processing calculating the values to send back to the CNs for next iteration
// bnProcBufRes contains the sum of all edges to each BN at the start of each group
// bnProcBufRes contains the sum of all edges to each BN at the start of each group
...
@@ -1690,10 +1685,6 @@ static inline void nrLDPC_bnProc(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBu
...
@@ -1690,10 +1685,6 @@ static inline void nrLDPC_bnProc(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBu
const
uint32_t
*
lut_startAddrBnGroups
=
p_lut
->
startAddrBnGroups
;
const
uint32_t
*
lut_startAddrBnGroups
=
p_lut
->
startAddrBnGroups
;
const
uint16_t
*
lut_startAddrBnGroupsLlr
=
p_lut
->
startAddrBnGroupsLlr
;
const
uint16_t
*
lut_startAddrBnGroupsLlr
=
p_lut
->
startAddrBnGroupsLlr
;
int8_t
*
bnProcBuf
=
p_procBuf
->
bnProcBuf
;
int8_t
*
bnProcBufRes
=
p_procBuf
->
bnProcBufRes
;
int8_t
*
llrRes
=
p_procBuf
->
llrRes
;
__m256i
*
p_bnProcBuf
;
__m256i
*
p_bnProcBuf
;
__m256i
*
p_bnProcBufRes
;
__m256i
*
p_bnProcBufRes
;
__m256i
*
p_llrRes
;
__m256i
*
p_llrRes
;
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
View file @
a8a5897a
...
@@ -37,14 +37,11 @@
...
@@ -37,14 +37,11 @@
\param p_procBuf Pointer to processing buffers
\param p_procBuf Pointer to processing buffers
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_cnProc_BG2
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_cnProc_BG2
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
cnProcBuf
,
int8_t
*
cnProcBufRes
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
int8_t
*
cnProcBuf
=
p_procBuf
->
cnProcBuf
;
int8_t
*
cnProcBufRes
=
p_procBuf
->
cnProcBufRes
;
__m256i
*
p_cnProcBuf
;
__m256i
*
p_cnProcBuf
;
__m256i
*
p_cnProcBufRes
;
__m256i
*
p_cnProcBufRes
;
...
@@ -372,14 +369,11 @@ static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr
...
@@ -372,14 +369,11 @@ static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr
\param p_lut Pointer to decoder LUTs
\param p_lut Pointer to decoder LUTs
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_cnProc_BG1
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_cnProc_BG1
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
cnProcBuf
,
int8_t
*
cnProcBufRes
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
int8_t
*
cnProcBuf
=
p_procBuf
->
cnProcBuf
;
int8_t
*
cnProcBufRes
=
p_procBuf
->
cnProcBufRes
;
__m256i
*
p_cnProcBuf
;
__m256i
*
p_cnProcBuf
;
__m256i
*
p_cnProcBufRes
;
__m256i
*
p_cnProcBufRes
;
...
@@ -871,14 +865,11 @@ static inline void nrLDPC_cnProc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr
...
@@ -871,14 +865,11 @@ static inline void nrLDPC_cnProc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr
\param Z Lifting size
\param Z Lifting size
\return 32-bit parity check indicator
\return 32-bit parity check indicator
*/
*/
static
inline
uint32_t
nrLDPC_cnProcPc_BG1
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
Z
)
static
inline
uint32_t
nrLDPC_cnProcPc_BG1
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
cnProcBuf
,
int8_t
*
cnProcBufRes
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
int8_t
*
cnProcBuf
=
p_procBuf
->
cnProcBuf
;
int8_t
*
cnProcBufRes
=
p_procBuf
->
cnProcBufRes
;
__m256i
*
p_cnProcBuf
;
__m256i
*
p_cnProcBuf
;
__m256i
*
p_cnProcBufRes
;
__m256i
*
p_cnProcBufRes
;
...
@@ -1506,14 +1497,11 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -1506,14 +1497,11 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param Z Lifting size
\param Z Lifting size
\return 32-bit parity check indicator
\return 32-bit parity check indicator
*/
*/
static
inline
uint32_t
nrLDPC_cnProcPc_BG2
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
Z
)
static
inline
uint32_t
nrLDPC_cnProcPc_BG2
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
cnProcBuf
,
int8_t
*
cnProcBufRes
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
int8_t
*
cnProcBuf
=
p_procBuf
->
cnProcBuf
;
int8_t
*
cnProcBufRes
=
p_procBuf
->
cnProcBufRes
;
__m256i
*
p_cnProcBuf
;
__m256i
*
p_cnProcBuf
;
__m256i
*
p_cnProcBufRes
;
__m256i
*
p_cnProcBufRes
;
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
View file @
a8a5897a
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
View file @
a8a5897a
...
@@ -97,7 +97,7 @@ static inline void *nrLDPC_circ_memcpy(int8_t *str1, const int8_t *str2, uint16_
...
@@ -97,7 +97,7 @@ static inline void *nrLDPC_circ_memcpy(int8_t *str1, const int8_t *str2, uint16_
\param Z Lifting size
\param Z Lifting size
\param BG Base graph
\param BG Base graph
*/
*/
static
inline
void
nrLDPC_llr2llrProcBuf
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llr
,
t_nrLDPC_procBuf
*
p_p
rocBuf
,
uint16_t
Z
,
uint8_t
BG
)
static
inline
void
nrLDPC_llr2llrProcBuf
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llr
,
int8_t
*
llrP
rocBuf
,
uint16_t
Z
,
uint8_t
BG
)
{
{
uint32_t
i
;
uint32_t
i
;
const
uint8_t
numBn2CnG1
=
p_lut
->
numBnInBnGroups
[
0
];
const
uint8_t
numBn2CnG1
=
p_lut
->
numBnInBnGroups
[
0
];
...
@@ -109,7 +109,6 @@ static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrL
...
@@ -109,7 +109,6 @@ static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrL
const
uint8_t
*
lut_llr2llrProcBufBnPos
=
p_lut
->
llr2llrProcBufBnPos
;
const
uint8_t
*
lut_llr2llrProcBufBnPos
=
p_lut
->
llr2llrProcBufBnPos
;
uint32_t
idxBn
;
uint32_t
idxBn
;
int8_t
*
llrProcBuf
=
p_procBuf
->
llrProcBuf
;
// Copy LLRs connected to 1 CN
// Copy LLRs connected to 1 CN
if
(
numBn2CnG1
>
0
)
if
(
numBn2CnG1
>
0
)
...
@@ -133,7 +132,7 @@ static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrL
...
@@ -133,7 +132,7 @@ static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrL
\param p_procBuf Pointer to the processing buffers
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_llr2CnProcBuf_BG1
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llr
,
t_nrLDPC_procBuf
*
p_p
rocBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_llr2CnProcBuf_BG1
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llr
,
int8_t
*
cnP
rocBuf
,
uint16_t
Z
)
{
{
const
uint16_t
(
*
lut_circShift_CNG3
)
[
lut_numCnInCnGroups_BG1_R13
[
0
]]
=
(
const
uint16_t
(
*
)[
lut_numCnInCnGroups_BG1_R13
[
0
]])
p_lut
->
circShift
[
0
];
const
uint16_t
(
*
lut_circShift_CNG3
)
[
lut_numCnInCnGroups_BG1_R13
[
0
]]
=
(
const
uint16_t
(
*
)[
lut_numCnInCnGroups_BG1_R13
[
0
]])
p_lut
->
circShift
[
0
];
const
uint16_t
(
*
lut_circShift_CNG4
)
[
lut_numCnInCnGroups_BG1_R13
[
1
]]
=
(
const
uint16_t
(
*
)[
lut_numCnInCnGroups_BG1_R13
[
1
]])
p_lut
->
circShift
[
1
];
const
uint16_t
(
*
lut_circShift_CNG4
)
[
lut_numCnInCnGroups_BG1_R13
[
1
]]
=
(
const
uint16_t
(
*
)[
lut_numCnInCnGroups_BG1_R13
[
1
]])
p_lut
->
circShift
[
1
];
...
@@ -158,7 +157,6 @@ static inline void nrLDPC_llr2CnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* llr, t_
...
@@ -158,7 +157,6 @@ static inline void nrLDPC_llr2CnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* llr, t_
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
int8_t
*
cnProcBuf
=
p_procBuf
->
cnProcBuf
;
uint32_t
i
;
uint32_t
i
;
uint32_t
j
;
uint32_t
j
;
...
@@ -342,7 +340,7 @@ static inline void nrLDPC_llr2CnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* llr, t_
...
@@ -342,7 +340,7 @@ static inline void nrLDPC_llr2CnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* llr, t_
\param p_procBuf Pointer to the processing buffers
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_llr2CnProcBuf_BG2
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llr
,
t_nrLDPC_procBuf
*
p_p
rocBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_llr2CnProcBuf_BG2
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llr
,
int8_t
*
cnP
rocBuf
,
uint16_t
Z
)
{
{
const
uint16_t
(
*
lut_circShift_CNG3
)
[
lut_numCnInCnGroups_BG2_R15
[
0
]]
=
(
const
uint16_t
(
*
)[
lut_numCnInCnGroups_BG2_R15
[
0
]])
p_lut
->
circShift
[
0
];
const
uint16_t
(
*
lut_circShift_CNG3
)
[
lut_numCnInCnGroups_BG2_R15
[
0
]]
=
(
const
uint16_t
(
*
)[
lut_numCnInCnGroups_BG2_R15
[
0
]])
p_lut
->
circShift
[
0
];
const
uint16_t
(
*
lut_circShift_CNG4
)
[
lut_numCnInCnGroups_BG2_R15
[
1
]]
=
(
const
uint16_t
(
*
)[
lut_numCnInCnGroups_BG2_R15
[
1
]])
p_lut
->
circShift
[
1
];
const
uint16_t
(
*
lut_circShift_CNG4
)
[
lut_numCnInCnGroups_BG2_R15
[
1
]]
=
(
const
uint16_t
(
*
)[
lut_numCnInCnGroups_BG2_R15
[
1
]])
p_lut
->
circShift
[
1
];
...
@@ -361,7 +359,6 @@ static inline void nrLDPC_llr2CnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* llr, t_
...
@@ -361,7 +359,6 @@ static inline void nrLDPC_llr2CnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* llr, t_
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
int8_t
*
cnProcBuf
=
p_procBuf
->
cnProcBuf
;
uint32_t
i
;
uint32_t
i
;
uint32_t
j
;
uint32_t
j
;
...
@@ -478,7 +475,7 @@ static inline void nrLDPC_llr2CnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* llr, t_
...
@@ -478,7 +475,7 @@ static inline void nrLDPC_llr2CnProcBuf_BG2(t_nrLDPC_lut* p_lut, int8_t* llr, t_
\param p_procBuf Pointer to the processing buffers
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_cn2bnProcBuf_BG2
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_p
rocBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_cn2bnProcBuf_BG2
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
cnProcBufRes
,
int8_t
*
bnP
rocBuf
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
...
@@ -504,9 +501,6 @@ static inline void nrLDPC_cn2bnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -504,9 +501,6 @@ static inline void nrLDPC_cn2bnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG8
)
[
lut_numCnInCnGroups
[
4
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
4
]])
p_lut
->
bnPosBnProcBuf
[
4
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG8
)
[
lut_numCnInCnGroups
[
4
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
4
]])
p_lut
->
bnPosBnProcBuf
[
4
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG10
)
[
lut_numCnInCnGroups
[
5
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
5
]])
p_lut
->
bnPosBnProcBuf
[
5
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG10
)
[
lut_numCnInCnGroups
[
5
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
5
]])
p_lut
->
bnPosBnProcBuf
[
5
];
int8_t
*
cnProcBufRes
=
p_procBuf
->
cnProcBufRes
;
int8_t
*
bnProcBuf
=
p_procBuf
->
bnProcBuf
;
int8_t
*
p_cnProcBufRes
;
int8_t
*
p_cnProcBufRes
;
uint32_t
bitOffsetInGroup
;
uint32_t
bitOffsetInGroup
;
uint32_t
i
;
uint32_t
i
;
...
@@ -621,7 +615,7 @@ static inline void nrLDPC_cn2bnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -621,7 +615,7 @@ static inline void nrLDPC_cn2bnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param p_procBuf Pointer to the processing buffers
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_cn2bnProcBuf_BG1
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_p
rocBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_cn2bnProcBuf_BG1
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
cnProcBufRes
,
int8_t
*
bnP
rocBuf
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
...
@@ -655,9 +649,6 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -655,9 +649,6 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG10
)[
lut_numCnInCnGroups
[
7
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
7
]])
p_lut
->
bnPosBnProcBuf
[
7
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG10
)[
lut_numCnInCnGroups
[
7
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
7
]])
p_lut
->
bnPosBnProcBuf
[
7
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG19
)[
lut_numCnInCnGroups
[
8
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
8
]])
p_lut
->
bnPosBnProcBuf
[
8
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG19
)[
lut_numCnInCnGroups
[
8
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
8
]])
p_lut
->
bnPosBnProcBuf
[
8
];
int8_t
*
cnProcBufRes
=
p_procBuf
->
cnProcBufRes
;
int8_t
*
bnProcBuf
=
p_procBuf
->
bnProcBuf
;
int8_t
*
p_cnProcBufRes
;
int8_t
*
p_cnProcBufRes
;
uint32_t
bitOffsetInGroup
;
uint32_t
bitOffsetInGroup
;
uint32_t
i
;
uint32_t
i
;
...
@@ -819,7 +810,7 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -819,7 +810,7 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param p_procBuf Pointer to the processing buffers
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_bn2cnProcBuf_BG2
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_p
rocBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_bn2cnProcBuf_BG2
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
bnProcBufRes
,
int8_t
*
cnP
rocBuf
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
...
@@ -845,9 +836,6 @@ static inline void nrLDPC_bn2cnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -845,9 +836,6 @@ static inline void nrLDPC_bn2cnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG8
)
[
lut_numCnInCnGroups
[
4
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
4
]])
p_lut
->
bnPosBnProcBuf
[
4
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG8
)
[
lut_numCnInCnGroups
[
4
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
4
]])
p_lut
->
bnPosBnProcBuf
[
4
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG10
)
[
lut_numCnInCnGroups
[
5
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
5
]])
p_lut
->
bnPosBnProcBuf
[
5
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG10
)
[
lut_numCnInCnGroups
[
5
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
5
]])
p_lut
->
bnPosBnProcBuf
[
5
];
int8_t
*
cnProcBuf
=
p_procBuf
->
cnProcBuf
;
int8_t
*
bnProcBufRes
=
p_procBuf
->
bnProcBufRes
;
int8_t
*
p_cnProcBuf
;
int8_t
*
p_cnProcBuf
;
uint32_t
bitOffsetInGroup
;
uint32_t
bitOffsetInGroup
;
uint32_t
i
;
uint32_t
i
;
...
@@ -961,7 +949,7 @@ static inline void nrLDPC_bn2cnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -961,7 +949,7 @@ static inline void nrLDPC_bn2cnProcBuf_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param p_procBuf Pointer to the processing buffers
\param p_procBuf Pointer to the processing buffers
\param Z Lifting size
\param Z Lifting size
*/
*/
static
inline
void
nrLDPC_bn2cnProcBuf_BG1
(
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_procBuf
*
p_p
rocBuf
,
uint16_t
Z
)
static
inline
void
nrLDPC_bn2cnProcBuf_BG1
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
bnProcBufRes
,
int8_t
*
cnP
rocBuf
,
uint16_t
Z
)
{
{
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint8_t
*
lut_numCnInCnGroups
=
p_lut
->
numCnInCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
const
uint32_t
*
lut_startAddrCnGroups
=
p_lut
->
startAddrCnGroups
;
...
@@ -995,9 +983,6 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -995,9 +983,6 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG10
)[
lut_numCnInCnGroups
[
7
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
7
]])
p_lut
->
bnPosBnProcBuf
[
7
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG10
)[
lut_numCnInCnGroups
[
7
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
7
]])
p_lut
->
bnPosBnProcBuf
[
7
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG19
)[
lut_numCnInCnGroups
[
8
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
8
]])
p_lut
->
bnPosBnProcBuf
[
8
];
const
uint8_t
(
*
lut_bnPosBnProcBuf_CNG19
)[
lut_numCnInCnGroups
[
8
]]
=
(
const
uint8_t
(
*
)[
lut_numCnInCnGroups
[
8
]])
p_lut
->
bnPosBnProcBuf
[
8
];
int8_t
*
cnProcBuf
=
p_procBuf
->
cnProcBuf
;
int8_t
*
bnProcBufRes
=
p_procBuf
->
bnProcBufRes
;
int8_t
*
p_cnProcBuf
;
int8_t
*
p_cnProcBuf
;
uint32_t
bitOffsetInGroup
;
uint32_t
bitOffsetInGroup
;
uint32_t
i
;
uint32_t
i
;
...
@@ -1157,7 +1142,7 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
...
@@ -1157,7 +1142,7 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param Z Lifting size
\param Z Lifting size
\param BG Base graph
\param BG Base graph
*/
*/
static
inline
void
nrLDPC_llrRes2llrOut
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llrOut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
Z
,
uint8_t
BG
)
static
inline
void
nrLDPC_llrRes2llrOut
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llrOut
,
int8_t
*
llrRes
,
uint16_t
Z
,
uint8_t
BG
)
{
{
uint32_t
i
;
uint32_t
i
;
const
uint8_t
numBn2CnG1
=
p_lut
->
numBnInBnGroups
[
0
];
const
uint8_t
numBn2CnG1
=
p_lut
->
numBnInBnGroups
[
0
];
...
@@ -1168,7 +1153,6 @@ static inline void nrLDPC_llrRes2llrOut(t_nrLDPC_lut* p_lut, int8_t* llrOut, t_n
...
@@ -1168,7 +1153,6 @@ static inline void nrLDPC_llrRes2llrOut(t_nrLDPC_lut* p_lut, int8_t* llrOut, t_n
const
uint16_t
*
lut_llr2llrProcBufAddr
=
p_lut
->
llr2llrProcBufAddr
;
const
uint16_t
*
lut_llr2llrProcBufAddr
=
p_lut
->
llr2llrProcBufAddr
;
const
uint8_t
*
lut_llr2llrProcBufBnPos
=
p_lut
->
llr2llrProcBufBnPos
;
const
uint8_t
*
lut_llr2llrProcBufBnPos
=
p_lut
->
llr2llrProcBufBnPos
;
int8_t
*
llrRes
=
p_procBuf
->
llrRes
;
int8_t
*
p_llrOut
=
&
llrOut
[
0
];
int8_t
*
p_llrOut
=
&
llrOut
[
0
];
uint32_t
idxBn
;
uint32_t
idxBn
;
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/nrLDPC_debug.h
View file @
a8a5897a
...
@@ -87,38 +87,38 @@ static inline void nrLDPC_initFile(const char* fileName)
...
@@ -87,38 +87,38 @@ static inline void nrLDPC_initFile(const char* fileName)
\brief Writes data of predefined buffers to file
\brief Writes data of predefined buffers to file
\param buffer Enum of buffer name to write
\param buffer Enum of buffer name to write
*/
*/
static
inline
void
nrLDPC_debug_writeBuffer2File
(
e_nrLDPC_buffers
buffer
,
t_nrLDPC_procBuf
*
p_procBuf
)
static
inline
void
nrLDPC_debug_writeBuffer2File
(
e_nrLDPC_buffers
buffer
,
int8_t
*
p_buffer
)
{
{
switch
(
buffer
)
switch
(
buffer
)
{
{
case
nrLDPC_buffers_LLR_PROC
:
case
nrLDPC_buffers_LLR_PROC
:
{
{
nrLDPC_writeFile
(
"llrProcBuf.txt"
,
p_
procBuf
->
llrProcBuf
,
NR_LDPC_MAX_NUM_LLR
);
nrLDPC_writeFile
(
"llrProcBuf.txt"
,
p_
buffer
,
NR_LDPC_MAX_NUM_LLR
);
break
;
break
;
}
}
case
nrLDPC_buffers_CN_PROC
:
case
nrLDPC_buffers_CN_PROC
:
{
{
nrLDPC_writeFile
(
"cnProcBuf.txt"
,
p_
procBuf
->
cnProcBuf
,
NR_LDPC_SIZE_CN_PROC_BUF
);
nrLDPC_writeFile
(
"cnProcBuf.txt"
,
p_
buffer
,
NR_LDPC_SIZE_CN_PROC_BUF
);
break
;
break
;
}
}
case
nrLDPC_buffers_CN_PROC_RES
:
case
nrLDPC_buffers_CN_PROC_RES
:
{
{
nrLDPC_writeFile
(
"cnProcBufRes.txt"
,
p_
procBuf
->
cnProcBufRes
,
NR_LDPC_SIZE_CN_PROC_BUF
);
nrLDPC_writeFile
(
"cnProcBufRes.txt"
,
p_
buffer
,
NR_LDPC_SIZE_CN_PROC_BUF
);
break
;
break
;
}
}
case
nrLDPC_buffers_BN_PROC
:
case
nrLDPC_buffers_BN_PROC
:
{
{
nrLDPC_writeFile
(
"bnProcBuf.txt"
,
p_
procBuf
->
bnProcBuf
,
NR_LDPC_SIZE_BN_PROC_BUF
);
nrLDPC_writeFile
(
"bnProcBuf.txt"
,
p_
buffer
,
NR_LDPC_SIZE_BN_PROC_BUF
);
break
;
break
;
}
}
case
nrLDPC_buffers_BN_PROC_RES
:
case
nrLDPC_buffers_BN_PROC_RES
:
{
{
nrLDPC_writeFile
(
"bnProcBufRes.txt"
,
p_
procBuf
->
bnProcBufRes
,
NR_LDPC_SIZE_BN_PROC_BUF
);
nrLDPC_writeFile
(
"bnProcBufRes.txt"
,
p_
buffer
,
NR_LDPC_SIZE_BN_PROC_BUF
);
break
;
break
;
}
}
case
nrLDPC_buffers_LLR_RES
:
case
nrLDPC_buffers_LLR_RES
:
{
{
nrLDPC_writeFile
(
"llrRes.txt"
,
p_
procBuf
->
llrRes
,
NR_LDPC_MAX_NUM_LLR
);
nrLDPC_writeFile
(
"llrRes.txt"
,
p_
buffer
,
NR_LDPC_MAX_NUM_LLR
);
break
;
break
;
}
}
}
}
...
...
openair1/PHY/CODING/nrLDPC_defs.h
View file @
a8a5897a
...
@@ -71,5 +71,5 @@ typedef int(*nrLDPC_encoderfunc_t)(unsigned char **,unsigned char **,int,int,sho
...
@@ -71,5 +71,5 @@ typedef int(*nrLDPC_encoderfunc_t)(unsigned char **,unsigned char **,int,int,sho
\param p_llrOut Output vector
\param p_llrOut Output vector
\param p_profiler LDPC profiler statistics
\param p_profiler LDPC profiler statistics
*/
*/
typedef
int32_t
(
*
nrLDPC_decoderfunc_t
)(
t_nrLDPC_dec_params
*
,
int8_t
*
,
int8_t
*
,
t_nrLDPC_procBuf
*
,
t_nrLDPC_time_stats
*
);
typedef
int32_t
(
*
nrLDPC_decoderfunc_t
)(
t_nrLDPC_dec_params
*
,
int8_t
*
,
int8_t
*
,
t_nrLDPC_time_stats
*
);
#endif
#endif
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
View file @
a8a5897a
...
@@ -91,12 +91,6 @@ void free_gNB_ulsch(NR_gNB_ULSCH_t **ulschptr,uint8_t N_RB_UL)
...
@@ -91,12 +91,6 @@ void free_gNB_ulsch(NR_gNB_ULSCH_t **ulschptr,uint8_t N_RB_UL)
ulsch
->
harq_processes
[
i
]
->
w
[
r
]
=
NULL
;
ulsch
->
harq_processes
[
i
]
->
w
[
r
]
=
NULL
;
}
}
}
}
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
{
if
(
ulsch
->
harq_processes
[
i
]
->
p_nrLDPC_procBuf
[
r
]){
nrLDPC_free_mem
(
ulsch
->
harq_processes
[
i
]
->
p_nrLDPC_procBuf
[
r
]);
ulsch
->
harq_processes
[
i
]
->
p_nrLDPC_procBuf
[
r
]
=
NULL
;
}
}
free16
(
ulsch
->
harq_processes
[
i
],
sizeof
(
NR_UL_gNB_HARQ_t
));
free16
(
ulsch
->
harq_processes
[
i
],
sizeof
(
NR_UL_gNB_HARQ_t
));
ulsch
->
harq_processes
[
i
]
=
NULL
;
ulsch
->
harq_processes
[
i
]
=
NULL
;
}
}
...
@@ -120,21 +114,57 @@ NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations,uint16_t N_RB_UL, uint
...
@@ -120,21 +114,57 @@ NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations,uint16_t N_RB_UL, uint
}
}
uint16_t
ulsch_bytes
=
a_segments
*
1056
;
// allocated bytes per segment
uint16_t
ulsch_bytes
=
a_segments
*
1056
;
// allocated bytes per segment
ulsch
=
(
NR_gNB_ULSCH_t
*
)
malloc16_clear
(
sizeof
(
NR_gNB_ULSCH_t
));
ulsch
=
(
NR_gNB_ULSCH_t
*
)
malloc16
(
sizeof
(
NR_gNB_ULSCH_t
));
if
(
ulsch
)
{
memset
(
ulsch
,
0
,
sizeof
(
NR_gNB_ULSCH_t
));
ulsch
->
max_ldpc_iterations
=
max_ldpc_iterations
;
ulsch
->
max_ldpc_iterations
=
max_ldpc_iterations
;
ulsch
->
Mlimit
=
4
;
ulsch
->
Mlimit
=
4
;
for
(
i
=
0
;
i
<
NR_MAX_ULSCH_HARQ_PROCESSES
;
i
++
)
{
for
(
i
=
0
;
i
<
NR_MAX_ULSCH_HARQ_PROCESSES
;
i
++
)
{
ulsch
->
harq_processes
[
i
]
=
(
NR_UL_gNB_HARQ_t
*
)
malloc16_clear
(
sizeof
(
NR_UL_gNB_HARQ_t
));
ulsch
->
harq_processes
[
i
]
=
(
NR_UL_gNB_HARQ_t
*
)
malloc16
(
sizeof
(
NR_UL_gNB_HARQ_t
));
ulsch
->
harq_processes
[
i
]
->
b
=
(
uint8_t
*
)
malloc16_clear
(
ulsch_bytes
);
if
(
ulsch
->
harq_processes
[
i
])
{
memset
(
ulsch
->
harq_processes
[
i
],
0
,
sizeof
(
NR_UL_gNB_HARQ_t
));
ulsch
->
harq_processes
[
i
]
->
b
=
(
uint8_t
*
)
malloc16
(
ulsch_bytes
);
if
(
ulsch
->
harq_processes
[
i
]
->
b
)
memset
(
ulsch
->
harq_processes
[
i
]
->
b
,
0
,
ulsch_bytes
);
else
exit_flag
=
3
;
if
(
abstraction_flag
==
0
)
{
if
(
abstraction_flag
==
0
)
{
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
{
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
{
ulsch
->
harq_processes
[
i
]
->
p_nrLDPC_procBuf
[
r
]
=
nrLDPC_init_mem
();
ulsch
->
harq_processes
[
i
]
->
c
[
r
]
=
(
uint8_t
*
)
malloc16_clear
(
8448
*
sizeof
(
uint8_t
));
ulsch
->
harq_processes
[
i
]
->
c
[
r
]
=
(
uint8_t
*
)
malloc16
(
8448
*
sizeof
(
uint8_t
));
ulsch
->
harq_processes
[
i
]
->
d
[
r
]
=
(
int16_t
*
)
malloc16_clear
((
68
*
384
)
*
sizeof
(
int16_t
));
ulsch
->
harq_processes
[
i
]
->
w
[
r
]
=
(
int16_t
*
)
malloc16_clear
((
3
*
(
6144
+
64
))
*
sizeof
(
int16_t
));
if
(
ulsch
->
harq_processes
[
i
]
->
c
[
r
])
memset
(
ulsch
->
harq_processes
[
i
]
->
c
[
r
],
0
,
8448
*
sizeof
(
uint8_t
));
else
exit_flag
=
2
;
ulsch
->
harq_processes
[
i
]
->
d
[
r
]
=
(
int16_t
*
)
malloc16
((
68
*
384
)
*
sizeof
(
int16_t
));
if
(
ulsch
->
harq_processes
[
i
]
->
d
[
r
])
memset
(
ulsch
->
harq_processes
[
i
]
->
d
[
r
],
0
,(
68
*
384
)
*
sizeof
(
int16_t
));
else
exit_flag
=
2
;
ulsch
->
harq_processes
[
i
]
->
w
[
r
]
=
(
int16_t
*
)
malloc16
((
3
*
(
6144
+
64
))
*
sizeof
(
int16_t
));
if
(
ulsch
->
harq_processes
[
i
]
->
w
[
r
])
memset
(
ulsch
->
harq_processes
[
i
]
->
w
[
r
],
0
,(
3
*
(
6144
+
64
))
*
sizeof
(
int16_t
));
else
exit_flag
=
2
;
}
}
}
else
{
exit_flag
=
1
;
}
}
}
}
}
}
...
@@ -382,7 +412,6 @@ void nr_processULSegment(void* arg) {
...
@@ -382,7 +412,6 @@ void nr_processULSegment(void* arg) {
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decoderParms
,
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decoderParms
,
(
int8_t
*
)
&
pl
[
0
],
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
,
llrProcBuf
,
ulsch_harq
->
p_nrLDPC_procBuf
[
r
],
p_procTime
);
p_procTime
);
if
(
check_crc
((
uint8_t
*
)
llrProcBuf
,
length_dec
,
ulsch_harq
->
F
,
crc_type
))
{
if
(
check_crc
((
uint8_t
*
)
llrProcBuf
,
length_dec
,
ulsch_harq
->
F
,
crc_type
))
{
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
a8a5897a
...
@@ -114,13 +114,6 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr,uint8_t N_RB_DL) {
...
@@ -114,13 +114,6 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr,uint8_t N_RB_DL) {
dlsch
->
harq_processes
[
i
]
->
w
[
r
]
=
NULL
;
dlsch
->
harq_processes
[
i
]
->
w
[
r
]
=
NULL
;
}
}
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
{
if
(
dlsch
->
harq_processes
[
i
]
->
p_nrLDPC_procBuf
[
r
])
{
nrLDPC_free_mem
(
dlsch
->
harq_processes
[
i
]
->
p_nrLDPC_procBuf
[
r
]);
dlsch
->
harq_processes
[
i
]
->
p_nrLDPC_procBuf
[
r
]
=
NULL
;
}
}
free16
(
dlsch
->
harq_processes
[
i
],
sizeof
(
NR_DL_UE_HARQ_t
));
free16
(
dlsch
->
harq_processes
[
i
],
sizeof
(
NR_DL_UE_HARQ_t
));
dlsch
->
harq_processes
[
i
]
=
NULL
;
dlsch
->
harq_processes
[
i
]
=
NULL
;
}
}
...
@@ -169,7 +162,6 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
...
@@ -169,7 +162,6 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint
if
(
abstraction_flag
==
0
)
{
if
(
abstraction_flag
==
0
)
{
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
{
for
(
r
=
0
;
r
<
a_segments
;
r
++
)
{
dlsch
->
harq_processes
[
i
]
->
p_nrLDPC_procBuf
[
r
]
=
nrLDPC_init_mem
();
dlsch
->
harq_processes
[
i
]
->
c
[
r
]
=
(
uint8_t
*
)
malloc16
(
1056
);
dlsch
->
harq_processes
[
i
]
->
c
[
r
]
=
(
uint8_t
*
)
malloc16
(
1056
);
if
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
])
if
(
dlsch
->
harq_processes
[
i
]
->
c
[
r
])
...
@@ -441,7 +433,6 @@ void nr_processDLSegment(void* arg) {
...
@@ -441,7 +433,6 @@ void nr_processDLSegment(void* arg) {
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decoderParms
,
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decoderParms
,
(
int8_t
*
)
&
pl
[
0
],
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
,
llrProcBuf
,
p_nrLDPC_procBuf
[
r
],
p_procTime
);
p_procTime
);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC, VCD_FUNCTION_OUT);
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC, VCD_FUNCTION_OUT);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
View file @
a8a5897a
...
@@ -240,8 +240,6 @@ typedef struct {
...
@@ -240,8 +240,6 @@ typedef struct {
//double w_abs[MAX_NUM_NR_DLSCH_SEGMENTS][3*8448];
//double w_abs[MAX_NUM_NR_DLSCH_SEGMENTS][3*8448];
/// soft bits for each received segment ("d"-sequence)(for definition see 36-212 V8.6 2009-03, p.15)
/// soft bits for each received segment ("d"-sequence)(for definition see 36-212 V8.6 2009-03, p.15)
int16_t
*
d
[
MAX_NUM_NR_DLSCH_SEGMENTS
];
int16_t
*
d
[
MAX_NUM_NR_DLSCH_SEGMENTS
];
/// LDPC processing buffers
t_nrLDPC_procBuf
*
p_nrLDPC_procBuf
[
MAX_NUM_NR_DLSCH_SEGMENTS
];
/// Number of code segments
/// Number of code segments
uint32_t
C
;
uint32_t
C
;
/// Number of bits in code segments
/// Number of bits in code segments
...
...
openair1/PHY/defs_gNB.h
View file @
a8a5897a
...
@@ -282,8 +282,6 @@ typedef struct {
...
@@ -282,8 +282,6 @@ typedef struct {
uint32_t
C
;
uint32_t
C
;
/// Pointers to code blocks after LDPC coding (38.212 V15.4.0 section 5.3.2)
/// Pointers to code blocks after LDPC coding (38.212 V15.4.0 section 5.3.2)
int16_t
*
d
[
MAX_NUM_NR_ULSCH_SEGMENTS
];
int16_t
*
d
[
MAX_NUM_NR_ULSCH_SEGMENTS
];
/// LDPC processing buffer
t_nrLDPC_procBuf
*
p_nrLDPC_procBuf
[
MAX_NUM_NR_ULSCH_SEGMENTS
];
/// LDPC lifting size (38.212 V15.4.0 table 5.3.2-1)
/// LDPC lifting size (38.212 V15.4.0 table 5.3.2-1)
uint32_t
Z
;
uint32_t
Z
;
/// code blocks after bit selection in rate matching for LDPC code (38.212 V15.4.0 section 5.4.2.1)
/// code blocks after bit selection in rate matching for LDPC code (38.212 V15.4.0 section 5.4.2.1)
...
...
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