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
lizhongxiao
OpenXG-RAN
Commits
fbd4df01
Commit
fbd4df01
authored
Aug 03, 2020
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Further improvements
additional 50% speed improvement with SIMD vectors
parent
82be3653
Changes
10
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
56 additions
and
21 deletions
+56
-21
openair1/PHY/MODULATION/nr_modulation.c
openair1/PHY/MODULATION/nr_modulation.c
+50
-12
openair1/PHY/NR_REFSIG/nr_mod_table.h
openair1/PHY/NR_REFSIG/nr_mod_table.h
+4
-0
openair1/PHY/NR_TRANSPORT/nr_dci.c
openair1/PHY/NR_TRANSPORT/nr_dci.c
+2
-2
openair1/SIMULATION/NR_PHY/dlschsim.c
openair1/SIMULATION/NR_PHY/dlschsim.c
+0
-1
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+0
-1
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+0
-1
openair1/SIMULATION/NR_PHY/prachsim.c
openair1/SIMULATION/NR_PHY/prachsim.c
+0
-1
openair1/SIMULATION/NR_PHY/pucchsim.c
openair1/SIMULATION/NR_PHY/pucchsim.c
+0
-1
openair1/SIMULATION/NR_PHY/ulschsim.c
openair1/SIMULATION/NR_PHY/ulschsim.c
+0
-1
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+0
-1
No files found.
openair1/PHY/MODULATION/nr_modulation.c
View file @
fbd4df01
...
...
@@ -20,6 +20,7 @@
*/
#include "nr_modulation.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
extern
short
nr_mod_table
[
NR_MOD_TABLE_SIZE_SHORT
];
...
...
@@ -30,16 +31,29 @@ void nr_modulation(uint32_t *in,
{
uint16_t
offset
;
uint16_t
mask
=
((
1
<<
mod_order
)
-
1
);
int32_t
*
nr_mod_table32
;
int32_t
*
out32
=
(
int32_t
*
)
out
;
uint8_t
*
in_bytes
=
(
uint8_t
*
)
in
;
uint8_t
idx
;
uint16_t
u
=
1
;
uint8_t
shift_lut
[
3
]
=
{
0
,
2
,
4
};
#if defined(__SSE2__)
__m128i
*
nr_mod_table128
;
__m128i
*
out128
;
__m64
*
nr_mod_table64
;
__m64
*
out64
;
#endif
offset
=
(
mod_order
==
2
)
?
NR_MOD_TABLE_QPSK_OFFSET
:
(
mod_order
==
4
)
?
NR_MOD_TABLE_QAM16_OFFSET
:
\
(
mod_order
==
6
)
?
NR_MOD_TABLE_QAM64_OFFSET
:
(
mod_order
==
8
)
?
NR_MOD_TABLE_QAM256_OFFSET
:
0
;
LOG_D
(
PHY
,
"nr_modulation: length %d, mod_order %d
\n
"
,
length
,
mod_order
);
if
(
mod_order
==
6
)
{
uint16_t
u
=
1
;
uint8_t
shift_lut
[
3
]
=
{
0
,
2
,
4
};
switch
(
mod_order
)
{
case
6
:
nr_mod_table32
=
(
int32_t
*
)
nr_mod_table
;
for
(
int
i
=
0
;
i
<
length
/
mod_order
;
i
++
)
{
idx
=
((
in
[
i
*
mod_order
/
32
]
>>
((
i
*
mod_order
)
&
0x1f
))
&
mask
);
...
...
@@ -47,18 +61,42 @@ void nr_modulation(uint32_t *in,
idx
|=
(
in
[(
i
*
mod_order
/
32
)
+
1
]
<<
shift_lut
[(
u
++
)
%
3
])
&
0x3f
;
else
if
(((
i
+
1
)
*
mod_order
)
==
32
*
u
)
u
++
;
out
[
i
<<
1
]
=
nr_mod_table
[(
offset
+
idx
)
<<
1
];
out
[(
i
<<
1
)
+
1
]
=
nr_mod_table
[((
offset
+
idx
)
<<
1
)
+
1
];
out32
[
i
]
=
nr_mod_table32
[(
offset
+
idx
)];
}
return
;
case
8
:
nr_mod_table32
=
(
int32_t
*
)
nr_mod_table
;
for
(
int
i
=
0
;
i
<
length
/
8
;
i
++
)
out32
[
i
]
=
nr_mod_table32
[(
offset
+
in_bytes
[
i
])];
return
;
#if defined(__SSE2__)
case
2
:
nr_mod_table128
=
(
__m128i
*
)
nr_qpsk_byte_mod_table
;
out128
=
(
__m128i
*
)
out
;
for
(
int
i
=
0
;
i
<
length
/
8
;
i
++
)
out128
[
i
]
=
nr_mod_table128
[
in_bytes
[
i
]];
return
;
case
4
:
nr_mod_table64
=
(
__m64
*
)
nr_qam16_byte_mod_table
;
out64
=
(
__m64
*
)
out
;
for
(
int
i
=
0
;
i
<
length
/
8
;
i
++
)
out64
[
i
]
=
nr_mod_table64
[
in_bytes
[
i
]];
return
;
#endif
default:
break
;
}
else
{
nr_mod_table32
=
(
int32_t
*
)
nr_mod_table
;
for
(
int
i
=
0
;
i
<
length
/
mod_order
;
i
++
)
{
idx
=
((
in
[
i
*
mod_order
/
32
]
>>
((
i
*
mod_order
)
&
0x1f
))
&
mask
);
out
[
i
<<
1
]
=
nr_mod_table
[(
offset
+
idx
)
<<
1
];
out
[(
i
<<
1
)
+
1
]
=
nr_mod_table
[((
offset
+
idx
)
<<
1
)
+
1
];
}
out32
[
i
]
=
nr_mod_table32
[(
offset
+
idx
)];
}
}
...
...
openair1/PHY/NR_REFSIG/nr_mod_table.h
View file @
fbd4df01
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_dci.c
View file @
fbd4df01
...
...
@@ -161,7 +161,7 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu,
int16_t
amp
,
NR_DL_FRAME_PARMS
frame_parms
)
{
int16_t
mod_dmrs
[
NR_MAX_CSET_DURATION
][
NR_MAX_PDCCH_DMRS_LENGTH
>>
1
];
// 3 for the max coreset duration
int16_t
mod_dmrs
[
NR_MAX_CSET_DURATION
][
NR_MAX_PDCCH_DMRS_LENGTH
>>
1
]
__attribute__
((
aligned
(
128
)))
;
// 3 for the max coreset duration
uint16_t
cset_start_sc
;
uint8_t
cset_start_symb
,
cset_nsymb
;
int
k
,
l
,
k_prime
,
dci_idx
,
dmrs_idx
;
...
...
@@ -260,7 +260,7 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu,
scrambled_output
[
6
],
scrambled_output
[
7
],
scrambled_output
[
8
],
scrambled_output
[
9
],
scrambled_output
[
10
],
scrambled_output
[
11
]
);
#endif
/// QPSK modulation
int16_t
mod_dci
[
NR_MAX_DCI_SIZE
>>
1
];
int16_t
mod_dci
[
NR_MAX_DCI_SIZE
>>
1
]
__attribute__
((
aligned
(
128
)))
;
nr_modulation
(
scrambled_output
,
encoded_length
,
DMRS_MOD_ORDER
,
mod_dci
);
//Qm = 2 as DMRS is QPSK modulated
#ifdef DEBUG_DCI
...
...
openair1/SIMULATION/NR_PHY/dlschsim.c
View file @
fbd4df01
...
...
@@ -37,7 +37,6 @@
#include "PHY/INIT/phy_init.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
fbd4df01
...
...
@@ -39,7 +39,6 @@
#include "PHY/INIT/phy_init.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
fbd4df01
...
...
@@ -33,7 +33,6 @@
#include "PHY/defs_nr_UE.h"
#include "PHY/defs_gNB.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/INIT/phy_init.h"
...
...
openair1/SIMULATION/NR_PHY/prachsim.c
View file @
fbd4df01
...
...
@@ -37,7 +37,6 @@
#include "SCHED_NR_UE/phy_frame_config_nr.h"
#include "PHY/phy_vars_nr_ue.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/INIT/phy_init.h"
...
...
openair1/SIMULATION/NR_PHY/pucchsim.c
View file @
fbd4df01
...
...
@@ -33,7 +33,6 @@
#include "PHY/defs_nr_UE.h"
#include "PHY/defs_gNB.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/INIT/phy_init.h"
...
...
openair1/SIMULATION/NR_PHY/ulschsim.c
View file @
fbd4df01
...
...
@@ -34,7 +34,6 @@
#include "PHY/defs_gNB.h"
#include "PHY/INIT/phy_init.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
#include "PHY/MODULATION/modulation_eNB.h"
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
fbd4df01
...
...
@@ -37,7 +37,6 @@
#include "PHY/MODULATION/modulation_UE.h"
#include "PHY/MODULATION/nr_modulation.h"
#include "PHY/NR_REFSIG/dmrs_nr.h"
#include "PHY/NR_REFSIG/nr_mod_table.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
#include "PHY/NR_TRANSPORT/nr_sch_dmrs.h"
...
...
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