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
2ce1f5fa
Commit
2ce1f5fa
authored
Jun 04, 2018
by
Sebastian Wagner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Encapsulated lte_gold_generic functionality
parent
3eff0e67
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
11 additions
and
77 deletions
+11
-77
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+1
-0
openair1/PHY/LTE_REFSIG/lte_gold.c
openair1/PHY/LTE_REFSIG/lte_gold.c
+2
-38
openair1/PHY/LTE_REFSIG/lte_refsig.h
openair1/PHY/LTE_REFSIG/lte_refsig.h
+2
-3
openair1/PHY/LTE_TRANSPORT/dlsch_scrambling.c
openair1/PHY/LTE_TRANSPORT/dlsch_scrambling.c
+6
-34
openair1/PHY/defs_common.h
openair1/PHY/defs_common.h
+0
-2
No files found.
cmake_targets/CMakeLists.txt
View file @
2ce1f5fa
...
...
@@ -1093,6 +1093,7 @@ set(PHY_SRC_COMMON
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/prach_common.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/pucch_common.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/dlsch_scrambling.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/lte_gold_generic.c
${
OPENAIR1_DIR
}
/PHY/LTE_UE_TRANSPORT/srs_modulation.c
${
OPENAIR1_DIR
}
/PHY/MODULATION/ofdm_mod.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/lte_sync_time.c
...
...
openair1/PHY/LTE_REFSIG/lte_gold.c
View file @
2ce1f5fa
...
...
@@ -44,7 +44,6 @@ N_{ID}^{cell = 0..503
void
lte_gold
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
lte_gold_table
[
20
][
2
][
14
],
uint16_t
Nid_cell
)
{
unsigned
char
ns
,
l
,
Ncp
=
1
-
frame_parms
->
Ncp
;
unsigned
int
n
,
x1
,
x2
;
//,x1tmp,x2tmp;
...
...
@@ -81,7 +80,7 @@ void lte_gold(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_table[20][2][14]
}
}
void
lte_gold_ue_spec
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
],
uint16_t
Nid_cell
,
uint16_t
*
n_idDMRS
)
void
lte_gold_ue_spec
(
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
],
uint16_t
Nid_cell
,
uint16_t
*
n_idDMRS
)
{
unsigned
char
ns
,
l
;
...
...
@@ -169,41 +168,6 @@ void lte_gold_ue_spec_port5(uint32_t lte_gold_uespec_port5_table[20][38],uint16_
}
}
/*! \brief gold sequenquence generator
\param x1
\param x2 this should be set to c_init if reset=1
\param reset resets the generator
\return 32 bits of the gold sequence
*/
unsigned
int
lte_gold_generic
(
unsigned
int
*
x1
,
unsigned
int
*
x2
,
unsigned
char
reset
)
{
int
n
;
if
(
reset
)
{
*
x1
=
1
+
(
1
<<
31
);
*
x2
=*
x2
^
((
*
x2
^
(
*
x2
>>
1
)
^
(
*
x2
>>
2
)
^
(
*
x2
>>
3
))
<<
31
);
// skip first 50 double words (1600 bits)
// printf("n=0 : x1 %x, x2 %x\n",x1,x2);
for
(
n
=
1
;
n
<
50
;
n
++
)
{
*
x1
=
(
*
x1
>>
1
)
^
(
*
x1
>>
4
);
*
x1
=
*
x1
^
(
*
x1
<<
31
)
^
(
*
x1
<<
28
);
*
x2
=
(
*
x2
>>
1
)
^
(
*
x2
>>
2
)
^
(
*
x2
>>
3
)
^
(
*
x2
>>
4
);
*
x2
=
*
x2
^
(
*
x2
<<
31
)
^
(
*
x2
<<
30
)
^
(
*
x2
<<
29
)
^
(
*
x2
<<
28
);
}
}
*
x1
=
(
*
x1
>>
1
)
^
(
*
x1
>>
4
);
*
x1
=
*
x1
^
(
*
x1
<<
31
)
^
(
*
x1
<<
28
);
*
x2
=
(
*
x2
>>
1
)
^
(
*
x2
>>
2
)
^
(
*
x2
>>
3
)
^
(
*
x2
>>
4
);
*
x2
=
*
x2
^
(
*
x2
<<
31
)
^
(
*
x2
<<
30
)
^
(
*
x2
<<
29
)
^
(
*
x2
<<
28
);
return
(
*
x1
^*
x2
);
// printf("n=%d : c %x\n",n,x1^x2);
}
#ifdef LTE_GOLD_MAIN
main
()
{
...
...
openair1/PHY/LTE_REFSIG/lte_refsig.h
View file @
2ce1f5fa
...
...
@@ -36,7 +36,7 @@
\param reset resets the generator
\return 32 bits of the gold sequence
*/
u
nsigned
int
lte_gold_generic
(
unsigned
int
*
x1
,
unsigned
int
*
x2
,
unsigned
char
reset
);
u
int32_t
lte_gold_generic
(
uint32_t
*
x1
,
uint32_t
*
x2
,
uint8_t
reset
);
/*!\brief This function generates the LTE Gold sequence (36-211, Sec 7.2), specifically for DL reference signals.
...
...
@@ -45,8 +45,7 @@ unsigned int lte_gold_generic(unsigned int *x1, unsigned int *x2, unsigned char
@param Nid_cell Cell Id (to compute sequences for local and adjacent cells) */
void
lte_gold
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
lte_gold_table
[
20
][
2
][
14
],
uint16_t
Nid_cell
);
void
lte_gold_ue_spec
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
],
uint16_t
Nid_cell
,
uint16_t
*
n_idDMRS
);
void
lte_gold_ue_spec
(
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
],
uint16_t
Nid_cell
,
uint16_t
*
n_idDMRS
);
void
lte_gold_ue_spec_port5
(
uint32_t
lte_gold_uespec_port5_table
[
20
][
38
],
uint16_t
Nid_cell
,
uint16_t
n_rnti
);
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_scrambling.c
View file @
2ce1f5fa
...
...
@@ -40,34 +40,6 @@
#include "PHY/phy_extern.h"
#include "UTIL/LOG/vcd_signal_dumper.h"
static
inline
unsigned
int
lte_gold_scram
(
unsigned
int
*
x1
,
unsigned
int
*
x2
,
unsigned
char
reset
)
__attribute__
((
always_inline
));
static
inline
unsigned
int
lte_gold_scram
(
unsigned
int
*
x1
,
unsigned
int
*
x2
,
unsigned
char
reset
)
{
int
n
;
if
(
reset
)
{
*
x1
=
1
+
(
1
<<
31
);
*
x2
=*
x2
^
((
*
x2
^
(
*
x2
>>
1
)
^
(
*
x2
>>
2
)
^
(
*
x2
>>
3
))
<<
31
);
// skip first 50 double words (1600 bits)
// printf("n=0 : x1 %x, x2 %x\n",x1,x2);
for
(
n
=
1
;
n
<
50
;
n
++
)
{
*
x1
=
(
*
x1
>>
1
)
^
(
*
x1
>>
4
);
*
x1
=
*
x1
^
(
*
x1
<<
31
)
^
(
*
x1
<<
28
);
*
x2
=
(
*
x2
>>
1
)
^
(
*
x2
>>
2
)
^
(
*
x2
>>
3
)
^
(
*
x2
>>
4
);
*
x2
=
*
x2
^
(
*
x2
<<
31
)
^
(
*
x2
<<
30
)
^
(
*
x2
<<
29
)
^
(
*
x2
<<
28
);
}
}
*
x1
=
(
*
x1
>>
1
)
^
(
*
x1
>>
4
);
*
x1
=
*
x1
^
(
*
x1
<<
31
)
^
(
*
x1
<<
28
);
*
x2
=
(
*
x2
>>
1
)
^
(
*
x2
>>
2
)
^
(
*
x2
>>
3
)
^
(
*
x2
>>
4
);
*
x2
=
*
x2
^
(
*
x2
<<
31
)
^
(
*
x2
<<
30
)
^
(
*
x2
<<
29
)
^
(
*
x2
<<
28
);
return
(
*
x1
^*
x2
);
// printf("n=%d : c %x\n",n,x1^x2);
}
void
dlsch_scrambling
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
int
mbsfn_flag
,
LTE_eNB_DLSCH_t
*
dlsch
,
...
...
@@ -130,7 +102,7 @@ void dlsch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
printf
(
"scrambling: rnti %x, q %d, Ns %d, Nid_cell %d, G %d x2 %x
\n
"
,
dlsch
->
rnti
,
q
,
Ns
,
frame_parms
->
Nid_cell
,
G
,
x2
);
#endif
#endif
s
=
lte_gold_
scram
(
&
x1
,
&
x2
,
1
);
s
=
lte_gold_
generic
(
&
x1
,
&
x2
,
1
);
for
(
n
=
0
;
n
<
(
1
+
(
G
>>
5
));
n
++
)
{
...
...
@@ -179,7 +151,7 @@ void dlsch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
s
=
lte_gold_
scram
(
&
x1
,
&
x2
,
0
);
s
=
lte_gold_
generic
(
&
x1
,
&
x2
,
0
);
e
+=
32
;
}
...
...
@@ -225,7 +197,7 @@ void dlsch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
#ifdef DEBUG_SCRAMBLING
printf
(
"unscrambling: rnti %x, q %d, Ns %d, Nid_cell %d G %d, x2 %x
\n
"
,
dlsch
->
rnti
,
q
,
Ns
,
frame_parms
->
Nid_cell
,
G
,
x2
);
#endif
s
=
lte_gold_
scram
(
&
x1
,
&
x2
,
1
);
s
=
lte_gold_
generic
(
&
x1
,
&
x2
,
1
);
for
(
i
=
0
;
i
<
(
1
+
(
G
>>
5
));
i
++
)
{
for
(
j
=
0
;
j
<
32
;
j
++
,
k
++
)
{
...
...
@@ -238,7 +210,7 @@ void dlsch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
#endif
}
s
=
lte_gold_
scram
(
&
x1
,
&
x2
,
0
);
s
=
lte_gold_
generic
(
&
x1
,
&
x2
,
0
);
}
}
...
...
openair1/PHY/defs_common.h
View file @
2ce1f5fa
...
...
@@ -72,13 +72,11 @@
#include <pthread.h>
#include "targets/ARCH/COMMON/common_lib.h"
#include "targets/COMMON/openairinterface5g_limits.h"
#include "types.h"
#include "nfapi_interface.h"
//#include "defs.h"
#include "openair2/COMMON/platform_types.h"
#define RX_NB_TH_MAX 2
#define RX_NB_TH 2
...
...
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