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
wangwenhui
OpenXG-RAN
Commits
3740f3d7
Commit
3740f3d7
authored
Aug 31, 2018
by
laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove constructor key word
parent
0e6804f2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
119 additions
and
125 deletions
+119
-125
openair1/PHY/INIT/init_top.c
openair1/PHY/INIT/init_top.c
+28
-46
openair1/PHY/MODULATION/gen_75KHz.cpp
openair1/PHY/MODULATION/gen_75KHz.cpp
+66
-60
openair1/PHY/MODULATION/modulation_extern.h
openair1/PHY/MODULATION/modulation_extern.h
+25
-19
No files found.
openair1/PHY/INIT/init_top.c
View file @
3740f3d7
/*
/*
*
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
*
contributor license agreements. See the NOTICE file distributed with
contributor license agreements. See the NOTICE file distributed with
*
this work for additional information regarding copyright ownership.
this work for additional information regarding copyright ownership.
*
The OpenAirInterface Software Alliance licenses this file to You under
The OpenAirInterface Software Alliance licenses this file to You under
*
the OAI Public License, Version 1.1 (the "License"); you may not use this file
the OAI Public License, Version 1.1 (the "License"); you may not use this file
*
except in compliance with the License.
except in compliance with the License.
*
You may obtain a copy of the License at
You may obtain a copy of the License at
*
*
http://www.openairinterface.org/?page_id=698
http://www.openairinterface.org/?page_id=698
*
*
Unless required by applicable law or agreed to in writing, software
Unless required by applicable law or agreed to in writing, software
*
distributed under the License is distributed on an "AS IS" BASIS,
distributed under the License is distributed on an "AS IS" BASIS,
*
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
See the License for the specific language governing permissions and
See the License for the specific language governing permissions and
*
limitations under the License.
limitations under the License.
*
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
*
For more information about the OpenAirInterface (OAI) Software Alliance:
For more information about the OpenAirInterface (OAI) Software Alliance:
*
contact@openairinterface.org
contact@openairinterface.org
*/
*/
/*!\brief Initilization and reconfiguration routines for LTE PHY */
/*!\brief Initilization and reconfiguration routines for LTE PHY */
#include "phy_init.h"
#include "phy_init.h"
...
@@ -27,12 +27,9 @@
...
@@ -27,12 +27,9 @@
#include "PHY/LTE_REFSIG/lte_refsig.h"
#include "PHY/LTE_REFSIG/lte_refsig.h"
#include "PHY/LTE_TRANSPORT/transport_common_proto.h"
#include "PHY/LTE_TRANSPORT/transport_common_proto.h"
void
generate_64qam_table
(
void
)
void
generate_64qam_table
(
void
)
{
{
int
a
,
b
,
c
,
index
;
int
a
,
b
,
c
,
index
;
for
(
a
=-
1
;
a
<=
1
;
a
+=
2
)
for
(
a
=-
1
;
a
<=
1
;
a
+=
2
)
for
(
b
=-
1
;
b
<=
1
;
b
+=
2
)
for
(
b
=-
1
;
b
<=
1
;
b
+=
2
)
for
(
c
=-
1
;
c
<=
1
;
c
+=
2
)
{
for
(
c
=-
1
;
c
<=
1
;
c
+=
2
)
{
...
@@ -41,9 +38,7 @@ void generate_64qam_table(void)
...
@@ -41,9 +38,7 @@ void generate_64qam_table(void)
}
}
}
}
void
generate_16qam_table
(
void
)
void
generate_16qam_table
(
void
)
{
{
int
a
,
b
,
index
;
int
a
,
b
,
index
;
for
(
a
=-
1
;
a
<=
1
;
a
+=
2
)
for
(
a
=-
1
;
a
<=
1
;
a
+=
2
)
...
@@ -53,54 +48,41 @@ void generate_16qam_table(void)
...
@@ -53,54 +48,41 @@ void generate_16qam_table(void)
}
}
}
}
void
generate_qpsk_table
(
void
)
void
generate_qpsk_table
(
void
)
{
{
int
a
,
index
;
int
a
,
index
;
for
(
a
=-
1
;
a
<=
1
;
a
+=
2
)
{
for
(
a
=-
1
;
a
<=
1
;
a
+=
2
)
{
index
=
(
1
+
a
)
/
2
;
index
=
(
1
+
a
)
/
2
;
qpsk_table
[
index
]
=
-
a
*
QPSK
;
qpsk_table
[
index
]
=
-
a
*
QPSK
;
}
}
}
}
void
init_lte_top
(
LTE_DL_FRAME_PARMS
*
frame_parms
)
void
init_7_5KHz
(
void
);
{
void
init_lte_top
(
LTE_DL_FRAME_PARMS
*
frame_parms
)
{
ccodelte_init
();
ccodelte_init
();
ccodelte_init_inv
();
ccodelte_init_inv
();
init_dfts
();
init_dfts
();
phy_generate_viterbi_tables_lte
();
phy_generate_viterbi_tables_lte
();
load_codinglib
();
load_codinglib
();
lte_sync_time_init
(
frame_parms
);
lte_sync_time_init
(
frame_parms
);
generate_ul_ref_sigs
();
generate_ul_ref_sigs
();
generate_ul_ref_sigs_rx
();
generate_ul_ref_sigs_rx
();
generate_64qam_table
();
generate_64qam_table
();
generate_16qam_table
();
generate_16qam_table
();
generate_qpsk_table
();
generate_qpsk_table
();
generate_RIV_tables
();
generate_RIV_tables
();
init_unscrambling_lut
();
init_unscrambling_lut
();
init_scrambling_lut
();
init_scrambling_lut
();
//set_taus_seed(1328);
//set_taus_seed(1328);
init_7_5KHz
();
}
}
void
free_lte_top
(
void
)
void
free_lte_top
(
void
)
{
{
free_codinglib
();
free_codinglib
();
lte_sync_time_free
();
lte_sync_time_free
();
/* free_ul_ref_sigs() is called in phy_free_lte_eNB() */
/* free_ul_ref_sigs() is called in phy_free_lte_eNB() */
}
}
/*
/*
*
@}*/
@}*/
openair1/PHY/MODULATION/gen_75KHz.cpp
View file @
3740f3d7
...
@@ -8,71 +8,77 @@
...
@@ -8,71 +8,77 @@
#include <map>
#include <map>
#include <PHY/MODULATION/modulation_extern.h>
#include <PHY/MODULATION/modulation_extern.h>
using
namespace
std
;
using
namespace
std
;
extern
"C"
{
void
gen_sig
(
int
RB
,
int
len
,
double
ratio
,
int16_t
*
table_n
,
int16_t
*
table_e
)
{
double
samplerate
=
30.72e6
*
ratio
;
double
ofdm_size
=
2048
*
ratio
;
double
PI
=
std
::
acos
(
-
1
);
std
::
complex
<
int
>
tt
;
complex
<
double
>
t
[
len
];
int
index
=
0
;
double
cp0
=
160
*
ratio
;
double
cp
=
144
*
ratio
;
void
gen_sig
(
int
RB
,
int
len
,
double
ratio
,
int16_t
*
table_n
,
int16_t
*
table_e
)
{
for
(
int
i
=-
cp0
;
i
<
ofdm_size
;
i
++
)
double
samplerate
=
30.72e6
*
ratio
;
double
ofdm_size
=
2048
*
ratio
;
double
PI
=
std
::
acos
(
-
1
);
std
::
complex
<
int
>
tt
;
complex
<
double
>
t
[
len
];
int
index
=
0
;
double
cp0
=
160
*
ratio
;
double
cp
=
144
*
ratio
;
for
(
int
i
=-
cp0
;
i
<
ofdm_size
;
i
++
)
t
[
index
++
]
=
polar
(
32767.0
,
-
2
*
PI
*
i
*
7.5e3
/
samplerate
);
for
(
int
x
=
0
;
x
<
6
;
x
++
)
for
(
int
i
=-
cp
;
i
<
ofdm_size
;
i
++
)
t
[
index
++
]
=
polar
(
32767.0
,
-
2
*
PI
*
i
*
7.5e3
/
samplerate
);
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
table_n
[
i
*
2
]
=
floor
(
real
(
t
[
i
]));
table_n
[
i
*
2
+
1
]
=
floor
(
imag
(
t
[
i
]));
}
index
=
0
;
double
cpe
=
512
*
ratio
;
for
(
int
x
=
0
;
x
<
6
;
x
++
)
for
(
int
i
=-
cpe
;
i
<
ofdm_size
;
i
++
)
t
[
index
++
]
=
polar
(
32767.0
,
-
2
*
PI
*
i
*
7.5e3
/
samplerate
);
t
[
index
++
]
=
polar
(
32767.0
,
-
2
*
PI
*
i
*
7.5e3
/
samplerate
);
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
table_e
[
i
*
2
]
=
floor
(
real
(
t
[
i
]));
for
(
int
x
=
0
;
x
<
6
;
x
++
)
table_e
[
i
*
2
+
1
]
=
floor
(
imag
(
t
[
i
]));
for
(
int
i
=-
cp
;
i
<
ofdm_size
;
i
++
)
t
[
index
++
]
=
polar
(
32767.0
,
-
2
*
PI
*
i
*
7.5e3
/
samplerate
);
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
table_n
[
i
*
2
]
=
floor
(
real
(
t
[
i
]));
table_n
[
i
*
2
+
1
]
=
floor
(
imag
(
t
[
i
]));
}
index
=
0
;
double
cpe
=
512
*
ratio
;
for
(
int
x
=
0
;
x
<
6
;
x
++
)
for
(
int
i
=-
cpe
;
i
<
ofdm_size
;
i
++
)
t
[
index
++
]
=
polar
(
32767.0
,
-
2
*
PI
*
i
*
7.5e3
/
samplerate
);
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
table_e
[
i
*
2
]
=
floor
(
real
(
t
[
i
]));
table_e
[
i
*
2
+
1
]
=
floor
(
imag
(
t
[
i
]));
}
}
}
}
int16_t
*
s6n_kHz_7_5
;
int16_t
*
s6n_kHz_7_5
;
int16_t
*
s6e_kHz_7_5
;
int16_t
*
s6e_kHz_7_5
;
int16_t
*
s15n_kHz_7_5
;
int16_t
*
s15n_kHz_7_5
;
int16_t
*
s15e_kHz_7_5
;
int16_t
*
s15e_kHz_7_5
;
int16_t
*
s25n_kHz_7_5
;
int16_t
*
s25n_kHz_7_5
;
int16_t
*
s25e_kHz_7_5
;
int16_t
*
s25e_kHz_7_5
;
int16_t
*
s50n_kHz_7_5
;
int16_t
*
s50n_kHz_7_5
;
int16_t
*
s50e_kHz_7_5
;
int16_t
*
s50e_kHz_7_5
;
int16_t
*
s75n_kHz_7_5
;
int16_t
*
s75n_kHz_7_5
;
int16_t
*
s75e_kHz_7_5
;
int16_t
*
s75e_kHz_7_5
;
int16_t
*
s100n_kHz_7_5
;
int16_t
*
s100n_kHz_7_5
;
int16_t
*
s100e_kHz_7_5
;
int16_t
*
s100e_kHz_7_5
;
int16_t
**
tables
[
12
]
=
{
&
s6n_kHz_7_5
,
&
s6e_kHz_7_5
,
int16_t
**
tables
[
12
]
=
{
&
s6n_kHz_7_5
,
&
s6e_kHz_7_5
,
&
s15n_kHz_7_5
,
&
s15e_kHz_7_5
,
&
s15n_kHz_7_5
,
&
s15e_kHz_7_5
,
&
s25n_kHz_7_5
,
&
s25e_kHz_7_5
,
&
s25n_kHz_7_5
,
&
s25e_kHz_7_5
,
&
s50n_kHz_7_5
,
&
s50e_kHz_7_5
,
&
s50n_kHz_7_5
,
&
s50e_kHz_7_5
,
&
s75n_kHz_7_5
,
&
s75e_kHz_7_5
,
&
s75n_kHz_7_5
,
&
s75e_kHz_7_5
,
&
s100n_kHz_7_5
,
&
s100e_kHz_7_5
,};
&
s100n_kHz_7_5
,
&
s100e_kHz_7_5
,
int
tables_size_bytes
[
12
];
};
int
tables_size_bytes
[
12
];
#define MyAssert(x) { if(!(x)) { printf("Error in table intialization: %s:%d\n",__FILE__,__LINE__); exit(1);}}
#define MyAssert(x) { if(!(x)) { printf("Error in table intialization: %s:%d\n",__FILE__,__LINE__); exit(1);}}
__attribute__
((
constructor
))
static
void
init_7_5KHz
(
void
)
{
void
init_7_5KHz
(
void
)
{
const
map
<
int
,
double
>
tables_7_5KHz
=
{{
6
,
1.0
/
16
},{
15
,
1.0
/
8
},{
25
,
1.0
/
4
},{
50
,
1.0
/
2
},{
75
,
3.0
/
4
},{
100
,
1.0
}};
const
map
<
int
,
double
>
tables_7_5KHz
=
{{
6
,
1.0
/
16
},{
15
,
1.0
/
8
},{
25
,
1.0
/
4
},{
50
,
1.0
/
2
},{
75
,
3.0
/
4
},{
100
,
1.0
}};
int
tables_idx
=
0
;
int
tables_idx
=
0
;
for
(
auto
it
=
tables_7_5KHz
.
begin
();
it
!=
tables_7_5KHz
.
end
();
++
it
)
{
for
(
auto
it
=
tables_7_5KHz
.
begin
();
it
!=
tables_7_5KHz
.
end
();
++
it
)
{
int
len
=
15360
*
it
->
second
;
int
len
=
15360
*
it
->
second
;
tables_size_bytes
[
tables_idx
]
=
sizeof
(
int16_t
)
*
2
*
len
;
tables_size_bytes
[
tables_idx
]
=
sizeof
(
int16_t
)
*
2
*
len
;
tables_size_bytes
[
tables_idx
+
1
]
=
sizeof
(
int16_t
)
*
2
*
len
;
tables_size_bytes
[
tables_idx
+
1
]
=
sizeof
(
int16_t
)
*
2
*
len
;
MyAssert
(
0
==
posix_memalign
((
void
**
)
tables
[
tables_idx
],
MyAssert
(
0
==
posix_memalign
((
void
**
)
tables
[
tables_idx
],
16
,
tables_size_bytes
[
tables_idx
]));
16
,
tables_size_bytes
[
tables_idx
]));
MyAssert
(
0
==
posix_memalign
((
void
**
)
tables
[
tables_idx
+
1
],
MyAssert
(
0
==
posix_memalign
((
void
**
)
tables
[
tables_idx
+
1
],
16
,
tables_size_bytes
[
tables_idx
+
1
]));
16
,
tables_size_bytes
[
tables_idx
+
1
])
);
gen_sig
(
it
->
first
,
len
,
it
->
second
,
*
tables
[
tables_idx
],
*
tables
[
tables_idx
+
1
]
);
gen_sig
(
it
->
first
,
len
,
it
->
second
,
*
tables
[
tables_idx
],
*
tables
[
tables_idx
+
1
])
;
tables_idx
+=
2
;
tables_idx
+=
2
;
}
}
}
}
}
openair1/PHY/MODULATION/modulation_extern.h
View file @
3740f3d7
/*
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
except in compliance with the License.
* You may obtain a copy of the License at
You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
Unless required by applicable law or agreed to in writing, software
; * distributed under the License is distributed on an "AS IS" BASIS,
; * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
See the License for the specific language governing permissions and
* limitations under the License.
limitations under the License.
*-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
contact@openairinterface.org
*/
*/
#ifdef __cplusplus
extern
"C"
{
#endif
extern
int16_t
*
s6n_kHz_7_5
;
extern
int16_t
*
s6n_kHz_7_5
;
extern
int16_t
*
s6e_kHz_7_5
;
extern
int16_t
*
s6e_kHz_7_5
;
...
@@ -36,3 +39,6 @@ extern int16_t *s100e_kHz_7_5;
...
@@ -36,3 +39,6 @@ extern int16_t *s100e_kHz_7_5;
extern
short
conjugate75
[
8
];
extern
short
conjugate75
[
8
];
extern
short
conjugate75_2
[
8
];
extern
short
conjugate75_2
[
8
];
extern
short
negate
[
8
];
extern
short
negate
[
8
];
#ifdef __cplusplus
}
#endif
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