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
常顺宇
OpenXG-RAN
Commits
ff440a30
Commit
ff440a30
authored
Apr 16, 2019
by
Khalid Ahmed
Committed by
Thomas Schlichter
Jun 04, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SC-FDMA implemented and compiling. (NOT TESTED)!!
parent
c38a4859
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
120 additions
and
7 deletions
+120
-7
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+4
-0
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
+5
-7
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+107
-0
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+4
-0
No files found.
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
ff440a30
...
@@ -1069,6 +1069,10 @@ void nr_pusch_codeword_scrambling(uint8_t *in,
...
@@ -1069,6 +1069,10 @@ void nr_pusch_codeword_scrambling(uint8_t *in,
uint32_t
n_RNTI
,
uint32_t
n_RNTI
,
uint32_t
*
out
);
uint32_t
*
out
);
void
pusch_transform_precoding
(
NR_UE_ULSCH_t
*
ulsch
,
NR_DL_FRAME_PARMS
*
frame_parms
,
int
harq_pid
);
uint32_t
nr_dlsch_decoding_mthread
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
uint32_t
nr_dlsch_decoding_mthread
(
PHY_VARS_NR_UE
*
phy_vars_ue
,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h
View file @
ff440a30
...
@@ -138,10 +138,6 @@ typedef struct {
...
@@ -138,10 +138,6 @@ typedef struct {
uint32_t
sumKr
;
uint32_t
sumKr
;
/// Number of "Filler" bits
/// Number of "Filler" bits
uint32_t
F
;
uint32_t
F
;
/// Msc_initial, Initial number of subcarriers for ULSCH
uint16_t
Msc_initial
;
/// Nsymb_initial, Initial number of symbols for ULSCH
uint8_t
Nsymb_initial
;
/// n_DMRS for cyclic shift of DMRS
/// n_DMRS for cyclic shift of DMRS
uint8_t
n_DMRS
;
uint8_t
n_DMRS
;
/// n_DMRS2 for cyclic shift of DMRS
/// n_DMRS2 for cyclic shift of DMRS
...
@@ -165,6 +161,8 @@ typedef struct {
...
@@ -165,6 +161,8 @@ typedef struct {
typedef
struct
{
typedef
struct
{
/// Current Number of Symbols
/// Current Number of Symbols
uint8_t
Nsymb_pusch
;
uint8_t
Nsymb_pusch
;
/// Nsc_pusch, number of allocated subcarriers for ULSCH
uint16_t
Nsc_pusch
;
/// number of DMRS resource elements
/// number of DMRS resource elements
uint8_t
nb_re_dmrs
;
uint8_t
nb_re_dmrs
;
/// DMRS length
/// DMRS length
...
@@ -204,9 +202,9 @@ typedef struct {
...
@@ -204,9 +202,9 @@ typedef struct {
/// Scrambled "b"-sequences (for definition see 36-211 V8.6 2009-03, p.14)
/// Scrambled "b"-sequences (for definition see 36-211 V8.6 2009-03, p.14)
uint8_t
b_tilde
[
MAX_NUM_NR_CHANNEL_BITS
];
uint8_t
b_tilde
[
MAX_NUM_NR_CHANNEL_BITS
];
/// Modulated "d"-sequences (for definition see 36-211 V8.6 2009-03, p.14)
/// Modulated "d"-sequences (for definition see 36-211 V8.6 2009-03, p.14)
int32_t
d_mod
[
MAX_NUM_NR_RE
]
__attribute__
((
aligned
(
16
)));
u
int32_t
d_mod
[
MAX_NUM_NR_RE
]
__attribute__
((
aligned
(
16
)));
/// Transform-coded "
z"-sequences (for definition see 36-211 V8.6 2009-03, p.14-15
)
/// Transform-coded "
y"-sequences (for definition see 38-211 V15.3.0 2018-09, subsection 6.3.1.4
)
int32_t
z
[
MAX_NUM_NR_RE
];
uint32_t
y
[
MAX_NUM_NR_RE
];
/*
/*
/// "q" sequences for CQI/PMI (for definition see 36-212 V8.6 2009-03, p.27)
/// "q" sequences for CQI/PMI (for definition see 36-212 V8.6 2009-03, p.27)
uint8_t q[MAX_CQI_PAYLOAD];
uint8_t q[MAX_CQI_PAYLOAD];
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
ff440a30
...
@@ -30,9 +30,19 @@
...
@@ -30,9 +30,19 @@
* \warning
* \warning
*/
*/
#include <stdint.h>
#include <stdint.h>
#include "PHY/NR_UE_TRANSPORT/nr_transport_ue.h"
#include "common/utils/assertions.h"
#include "common/utils/assertions.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/defs_nr_common.h"
#include "PHY/defs_nr_common.h"
#include "PHY/TOOLS/tools_defs.h"
//#define DEBUG_SCFDMA
#ifdef DEBUG_SCFDMA
FILE
*
debug_scfdma
;
#endif
...
@@ -74,3 +84,100 @@ void nr_pusch_codeword_scrambling(uint8_t *in,
...
@@ -74,3 +84,100 @@ void nr_pusch_codeword_scrambling(uint8_t *in,
}
}
}
}
void
pusch_transform_precoding
(
NR_UE_ULSCH_t
*
ulsch
,
NR_DL_FRAME_PARMS
*
frame_parms
,
int
harq_pid
){
NR_UL_UE_HARQ_t
*
harq_process
;
int16_t
x
[
8192
]
=
{
0
};
// 8192 is the maximum number of fft bins
uint32_t
*
dmod
;
int
sc
,
pusch_symb
,
pusch_sc
;
int
symb
,
k
,
l
,
num_mod_symb
;
harq_process
=
ulsch
->
harq_processes
[
harq_pid
];
#ifdef DEBUG_SCFDMA
debug_scfdma
=
fopen
(
"debug_scfdma.txt"
,
"w"
);
#endif
dmod
=
ulsch
->
d_mod
;
pusch_symb
=
ulsch
->
Nsymb_pusch
;
pusch_sc
=
ulsch
->
Nsc_pusch
;
num_mod_symb
=
harq_process
->
num_of_mod_symbols
;
void
(
*
dft
)(
int16_t
*
,
int16_t
*
,
int
);
switch
(
frame_parms
->
ofdm_symbol_size
)
{
case
128
:
dft
=
dft128
;
break
;
case
256
:
dft
=
dft256
;
break
;
case
512
:
dft
=
dft512
;
break
;
case
1024
:
dft
=
dft1024
;
break
;
case
1536
:
dft
=
dft1536
;
break
;
case
2048
:
dft
=
dft2048
;
break
;
case
4096
:
dft
=
dft4096
;
break
;
case
8192
:
dft
=
dft8192
;
break
;
default:
dft
=
dft512
;
break
;
}
k
=
0
;
symb
=
0
;
for
(
l
=
0
;
l
<
pusch_symb
;
l
++
){
for
(
sc
=
0
;
sc
<
pusch_sc
;
sc
++
){
x
[
sc
*
2
]
=
(
symb
<
num_mod_symb
)
?
(
AMP
*
((
int16_t
*
)
dmod
)[
symb
*
2
])
>>
15
:
0
;
x
[
sc
*
2
+
1
]
=
(
symb
<
num_mod_symb
)
?
(
AMP
*
((
int16_t
*
)
dmod
)[
symb
*
2
+
1
])
>>
15
:
0
;
#ifdef DEBUG_SCFDMA
fprintf
(
debug_scfdma
,
"x[%d] = %d
\n
"
,
symb
*
2
,
x
[
sc
*
2
]
);
fprintf
(
debug_scfdma
,
"x[%d] = %d
\n
"
,
symb
*
2
+
1
,
x
[
sc
*
2
+
1
]
);
#endif
symb
++
;
}
dft
(
x
,
(
int16_t
*
)
&
ulsch
->
y
[
l
*
pusch_sc
],
1
);
}
#ifdef DEBUG_SCFDMA
for
(
symb
=
0
;
symb
<
num_mod_symb
;
symb
++
)
{
fprintf
(
debug_scfdma
,
"ulsch->y[%d] = %d
\n
"
,
symb
*
2
,
((
int16_t
*
)
ulsch
->
y
)[
symb
*
2
]
);
fprintf
(
debug_scfdma
,
"ulsch->y[%d] = %d
\n
"
,
symb
*
2
+
1
,
((
int16_t
*
)
ulsch
->
y
)[
symb
*
2
+
1
]
);
}
fclose
(
debug_scfdma
);
#endif
}
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
ff440a30
...
@@ -507,6 +507,8 @@ int main(int argc, char **argv) {
...
@@ -507,6 +507,8 @@ int main(int argc, char **argv) {
ulsch_ue
[
cwd
]
->
nb_re_dmrs
=
nb_re_dmrs
;
ulsch_ue
[
cwd
]
->
nb_re_dmrs
=
nb_re_dmrs
;
ulsch_ue
[
cwd
]
->
length_dmrs
=
length_dmrs
;
ulsch_ue
[
cwd
]
->
length_dmrs
=
length_dmrs
;
ulsch_ue
[
cwd
]
->
rnti
=
n_rnti
;
ulsch_ue
[
cwd
]
->
rnti
=
n_rnti
;
ulsch_ue
[
cwd
]
->
Nsc_pusch
=
nb_rb
*
NR_NB_SC_PER_RB
;
ulsch_ue
[
cwd
]
->
Nsymb_pusch
=
nb_symb_sch
;
///////////
///////////
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
...
@@ -572,6 +574,8 @@ int main(int argc, char **argv) {
...
@@ -572,6 +574,8 @@ int main(int argc, char **argv) {
mod_order
,
mod_order
,
(
int16_t
*
)
ulsch_ue
[
cwd
]
->
d_mod
);
(
int16_t
*
)
ulsch_ue
[
cwd
]
->
d_mod
);
pusch_transform_precoding
(
ulsch_ue
[
cwd
],
frame_parms
,
harq_pid
);
///////////
///////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
...
...
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