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
lizhongxiao
OpenXG-RAN
Commits
41c782e8
Commit
41c782e8
authored
Sep 08, 2022
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change LDPC decoder rate based on round/rv
parent
62cea0ef
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
58 additions
and
0 deletions
+58
-0
openair1/PHY/CODING/coding_defs.h
openair1/PHY/CODING/coding_defs.h
+7
-0
openair1/PHY/CODING/nr_rate_matching.c
openair1/PHY/CODING/nr_rate_matching.c
+33
-0
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
+6
-0
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+6
-0
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
+3
-0
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+3
-0
No files found.
openair1/PHY/CODING/coding_defs.h
View file @
41c782e8
...
...
@@ -472,6 +472,13 @@ void nr_interleaving_ldpc(uint32_t E, uint8_t Qm, uint8_t *e,uint8_t *f);
void
nr_deinterleaving_ldpc
(
uint32_t
E
,
uint8_t
Qm
,
int16_t
*
e
,
int16_t
*
f
);
int
nr_get_R_ldpc_decoder
(
int
rvidx
,
int
E
,
int
BG
,
int
Z
,
int
*
llrLen
,
int
round
);
int
nr_rate_matching_ldpc
(
uint32_t
Tbslbrm
,
uint8_t
BG
,
uint16_t
Z
,
...
...
openair1/PHY/CODING/nr_rate_matching.c
View file @
41c782e8
...
...
@@ -386,6 +386,39 @@ void nr_deinterleaving_ldpc(uint32_t E, uint8_t Qm, int16_t *e,int16_t *f)
}
int
nr_get_R_ldpc_decoder
(
int
rvidx
,
int
E
,
int
BG
,
int
Z
,
int
*
llrLen
,
int
round
)
{
AssertFatal
(
BG
==
1
||
BG
==
2
,
"Unknown BG %d
\n
"
,
BG
);
int
Ncb
=
(
BG
==
1
)
?
(
66
*
Z
)
:
(
50
*
Z
);
int
infoBits
=
(
index_k0
[
BG
-
1
][
rvidx
]
*
Z
+
E
);
if
(
round
==
0
)
*
llrLen
=
infoBits
;
if
(
infoBits
>
Ncb
)
infoBits
=
Ncb
;
if
(
infoBits
>
*
llrLen
)
*
llrLen
=
infoBits
;
int
sysBits
=
(
BG
==
1
)
?
(
22
*
Z
)
:
(
10
*
Z
);
float
decoderR
=
(
float
)
sysBits
/
(
infoBits
+
2
*
Z
);
if
(
BG
==
2
)
if
(
decoderR
<
0
.
3333
)
return
15
;
else
if
(
decoderR
<
0
.
6667
)
return
13
;
else
return
23
;
else
if
(
decoderR
<
0
.
6667
)
return
13
;
else
if
(
decoderR
<
0
.
8889
)
return
23
;
else
return
89
;
}
int
nr_rate_matching_ldpc
(
uint32_t
Tbslbrm
,
uint8_t
BG
,
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
View file @
41c782e8
...
...
@@ -234,6 +234,12 @@ void nr_processULSegment(void* arg) {
short
*
ulsch_llr
=
rdata
->
ulsch_llr
;
int
max_ldpc_iterations
=
p_decoderParms
->
numMaxIter
;
int8_t
llrProcBuf
[
OAI_UL_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
p_decoderParms
->
R
=
nr_get_R_ldpc_decoder
(
rv_index
,
E
,
p_decoderParms
->
BG
,
p_decoderParms
->
Z
,
&
ulsch_harq
->
llrLen
,
ulsch_harq
->
round
);
int16_t
z
[
68
*
384
+
16
]
__attribute__
((
aligned
(
16
)));
int8_t
l
[
68
*
384
+
16
]
__attribute__
((
aligned
(
16
)));
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
41c782e8
...
...
@@ -251,6 +251,12 @@ void nr_processDLSegment(void* arg) {
short
*
dlsch_llr
=
rdata
->
dlsch_llr
;
rdata
->
decodeIterations
=
dlsch
->
max_ldpc_iterations
+
1
;
int8_t
llrProcBuf
[
OAI_UL_LDPC_MAX_NUM_LLR
]
__attribute__
((
aligned
(
32
)));
p_decoderParms
->
R
=
nr_get_R_ldpc_decoder
(
rdata
->
rv_index
,
E
,
p_decoderParms
->
BG
,
p_decoderParms
->
Z
,
&
harq_process
->
llrLen
,
harq_process
->
DLround
);
int16_t
z
[
68
*
384
+
16
]
__attribute__
((
aligned
(
16
)));
int8_t
l
[
68
*
384
+
16
]
__attribute__
((
aligned
(
16
)));
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
View file @
41c782e8
...
...
@@ -259,6 +259,9 @@ typedef struct {
uint16_t
dlDmrsScramblingId
;
/// PDU BITMAP
uint16_t
pduBitmap
;
/// Last index of LLR buffer that contains information.
/// Used for computing LDPC decoder R
int
llrLen
;
}
NR_DL_UE_HARQ_t
;
typedef
struct
{
...
...
openair1/PHY/defs_gNB.h
View file @
41c782e8
...
...
@@ -336,6 +336,9 @@ typedef struct {
int16_t
q_RI
[
MAX_RI_PAYLOAD
];
/// Temporary h sequence to flag PUSCH_x/PUSCH_y symbols which are not scrambled
uint8_t
h
[
MAX_NUM_CHANNEL_BITS
];
/// Last index of LLR buffer that contains information.
/// Used for computing LDPC decoder R
int
llrLen
;
//////////////////////////////////////////////////////////////
}
NR_UL_gNB_HARQ_t
;
...
...
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