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
canghaiwuhen
OpenXG-RAN
Commits
2566048e
Commit
2566048e
authored
6 years ago
by
Javier Morgade
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
FeMBMS 1.25KHz Pilots (MBSFN Gold psequences)
parent
fe6fd8b7
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
117 additions
and
0 deletions
+117
-0
openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
+89
-0
openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c
openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c
+28
-0
No files found.
openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
View file @
2566048e
...
...
@@ -154,3 +154,92 @@ int lte_dl_mbsfn_rx(PHY_VARS_UE *ue,
return
(
0
);
}
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
int
lte_dl_mbsfn_khz_1dot25
(
PHY_VARS_eNB
*
eNB
,
int32_t
*
output
,
short
amp
,
int
subframe
)
{
unsigned
int
mprime
,
mprime_dword
,
mprime_qpsk_symb
,
m
;
unsigned
short
k
=
0
,
a
;
int32_t
qpsk
[
4
];
a
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
15
;
((
short
*
)
&
qpsk
[
0
])[
0
]
=
a
;
((
short
*
)
&
qpsk
[
0
])[
1
]
=
a
;
((
short
*
)
&
qpsk
[
1
])[
0
]
=
-
a
;
((
short
*
)
&
qpsk
[
1
])[
1
]
=
a
;
((
short
*
)
&
qpsk
[
2
])[
0
]
=
a
;
((
short
*
)
&
qpsk
[
2
])[
1
]
=
-
a
;
((
short
*
)
&
qpsk
[
3
])[
0
]
=
-
a
;
((
short
*
)
&
qpsk
[
3
])[
1
]
=
-
a
;
mprime
=
3
*
(
110
-
eNB
->
frame_parms
.
N_RB_DL
);
for
(
m
=
0
;
m
<
eNB
->
frame_parms
.
N_RB_DL
*
24
;
m
++
)
// m = 0:24*N_RB_DL-1
{
if
((
subframe
&
0x1
)
==
0
)
// n_sf mod 2 == 0: even
k
=
6
*
m
;
else
k
=
6
*
m
+
3
;
k
+=
eNB
->
frame_parms
.
first_carrier_offset_khz_1dot25
;
mprime_dword
=
mprime
>>
4
;
mprime_qpsk_symb
=
mprime
&
0xf
;
if
(
k
>=
eNB
->
frame_parms
.
ofdm_symbol_size_khz_1dot25
)
{
k
++
;
// skip DC carrier
k
-=
eNB
->
frame_parms
.
ofdm_symbol_size_khz_1dot25
;
}
output
[
k
]
=
qpsk
[(
eNB
->
lte_gold_mbsfn_khz_1dot25_table
[
subframe
][
mprime_dword
]
>>
(
2
*
mprime_qpsk_symb
))
&
3
];
mprime
++
;
}
return
(
0
);
}
int
lte_dl_mbsfn_khz_1dot25_rx
(
PHY_VARS_UE
*
ue
,
int
*
output
,
int
subframe
)
{
unsigned
int
mprime
,
mprime_dword
,
mprime_qpsk_symb
,
m
;
unsigned
short
k
=
0
;
unsigned
int
qpsk
[
4
];
// This includes complex conjugate for channel estimation
((
short
*
)
&
qpsk
[
0
])[
0
]
=
ONE_OVER_SQRT2_Q15
;
((
short
*
)
&
qpsk
[
0
])[
1
]
=
-
ONE_OVER_SQRT2_Q15
;
((
short
*
)
&
qpsk
[
1
])[
0
]
=
-
ONE_OVER_SQRT2_Q15
;
((
short
*
)
&
qpsk
[
1
])[
1
]
=
-
ONE_OVER_SQRT2_Q15
;
((
short
*
)
&
qpsk
[
2
])[
0
]
=
ONE_OVER_SQRT2_Q15
;
((
short
*
)
&
qpsk
[
2
])[
1
]
=
ONE_OVER_SQRT2_Q15
;
((
short
*
)
&
qpsk
[
3
])[
0
]
=
-
ONE_OVER_SQRT2_Q15
;
((
short
*
)
&
qpsk
[
3
])[
1
]
=
ONE_OVER_SQRT2_Q15
;
mprime
=
3
*
(
110
-
ue
->
frame_parms
.
N_RB_DL
);
for
(
m
=
0
;
m
<
ue
->
frame_parms
.
N_RB_DL
*
24
;
m
++
)
// m = 0:24*N_RB_DL-1
{
mprime_dword
=
mprime
>>
4
;
mprime_qpsk_symb
=
mprime
&
0xf
;
// this is r_mprime from 3GPP 36-211 6.10.1.2
output
[
k
]
=
qpsk
[(
ue
->
lte_gold_mbsfn_khz_1dot25_table
[
subframe
][
mprime_dword
]
>>
(
2
*
mprime_qpsk_symb
))
&
3
];
mprime
++
;
k
++
;
}
return
(
0
);
}
#endif // MAKE Rel14
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c
View file @
2566048e
...
...
@@ -95,6 +95,34 @@ void lte_gold_mbsfn(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_mbsfn_tabl
}
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
void
lte_gold_mbsfn_khz_1dot25
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
lte_gold_mbsfn_khz_1dot25_table
[
10
][
150
],
uint16_t
Nid_mbsfn
){
unsigned
char
sfn
,
l
;
unsigned
int
n
,
x1
,
x2
;
//,x1tmp,x2tmp;
for
(
sfn
=
0
;
sfn
<
10
;
sfn
++
)
{
x2
=
(
Nid_mbsfn
)
+
(((
1
+
(
Nid_mbsfn
<<
1
))
*
(
1
+
(
7
*
(
1
+
sfn
))))
<<
9
);
//cinit
x1
=
1
+
(
1
<<
31
);
x2
=
x2
^
((
x2
^
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
))
<<
31
);
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
);
}
for
(
n
=
0
;
n
<
150
;
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
);
lte_gold_mbsfn_khz_1dot25_table
[
sfn
][
n
]
=
x1
^
x2
;
}
}
}
#endif
#ifdef LTE_GOLD_MAIN
main
()
{
...
...
This diff is collapsed.
Click to expand it.
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