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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG-RAN
Commits
f1f02ec0
Commit
f1f02ec0
authored
Sep 25, 2024
by
Laurent THOMAS
Committed by
Robert Schmidt
Oct 29, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use existing functions to retrieve (i)dft enum value
parent
2c07f008
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
201 additions
and
1474 deletions
+201
-1474
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
+11
-16
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
+12
-37
openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
...air1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
+33
-43
openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
+31
-49
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+18
-34
openair1/PHY/LTE_TRANSPORT/prach.c
openair1/PHY/LTE_TRANSPORT/prach.c
+13
-79
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+7
-208
openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
+24
-113
openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
+8
-229
openair1/PHY/MODULATION/nr_modulation.c
openair1/PHY/MODULATION/nr_modulation.c
+6
-221
openair1/PHY/MODULATION/slot_fep.c
openair1/PHY/MODULATION/slot_fep.c
+8
-63
openair1/PHY/MODULATION/slot_fep_mbsfn.c
openair1/PHY/MODULATION/slot_fep_mbsfn.c
+10
-46
openair1/PHY/MODULATION/slot_fep_ul.c
openair1/PHY/MODULATION/slot_fep_ul.c
+4
-33
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
+5
-221
openair1/PHY/TOOLS/tools_defs.h
openair1/PHY/TOOLS/tools_defs.h
+11
-82
No files found.
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
View file @
f1f02ec0
...
...
@@ -53,28 +53,23 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms,
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_rx
;
aa
++
)
{
// do ifft of channel estimate
int
len
=
0
;
switch
(
frame_parms
->
N_RB_DL
)
{
case
6
:
dft
(
DFT_128
,(
int16_t
*
)
&
lte_eNB_srs
->
srs_ch_estimates
[
aa
][
0
],
(
int16_t
*
)
lte_eNB_srs
->
srs_ch_estimates_time
[
aa
],
1
);
break
;
len
=
128
;
break
;
case
25
:
dft
(
DFT_512
,(
int16_t
*
)
&
lte_eNB_srs
->
srs_ch_estimates
[
aa
][
0
],
(
int16_t
*
)
lte_eNB_srs
->
srs_ch_estimates_time
[
aa
],
1
);
break
;
len
=
512
;
break
;
case
50
:
dft
(
DFT_1024
,(
int16_t
*
)
&
lte_eNB_srs
->
srs_ch_estimates
[
aa
][
0
],
(
int16_t
*
)
lte_eNB_srs
->
srs_ch_estimates_time
[
aa
],
1
);
break
;
len
=
1024
;
break
;
case
100
:
dft
(
DFT_2048
,(
int16_t
*
)
&
lte_eNB_srs
->
srs_ch_estimates
[
aa
][
0
],
(
int16_t
*
)
lte_eNB_srs
->
srs_ch_estimates_time
[
aa
],
1
);
break
;
len
=
2048
;
break
;
}
if
(
len
)
dft
(
get_dft
(
len
),
(
int16_t
*
)
lte_eNB_srs
->
srs_ch_estimates
[
aa
],
(
int16_t
*
)
lte_eNB_srs
->
srs_ch_estimates_time
[
aa
],
1
);
#ifdef DEBUG_PHY
sprintf
(
fname
,
"srs_ch_estimates_time_%d%d.m"
,
ind
,
aa
);
sprintf
(
vname
,
"srs_time_%d%d"
,
ind
,
aa
);
...
...
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
View file @
f1f02ec0
...
...
@@ -47,9 +47,10 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
uint16_t
Nid_cell
=
(
eNB_offset
==
0
)
?
ue
->
frame_parms
.
Nid_cell
:
ue
->
measurements
.
adj_cell_id
[
eNB_offset
-
1
];
uint8_t
nushift
,
pilot0
,
pilot1
,
pilot2
,
pilot3
;
uint8_t
previous_thread_id
=
ue
->
current_thread_id
[
Ns
>>
1
]
==
0
?
(
RX_NB_TH
-
1
)
:
(
ue
->
current_thread_id
[
Ns
>>
1
]
-
1
);
int
**
dl_ch_estimates
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates
[
eNB_offset
];
LTE_UE_COMMON_PER_THREAD
*
vars
=&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]];
int
**
dl_ch_estimates
=
vars
->
dl_ch_estimates
[
eNB_offset
];
int
**
dl_ch_estimates_previous
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
previous_thread_id
].
dl_ch_estimates
[
eNB_offset
];
int
**
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
rxdataF
;
int
**
rxdataF
=
vars
->
rxdataF
;
pilot0
=
0
;
if
(
ue
->
frame_parms
.
Ncp
==
0
)
{
// normal prefix
...
...
@@ -657,53 +658,27 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
}
}
idft_size_idx_t
idftsizeidx
;
switch
(
ue
->
frame_parms
.
ofdm_symbol_size
)
{
case
128
:
idftsizeidx
=
IDFT_128
;
break
;
case
256
:
idftsizeidx
=
IDFT_256
;
break
;
case
512
:
idftsizeidx
=
IDFT_512
;
break
;
case
1024
:
idftsizeidx
=
IDFT_1024
;
break
;
case
1536
:
idftsizeidx
=
IDFT_1536
;
break
;
case
2048
:
idftsizeidx
=
IDFT_2048
;
break
;
default:
idftsizeidx
=
IDFT_512
;
break
;
}
int
s
=
ue
->
frame_parms
.
ofdm_symbol_size
;
if
(
s
!=
128
&&
s
!=
256
&&
s
!=
512
&&
s
!=
1024
&&
s
!=
1536
&&
s
!=
2048
)
s
=
512
;
if
(
((
Ns
%
2
)
==
0
)
&&
(
l
==
pilot0
))
{
// do ifft of channel estimate
for
(
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
for
(
p
=
0
;
p
<
ue
->
frame_parms
.
nb_antenna_ports_eNB
;
p
++
)
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates
[
eNB_offset
]
[(
p
<<
1
)
+
aarx
])
{
if
(
dl_ch_estimates
[(
p
<<
1
)
+
aarx
])
{
//LOG_I(PHY,"Channel Impulse Computation Slot %d ThreadId %d Symbol %d \n", Ns, ue->current_thread_id[Ns>>1], l);
idft
(
idftsizeidx
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates
[
eNB_offset
][(
p
<<
1
)
+
aarx
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates_time
[
eNB_offset
][(
p
<<
1
)
+
aarx
],
1
);
idft
(
get_idft
(
s
),
(
int16_t
*
)
&
dl_ch_estimates
[(
p
<<
1
)
+
aarx
][
8
],
(
int16_t
*
)
vars
->
dl_ch_estimates_time
[
eNB_offset
][(
p
<<
1
)
+
aarx
],
1
);
}
}
}
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
eNB_id
),
T_INT
(
0
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
Ns
>>
1
]].
frame_rx
%
1024
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
Ns
>>
1
]].
subframe_rx
),
T_INT
(
0
),
T_BUFFER
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates_time
[
eNB_offset
][
0
][
0
],
512
*
4
));
T_INT
(
0
),
T_BUFFER
(
&
vars
->
dl_ch_estimates_time
[
eNB_offset
][
0
][
0
],
512
*
4
));
return
(
0
);
}
openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
View file @
f1f02ec0
...
...
@@ -721,44 +721,37 @@ int lte_dl_mbsfn_channel_estimation(PHY_VARS_UE *ue,
// do ifft of channel estimate
for
(
aa
=
0
;
aa
<
ue
->
frame_parms
.
nb_antennas_rx
*
ue
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
eNB_offset
][
aa
])
{
int32_t
*
tmp
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
eNB_offset
][
aa
];
if
(
tmp
)
{
int
len
;
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
idft
(
IDFT_128
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
len
=
128
;
break
;
case
25
:
idft
(
IDFT_512
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
len
=
512
;
break
;
case
50
:
idft
(
IDFT_1024
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
len
=
1024
;
break
;
case
75
:
idft
(
IDFT_1536
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
len
=
1536
;
break
;
case
100
:
idft
(
IDFT_2048
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
eNB_offset
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
len
=
2048
;
break
;
default:
break
;
LOG_E
(
PHY
,
"Unknown N_RB_DL %d
\n
"
,
ue
->
frame_parms
.
N_RB_DL
);
return
-
1
;
}
idft
(
get_idft
(
len
),
(
int16_t
*
)
&
tmp
[
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]]
.
dl_ch_estimates_time
[
eNB_offset
][
aa
],
1
);
}
}
return
(
0
);
}
...
...
@@ -907,30 +900,27 @@ int lte_dl_mbsfn_khz_1dot25_channel_estimation(PHY_VARS_UE *ue,
// do ifft of channel estimate
for
(
aa
=
0
;
aa
<
ue
->
frame_parms
.
nb_antennas_rx
*
ue
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
if
(
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
0
][
aa
])
{
int32_t
*
tmp
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
0
][
aa
];
if
(
tmp
)
{
int
len
=
0
;
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
25
:
idft
(
IDFT_6144
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
0
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
0
][
aa
],
1
);
break
;
case
50
:
idft
(
IDFT_12288
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
0
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
0
][
aa
],
1
);
break
;
case
100
:
idft
(
IDFT_24576
,(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates
[
0
][
aa
][
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
0
][
aa
],
1
);
break
;
default:
break
;
case
25
:
len
=
6144
;
break
;
case
50
:
len
=
12288
;
break
;
case
100
:
len
=
24576
;
break
;
}
if
(
len
)
idft
(
get_idft
(
len
),
(
int16_t
*
)
&
tmp
[
8
],
(
int16_t
*
)
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
dl_ch_estimates_time
[
0
][
aa
],
1
);
}
}
return
(
0
);
}
...
...
openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
View file @
f1f02ec0
...
...
@@ -37,33 +37,29 @@
static
c16_t
*
primary_synch_time
[
3
]
__attribute__
((
aligned
(
32
)));
static
void
doIdft
(
int
size
,
short
*
in
,
short
*
out
)
{
int
len
;
switch
(
size
)
{
case
6
:
idft
(
IDFT_128
,
in
,
out
,
1
);
break
;
case
25
:
idft
(
IDFT_512
,
in
,
out
,
1
);
break
;
case
50
:
idft
(
IDFT_1024
,
in
,
out
,
1
);
break
;
case
75
:
idft
(
IDFT_1536
,
in
,
out
,
1
);
break
;
case
100
:
idft
(
IDFT_2048
,
in
,
out
,
1
);
break
;
default:
LOG_E
(
PHY
,
"Unsupported N_RB_DL %d
\n
"
,
size
);
abort
();
break
;
}
case
6
:
len
=
128
;
break
;
case
25
:
len
=
512
;
break
;
case
50
:
len
=
1024
;
break
;
case
75
:
len
=
1536
;
break
;
case
100
:
len
=
2048
;
break
;
default:
LOG_E
(
PHY
,
"Unknown N_RB_DL %d
\n
"
,
size
);
return
;
}
idft
(
get_idft
(
len
),
in
,
out
,
1
);
}
static
void
copyPrimary
(
c16_t
*
out
,
struct
complex16
*
in
,
int
ofdmSize
)
{
int
k
=
ofdmSize
-
36
;
...
...
@@ -187,43 +183,29 @@ int ru_sync_time_init(RU_t *ru) { // LTE_UE_COMMON *common_vars
0
,
ru
->
frame_parms
->
N_RB_DL
,
0
);
int
len
;
switch
(
ru
->
frame_parms
->
N_RB_DL
)
{
case
6
:
idft
(
IDFT_128
,(
int16_t
*
)(
&
dmrsp
[
0
][
3
*
ru
->
frame_parms
->
ofdm_symbol_size
]),
ru
->
dmrssync
,
/// complex output
1
);
len
=
128
;
break
;
case
25
:
idft
(
IDFT_512
,(
int16_t
*
)(
&
dmrsp
[
0
][
3
*
ru
->
frame_parms
->
ofdm_symbol_size
]),
ru
->
dmrssync
,
/// complex output
1
);
len
=
512
;
break
;
case
50
:
idft
(
IDFT_1024
,(
int16_t
*
)(
&
dmrsp
[
0
][
3
*
ru
->
frame_parms
->
ofdm_symbol_size
]),
ru
->
dmrssync
,
/// complex output
1
);
len
=
1024
;
break
;
case
75
:
idft
(
IDFT_1536
,(
int16_t
*
)(
&
dmrsp
[
0
][
3
*
ru
->
frame_parms
->
ofdm_symbol_size
]),
ru
->
dmrssync
,
1
);
/// complex output
len
=
1536
;
break
;
case
100
:
idft
(
IDFT_2048
,(
int16_t
*
)(
&
dmrsp
[
0
][
3
*
ru
->
frame_parms
->
ofdm_symbol_size
]),
ru
->
dmrssync
,
/// complex output
1
);
len
=
2048
;
break
;
default:
AssertFatal
(
1
==
0
,
"Unsupported N_RB_DL %d
\n
"
,
ru
->
frame_parms
->
N_RB_DL
);
break
;
LOG_E
(
PHY
,
"Unknown N_RB_DL %d
\n
"
,
ru
->
frame_parms
->
N_RB_DL
);
return
-
1
;
}
idft
(
get_idft
(
len
),
(
int16_t
*
)
&
dmrsp
[
0
][
3
*
ru
->
frame_parms
->
ofdm_symbol_size
],
ru
->
dmrssync
,
1
);
/// complex output
return
(
0
);
}
...
...
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
View file @
f1f02ec0
...
...
@@ -222,33 +222,25 @@ int32_t lte_ul_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
for
(
i
=
0
;
i
<
Msc_RS
;
i
++
)
((
int32_t
*
)
temp_in_ifft_0
)[
i
]
=
ul_ch_estimates
[
aa
][
symbol_offset
+
i
];
int
len
;
switch
(
frame_parms
->
N_RB_DL
)
{
case
6
:
idft
(
IDFT_128
,(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
len
=
128
;
break
;
case
25
:
idft
(
IDFT_512
,(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
len
=
512
;
break
;
case
50
:
idft
(
IDFT_1024
,(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
len
=
1024
;
break
;
case
100
:
idft
(
IDFT_2048
,(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
len
=
2048
;
break
;
default:
LOG_E
(
PHY
,
"Unknown N_RB_DL %d
\n
"
,
frame_parms
->
N_RB_DL
);
return
-
1
;
}
idft
(
get_idft
(
len
),
(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
#if T_TRACER
if
(
aa
==
0
)
...
...
@@ -501,33 +493,25 @@ int32_t lte_ul_channel_estimation_RRU(LTE_DL_FRAME_PARMS *frame_parms,
for
(
i
=
0
;
i
<
Msc_RS
;
i
++
)
((
int32_t
*
)
temp_in_ifft_0
)[
i
]
=
ul_ch_estimates
[
aa
][
symbol_offset
+
i
];
int
len
;
switch
(
frame_parms
->
N_RB_DL
)
{
case
6
:
idft
(
IDFT_128
,(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
len
=
128
;
break
;
case
25
:
idft
(
IDFT_512
,(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
len
=
512
;
break
;
case
50
:
idft
(
IDFT_1024
,(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
len
=
1024
;
break
;
case
100
:
idft
(
IDFT_2048
,(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
len
=
2048
;
break
;
default:
LOG_E
(
PHY
,
"Unknown N_RB_DL %d
\n
"
,
frame_parms
->
N_RB_DL
);
return
-
1
;
}
idft
(
get_idft
(
len
),
(
int16_t
*
)
temp_in_ifft_0
,
(
int16_t
*
)
ul_ch_estimates_time
[
aa
],
1
);
#if T_TRACER
if
(
aa
==
0
)
...
...
openair1/PHY/LTE_TRANSPORT/prach.c
View file @
f1f02ec0
...
...
@@ -292,104 +292,38 @@ void rx_prach0(PHY_VARS_eNB *eNB,
// do DFT
switch
(
fp
->
N_RB_UL
)
{
case
6
:
if
(
prach_fmt
==
4
)
{
dft
(
DFT_256
,
prach2
,
rxsigF
[
aa
],
1
);
fft_size
=
256
;
}
else
{
dft
(
DFT_1536
,
prach2
,
rxsigF
[
aa
],
1
);
if
(
prach_fmt
>
1
)
dft
(
DFT_1536
,
prach2
+
3072
,
rxsigF
[
aa
]
+
3072
,
1
);
fft_size
=
1536
;
}
fft_size
=
prach_fmt
==
4
?
256
:
1536
;
break
;
case
15
:
if
(
prach_fmt
==
4
)
{
dft
(
DFT_256
,
prach2
,
rxsigF
[
aa
],
1
);
fft_size
=
256
;
}
else
{
dft
(
DFT_3072
,
prach2
,
rxsigF
[
aa
],
1
);
if
(
prach_fmt
>
1
)
dft
(
DFT_3072
,
prach2
+
6144
,
rxsigF
[
aa
]
+
6144
,
1
);
}
fft_size
=
3072
;
fft_size
=
prach_fmt
==
4
?
256
:
3072
;
break
;
case
25
:
default:
if
(
prach_fmt
==
4
)
{
dft
(
DFT_1024
,
prach2
,
rxsigF
[
aa
],
1
);
fft_size
=
1024
;
}
else
{
dft
(
DFT_6144
,
prach2
,
rxsigF
[
aa
],
1
);
if
(
prach_fmt
>
1
)
dft
(
DFT_6144
,
prach2
+
12288
,
rxsigF
[
aa
]
+
12288
,
1
);
fft_size
=
6144
;
}
fft_size
=
prach_fmt
==
4
?
1024
:
6144
;
break
;
case
50
:
if
(
prach_fmt
==
4
)
{
dft
(
DFT_2048
,
prach2
,
rxsigF
[
aa
],
1
);
fft_size
=
2048
;
}
else
{
dft
(
DFT_12288
,
prach2
,
rxsigF
[
aa
],
1
);
if
(
prach_fmt
>
1
)
dft
(
DFT_12288
,
prach2
+
24576
,
rxsigF
[
aa
]
+
24576
,
1
);
fft_size
=
12288
;
}
fft_size
=
prach_fmt
==
4
?
2048
:
12288
;
break
;
case
75
:
if
(
prach_fmt
==
4
)
{
dft
(
DFT_3072
,
prach2
,
rxsigF
[
aa
],
1
);
fft_size
=
3072
;
}
else
{
dft
(
DFT_18432
,
prach2
,
rxsigF
[
aa
],
1
);
if
(
prach_fmt
>
1
)
dft
(
DFT_18432
,
prach2
+
36864
,
rxsigF
[
aa
]
+
36864
,
1
);
fft_size
=
18432
;
}
fft_size
=
prach_fmt
==
4
?
3072
:
18432
;
break
;
case
100
:
if
(
fp
->
threequarter_fs
==
0
)
{
if
(
prach_fmt
==
4
)
{
dft
(
DFT_4096
,
prach2
,
rxsigF
[
aa
],
1
);
fft_size
=
2048
;
}
else
{
dft
(
DFT_24576
,
prach2
,
rxsigF
[
aa
],
1
);
if
(
prach_fmt
>
1
)
dft
(
DFT_24576
,
prach2
+
49152
,
rxsigF
[
aa
]
+
49152
,
1
);
fft_size
=
24576
;
}
}
else
{
if
(
prach_fmt
==
4
)
{
dft
(
DFT_3072
,
prach2
,
rxsigF
[
aa
],
1
);
fft_size
=
3072
;
}
else
{
dft
(
DFT_18432
,
prach2
,
rxsigF
[
aa
],
1
);
if
(
prach_fmt
>
1
)
dft
(
DFT_18432
,
prach2
+
36864
,
rxsigF
[
aa
]
+
36864
,
1
);
fft_size
=
18432
;
}
}
if
(
fp
->
threequarter_fs
==
0
)
fft_size
=
prach_fmt
==
4
?
4096
:
24576
;
else
fft_size
=
prach_fmt
==
4
?
3072
:
18432
;
break
;
}
dft
(
get_dft
(
fft_size
),
prach2
,
rxsigF
[
aa
],
1
);
if
(
prach_fmt
>
1
&&
prach_fmt
!=
4
)
dft
(
get_dft
(
fft_size
),
prach2
+
2
*
fft_size
,
rxsigF
[
aa
]
+
2
*
fft_size
,
1
);
k
=
(
12
*
n_ra_prb
)
-
6
*
fp
->
N_RB_UL
;
if
(
k
<
0
)
{
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
View file @
f1f02ec0
...
...
@@ -127,12 +127,12 @@ void lte_idft(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *z, uint16_t Msc_PUSCH) {
((
uint32_t
*
)
idft_in2
)[
ip
+
3
]
=
z11
[
i
];
}
}
dft_size_idx_t
dftsize
=
get_dft
(
Msc_PUSCH
);
switch
(
Msc_PUSCH
)
{
case
12
:
dft
(
DFT_12
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
0
);
dft
(
DFT_12
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
0
);
dft
(
DFT_12
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
0
);
dft
(
dftsize
,
(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
0
);
dft
(
dftsize
,
(
int16_t
*
)
idft_in1
,
(
int16_t
*
)
idft_out1
,
0
);
dft
(
dftsize
,
(
int16_t
*
)
idft_in2
,
(
int16_t
*
)
idft_out2
,
0
);
norm128
=
simde_mm_set1_epi16
(
9459
);
for
(
i
=
0
;
i
<
12
;
i
++
)
{
...
...
@@ -143,208 +143,10 @@ void lte_idft(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *z, uint16_t Msc_PUSCH) {
break
;
case
24
:
dft
(
DFT_24
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_24
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_24
,
idft_in2
,
idft_out2
,
1
);
break
;
case
36
:
dft
(
DFT_36
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_36
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_36
,
idft_in2
,
idft_out2
,
1
);
break
;
case
48
:
dft
(
DFT_48
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_48
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_48
,
idft_in2
,
idft_out2
,
1
);
break
;
case
60
:
dft
(
DFT_60
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_60
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_60
,
idft_in2
,
idft_out2
,
1
);
break
;
case
72
:
dft
(
DFT_72
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_72
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_72
,
idft_in2
,
idft_out2
,
1
);
break
;
case
96
:
dft
(
DFT_96
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_96
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_96
,
idft_in2
,
idft_out2
,
1
);
break
;
case
108
:
dft
(
DFT_108
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_108
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_108
,
idft_in2
,
idft_out2
,
1
);
break
;
case
120
:
dft
(
DFT_120
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_120
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_120
,
idft_in2
,
idft_out2
,
1
);
break
;
case
144
:
dft
(
DFT_144
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_144
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_144
,
idft_in2
,
idft_out2
,
1
);
break
;
case
180
:
dft
(
DFT_180
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_180
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_180
,
idft_in2
,
idft_out2
,
1
);
break
;
case
192
:
dft
(
DFT_192
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_192
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_192
,
idft_in2
,
idft_out2
,
1
);
break
;
case
216
:
dft
(
DFT_216
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_216
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_216
,
idft_in2
,
idft_out2
,
1
);
break
;
case
240
:
dft
(
DFT_240
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_240
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_240
,
idft_in2
,
idft_out2
,
1
);
break
;
case
288
:
dft
(
DFT_288
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_288
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_288
,
idft_in2
,
idft_out2
,
1
);
break
;
case
300
:
dft
(
DFT_300
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_300
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_300
,
idft_in2
,
idft_out2
,
1
);
break
;
case
324
:
dft
(
DFT_324
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_324
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_324
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
360
:
dft
(
DFT_360
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_360
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_360
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
384
:
dft
(
DFT_384
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_384
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_384
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
432
:
dft
(
DFT_432
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_432
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_432
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
480
:
dft
(
DFT_480
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_480
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_480
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
540
:
dft
(
DFT_540
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_540
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_540
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
576
:
dft
(
DFT_576
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_576
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_576
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
600
:
dft
(
DFT_600
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_600
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_600
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
648
:
dft
(
DFT_648
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_648
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_648
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
720
:
dft
(
DFT_720
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_720
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_720
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
768
:
dft
(
DFT_768
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_768
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_768
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
864
:
dft
(
DFT_864
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_864
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_864
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
900
:
dft
(
DFT_900
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_900
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_900
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
960
:
dft
(
DFT_960
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_960
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_960
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
972
:
dft
(
DFT_972
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_972
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_972
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
1080
:
dft
(
DFT_1080
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_1080
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_1080
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
1152
:
dft
(
DFT_1152
,(
int16_t
*
)
idft_in0
,(
int16_t
*
)
idft_out0
,
1
);
dft
(
DFT_1152
,(
int16_t
*
)
idft_in1
,(
int16_t
*
)
idft_out1
,
1
);
dft
(
DFT_1152
,(
int16_t
*
)
idft_in2
,(
int16_t
*
)
idft_out2
,
1
);
break
;
case
1200
:
dft
(
DFT_1200
,
idft_in0
,
idft_out0
,
1
);
dft
(
DFT_1200
,
idft_in1
,
idft_out1
,
1
);
dft
(
DFT_1200
,
idft_in2
,
idft_out2
,
1
);
break
;
default:
// should not be reached
LOG_E
(
PHY
,
"Unsupported Msc_PUSCH value of %"
PRIu16
"
\n
"
,
Msc_PUSCH
);
return
;
dft
(
dftsize
,
idft_in0
,
idft_out0
,
1
);
dft
(
dftsize
,
idft_in1
,
idft_out1
,
1
);
dft
(
dftsize
,
idft_in2
,
idft_out2
,
1
)
;
}
for
(
i
=
0
,
ip
=
0
;
i
<
Msc_PUSCH
;
i
++
,
ip
+=
4
)
{
...
...
@@ -391,9 +193,6 @@ void lte_idft(LTE_DL_FRAME_PARMS *frame_parms,uint32_t *z, uint16_t Msc_PUSCH) {
((
simde__m128i
*
)
z11
)[
i
]
=
simde_mm_sign_epi16
(((
simde__m128i
*
)
z11
)[
i
],
*
(
simde__m128i
*
)
&
conjugate2
[
0
]);
}
}
simde_mm_empty
();
simde_m_empty
();
}
...
...
openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
View file @
f1f02ec0
...
...
@@ -325,139 +325,50 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
prach2
=
prach
+
(
Ncp
<<
1
);
// do IDFT
idft_size_idx_t
len
=
0
;
switch
(
ue
->
frame_parms
.
N_RB_UL
)
{
case
6
:
if
(
prach_fmt
==
4
)
{
idft
(
IDFT_256
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
512
,
Ncp
<<
2
);
prach_len
=
256
+
Ncp
;
}
else
{
idft
(
IDFT_1536
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
3072
,
Ncp
<<
2
);
prach_len
=
1536
+
Ncp
;
if
(
prach_fmt
>
1
)
{
memmove
(
prach2
+
3072
,
prach2
,
6144
);
prach_len
=
2
*
1536
+
Ncp
;
}
}
len
=
prach_fmt
==
4
?
256
:
1536
;
break
;
case
15
:
if
(
prach_fmt
==
4
)
{
idft
(
IDFT_512
,
prachF
,
prach2
,
1
);
//TODO: account for repeated format in dft output
memmove
(
prach
,
prach
+
1024
,
Ncp
<<
2
);
prach_len
=
512
+
Ncp
;
}
else
{
idft
(
IDFT_3072
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
6144
,
Ncp
<<
2
);
prach_len
=
3072
+
Ncp
;
if
(
prach_fmt
>
1
)
{
memmove
(
prach2
+
6144
,
prach2
,
12288
);
prach_len
=
2
*
3072
+
Ncp
;
}
}
len
=
prach_fmt
==
4
?
512
:
3072
;
break
;
case
25
:
default:
if
(
prach_fmt
==
4
)
{
idft
(
IDFT_1024
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
2048
,
Ncp
<<
2
);
prach_len
=
1024
+
Ncp
;
}
else
{
idft
(
IDFT_6144
,
prachF
,
prach2
,
1
);
/*for (i=0;i<6144*2;i++)
prach2[i]<<=1;*/
memmove
(
prach
,
prach
+
12288
,
Ncp
<<
2
);
prach_len
=
6144
+
Ncp
;
if
(
prach_fmt
>
1
)
{
memmove
(
prach2
+
12288
,
prach2
,
24576
);
prach_len
=
2
*
6144
+
Ncp
;
}
}
len
=
prach_fmt
==
4
?
1024
:
6144
;
break
;
case
50
:
if
(
prach_fmt
==
4
)
{
idft
(
IDFT_2048
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
4096
,
Ncp
<<
2
);
prach_len
=
2048
+
Ncp
;
}
else
{
idft
(
IDFT_12288
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
24576
,
Ncp
<<
2
);
prach_len
=
12288
+
Ncp
;
if
(
prach_fmt
>
1
)
{
memmove
(
prach2
+
24576
,
prach2
,
49152
);
prach_len
=
2
*
12288
+
Ncp
;
}
}
len
=
prach_fmt
==
4
?
2048
:
12288
;
break
;
case
75
:
if
(
prach_fmt
==
4
)
{
idft
(
IDFT_3072
,
prachF
,
prach2
,
1
);
//TODO: account for repeated format in dft output
memmove
(
prach
,
prach
+
6144
,
Ncp
<<
2
);
prach_len
=
3072
+
Ncp
;
}
else
{
idft
(
IDFT_18432
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
36864
,
Ncp
<<
2
);
prach_len
=
18432
+
Ncp
;
if
(
prach_fmt
>
1
)
{
memmove
(
prach2
+
36834
,
prach2
,
73728
);
prach_len
=
2
*
18432
+
Ncp
;
}
}
len
=
prach_fmt
==
4
?
3072
:
18432
;
break
;
case
100
:
if
(
ue
->
frame_parms
.
threequarter_fs
==
0
)
{
if
(
prach_fmt
==
4
)
{
idft
(
IDFT_4096
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
8192
,
Ncp
<<
2
);
prach_len
=
4096
+
Ncp
;
}
else
{
idft
(
IDFT_24576
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
49152
,
Ncp
<<
2
);
prach_len
=
24576
+
Ncp
;
if
(
prach_fmt
>
1
)
{
memmove
(
prach2
+
49152
,
prach2
,
98304
);
prach_len
=
2
*
24576
+
Ncp
;
}
}
}
else
{
if
(
prach_fmt
==
4
)
{
idft
(
IDFT_3072
,
prachF
,
prach2
,
1
);
//TODO: account for repeated format in dft output
memmove
(
prach
,
prach
+
6144
,
Ncp
<<
2
);
prach_len
=
3072
+
Ncp
;
}
else
{
idft
(
IDFT_18432
,
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
36864
,
Ncp
<<
2
);
prach_len
=
18432
+
Ncp
;
printf
(
"Generated prach for 100 PRB, 3/4 sampling
\n
"
);
if
(
prach_fmt
>
1
)
{
memmove
(
prach2
+
36834
,
prach2
,
73728
);
prach_len
=
2
*
18432
+
Ncp
;
}
}
}
if
(
ue
->
frame_parms
.
threequarter_fs
==
0
)
len
=
prach_fmt
==
4
?
4096
:
24576
;
else
len
=
prach_fmt
==
4
?
3072
:
18432
;
break
;
}
if
(
prach_fmt
==
4
)
{
idft
(
get_idft
(
len
),
prachF
,
prach2
,
1
);
// TODO: account for repeated format in dft output
memmove
(
prach
,
prach
+
2
*
len
,
Ncp
<<
2
);
prach_len
=
len
+
Ncp
;
}
else
{
idft
(
get_idft
(
len
),
prachF
,
prach2
,
1
);
memmove
(
prach
,
prach
+
2
*
len
,
Ncp
<<
2
);
prach_len
=
len
+
Ncp
;
if
(
prach_fmt
>
1
)
{
memmove
(
prach2
+
2
*
len
,
prach2
,
73728
);
prach_len
=
2
*
len
+
Ncp
;
}
}
//LOG_I(PHY,"prach_len=%d\n",prach_len);
AssertFatal
(
prach_fmt
<
4
,
...
...
openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
View file @
f1f02ec0
...
...
@@ -92,41 +92,12 @@ void dft_lte(int32_t *z,struct complex16 *input, int32_t Msc_PUSCH, uint8_t Nsym
}
// printf("\n");
dft_size_idx_t
dftsize
=
get_dft
(
Msc_PUSCH
);
switch
(
Msc_PUSCH
)
{
case
12
:
dft
(
DFT_12
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
0
);
dft
(
DFT_12
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
0
);
dft
(
DFT_12
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
0
);
/*
dft12f(&((simde__m128i *)dft_in0)[0],&((simde__m128i *)dft_in0)[1],&((simde__m128i *)dft_in0)[2],&((simde__m128i
*)dft_in0)[3],&((simde__m128i *)dft_in0)[4],&((simde__m128i *)dft_in0)[5],&((simde__m128i *)dft_in0)[6],&((simde__m128i
*)dft_in0)[7],&((simde__m128i *)dft_in0)[8],&((simde__m128i *)dft_in0)[9],&((simde__m128i *)dft_in0)[10],&((simde__m128i
*)dft_in0)[11],
&((simde__m128i *)dft_out0)[0],&((simde__m128i *)dft_out0)[1],&((simde__m128i *)dft_out0)[2],&((simde__m128i
*)dft_out0)[3],&((simde__m128i *)dft_out0)[4],&((simde__m128i *)dft_out0)[5],&((simde__m128i *)dft_out0)[6],&((simde__m128i
*)dft_out0)[7],&((simde__m128i *)dft_out0)[8],&((simde__m128i *)dft_out0)[9],&((simde__m128i *)dft_out0)[10],&((simde__m128i
*)dft_out0)[11]);
dft12f(&((simde__m128i *)dft_in1)[0],&((simde__m128i *)dft_in1)[1],&((simde__m128i *)dft_in1)[2],&((simde__m128i
*)dft_in1)[3],&((simde__m128i *)dft_in1)[4],&((simde__m128i *)dft_in1)[5],&((simde__m128i *)dft_in1)[6],&((simde__m128i
*)dft_in1)[7],&((simde__m128i *)dft_in1)[8],&((simde__m128i *)dft_in1)[9],&((simde__m128i *)dft_in1)[10],&((simde__m128i
*)dft_in1)[11],
&((simde__m128i *)dft_out1)[0],&((simde__m128i *)dft_out1)[1],&((simde__m128i *)dft_out1)[2],&((simde__m128i
*)dft_out1)[3],&((simde__m128i *)dft_out1)[4],&((simde__m128i *)dft_out1)[5],&((simde__m128i *)dft_out1)[6],&((simde__m128i
*)dft_out1)[7],&((simde__m128i *)dft_out1)[8],&((simde__m128i *)dft_out1)[9],&((simde__m128i *)dft_out1)[10],&((simde__m128i
*)dft_out1)[11]);
dft12f(&((simde__m128i *)dft_in2)[0],&((simde__m128i *)dft_in2)[1],&((simde__m128i *)dft_in2)[2],&((simde__m128i
*)dft_in2)[3],&((simde__m128i *)dft_in2)[4],&((simde__m128i *)dft_in2)[5],&((simde__m128i *)dft_in2)[6],&((simde__m128i
*)dft_in2)[7],&((simde__m128i *)dft_in2)[8],&((simde__m128i *)dft_in2)[9],&((simde__m128i *)dft_in2)[10],&((simde__m128i
*)dft_in2)[11],
&((simde__m128i *)dft_out2)[0],&((simde__m128i *)dft_out2)[1],&((simde__m128i *)dft_out2)[2],&((simde__m128i
*)dft_out2)[3],&((simde__m128i *)dft_out2)[4],&((simde__m128i *)dft_out2)[5],&((simde__m128i *)dft_out2)[6],&((simde__m128i
*)dft_out2)[7],&((simde__m128i *)dft_out2)[8],&((simde__m128i *)dft_out2)[9],&((simde__m128i *)dft_out2)[10],&((simde__m128i
*)dft_out2)[11]);
*/
dft
(
dftsize
,
(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
0
);
dft
(
dftsize
,
(
int16_t
*
)
dft_in1
,
(
int16_t
*
)
dft_out1
,
0
);
dft
(
dftsize
,
(
int16_t
*
)
dft_in2
,
(
int16_t
*
)
dft_out2
,
0
);
norm128
=
simde_mm_set1_epi16
(
9459
);
for
(
i
=
0
;
i
<
12
;
i
++
)
{
((
simde__m128i
*
)
dft_out0
)[
i
]
=
simde_mm_slli_epi16
(
simde_mm_mulhi_epi16
(((
simde__m128i
*
)
dft_out0
)[
i
],
norm128
),
1
);
...
...
@@ -136,202 +107,10 @@ void dft_lte(int32_t *z,struct complex16 *input, int32_t Msc_PUSCH, uint8_t Nsym
break
;
case
24
:
dft
(
DFT_24
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_24
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_24
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
36
:
dft
(
DFT_36
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_36
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_36
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
48
:
dft
(
DFT_48
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_48
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_48
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
60
:
dft
(
DFT_60
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_60
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_60
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
72
:
dft
(
DFT_72
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_72
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_72
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
96
:
dft
(
DFT_96
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_96
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_96
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
108
:
dft
(
DFT_108
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_108
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_108
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
120
:
dft
(
DFT_120
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_120
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_120
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
144
:
dft
(
DFT_144
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_144
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_144
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
180
:
dft
(
DFT_180
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_180
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_180
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
192
:
dft
(
DFT_192
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_192
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_192
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
216
:
dft
(
DFT_216
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_216
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_216
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
240
:
dft
(
DFT_240
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_240
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_240
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
288
:
dft
(
DFT_288
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_288
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_288
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
300
:
dft
(
DFT_300
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_300
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_300
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
324
:
dft
(
DFT_324
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_324
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_324
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
360
:
dft
(
DFT_360
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_360
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_360
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
384
:
dft
(
DFT_384
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_384
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_384
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
432
:
dft
(
DFT_432
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_432
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_432
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
480
:
dft
(
DFT_480
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_480
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_480
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
540
:
dft
(
DFT_540
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_540
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_540
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
576
:
dft
(
DFT_576
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_576
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_576
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
600
:
dft
(
DFT_600
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_600
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_600
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
648
:
dft
(
DFT_648
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_648
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_648
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
720
:
dft
(
DFT_720
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_720
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_720
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
768
:
dft
(
DFT_768
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_768
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_768
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
864
:
dft
(
DFT_864
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_864
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_864
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
900
:
dft
(
DFT_900
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_900
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_900
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
960
:
dft
(
DFT_960
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_960
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_960
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
972
:
dft
(
DFT_972
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_972
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_972
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
1080
:
dft
(
DFT_1080
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_1080
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_1080
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
1152
:
dft
(
DFT_1152
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_1152
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_1152
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
break
;
case
1200
:
dft
(
DFT_1200
,(
int16_t
*
)
dft_in0
,(
int16_t
*
)
dft_out0
,
1
);
dft
(
DFT_1200
,(
int16_t
*
)
dft_in1
,(
int16_t
*
)
dft_out1
,
1
);
dft
(
DFT_1200
,(
int16_t
*
)
dft_in2
,(
int16_t
*
)
dft_out2
,
1
);
default:
dft
(
dftsize
,
(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
dft
(
dftsize
,
(
int16_t
*
)
dft_in1
,
(
int16_t
*
)
dft_out1
,
1
);
dft
(
dftsize
,
(
int16_t
*
)
dft_in2
,
(
int16_t
*
)
dft_out2
,
1
);
break
;
}
...
...
openair1/PHY/MODULATION/nr_modulation.c
View file @
f1f02ec0
...
...
@@ -341,236 +341,21 @@ void nr_dft(c16_t *z, c16_t *d, uint32_t Msc_PUSCH)
dft_in0
[
ip
]
=
d
[
i
];
}
}
dft_size_idx_t
dftsize
=
get_dft
(
Msc_PUSCH
);
switch
(
Msc_PUSCH
)
{
case
12
:
dft
(
DFT_12
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
0
);
dft
(
dftsize
,
(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
0
);
norm128
=
simde_mm_set1_epi16
(
9459
);
for
(
i
=
0
;
i
<
12
;
i
++
)
{
((
simde__m128i
*
)
dft_out0
)[
i
]
=
simde_mm_slli_epi16
(
simde_mm_mulhi_epi16
(((
simde__m128i
*
)
dft_out0
)[
i
],
norm128
),
1
);
for
(
i
=
0
;
i
<
12
;
i
++
)
{
((
simde__m128i
*
)
dft_out0
)[
i
]
=
simde_mm_slli_epi16
(
simde_mm_mulhi_epi16
(((
simde__m128i
*
)
dft_out0
)[
i
],
norm128
),
1
);
}
break
;
case
24
:
dft
(
DFT_24
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
36
:
dft
(
DFT_36
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
48
:
dft
(
DFT_48
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
60
:
dft
(
DFT_60
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
72
:
dft
(
DFT_72
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
96
:
dft
(
DFT_96
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
108
:
dft
(
DFT_108
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
120
:
dft
(
DFT_120
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
144
:
dft
(
DFT_144
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
180
:
dft
(
DFT_180
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
192
:
dft
(
DFT_192
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
216
:
dft
(
DFT_216
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
240
:
dft
(
DFT_240
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
288
:
dft
(
DFT_288
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
300
:
dft
(
DFT_300
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
324
:
dft
(
DFT_324
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
360
:
dft
(
DFT_360
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
384
:
dft
(
DFT_384
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
432
:
dft
(
DFT_432
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
480
:
dft
(
DFT_480
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
540
:
dft
(
DFT_540
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
576
:
dft
(
DFT_576
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
600
:
dft
(
DFT_600
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
648
:
dft
(
DFT_648
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
720
:
dft
(
DFT_720
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
768
:
dft
(
DFT_768
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
864
:
dft
(
DFT_864
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
900
:
dft
(
DFT_900
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
960
:
dft
(
DFT_960
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
972
:
dft
(
DFT_972
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1080
:
dft
(
DFT_1080
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1152
:
dft
(
DFT_1152
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1200
:
dft
(
DFT_1200
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1296
:
dft
(
DFT_1296
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1440
:
dft
(
DFT_1440
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1500
:
dft
(
DFT_1500
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1536
:
//dft(DFT_1536,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
dft
(
DFT_1536
,(
int16_t
*
)
d
,
(
int16_t
*
)
z
,
1
);
break
;
case
1620
:
dft
(
DFT_1620
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1728
:
dft
(
DFT_1728
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1800
:
dft
(
DFT_1800
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1920
:
dft
(
DFT_1920
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
1944
:
dft
(
DFT_1944
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
2160
:
dft
(
DFT_2160
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
2304
:
dft
(
DFT_2304
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
2400
:
dft
(
DFT_2400
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
2592
:
dft
(
DFT_2592
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
2700
:
dft
(
DFT_2700
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
2880
:
dft
(
DFT_2880
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
2916
:
dft
(
DFT_2916
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
3000
:
dft
(
DFT_3000
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
case
3072
:
//dft(DFT_3072,(int16_t*)dft_in0, (int16_t*)dft_out0, 1);
dft
(
DFT_3072
,(
int16_t
*
)
d
,
(
int16_t
*
)
z
,
1
);
break
;
case
3240
:
dft
(
DFT_3240
,(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
default:
// should not be reached
LOG_E
(
PHY
,
"Unsupported Msc_PUSCH value of %"
PRIu16
"
\n
"
,
Msc_PUSCH
);
return
;
dft
(
dftsize
,
(
int16_t
*
)
dft_in0
,
(
int16_t
*
)
dft_out0
,
1
);
break
;
}
if
((
Msc_PUSCH
%
1536
)
>
0
)
{
for
(
i
=
0
,
ip
=
0
;
i
<
Msc_PUSCH
;
i
++
,
ip
+=
4
)
z
[
i
]
=
dft_out0
[
ip
];
...
...
openair1/PHY/MODULATION/slot_fep.c
View file @
f1f02ec0
...
...
@@ -49,39 +49,11 @@ int slot_fep(PHY_VARS_UE *ue,
unsigned char harq_pid = dlsch_ue[0]->current_harq_pid;
LTE_DL_UE_HARQ_t *dlsch0_harq = dlsch_ue[0]->harq_processes[harq_pid];
int uespec_pilot[9][1200];*/
dft_size_idx_t
dftsizeidx
;
int
tmp_dft_in
[
2048
]
__attribute__
((
aligned
(
32
)));
// This is for misalignment issues for 6 and 15 PRBs
switch
(
frame_parms
->
ofdm_symbol_size
)
{
case
128
:
dftsizeidx
=
DFT_128
;
break
;
case
256
:
dftsizeidx
=
DFT_256
;
break
;
case
512
:
dftsizeidx
=
DFT_512
;
break
;
case
1024
:
dftsizeidx
=
DFT_1024
;
break
;
case
1536
:
dftsizeidx
=
DFT_1536
;
break
;
case
2048
:
dftsizeidx
=
DFT_2048
;
break
;
default:
dftsizeidx
=
DFT_512
;
break
;
}
int
s
=
frame_parms
->
ofdm_symbol_size
;
if
(
s
!=
128
&&
s
!=
256
&&
s
!=
512
&&
s
!=
1024
&&
s
!=
1536
&&
s
!=
2048
)
s
=
512
;
const
dft_size_idx_t
dftsizeidx
=
get_dft
(
s
);
if
(
no_prefix
)
{
subframe_offset
=
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
*
(
Ns
>>
1
);
slot_offset
=
frame_parms
->
ofdm_symbol_size
*
(
frame_parms
->
symbols_per_tti
>>
1
)
*
(
Ns
%
2
);
...
...
@@ -231,38 +203,11 @@ int front_end_fft(PHY_VARS_UE *ue,
unsigned char harq_pid = dlsch_ue[0]->current_harq_pid;
LTE_DL_UE_HARQ_t *dlsch0_harq = dlsch_ue[0]->harq_processes[harq_pid];
int uespec_pilot[9][1200];*/
dft_size_idx_t
dftsizeidx
;
int
tmp_dft_in
[
2048
]
__attribute__
((
aligned
(
32
)));
// This is for misalignment issues for 6 and 15 PRBs
switch
(
frame_parms
->
ofdm_symbol_size
)
{
case
128
:
dftsizeidx
=
DFT_128
;
break
;
case
256
:
dftsizeidx
=
DFT_256
;
break
;
case
512
:
dftsizeidx
=
DFT_512
;
break
;
case
1024
:
dftsizeidx
=
DFT_1024
;
break
;
case
1536
:
dftsizeidx
=
DFT_1536
;
break
;
case
2048
:
dftsizeidx
=
DFT_2048
;
break
;
default:
dftsizeidx
=
DFT_512
;
break
;
}
int
s
=
frame_parms
->
ofdm_symbol_size
;
if
(
s
!=
128
&&
s
!=
256
&&
s
!=
512
&&
s
!=
1024
&&
s
!=
1536
&&
s
!=
2048
)
s
=
512
;
dft_size_idx_t
dftsizeidx
=
get_dft
(
s
);
if
(
no_prefix
)
{
subframe_offset
=
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
*
(
Ns
>>
1
);
...
...
openair1/PHY/MODULATION/slot_fep_mbsfn.c
View file @
f1f02ec0
...
...
@@ -42,38 +42,10 @@ int slot_fep_mbsfn(PHY_VARS_UE *ue,
unsigned
int
subframe_offset
;
// int i;
unsigned
int
frame_length_samples
=
frame_parms
->
samples_per_tti
*
10
;
dft_size_idx_t
dftsizeidx
;
switch
(
frame_parms
->
ofdm_symbol_size
)
{
case
128
:
dftsizeidx
=
DFT_128
;
break
;
case
256
:
dftsizeidx
=
DFT_256
;
break
;
case
512
:
dftsizeidx
=
DFT_512
;
break
;
case
1024
:
dftsizeidx
=
DFT_1024
;
break
;
case
1536
:
dftsizeidx
=
DFT_1536
;
break
;
case
2048
:
dftsizeidx
=
DFT_2048
;
break
;
default:
dftsizeidx
=
DFT_512
;
break
;
}
int
s
=
frame_parms
->
ofdm_symbol_size
;
if
(
s
!=
128
&&
s
!=
256
&&
s
!=
512
&&
s
!=
1024
&&
s
!=
1536
&&
s
!=
2048
)
s
=
512
;
dft_size_idx_t
dftsizeidx
=
get_dft
(
s
);
if
(
no_prefix
)
{
subframe_offset
=
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
*
subframe
;
}
else
{
...
...
@@ -200,52 +172,44 @@ int slot_fep_mbsfn_khz_1dot25(PHY_VARS_UE *ue,
int
ofdm_symbol_size
;
unsigned
int
subframe_offset
;
unsigned
int
frame_length_samples
=
frame_parms
->
samples_per_tti
*
10
;
dft_size_idx_t
dftsizeidx
;
AssertFatal
(
frame_parms
->
frame_type
==
FDD
,
"Frame is TDD!
\n
"
);
switch
(
frame_parms
->
ofdm_symbol_size
)
{
case
128
:
dftsizeidx
=
DFT_1536
;
ofdm_symbol_size
=
1536
;
nb_prefix_samples
=
384
;
break
;
case
256
:
AssertFatal
(
1
==
0
,
"FeMBMS dft3072 not implemented
\n
"
);
dftsizeidx
=
DFT_3072
;
AssertFatal
(
1
==
0
,
"FeMBMS dft3072 not implemented
\n
"
);
ofdm_symbol_size
=
3072
;
nb_prefix_samples
=
768
;
break
;
case
512
:
dftsizeidx
=
DFT_6144
;
nb_prefix_samples
=
1536
;
ofdm_symbol_size
=
6144
;
nb_prefix_samples
=
1536
;
break
;
case
1024
:
dftsizeidx
=
DFT_12288
;
nb_prefix_samples
=
3072
;
ofdm_symbol_size
=
12288
;
nb_prefix_samples
=
3072
;
break
;
case
1536
:
dftsizeidx
=
DFT_18432
;
nb_prefix_samples
=
4608
;
ofdm_symbol_size
=
18432
;
nb_prefix_samples
=
4608
;
break
;
case
2048
:
dftsizeidx
=
DFT_24576
;
nb_prefix_samples
=
6144
;
ofdm_symbol_size
=
24576
;
nb_prefix_samples
=
6144
;
break
;
default:
AssertFatal
(
1
==
0
,
"Illegal ofdm symbol size %d
\n
"
,
frame_parms
->
ofdm_symbol_size
);
break
;
}
subframe_offset
=
frame_parms
->
samples_per_tti
*
subframe
;
#ifdef DEBUG_FEP
LOG_D
(
PHY
,
"slot_fep_mbsfn125: subframe %d, nb_prefix_samples %d, subframe_offset %d, sample_offset %d
\n
"
,
subframe
,
nb_prefix_samples
,
subframe_offset
,
...
...
@@ -255,7 +219,7 @@ int slot_fep_mbsfn_khz_1dot25(PHY_VARS_UE *ue,
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_rx
;
aa
++
)
{
memset
(
&
common_vars
->
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe
]].
rxdataF
[
aa
][
0
],
0
,
ofdm_symbol_size
*
sizeof
(
int
));
start_UE_TIMING
(
ue
->
rx_dft_stats
);
dft
(
dftsizeidx
,(
int16_t
*
)
&
common_vars
->
rxdata
[
aa
][(
sample_offset
+
dft
(
get_dft
(
ofdm_symbol_size
)
,(
int16_t
*
)
&
common_vars
->
rxdata
[
aa
][(
sample_offset
+
nb_prefix_samples
+
subframe_offset
-
SOFFSET
)
%
frame_length_samples
],
...
...
openair1/PHY/MODULATION/slot_fep_ul.c
View file @
f1f02ec0
...
...
@@ -43,42 +43,13 @@ int slot_fep_ul(RU_t *ru,
// unsigned int subframe_offset;
unsigned
int
slot_offset
;
dft_size_idx_t
dftsize
;
int
tmp_dft_in
[
2048
]
__attribute__
((
aligned
(
32
)));
// This is for misalignment issues for 6 and 15 PRBs
unsigned
int
frame_length_samples
=
fp
->
samples_per_tti
*
10
;
unsigned
int
rx_offset
;
switch
(
fp
->
ofdm_symbol_size
)
{
case
128
:
dftsize
=
DFT_128
;
break
;
case
256
:
dftsize
=
DFT_256
;
break
;
case
512
:
dftsize
=
DFT_512
;
break
;
case
1024
:
dftsize
=
DFT_1024
;
break
;
case
1536
:
dftsize
=
DFT_1536
;
break
;
case
2048
:
dftsize
=
DFT_2048
;
break
;
default:
dftsize
=
DFT_512
;
break
;
}
int
s
=
fp
->
ofdm_symbol_size
;
if
(
s
!=
128
&&
s
!=
256
&&
s
!=
512
&&
s
!=
1024
&&
s
!=
1536
&&
s
!=
2048
)
s
=
512
;
const
dft_size_idx_t
dftsize
=
get_dft
(
s
);
if
(
no_prefix
)
{
// subframe_offset = frame_parms->ofdm_symbol_size * frame_parms->symbols_per_tti * (Ns>>1);
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
View file @
f1f02ec0
...
...
@@ -32,233 +32,21 @@ void nr_idft(int32_t *z, uint32_t Msc_PUSCH)
for
(
i
=
0
,
ip
=
0
;
i
<
Msc_PUSCH
;
i
++
,
ip
+=
4
)
((
uint32_t
*
)
idft_in0
)[
ip
+
0
]
=
z
[
i
];
}
dft_size_idx_t
dftsize
=
get_dft
(
Msc_PUSCH
);
switch
(
Msc_PUSCH
)
{
case
12
:
dft
(
DFT_12
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
0
);
dft
(
dftsize
,
(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
0
);
norm128
=
simde_mm_set1_epi16
(
9459
);
for
(
i
=
0
;
i
<
12
;
i
++
)
{
((
simde__m128i
*
)
idft_out0
)[
i
]
=
simde_mm_slli_epi16
(
simde_mm_mulhi_epi16
(((
simde__m128i
*
)
idft_out0
)[
i
],
norm128
),
1
);
((
simde__m128i
*
)
idft_out0
)[
i
]
=
simde_mm_slli_epi16
(
simde_mm_mulhi_epi16
(((
simde__m128i
*
)
idft_out0
)[
i
],
norm128
),
1
);
}
break
;
case
24
:
dft
(
DFT_24
,
idft_in0
,
idft_out0
,
1
);
break
;
case
36
:
dft
(
DFT_36
,
idft_in0
,
idft_out0
,
1
);
break
;
case
48
:
dft
(
DFT_48
,
idft_in0
,
idft_out0
,
1
);
break
;
case
60
:
dft
(
DFT_60
,
idft_in0
,
idft_out0
,
1
);
break
;
case
72
:
dft
(
DFT_72
,
idft_in0
,
idft_out0
,
1
);
break
;
case
96
:
dft
(
DFT_96
,
idft_in0
,
idft_out0
,
1
);
break
;
case
108
:
dft
(
DFT_108
,
idft_in0
,
idft_out0
,
1
);
break
;
case
120
:
dft
(
DFT_120
,
idft_in0
,
idft_out0
,
1
);
break
;
case
144
:
dft
(
DFT_144
,
idft_in0
,
idft_out0
,
1
);
break
;
case
180
:
dft
(
DFT_180
,
idft_in0
,
idft_out0
,
1
);
break
;
case
192
:
dft
(
DFT_192
,
idft_in0
,
idft_out0
,
1
);
break
;
case
216
:
dft
(
DFT_216
,
idft_in0
,
idft_out0
,
1
);
break
;
case
240
:
dft
(
DFT_240
,
idft_in0
,
idft_out0
,
1
);
break
;
case
288
:
dft
(
DFT_288
,
idft_in0
,
idft_out0
,
1
);
break
;
case
300
:
dft
(
DFT_300
,
idft_in0
,
idft_out0
,
1
);
break
;
case
324
:
dft
(
DFT_324
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
360
:
dft
(
DFT_360
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
384
:
dft
(
DFT_384
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
432
:
dft
(
DFT_432
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
480
:
dft
(
DFT_480
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
540
:
dft
(
DFT_540
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
576
:
dft
(
DFT_576
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
600
:
dft
(
DFT_600
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
648
:
dft
(
DFT_648
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
720
:
dft
(
DFT_720
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
768
:
dft
(
DFT_768
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
864
:
dft
(
DFT_864
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
900
:
dft
(
DFT_900
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
960
:
dft
(
DFT_960
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
972
:
dft
(
DFT_972
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1080
:
dft
(
DFT_1080
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1152
:
dft
(
DFT_1152
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1200
:
dft
(
DFT_1200
,
idft_in0
,
idft_out0
,
1
);
break
;
case
1296
:
dft
(
DFT_1296
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1440
:
dft
(
DFT_1440
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1500
:
dft
(
DFT_1500
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1536
:
//dft(DFT_1536,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
idft
(
IDFT_1536
,(
int16_t
*
)
z
,
(
int16_t
*
)
z
,
1
);
break
;
case
1620
:
dft
(
DFT_1620
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1728
:
dft
(
DFT_1728
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1800
:
dft
(
DFT_1800
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1920
:
dft
(
DFT_1920
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
1944
:
dft
(
DFT_1944
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
2160
:
dft
(
DFT_2160
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
2304
:
dft
(
DFT_2304
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
2400
:
dft
(
DFT_2400
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
2592
:
dft
(
DFT_2592
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
2700
:
dft
(
DFT_2700
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
2880
:
dft
(
DFT_2880
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
2916
:
dft
(
DFT_2916
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
3000
:
dft
(
DFT_3000
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
case
3072
:
//dft(DFT_3072,(int16_t*)idft_in0, (int16_t*)idft_out0, 1);
idft
(
IDFT_3072
,(
int16_t
*
)
z
,
(
int16_t
*
)
z
,
1
);
break
;
case
3240
:
dft
(
DFT_3240
,(
int16_t
*
)
idft_in0
,
(
int16_t
*
)
idft_out0
,
1
);
break
;
default:
// should not be reached
LOG_E
(
PHY
,
"Unsupported Msc_PUSCH value of %"
PRIu16
"
\n
"
,
Msc_PUSCH
);
return
;
dft
(
dftsize
,
idft_in0
,
idft_out0
,
1
);
break
;
}
if
((
Msc_PUSCH
%
1536
)
>
0
)
{
...
...
@@ -270,10 +58,6 @@ void nr_idft(int32_t *z, uint32_t Msc_PUSCH)
((
simde__m128i
*
)
z
)[
i
]
=
simde_mm_sign_epi16
(((
simde__m128i
*
)
z
)[
i
],
*
(
simde__m128i
*
)
&
conjugate2
[
0
]);
}
}
simde_mm_empty
();
simde_m_empty
();
}
static
void
nr_ulsch_extract_rbs
(
c16_t
*
const
rxdataF
,
...
...
openair1/PHY/TOOLS/tools_defs.h
View file @
f1f02ec0
...
...
@@ -572,48 +572,15 @@ typedef enum dft_size_idx {
* DESCRIPTION : get dft function depending of ofdm size
*
*********************************************************************/
#define FIND_ENUM(Sz) \
case Sz: \
return DFT_##Sz; \
break;
static
inline
dft_size_idx_t
get_dft
(
int
ofdm_symbol_size
)
{
switch
(
ofdm_symbol_size
)
{
case
128
:
return
DFT_128
;
case
256
:
return
DFT_256
;
case
512
:
return
DFT_512
;
case
768
:
return
DFT_768
;
case
1024
:
return
DFT_1024
;
case
1536
:
return
DFT_1536
;
case
2048
:
return
DFT_2048
;
case
3072
:
return
DFT_3072
;
case
4096
:
return
DFT_4096
;
case
6144
:
return
DFT_6144
;
case
8192
:
return
DFT_8192
;
case
9216
:
return
DFT_9216
;
case
12288
:
return
DFT_12288
;
case
18432
:
return
DFT_18432
;
case
24576
:
return
DFT_24576
;
case
36864
:
return
DFT_36864
;
case
49152
:
return
DFT_49152
;
case
73728
:
return
DFT_73728
;
case
98304
:
return
DFT_98304
;
FOREACH_DFTSZ
(
FIND_ENUM
)
default:
printf
(
"function get_dft : unsupported ofdm symbol size
\n
"
);
assert
(
0
);
...
...
@@ -654,54 +621,16 @@ struct {
* DESCRIPTION : get idft function depending of ofdm size
*
*********************************************************************/
#define FIND_iENUM(iSz) \
case iSz: \
return IDFT_##iSz; \
break;
static
inline
idft_size_idx_t
get_idft
(
int
ofdm_symbol_size
)
{
switch
(
ofdm_symbol_size
)
{
case
128
:
return
IDFT_128
;
case
256
:
return
IDFT_256
;
case
512
:
return
IDFT_512
;
case
768
:
return
IDFT_768
;
case
1024
:
return
IDFT_1024
;
case
1536
:
return
IDFT_1536
;
case
2048
:
return
IDFT_2048
;
case
3072
:
return
IDFT_3072
;
case
4096
:
return
IDFT_4096
;
case
6144
:
return
IDFT_6144
;
case
8192
:
return
IDFT_8192
;
case
9216
:
return
IDFT_9216
;
case
12288
:
return
IDFT_12288
;
case
16384
:
return
IDFT_16384
;
case
18432
:
return
IDFT_18432
;
case
24576
:
return
IDFT_24576
;
case
32768
:
return
IDFT_32768
;
case
36864
:
return
IDFT_36864
;
case
49152
:
return
IDFT_49152
;
case
65536
:
return
IDFT_65536
;
case
73728
:
return
IDFT_73728
;
case
98304
:
return
IDFT_98304
;
FOREACH_IDFTSZ
(
FIND_iENUM
)
default:
printf
(
"function get_idft : unsupported ofdm symbol size
\n
"
);
assert
(
0
);
...
...
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