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
3a9b2446
Commit
3a9b2446
authored
Sep 24, 2019
by
sebastian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated/Optimized nrLDPC_llrRes2llrOut
parent
2984d51b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
5 deletions
+46
-5
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
+1
-1
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
+45
-4
No files found.
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
View file @
3a9b2446
...
...
@@ -456,7 +456,7 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
#ifdef NR_LDPC_PROFILER_DETAIL
start_meas
(
&
p_profiler
->
llrRes2llrOut
);
#endif
nrLDPC_llrRes2llrOut
(
p_lut
,
p_llrOut
,
p_procBuf
,
numLLR
);
nrLDPC_llrRes2llrOut
(
p_lut
,
p_llrOut
,
p_procBuf
,
numLLR
,
Z
,
BG
);
#ifdef NR_LDPC_PROFILER_DETAIL
stop_meas
(
&
p_profiler
->
llrRes2llrOut
);
#endif
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
View file @
3a9b2446
...
...
@@ -165,6 +165,26 @@ static inline void nrLDPC_llr2CnProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, t_nrLD
cnProcBuf
[
*
p_lutEntry
++
]
=
llr
[
i
];
}
// Test
// =====================================================================
// CN group with 3 BNs
//const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
/*
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
const uint16_t (*lut_circShift_CNG3) [lut_numCnInCnGroups_BG1_R13[0]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[0]]) p_lut->circShift[0];
int8_t* p_cnProcBuf;
uint32_t bitOffsetInGroup;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX;
const uint8_t lut_CNG3[3] = {0, 1, 26};
for (j=0; j<2; j++)
{
p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[0] + j*bitOffsetInGroup];
nrLDPC_inv_circ_memcpy(p_cnProcBuf, &llr[lut_CNG3[j]*Z], Z, lut_circShift_CNG3[j][0]);
}
*/
}
/**
...
...
@@ -870,16 +890,37 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
\param llrOut Pointer to output LLRs
\param numLLR Number of LLR values
*/
static
inline
void
nrLDPC_llrRes2llrOut
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llrOut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
numLLR
)
static
inline
void
nrLDPC_llrRes2llrOut
(
t_nrLDPC_lut
*
p_lut
,
int8_t
*
llrOut
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint16_t
numLLR
,
uint16_t
Z
,
uint8_t
BG
)
{
const
uint16_t
*
lut_llr2llrProcBuf
=
p_lut
->
llr2llrProcBuf
;
uint32_t
i
;
const
uint8_t
numBn2CnG1
=
p_lut
->
numBnInBnGroups
[
0
];
uint32_t
colG1
=
NR_LDPC_START_COL_PARITY_BG1
*
Z
;
const
uint16_t
*
lut_llr2llrProcBufAddr
=
p_lut
->
llr2llrProcBufAddr
;
const
uint8_t
*
lut_llr2llrProcBufNumBn
=
p_lut
->
llr2llrProcBufNumBn
;
const
uint8_t
*
lut_llr2llrProcBufNumEl
=
p_lut
->
llr2llrProcBufNumEl
;
uint16_t
numLlr
=
0
;
int8_t
*
llrRes
=
p_procBuf
->
llrRes
;
int8_t
*
p_llrOut
=
&
llrOut
[
0
];
for
(
i
=
0
;
i
<
numLLR
;
i
++
)
if
(
BG
==
2
)
{
llrOut
[
i
]
=
llrRes
[
lut_llr2llrProcBuf
[
i
]];
colG1
=
NR_LDPC_START_COL_PARITY_BG2
*
Z
;
}
// Copy LLRs connected to 1 CN
if
(
numBn2CnG1
>
0
)
{
memcpy
(
&
llrOut
[
colG1
],
llrRes
,
numBn2CnG1
*
Z
);
}
// First 2 columns might be set to zero directly if it's true they always belong to the groups with highest number of connected CNs...
for
(
i
=
0
;
i
<
(
*
lut_llr2llrProcBufNumEl
);
i
++
)
{
numLlr
=
lut_llr2llrProcBufNumBn
[
i
]
*
Z
;
memcpy
(
p_llrOut
,
&
llrRes
[
lut_llr2llrProcBufAddr
[
i
]],
numLlr
);
p_llrOut
+=
numLlr
;
}
}
...
...
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