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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
b153d2d1
Commit
b153d2d1
authored
Mar 24, 2022
by
Laurent THOMAS
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bug in nr_rate_matching
parent
288c29da
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
43 deletions
+54
-43
openair1/PHY/CODING/nr_rate_matching.c
openair1/PHY/CODING/nr_rate_matching.c
+54
-43
No files found.
openair1/PHY/CODING/nr_rate_matching.c
View file @
b153d2d1
...
...
@@ -309,60 +309,71 @@ 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
)
{
int16_t
*
e1
,
*
e2
,
*
e3
,
*
e4
,
*
e5
,
*
e6
,
*
e7
;
switch
(
Qm
)
{
case
2
:
e1
=
e
+
(
E
/
2
);
for
(
int
j
=
0
,
j2
=
0
;
j
<
E
/
2
;
j
+=
2
,
j2
+=
4
){
e
[
j
]
=
f
[
j2
];
e1
[
j
]
=
f
[
j2
+
1
];
e
[
j
+
1
]
=
f
[
j2
+
2
];
e1
[
j
+
1
]
=
f
[
j2
+
3
];
{
int16_t
*
e1
=
e
+
(
E
/
2
);
int16_t
*
end
=
f
+
E
-
4
;
while
(
f
<
end
){
*
e
++
=
*
f
++
;
*
e1
++
=
*
f
++
;
*
e
++
=
*
f
++
;
*
e1
++
=
*
f
++
;
}
}
break
;
case
4
:
e1
=
e
+
(
E
/
4
);
e2
=
e1
+
(
E
/
4
);
e3
=
e2
+
(
E
/
4
);
for
(
int
j
=
0
,
j2
=
0
;
j
<
E
/
4
;
j
++
,
j2
+=
4
){
e
[
j
]
=
f
[
j2
];
e1
[
j
]
=
f
[
j2
+
1
];
e2
[
j
]
=
f
[
j2
+
2
];
e3
[
j
]
=
f
[
j2
+
3
];
{
int16_t
*
e1
=
e
+
(
E
/
4
);
int16_t
*
e2
=
e1
+
(
E
/
4
);
int16_t
*
e3
=
e2
+
(
E
/
4
);
int16_t
*
end
=
f
+
E
-
4
;
while
(
f
<
end
){
*
e
++
=
*
f
++
;
*
e1
++
=
*
f
++
;
*
e2
++
=
*
f
++
;
*
e3
++
=
*
f
++
;
}
}
break
;
case
6
:
e1
=
e
+
(
E
/
6
);
e2
=
e1
+
(
E
/
6
);
e3
=
e2
+
(
E
/
6
);
e4
=
e3
+
(
E
/
6
);
e5
=
e4
+
(
E
/
6
);
for
(
int
j
=
0
,
j2
=
0
;
j
<
E
/
6
;
j
++
,
j2
+=
6
){
e
[
j
]
=
f
[
j2
];
e1
[
j
]
=
f
[
j2
+
1
];
e2
[
j
]
=
f
[
j2
+
2
];
e3
[
j
]
=
f
[
j2
+
3
];
e4
[
j
]
=
f
[
j2
+
4
];
e5
[
j
]
=
f
[
j2
+
5
];
{
int16_t
*
e1
=
e
+
(
E
/
6
);
int16_t
*
e2
=
e1
+
(
E
/
6
);
int16_t
*
e3
=
e2
+
(
E
/
6
);
int16_t
*
e4
=
e3
+
(
E
/
6
);
int16_t
*
e5
=
e4
+
(
E
/
6
);
int16_t
*
end
=
f
+
E
-
6
;
while
(
f
<
end
){
*
e
++
=
*
f
++
;
*
e1
++
=
*
f
++
;
*
e2
++
=
*
f
++
;
*
e3
++
=
*
f
++
;
*
e4
++
=
*
f
++
;
*
e5
++
=
*
f
++
;
}
}
break
;
case
8
:
e1
=
e
+
(
E
/
8
);
e2
=
e1
+
(
E
/
8
);
e3
=
e2
+
(
E
/
8
);
e4
=
e3
+
(
E
/
8
);
e5
=
e4
+
(
E
/
8
);
e6
=
e5
+
(
E
/
8
);
e7
=
e6
+
(
E
/
8
);
for
(
int
j
=
0
,
j2
=
0
;
j
<
E
/
8
;
j
++
,
j2
+=
8
){
e
[
j
]
=
f
[
j2
];
e1
[
j
]
=
f
[
j2
+
1
];
e2
[
j
]
=
f
[
j2
+
2
];
e3
[
j
]
=
f
[
j2
+
3
];
e4
[
j
]
=
f
[
j2
+
4
];
e5
[
j
]
=
f
[
j2
+
5
];
e6
[
j
]
=
f
[
j2
+
6
];
e7
[
j
]
=
f
[
j2
+
7
];
{
int16_t
*
e1
=
e
+
(
E
/
8
);
int16_t
*
e2
=
e1
+
(
E
/
8
);
int16_t
*
e3
=
e2
+
(
E
/
8
);
int16_t
*
e4
=
e3
+
(
E
/
8
);
int16_t
*
e5
=
e4
+
(
E
/
8
);
int16_t
*
e6
=
e5
+
(
E
/
8
);
int16_t
*
e7
=
e6
+
(
E
/
8
);
int16_t
*
end
=
f
+
E
-
8
;
while
(
f
<
end
){
*
e
++
=
*
f
++
;
*
e1
++
=
*
f
++
;
*
e2
++
=
*
f
++
;
*
e3
++
=
*
f
++
;
*
e4
++
=
*
f
++
;
*
e5
++
=
*
f
++
;
*
e6
++
=
*
f
++
;
*
e7
++
=
*
f
++
;
}
}
break
;
default:
...
...
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