Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
openairinterface5G
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
oai
openairinterface5G
Commits
f207ac12
Commit
f207ac12
authored
9 months ago
by
Thomas Laurent
Committed by
Robert Schmidt
8 months ago
Browse files
Options
Downloads
Patches
Plain Diff
Use gold cache in UCI
parent
00cb43ba
No related branches found
No related tags found
2 merge requests
!2877
Integration: `2024.w30`
,
!2754
Introduce gold sequence cache
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
openair1/PHY/NR_TRANSPORT/nr_uci_tools_common.c
+26
-35
26 additions, 35 deletions
openair1/PHY/NR_TRANSPORT/nr_uci_tools_common.c
with
26 additions
and
35 deletions
openair1/PHY/NR_TRANSPORT/nr_uci_tools_common.c
+
26
−
35
View file @
f207ac12
...
@@ -31,8 +31,6 @@
...
@@ -31,8 +31,6 @@
*/
*/
#include
"nr_dci.h"
#include
"nr_dci.h"
#include
"openair1/PHY/LTE_TRANSPORT/transport_proto.h"
// for lte_gold_generic()
void
nr_group_sequence_hopping
(
pucch_GroupHopping_t
PUCCH_GroupHopping
,
void
nr_group_sequence_hopping
(
pucch_GroupHopping_t
PUCCH_GroupHopping
,
uint32_t
n_id
,
uint32_t
n_id
,
...
@@ -65,11 +63,7 @@ void nr_group_sequence_hopping(pucch_GroupHopping_t PUCCH_GroupHopping,
...
@@ -65,11 +63,7 @@ void nr_group_sequence_hopping(pucch_GroupHopping_t PUCCH_GroupHopping,
#endif
#endif
uint8_t
f_ss
=
0
,
f_gh
=
0
;
uint8_t
f_ss
=
0
,
f_gh
=
0
;
*
u
=
0
;
*
u
=
0
;
*
v
=
0
;
*
v
=
0
;
uint32_t
c_init
=
0
;
uint32_t
x1
,
s
;
// TS 38.211 Subclause 5.2.1
int
l
=
32
,
minShift
=
((
2
*
nr_slot_tx
+
n_hop
)
<<
3
);
int
tmpShift
=
0
;
#ifdef DEBUG_NR_PUCCH_TX
#ifdef DEBUG_NR_PUCCH_TX
printf
(
"
\t\t
[nr_group_sequence_hopping] calculating u,v -> "
);
printf
(
"
\t\t
[nr_group_sequence_hopping] calculating u,v -> "
);
#endif
#endif
...
@@ -79,41 +73,39 @@ void nr_group_sequence_hopping(pucch_GroupHopping_t PUCCH_GroupHopping,
...
@@ -79,41 +73,39 @@ void nr_group_sequence_hopping(pucch_GroupHopping_t PUCCH_GroupHopping,
}
}
if
(
PUCCH_GroupHopping
==
enable
)
{
// PUCCH_GroupHopping 'enabled'
if
(
PUCCH_GroupHopping
==
enable
)
{
// PUCCH_GroupHopping 'enabled'
c_init
=
floor
(
n_id
/
30
);
// we initialize c_init to calculate u,v according to 6.3.2.2.1 of 38.211
uint32_t
c_init
=
floor
(
n_id
/
30
);
// we initialize c_init to calculate u,v according to 6.3.2.2.1 of 38.211
s
=
lte_gold_generic
(
&
x1
,
&
c_init
,
1
);
// TS 38.211 Subclause 5.2.1
int
l
=
32
,
minShift
=
(
2
*
nr_slot_tx
+
n_hop
)
<<
3
;
uint32_t
*
seq
=
gold_cache
(
c_init
,
(
minShift
+
31
)
/
32
+
8
);
// TS 38.211 Subclause 5.2.1
int
goldIdx
=
0
;
for
(
int
m
=
0
;
m
<
8
;
m
++
)
{
for
(
int
m
=
0
;
m
<
8
;
m
++
)
{
while
(
minShift
>=
l
)
{
while
(
minShift
>=
l
)
{
s
=
lte_gold_generic
(
&
x1
,
&
c_init
,
0
)
;
goldIdx
++
;
l
=
l
+
32
;
l
=
l
+
32
;
}
}
AssertFatal
(
goldIdx
<
8
+
(
minShift
+
31
)
/
32
,
""
);
tmpShift
=
(
minShift
&
((
1
<<
5
)
-
1
));
//minShift%32;
int
tmpShift
=
(
minShift
&
((
1
<<
5
)
-
1
));
//
minShift%32;
f_gh
=
f_gh
+
((
1
<<
m
)
*
((
uint8_t
)((
s
>>
tmpShift
)
&
1
)));
f_gh
=
f_gh
+
((
1
<<
m
)
*
((
uint8_t
)((
s
eq
[
goldIdx
]
>>
tmpShift
)
&
1
)));
minShift
++
;
minShift
++
;
}
}
f_gh
=
f_gh
%
30
;
f_gh
=
f_gh
%
30
;
f_ss
=
n_id
%
30
;
f_ss
=
n_id
%
30
;
/* for (int m=0; m<8; m++){
f_gh = f_gh + ((1<<m)*((uint8_t)((s>>(8*(2*nr_slot_tx+n_hop)+m))&1))); // Not sure we have to use nr_slot_tx FIXME!!!
}
f_gh = f_gh%30;
f_ss = n_id%30;*/
}
}
if
(
PUCCH_GroupHopping
==
disable
)
{
// PUCCH_GroupHopping 'disabled'
if
(
PUCCH_GroupHopping
==
disable
)
{
// PUCCH_GroupHopping 'disabled'
c_init
=
(
1
<<
5
)
*
floor
(
n_id
/
30
)
+
(
n_id
%
30
);
// we initialize c_init to calculate u,v
uint32_t
c_init
=
(
1
<<
5
)
*
floor
(
n_id
/
30
)
+
(
n_id
%
30
);
// we initialize c_init to calculate u,v
s
=
lte_gold_generic
(
&
x1
,
&
c_init
,
1
);
// TS 38.211 Subclause 5.2.1
int
goldIdx
=
0
;
f_ss
=
n_id
%
30
;
f_ss
=
n_id
%
30
;
l
=
32
,
minShift
=
(
2
*
nr_slot_tx
+
n_hop
);
int
l
=
32
,
minShift
=
(
2
*
nr_slot_tx
+
n_hop
);
while
(
minShift
>=
l
)
{
while
(
minShift
>=
l
)
{
s
=
lte_gold_generic
(
&
x1
,
&
c_init
,
0
)
;
goldIdx
++
;
l
=
l
+
32
;
l
=
l
+
32
;
}
}
// TS 38.211 Subclause 5.2.1
tmpShift
=
(
minShift
&
((
1
<<
5
)
-
1
));
//minShift%32;
uint32_t
*
seq
=
gold_cache
(
c_init
,
goldIdx
+
1
);
*
v
=
(
uint8_t
)((
s
>>
tmpShift
)
&
1
);
int
tmpShift
=
(
minShift
&
((
1
<<
5
)
-
1
));
// minShift%32;
*
v
=
(
uint8_t
)((
seq
[
goldIdx
]
>>
tmpShift
)
&
1
);
// *v = (uint8_t)((s>>(2*nr_slot_tx+n_hop))&1); // Not sure we have to use nr_slot_tx FIXME!!!
// *v = (uint8_t)((s>>(2*nr_slot_tx+n_hop))&1); // Not sure we have to use nr_slot_tx FIXME!!!
}
}
...
@@ -141,28 +133,27 @@ double nr_cyclic_shift_hopping(uint32_t n_id,
...
@@ -141,28 +133,27 @@ double nr_cyclic_shift_hopping(uint32_t n_id,
double
alpha
=
0
.
5235987756
;
double
alpha
=
0
.
5235987756
;
uint32_t
c_init
=
n_id
;
// we initialize c_init again to calculate n_cs
uint32_t
c_init
=
n_id
;
// we initialize c_init again to calculate n_cs
uint32_t
x1
,
s
=
lte_gold_generic
(
&
x1
,
&
c_init
,
1
);
// TS 38.211 Subclause 5.2.1
uint8_t
n_cs
=
0
;
uint8_t
n_cs
=
0
;
int
l
=
32
,
minShift
=
(
14
*
8
*
nr_slot_tx
)
+
8
*
(
lnormal
+
lprime
);
int
l
=
32
,
minShift
=
(
14
*
8
*
nr_slot_tx
)
+
8
*
(
lnormal
+
lprime
);
int
tmpShift
=
0
;
#ifdef DEBUG_NR_PUCCH_TX
#ifdef DEBUG_NR_PUCCH_TX
printf
(
"
\t\t
[nr_cyclic_shift_hopping] calculating alpha (cyclic shift) using c_init=%u ->
\n
"
,
c_init
);
printf
(
"
\t\t
[nr_cyclic_shift_hopping] calculating alpha (cyclic shift) using c_init=%u ->
\n
"
,
c_init
);
#endif
#endif
uint32_t
*
seq
=
gold_cache
(
c_init
,
8
+
(
minShift
+
31
)
/
32
);
// TS 38.211 Subclause 5.2.1
int
goldIdx
=
0
;
for
(
int
m
=
0
;
m
<
8
;
m
++
)
{
for
(
int
m
=
0
;
m
<
8
;
m
++
)
{
while
(
minShift
>=
l
)
{
while
(
minShift
>=
l
)
{
s
=
lte_gold_generic
(
&
x1
,
&
c_init
,
0
)
;
goldIdx
++
;
l
=
l
+
32
;
l
=
l
+
32
;
}
}
AssertFatal
(
goldIdx
<
8
+
(
minShift
+
31
)
/
32
,
""
);
tmpShift
=
(
minShift
&
((
1
<<
5
)
-
1
));
//minShift%32;
int
tmpShift
=
(
minShift
&
((
1
<<
5
)
-
1
));
//
minShift%32;
minShift
++
;
minShift
++
;
n_cs
=
n_cs
+
(
(
1
<<
m
)
*
(
(
uint8_t
)((
s
>>
tmpShift
)
&
1
))
);
n_cs
+
=
(
1
<<
m
)
*
(
uint8_t
)((
s
eq
[
goldIdx
]
>>
tmpShift
)
&
1
);
// calculating n_cs (Not sure we have to use nr_slot_tx FIXME!!!)
// calculating n_cs (Not sure we have to use nr_slot_tx FIXME!!!)
// n_cs = n_cs+((1<<m)*((uint8_t)((s>>((14*8*nr_slot_tx) + 8*(lnormal+lprime) + m))&1)));
// n_cs = n_cs+((1<<m)*((uint8_t)((s>>((14*8*nr_slot_tx) + 8*(lnormal+lprime) + m))&1)));
}
}
alpha
=
(
alpha
*
(
double
)((
m0
+
mcs
+
n_cs
)
%
12
)
)
;
alpha
=
alpha
*
(
double
)((
m0
+
mcs
+
n_cs
)
%
12
);
#ifdef DEBUG_NR_PUCCH_TX
#ifdef DEBUG_NR_PUCCH_TX
printf
(
"n_cs=%d -> %lf
\n
"
,
n_cs
,
alpha
);
printf
(
"n_cs=%d -> %lf
\n
"
,
n_cs
,
alpha
);
#endif
#endif
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment