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
wangjie
OpenXG-RAN
Commits
15cd4ab0
Commit
15cd4ab0
authored
Apr 06, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cleanup for Mdlharq usage/meaning
parent
ce454d64
Changes
37
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
169 additions
and
1044 deletions
+169
-1044
openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
+8
-5
openair1/PHY/CODING/defs.h
openair1/PHY/CODING/defs.h
+11
-0
openair1/PHY/CODING/lte_rate_matching.c
openair1/PHY/CODING/lte_rate_matching.c
+17
-6
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+6
-17
openair1/PHY/LTE_REFSIG/defs.h
openair1/PHY/LTE_REFSIG/defs.h
+4
-4
openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
+4
-4
openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
+2
-2
openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
+2
-2
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+7
-7
openair1/PHY/LTE_TRANSPORT/defs.h
openair1/PHY/LTE_TRANSPORT/defs.h
+8
-8
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+1
-0
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+4
-4
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
+13
-13
openair1/PHY/LTE_TRANSPORT/pbch.c
openair1/PHY/LTE_TRANSPORT/pbch.c
+2
-2
openair1/PHY/LTE_TRANSPORT/pcfich.c
openair1/PHY/LTE_TRANSPORT/pcfich.c
+2
-2
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+4
-4
openair1/PHY/LTE_TRANSPORT/pilots.c
openair1/PHY/LTE_TRANSPORT/pilots.c
+2
-2
openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c
openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c
+1
-1
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+18
-18
openair1/PHY/LTE_TRANSPORT/pss.c
openair1/PHY/LTE_TRANSPORT/pss.c
+1
-1
openair1/PHY/LTE_TRANSPORT/pucch.c
openair1/PHY/LTE_TRANSPORT/pucch.c
+2
-2
openair1/PHY/LTE_TRANSPORT/srs_modulation.c
openair1/PHY/LTE_TRANSPORT/srs_modulation.c
+5
-5
openair1/PHY/LTE_TRANSPORT/sss.c
openair1/PHY/LTE_TRANSPORT/sss.c
+1
-1
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
+5
-6
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+6
-21
openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
+3
-3
openair1/PHY/MODULATION/defs.h
openair1/PHY/MODULATION/defs.h
+1
-1
openair1/PHY/MODULATION/ofdm_mod.c
openair1/PHY/MODULATION/ofdm_mod.c
+1
-1
openair1/PHY/TOOLS/lte_dfts.c
openair1/PHY/TOOLS/lte_dfts.c
+0
-1
openair1/PHY/defs.h
openair1/PHY/defs.h
+0
-1
openair1/PHY/impl_defs_lte.h
openair1/PHY/impl_defs_lte.h
+2
-3
openair1/PHY/impl_defs_top.h
openair1/PHY/impl_defs_top.h
+8
-65
openair1/PHY/spec_defs.h
openair1/PHY/spec_defs.h
+0
-745
openair1/PHY/spec_defs_top.h
openair1/PHY/spec_defs_top.h
+0
-68
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+9
-10
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+2
-2
targets/SIMU/USER/init_lte.c
targets/SIMU/USER/init_lte.c
+7
-7
No files found.
openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
View file @
15cd4ab0
...
...
@@ -940,9 +940,8 @@ unsigned char phy_threegpplte_turbo_decoder16avx2(int16_t *y,
uint32_t
db
;
__m128i
*
yp128
,
*
yp128_cw2
;
__m256i
tmp
,
zeros
=
_mm256_setzero_si256
();
__m128i
tmpe
,
tmpe_cw2
;
int
offset8_flag
=
0
;
...
...
@@ -988,9 +987,6 @@ unsigned char phy_threegpplte_turbo_decoder16avx2(int16_t *y,
}
yp128
=
(
__m128i
*
)
y
;
yp128_cw2
=
(
__m128i
*
)
y2
;
s
=
systematic0
;
s1
=
systematic1
;
s2
=
systematic2
;
...
...
@@ -999,6 +995,13 @@ unsigned char phy_threegpplte_turbo_decoder16avx2(int16_t *y,
#if 0
__m128i *yp128,*yp128_cw2;
__m128i tmpe,tmpe_cw2;
yp128 = (__m128i*)y;
yp128_cw2 = (__m128i*)y2;
for (i=0; i<n; i+=8) {
pi2_p = &pi2tab16avx2[iind][i];
...
...
openair1/PHY/CODING/defs.h
View file @
15cd4ab0
...
...
@@ -372,6 +372,17 @@ void init_td8 (void);
\brief This function initializes the tables for 16-bit LLR Turbo decoder.*/
void
init_td16
(
void
);
#ifdef __AVX2__
/*!\fn void init_td8(void)
\brief This function initializes the tables for 8-bit LLR Turbo decoder (AVX2).*/
void
init_td8avx2
(
void
);
/*!\fn void init_td16(void)
\brief This function initializes the tables for 16-bit LLR Turbo decoder (AVX2).*/
void
init_td16avx2
(
void
);
#endif
/*!\fn uint32_t crc24a(uint8_t *inPtr, int32_t bitlen)
\brief This computes a 24-bit crc ('a' variant for overall transport block)
based on 3GPP UMTS/LTE specifications.
...
...
openair1/PHY/CODING/lte_rate_matching.c
View file @
15cd4ab0
...
...
@@ -495,8 +495,14 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
char
fname
[
512
];
#endif
Nir
=
Nsoft
/
Kmimo
/
cmin
(
8
,
Mdlharq
);
Ncb
=
cmin
(
Nir
/
C
,
3
*
(
RTC
<<
5
));
if
(
Mdlharq
>
0
)
{
// Downlink
Nir
=
Nsoft
/
Kmimo
/
cmin
(
8
,
Mdlharq
);
Ncb
=
cmin
(
Nir
/
C
,
3
*
(
RTC
<<
5
));
}
else
{
// Uplink
Nir
=
0
;
Ncb
=
3
*
(
RTC
<<
5
);
// Kw
}
#ifdef RM_DEBUG_TX
if
(
rvidx
==
0
&&
r
==
0
)
{
...
...
@@ -709,15 +715,20 @@ int lte_rate_matching_turbo_rx(uint32_t RTC,
int
nulled
=
0
;
#endif
if
(
Kmimo
==
0
||
Mdlharq
==
0
||
C
==
0
||
Qm
==
0
||
Nl
==
0
)
{
if
(
Kmimo
==
0
||
C
==
0
||
Qm
==
0
||
Nl
==
0
)
{
printf
(
"lte_rate_matching.c: invalid parameters (Kmimo %d, Mdlharq %d, C %d, Qm %d, Nl %d
\n
"
,
Kmimo
,
Mdlharq
,
C
,
Qm
,
Nl
);
return
(
-
1
);
}
Nir
=
Nsoft
/
Kmimo
/
cmin
(
8
,
Mdlharq
);
Ncb
=
cmin
(
Nir
/
C
,
3
*
(
RTC
<<
5
));
if
(
Mdlharq
>
0
)
{
// Downlink
Nir
=
Nsoft
/
Kmimo
/
cmin
(
8
,
Mdlharq
);
Ncb
=
cmin
(
Nir
/
C
,
3
*
(
RTC
<<
5
));
}
else
{
// Uplink
Nir
=
0
;
Ncb
=
3
*
(
RTC
<<
5
);
}
Gp
=
G
/
Nl
/
Qm
;
GpmodC
=
Gp
%
C
;
...
...
openair1/PHY/INIT/lte_init.c
View file @
15cd4ab0
...
...
@@ -26,17 +26,6 @@
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
/*
#ifdef CBMIMO1
#include "ARCH/COMMON/defs.h"
#include "ARCH/CBMIMO1/DEVICE_DRIVER/from_grlib_softconfig.h"
#include "ARCH/CBMIMO1/DEVICE_DRIVER/cbmimo1_device.h"
#include "ARCH/CBMIMO1/DEVICE_DRIVER/defs.h"
#include "ARCH/CBMIMO1/DEVICE_DRIVER/extern.h"
#include "ARCH/CBMIMO1/DEVICE_DRIVER/cbmimo1_pci.h"
//#include "pci_commands.h"
#endif //CBMIMO1
*/
#ifdef EXMIMO
#include "openair0_lib.h"
#endif
...
...
@@ -1053,7 +1042,7 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
// init TX buffers
ue_common_vars
->
txdata
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_tx
*
sizeof
(
int32_t
*
)
);
ue_common_vars
->
txdataF
=
(
mod_sym_t
**
)
malloc16
(
frame_parms
->
nb_antennas_tx
*
sizeof
(
mod_sym
_t
*
)
);
ue_common_vars
->
txdataF
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_tx
*
sizeof
(
int32
_t
*
)
);
for
(
i
=
0
;
i
<
frame_parms
->
nb_antennas_tx
;
i
++
)
{
#ifdef USER_MODE
...
...
@@ -1061,7 +1050,7 @@ int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
#else //USER_MODE
ue_common_vars
->
txdata
[
i
]
=
TX_DMA_BUFFER
[
0
][
i
];
#endif //USER_MODE
ue_common_vars
->
txdataF
[
i
]
=
(
mod_sym_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
mod_sym
_t
)
);
ue_common_vars
->
txdataF
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
int32
_t
)
);
}
// init RX buffers
...
...
@@ -1274,21 +1263,21 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB,
// TX vars
eNB_common_vars
->
txdata
[
eNB_id
]
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_tx
*
sizeof
(
int32_t
*
)
);
eNB_common_vars
->
txdataF
[
eNB_id
]
=
(
mod_sym_t
**
)
malloc16
(
frame_parms
->
nb_antennas_tx
*
sizeof
(
mod_sym
_t
*
)
);
eNB_common_vars
->
txdataF
[
eNB_id
]
=
(
int32_t
**
)
malloc16
(
frame_parms
->
nb_antennas_tx
*
sizeof
(
int32
_t
*
)
);
for
(
i
=
0
;
i
<
frame_parms
->
nb_antennas_tx
;
i
++
)
{
#ifdef USER_MODE
eNB_common_vars
->
txdata
[
eNB_id
][
i
]
=
(
int32_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES
*
sizeof
(
int32_t
)
);
eNB_common_vars
->
txdataF
[
eNB_id
][
i
]
=
(
mod_sym_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
mod_sym
_t
)
);
eNB_common_vars
->
txdataF
[
eNB_id
][
i
]
=
(
int32_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
int32
_t
)
);
#else // USER_MODE
eNB_common_vars
->
txdata
[
eNB_id
][
i
]
=
TX_DMA_BUFFER
[
eNB_id
][
i
];
eNB_common_vars
->
txdataF
[
eNB_id
][
i
]
=
(
mod_sym_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
mod_sym
_t
)
);
eNB_common_vars
->
txdataF
[
eNB_id
][
i
]
=
(
int32_t
*
)
malloc16_clear
(
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
int32
_t
)
);
#endif //USER_MODE
#ifdef DEBUG_PHY
msg
(
"[openair][LTE_PHY][INIT] lte_eNB_common_vars->txdata[%d][%d] = %p
\n
"
,
eNB_id
,
i
,
eNB_common_vars
->
txdata
[
eNB_id
][
i
]);
msg
(
"[openair][LTE_PHY][INIT] lte_eNB_common_vars->txdataF[%d][%d] = %p (%d bytes)
\n
"
,
eNB_id
,
i
,
eNB_common_vars
->
txdataF
[
eNB_id
][
i
],
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
mod_sym
_t
));
FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX
*
sizeof
(
int32
_t
));
#endif
}
...
...
openair1/PHY/LTE_REFSIG/defs.h
View file @
15cd4ab0
...
...
@@ -73,7 +73,7 @@ void lte_gold_mbsfn(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_mbsfn_tabl
int
lte_dl_cell_spec
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
*
output
,
int32
_t
*
output
,
short
amp
,
unsigned
char
Ns
,
unsigned
char
l
,
...
...
@@ -89,7 +89,7 @@ int lte_dl_cell_spec(PHY_VARS_eNB *phy_vars_eNB,
*/
int
lte_dl_ue_spec
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
UE_id
,
mod_sym
_t
*
output
,
int32
_t
*
output
,
short
amp
,
uint8_t
Ns
,
uint8_t
p
,
...
...
@@ -102,7 +102,7 @@ int lte_dl_ue_spec(PHY_VARS_eNB *phy_vars_eNB,
@param Ns Slot number (0..19)
@param l symbol (0,1,2)
*/
int
lte_dl_mbsfn
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
*
output
,
int
lte_dl_mbsfn
(
PHY_VARS_eNB
*
phy_vars_eNB
,
int32
_t
*
output
,
short
amp
,
int
subframe
,
unsigned
char
l
);
...
...
@@ -148,7 +148,7 @@ void free_ul_ref_sigs(void);
@sub_frame_offset Offset of this subframe in units of subframes
*/
int
lte_generate_srs
(
mod_sym
_t
**
txdataF
,
int
lte_generate_srs
(
int32
_t
**
txdataF
,
short
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
unsigned
int
sub_frame_offset
);
...
...
openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
View file @
15cd4ab0
...
...
@@ -41,7 +41,7 @@
//Calibration
int
lte_dl_cell_spec_SS
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
*
output
,
int32
_t
*
output
,
short
amp
,
unsigned
char
Ns
,
unsigned
char
l
,
//nb of sym per slot
...
...
@@ -50,7 +50,7 @@ int lte_dl_cell_spec_SS(PHY_VARS_eNB *phy_vars_eNB,
unsigned
char
nu
,
mprime
,
mprime_dword
,
mprime_qpsk_symb
,
m
;
unsigned
short
k
,
a
;
mod_sym
_t
qpsk
[
4
];
int32
_t
qpsk
[
4
];
a
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
15
;
((
short
*
)
&
qpsk
[
0
])[
0
]
=
a
;
...
...
@@ -121,7 +121,7 @@ int lte_dl_cell_spec_SS(PHY_VARS_eNB *phy_vars_eNB,
int
lte_dl_cell_spec
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
*
output
,
int32
_t
*
output
,
short
amp
,
unsigned
char
Ns
,
unsigned
char
l
,
...
...
@@ -130,7 +130,7 @@ int lte_dl_cell_spec(PHY_VARS_eNB *phy_vars_eNB,
unsigned
char
nu
,
mprime
,
mprime_dword
,
mprime_qpsk_symb
,
m
;
unsigned
short
k
,
a
;
mod_sym
_t
qpsk
[
4
];
int32
_t
qpsk
[
4
];
a
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
15
;
((
short
*
)
&
qpsk
[
0
])[
0
]
=
a
;
...
...
openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
View file @
15cd4ab0
...
...
@@ -39,7 +39,7 @@
//extern unsigned int lte_gold_table[10][3][42];
//#define DEBUG_DL_MBSFN
int
lte_dl_mbsfn
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
*
output
,
int
lte_dl_mbsfn
(
PHY_VARS_eNB
*
phy_vars_eNB
,
int32
_t
*
output
,
short
amp
,
int
subframe
,
unsigned
char
l
)
...
...
@@ -47,7 +47,7 @@ int lte_dl_mbsfn(PHY_VARS_eNB *phy_vars_eNB, mod_sym_t *output,
unsigned
int
mprime
,
mprime_dword
,
mprime_qpsk_symb
,
m
;
unsigned
short
k
=
0
,
a
;
mod_sym
_t
qpsk
[
4
];
int32
_t
qpsk
[
4
];
a
=
(
amp
*
ONE_OVER_SQRT2_Q15
)
>>
15
;
((
short
*
)
&
qpsk
[
0
])[
0
]
=
a
;
...
...
openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
View file @
15cd4ab0
...
...
@@ -54,14 +54,14 @@ int Wbar_NCP[8][4] = {{1,1,1,1},{1,-1,1,-1},{1,1,1,1},{1,-1,1,-1},{1,1,-1,-1},{-
int
lte_dl_ue_spec
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
UE_id
,
mod_sym
_t
*
output
,
int32
_t
*
output
,
short
amp
,
uint8_t
Ns
,
uint8_t
p
,
int
SS_flag
)
{
mod_sym
_t
qpsk
[
4
],
nqpsk
[
4
],
*
qpsk_p
,
*
output_p
;
int32
_t
qpsk
[
4
],
nqpsk
[
4
],
*
qpsk_p
,
*
output_p
;
int16_t
a
;
int
w
,
lprime
,
ind
,
l
,
ind_dword
,
ind_qpsk_symb
,
nPRB
;
// LTE_eNB_DLSCH_t *dlsch = phy_vars_eNB->dlsch_eNB[UE_id][0];
...
...
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
15cd4ab0
...
...
@@ -272,12 +272,12 @@ uint32_t Y;
//#define Mquad (Msymb/4)
static
uint32_t
bitrev_cc_dci
[
32
]
=
{
1
,
17
,
9
,
25
,
5
,
21
,
13
,
29
,
3
,
19
,
11
,
27
,
7
,
23
,
15
,
31
,
0
,
16
,
8
,
24
,
4
,
20
,
12
,
28
,
2
,
18
,
10
,
26
,
6
,
22
,
14
,
30
};
static
mod_sym
_t
wtemp
[
2
][
Msymb
];
static
int32
_t
wtemp
[
2
][
Msymb
];
void
pdcch_interleaving
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym_t
**
z
,
mod_sym
_t
**
wbar
,
uint8_t
n_symbols_pdcch
,
uint8_t
mi
)
void
pdcch_interleaving
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
z
,
int32
_t
**
wbar
,
uint8_t
n_symbols_pdcch
,
uint8_t
mi
)
{
mod_sym
_t
*
wptr
,
*
wptr2
,
*
zptr
;
int32
_t
*
wptr
,
*
wptr2
,
*
zptr
;
uint32_t
Mquad
=
get_nquad
(
n_symbols_pdcch
,
frame_parms
,
mi
);
uint32_t
RCC
=
(
Mquad
>>
5
),
ND
;
uint32_t
row
,
col
,
Kpi
,
index
;
...
...
@@ -2027,7 +2027,7 @@ uint8_t generate_dci_top(uint8_t num_ue_spec_dci,
uint32_t
n_rnti
,
int16_t
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
uint32_t
subframe
)
{
...
...
@@ -2038,10 +2038,10 @@ uint8_t generate_dci_top(uint8_t num_ue_spec_dci,
int16_t
re_offset
;
uint8_t
mi
=
get_mi
(
frame_parms
,
subframe
);
static
uint8_t
e
[
DCI_BITS_MAX
];
static
mod_sym
_t
yseq0
[
Msymb
],
yseq1
[
Msymb
],
wbar0
[
Msymb
],
wbar1
[
Msymb
];
static
int32
_t
yseq0
[
Msymb
],
yseq1
[
Msymb
],
wbar0
[
Msymb
],
wbar1
[
Msymb
];
mod_sym
_t
*
y
[
2
];
mod_sym
_t
*
wbar
[
2
];
int32
_t
*
y
[
2
];
int32
_t
*
wbar
[
2
];
int
nushiftmod3
=
frame_parms
->
nushift
%
3
;
...
...
openair1/PHY/LTE_TRANSPORT/defs.h
View file @
15cd4ab0
...
...
@@ -269,8 +269,10 @@ typedef struct {
uint32_t
G
;
/// Codebook index for this dlsch (0,1,2,3)
uint8_t
codebook_index
;
/// Maximum number of HARQ
round
s (for definition see 36-212 V8.6 2009-03, p.17)
/// Maximum number of HARQ
processe
s (for definition see 36-212 V8.6 2009-03, p.17)
uint8_t
Mdlharq
;
/// Maximum number of HARQ rounds
uint8_t
Mlimit
;
/// MIMO transmission mode indicator for this sub-frame (for definition see 36-212 V8.6 2009-03, p.17)
uint8_t
Kmimo
;
/// Nsoft parameter related to UE Category
...
...
@@ -315,11 +317,9 @@ typedef struct {
/// Scrambled "b"-sequences (for definition see 36-211 V8.6 2009-03, p.14)
uint8_t
b_tilde
[
MAX_NUM_CHANNEL_BITS
];
/// Modulated "d"-sequences (for definition see 36-211 V8.6 2009-03, p.14)
mod_sym
_t
d
[
MAX_NUM_RE
];
int32
_t
d
[
MAX_NUM_RE
];
/// Transform-coded "z"-sequences (for definition see 36-211 V8.6 2009-03, p.14-15)
mod_sym_t
z
[
MAX_NUM_RE
];
/// Maximum number of HARQ rounds (for definition see 36-212 V8.6 2009-03, p.17)
uint8_t
Mdlharq
;
int32_t
z
[
MAX_NUM_RE
];
/// "q" sequences for CQI/PMI (for definition see 36-212 V8.6 2009-03, p.27)
uint8_t
q
[
MAX_CQI_PAYLOAD
];
/// coded and interleaved CQI bits
...
...
@@ -468,8 +468,8 @@ typedef struct {
typedef
struct
{
/// Pointers to 8 HARQ processes for the ULSCH
LTE_UL_eNB_HARQ_t
*
harq_processes
[
8
];
/// Maximum number of HARQ rounds
(for definition see 36-212 V8.6 2009-03, p.17)
uint8_t
M
dlharq
;
/// Maximum number of HARQ rounds
uint8_t
M
limit
;
/// Maximum number of iterations used in eNB turbo decoder
uint8_t
max_turbo_iterations
;
/// ACK/NAK Bundling flag
...
...
@@ -702,7 +702,7 @@ typedef struct {
harq_status_t
harq_ack
[
10
];
/// Pointers to up to 8 HARQ processes
LTE_DL_UE_HARQ_t
*
harq_processes
[
8
];
/// Maximum number of HARQ
rounds
(for definition see 36-212 V8.6 2009-03, p.17
/// Maximum number of HARQ
processes
(for definition see 36-212 V8.6 2009-03, p.17
uint8_t
Mdlharq
;
/// MIMO transmission mode indicator for this sub-frame (for definition see 36-212 V8.6 2009-03, p.17)
uint8_t
Kmimo
;
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
15cd4ab0
...
...
@@ -150,6 +150,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_
bzero
(
dlsch
,
sizeof
(
LTE_eNB_DLSCH_t
));
dlsch
->
Kmimo
=
Kmimo
;
dlsch
->
Mdlharq
=
Mdlharq
;
dlsch
->
Mlimit
=
4
;
dlsch
->
Nsoft
=
Nsoft
;
for
(
i
=
0
;
i
<
10
;
i
++
)
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
View file @
15cd4ab0
...
...
@@ -137,7 +137,7 @@ void layer1prec2A(int32_t *antenna0_sample, int32_t *antenna1_sample, uint8_t pr
}
int
allocate_REs_in_RB
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
uint32_t
*
jj
,
uint32_t
*
jj2
,
uint16_t
re_offset
,
...
...
@@ -981,7 +981,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
return
(
0
);
}
int
allocate_REs_in_RB_MCH
(
mod_sym
_t
**
txdataF
,
int
allocate_REs_in_RB_MCH
(
int32
_t
**
txdataF
,
uint32_t
*
jj
,
uint16_t
re_offset
,
uint32_t
symbol_offset
,
...
...
@@ -1178,7 +1178,7 @@ uint8_t get_pmi(uint8_t N_RB_DL,LTE_DL_eNB_HARQ_t *dlsch_harq,uint16_t rb)
}
int
dlsch_modulation
(
mod_sym
_t
**
txdataF
,
int
dlsch_modulation
(
int32
_t
**
txdataF
,
int16_t
amp
,
uint32_t
subframe_offset
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
...
...
@@ -1492,7 +1492,7 @@ int dlsch_modulation(mod_sym_t **txdataF,
return
(
re_allocated
);
}
int
mch_modulation
(
mod_sym
_t
**
txdataF
,
int
mch_modulation
(
int32
_t
**
txdataF
,
int16_t
amp
,
uint32_t
subframe_offset
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
...
...
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
View file @
15cd4ab0
...
...
@@ -63,7 +63,7 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue,
uint8_t
cyclic_shift
,
cyclic_shift0
,
cyclic_shift1
;
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
phy_vars_ue
->
lte_frame_parms
;
mod_sym
_t
*
txdataF
=
phy_vars_ue
->
lte_ue_common_vars
.
txdataF
[
ant
];
int32
_t
*
txdataF
=
phy_vars_ue
->
lte_ue_common_vars
.
txdataF
[
ant
];
uint32_t
u
,
v
,
alpha_ind
;
uint32_t
u0
=
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
grouphop
[
subframe
<<
1
];
uint32_t
u1
=
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
grouphop
[
1
+
(
subframe
<<
1
)];
...
...
@@ -147,13 +147,13 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue,
if
(
cyclic_shift
==
0
)
{
for
(
k
=
0
;
k
<
12
;
k
++
)
{
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
>=
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
>=
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
1
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
1
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
>=
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
<
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
2
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
2
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
<
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
>=
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
3
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
3
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
<
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
<
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
4
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
4
;
re_offset
++
;
drs_offset
++
;
...
...
@@ -165,22 +165,22 @@ int generate_drs_pusch(PHY_VARS_UE *phy_vars_ue,
for
(
k
=
0
;
k
<
12
;
k
++
)
{
if
(
k
%
2
==
0
)
{
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
>=
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
>=
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
4
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
4
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
>=
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
<
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
3
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
3
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
<
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
>=
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
2
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
2
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
<
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
<
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
1
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
1
;
}
else
{
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
>=
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
>=
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
1
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
1
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
>=
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
<
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
2
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
2
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
<
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
>=
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
3
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
3
;
else
if
((
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
]
<
0
)
&&
(
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
]
<
0
))
txdataF
[
symbol_offset
+
re_offset
]
=
(
mod_sym
_t
)
4
;
txdataF
[
symbol_offset
+
re_offset
]
=
(
int32
_t
)
4
;
}
re_offset
++
;
...
...
openair1/PHY/LTE_TRANSPORT/pbch.c
View file @
15cd4ab0
...
...
@@ -61,7 +61,7 @@
#define PBCH_A 24
int
allocate_pbch_REs_in_RB
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
uint32_t
*
jj
,
uint16_t
re_offset
,
uint32_t
symbol_offset
,
...
...
@@ -160,7 +160,7 @@ int allocate_pbch_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
//uint8_t pbch_d[96+(3*(16+PBCH_A))], pbch_w[3*3*(16+PBCH_A)],pbch_e[1920]; //one bit per byte
int
generate_pbch
(
LTE_eNB_PBCH
*
eNB_pbch
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
int
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
*
pbch_pdu
,
...
...
openair1/PHY/LTE_TRANSPORT/pcfich.c
View file @
15cd4ab0
...
...
@@ -143,12 +143,12 @@ uint8_t pcfich_b[4][32]= {{0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1
void
generate_pcfich
(
uint8_t
num_pdcch_symbols
,
int16_t
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
uint8_t
subframe
)
{
uint8_t
pcfich_bt
[
32
],
nsymb
,
pcfich_quad
;
mod_sym
_t
pcfich_d
[
2
][
16
];
int32
_t
pcfich_d
[
2
][
16
];
uint8_t
i
;
uint32_t
symbol_offset
,
m
,
re_offset
,
reg_offset
;
int16_t
gain_lin_QPSK
;
...
...
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
15cd4ab0
...
...
@@ -393,8 +393,8 @@ void generate_phich_emul(LTE_DL_FRAME_PARMS *frame_parms,
}
mod_sym
_t
alam_bpsk_perm1
[
4
]
=
{
2
,
1
,
4
,
3
};
// -conj(x) 1 (-1-j) -> 2 (1-j), 2->1, 3 (-1+j) -> (4) 1+j, 4->3
mod_sym
_t
alam_bpsk_perm2
[
4
]
=
{
3
,
4
,
2
,
1
};
// conj(x) 1 (-1-j) -> 3 (-1+j), 3->1, 2 (1-j) -> 4 (1+j), 4->2
int32
_t
alam_bpsk_perm1
[
4
]
=
{
2
,
1
,
4
,
3
};
// -conj(x) 1 (-1-j) -> 2 (1-j), 2->1, 3 (-1+j) -> (4) 1+j, 4->3
int32
_t
alam_bpsk_perm2
[
4
]
=
{
3
,
4
,
2
,
1
};
// conj(x) 1 (-1-j) -> 3 (-1+j), 3->1, 2 (1-j) -> 4 (1+j), 4->2
// This routine generates the PHICH
...
...
@@ -404,7 +404,7 @@ void generate_phich(LTE_DL_FRAME_PARMS *frame_parms,
uint8_t
ngroup_PHICH
,
uint8_t
HI
,
uint8_t
subframe
,
mod_sym
_t
**
y
)
int32
_t
**
y
)
{
int16_t
d
[
24
],
*
dp
;
...
...
@@ -1425,7 +1425,7 @@ void generate_phich_top(PHY_VARS_eNB *phy_vars_eNB,
LTE_DL_FRAME_PARMS
*
frame_parms
=&
phy_vars_eNB
->
lte_frame_parms
;
LTE_eNB_ULSCH_t
**
ulsch_eNB
=
phy_vars_eNB
->
ulsch_eNB
;
mod_sym
_t
**
txdataF
=
phy_vars_eNB
->
lte_eNB_common_vars
.
txdataF
[
sect_id
];
int32
_t
**
txdataF
=
phy_vars_eNB
->
lte_eNB_common_vars
.
txdataF
[
sect_id
];
uint8_t
harq_pid
;
uint8_t
Ngroup_PHICH
,
ngroup_PHICH
,
nseq_PHICH
;
uint8_t
NSF_PHICH
=
4
;
...
...
openair1/PHY/LTE_TRANSPORT/pilots.c
View file @
15cd4ab0
...
...
@@ -41,7 +41,7 @@
#include "PHY/defs.h"
void
generate_pilots
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
int16_t
amp
,
uint16_t
Ntti
)
{
...
...
@@ -168,7 +168,7 @@ void generate_pilots(PHY_VARS_eNB *phy_vars_eNB,
}
int
generate_pilots_slot
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
int16_t
amp
,
uint16_t
slot
,
int
first_pilot_only
)
...
...
openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c
View file @
15cd4ab0
...
...
@@ -42,7 +42,7 @@
int
generate_mbsfn_pilot
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
int16_t
amp
,
uint16_t
subframe
)
{
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
15cd4ab0
...
...
@@ -89,9 +89,9 @@ void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch);
void
free_ue_ulsch
(
LTE_UE_ULSCH_t
*
ulsch
);
LTE_eNB_ULSCH_t
*
new_eNB_ulsch
(
uint8_t
Mdlharq
,
uint8_t
max_turbo_iterations
,
uint8_t
N_RB_UL
,
uint8_t
abstraction_flag
);
LTE_eNB_ULSCH_t
*
new_eNB_ulsch
(
uint8_t
max_turbo_iterations
,
uint8_t
N_RB_UL
,
uint8_t
abstraction_flag
);
LTE_UE_ULSCH_t
*
new_ue_ulsch
(
u
int8_t
Mdlharq
,
u
nsigned
char
N_RB_UL
,
uint8_t
abstraction_flag
);
LTE_UE_ULSCH_t
*
new_ue_ulsch
(
unsigned
char
N_RB_UL
,
uint8_t
abstraction_flag
);
/** \fn dlsch_encoding(uint8_t *input_buffer,
LTE_DL_FRAME_PARMS *frame_parms,
...
...
@@ -133,7 +133,7 @@ void dlsch_encoding_emul(PHY_VARS_eNB *phy_vars_eNB,
// Functions below implement 36-211
/** \fn allocate_REs_in_RB(
mod_sym
_t **txdataF,
/** \fn allocate_REs_in_RB(
int32
_t **txdataF,
uint32_t *jj,
uint32_t *jj2,
uint16_t re_offset,
...
...
@@ -169,7 +169,7 @@ void dlsch_encoding_emul(PHY_VARS_eNB *phy_vars_eNB,
*/
int32_t
allocate_REs_in_RB
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
uint32_t
*
jj
,
uint32_t
*
jj2
,
uint16_t
re_offset
,
...
...
@@ -186,7 +186,7 @@ int32_t allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
uint8_t
skip_half
);
/** \fn int32_t dlsch_modulation(
mod_sym
_t **txdataF,
/** \fn int32_t dlsch_modulation(
int32
_t **txdataF,
int16_t amp,
uint32_t sub_frame_offset,
LTE_DL_FRAME_PARMS *frame_parms,
...
...
@@ -203,7 +203,7 @@ int32_t allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
@param dlsch1 Pointer to Transport Block 0 DLSCH descriptor for this allocation
*/
int32_t
dlsch_modulation
(
mod_sym
_t
**
txdataF
,
int32_t
dlsch_modulation
(
int32
_t
**
txdataF
,
int16_t
amp
,
uint32_t
sub_frame_offset
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
...
...
@@ -218,7 +218,7 @@ int32_t dlsch_modulation(mod_sym_t **txdataF,
@param frame_parms Pointer to frame descriptor
@param dlsch Pointer to DLSCH descriptor for this allocation
*/
int
mch_modulation
(
mod_sym
_t
**
txdataF
,
int
mch_modulation
(
int32
_t
**
txdataF
,
int16_t
amp
,
uint32_t
subframe_offset
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
...
...
@@ -279,7 +279,7 @@ void dump_mch(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint16_t coded_bits_per_co
@param N Number of sub-frames to generate
*/
void
generate_pilots
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
int16_t
amp
,
uint16_t
N
);
...
...
@@ -292,17 +292,17 @@ void generate_pilots(PHY_VARS_eNB *phy_vars_eNB,
@param first_pilot_only (0 no)
*/
int32_t
generate_pilots_slot
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
int16_t
amp
,
uint16_t
slot
,
int
first_pilot_only
);
int32_t
generate_mbsfn_pilot
(
PHY_VARS_eNB
*
phy_vars_eNB
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
int16_t
amp
,
uint16_t
subframe
);
int32_t
generate_pss
(
mod_sym
_t
**
txdataF
,
int32_t
generate_pss
(
int32
_t
**
txdataF
,
int16_t
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint16_t
l
,
...
...
@@ -310,14 +310,14 @@ int32_t generate_pss(mod_sym_t **txdataF,
int32_t
generate_pss_emul
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
sect_id
);
int32_t
generate_sss
(
mod_sym
_t
**
txdataF
,
int32_t
generate_sss
(
int32
_t
**
txdataF
,
short
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
unsigned
short
symbol
,
unsigned
short
slot_offset
);
int32_t
generate_pbch
(
LTE_eNB_PBCH
*
eNB_pbch
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
int32_t
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
*
pbch_pdu
,
...
...
@@ -1148,7 +1148,7 @@ uint8_t generate_dci_top(uint8_t num_ue_spec_dci,
uint32_t
n_rnti
,
int16_t
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
uint32_t
sub_frame_offset
);
uint8_t
generate_dci_top_emul
(
PHY_VARS_eNB
*
phy_vars_eNB
,
...
...
@@ -1341,7 +1341,7 @@ void init_ul_hopping(LTE_DL_FRAME_PARMS *frame_parms);
int32_t
compareints
(
const
void
*
a
,
const
void
*
b
);
void
ulsch_modulation
(
mod_sym
_t
**
txdataF
,
void
ulsch_modulation
(
int32
_t
**
txdataF
,
int16_t
amp
,
frame_t
frame
,
uint32_t
subframe
,
...
...
@@ -1450,7 +1450,7 @@ void pcfich_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
void
generate_pcfich
(
uint8_t
num_pdcch_symbols
,
int16_t
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym
_t
**
txdataF
,
int32
_t
**
txdataF
,
uint8_t
subframe
);
uint8_t
rx_pcfich
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
...
...
@@ -1609,7 +1609,7 @@ uint16_t get_nCCE_mac(uint8_t Mod_id,uint8_t CC_id,int num_pdcch_symbols,int sub
uint8_t
get_num_pdcch_symbols
(
uint8_t
num_dci
,
DCI_ALLOC_t
*
dci_alloc
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
);
void
pdcch_interleaving
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
mod_sym_t
**
z
,
mod_sym
_t
**
wbar
,
uint8_t
n_symbols_pdcch
,
uint8_t
mi
);
void
pdcch_interleaving
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
z
,
int32
_t
**
wbar
,
uint8_t
n_symbols_pdcch
,
uint8_t
mi
);
void
pdcch_unscrambling
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
,
...
...
@@ -1638,7 +1638,7 @@ void dlsch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
void
init_ncs_cell
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
ncs_cell
[
20
][
7
]);
void
generate_pucch
(
mod_sym
_t
**
txdataF
,
void
generate_pucch
(
int32
_t
**
txdataF
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
ncs_cell
[
20
][
7
],
PUCCH_FMT_t
fmt
,
...
...
openair1/PHY/LTE_TRANSPORT/pss.c
View file @
15cd4ab0
...
...
@@ -47,7 +47,7 @@
#include "PHY/defs.h"
#include "PHY/extern.h"
int
generate_pss
(
mod_sym
_t
**
txdataF
,
int
generate_pss
(
int32
_t
**
txdataF
,
short
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
unsigned
short
symbol
,
...
...
openair1/PHY/LTE_TRANSPORT/pucch.c
View file @
15cd4ab0
...
...
@@ -121,7 +121,7 @@ int16_t W3_im[3][6] = {{0 ,0 ,0 },
char
pucch_format_string
[
6
][
20
]
=
{
"format 1
\0
"
,
"format 1a
\0
"
,
"format 1b
\0
"
,
"format 2
\0
"
,
"format 2a
\0
"
,
"format 2b
\0
"
};
void
generate_pucch
(
mod_sym
_t
**
txdataF
,
void
generate_pucch
(
int32
_t
**
txdataF
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
ncs_cell
[
20
][
7
],
PUCCH_FMT_t
fmt
,
...
...
@@ -145,7 +145,7 @@ void generate_pucch(mod_sym_t **txdataF,
uint8_t
m
,
l
,
refs
;
uint8_t
n_cs
,
S
,
alpha_ind
,
rem
;
int16_t
tmp_re
,
tmp_im
,
ref_re
,
ref_im
,
W_re
=
0
,
W_im
=
0
;
mod_sym
_t
*
txptr
;
int32
_t
*
txptr
;
uint32_t
symbol_offset
;
uint8_t
deltaPUCCH_Shift
=
frame_parms
->
pucch_config_common
.
deltaPUCCH_Shift
;
...
...
openair1/PHY/LTE_TRANSPORT/srs_modulation.c
View file @
15cd4ab0
...
...
@@ -137,7 +137,7 @@ int32_t generate_srs_tx(PHY_VARS_UE *phy_vars_ue,
LTE_DL_FRAME_PARMS
*
frame_parms
=&
phy_vars_ue
->
lte_frame_parms
;
SOUNDINGRS_UL_CONFIG_DEDICATED
*
soundingrs_ul_config_dedicated
=&
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
];
mod_sym
_t
*
txdataF
=
phy_vars_ue
->
lte_ue_common_vars
.
txdataF
[
0
];
int32
_t
*
txdataF
=
phy_vars_ue
->
lte_ue_common_vars
.
txdataF
[
0
];
uint16_t
msrsb
=
0
,
Nb
=
0
,
nb
,
b
,
msrs0
=
0
,
k
,
Msc_RS
,
Msc_RS_idx
,
carrier_pos
,
symbol_offset
;
uint16_t
*
Msc_idx_ptr
;
int32_t
k0
;
...
...
@@ -237,13 +237,13 @@ int32_t generate_srs_tx(PHY_VARS_UE *phy_vars_ue,
for
(
k
=
0
;
k
<
Msc_RS
;
k
++
)
{
if
((
ul_ref_sigs
[
0
][
0
][
Msc_RS_idx
][
k
<<
1
]
>=
0
)
&&
(
ul_ref_sigs
[
0
][
0
][
Msc_RS_idx
][(
k
<<
1
)
+
1
]
>=
0
))
txdataF
[
symbol_offset
+
carrier_pos
]
=
(
mod_sym
_t
)
4
;
txdataF
[
symbol_offset
+
carrier_pos
]
=
(
int32
_t
)
4
;
else
if
((
ul_ref_sigs
[
0
][
0
][
Msc_RS_idx
][
k
<<
1
]
>=
0
)
&&
(
ul_ref_sigs
[
0
][
0
][
Msc_RS_idx
][(
k
<<
1
)
+
1
]
<
0
))
txdataF
[
symbol_offset
+
carrier_pos
]
=
(
mod_sym
_t
)
2
;
txdataF
[
symbol_offset
+
carrier_pos
]
=
(
int32
_t
)
2
;
else
if
((
ul_ref_sigs
[
0
][
0
][
Msc_RS_idx
][
k
<<
1
]
<
0
)
&&
(
ul_ref_sigs
[
0
][
0
][
Msc_RS_idx
][(
k
<<
1
)
+
1
]
>=
0
))
txdataF
[
symbol_offset
+
carrier_pos
]
=
(
mod_sym
_t
)
3
;
txdataF
[
symbol_offset
+
carrier_pos
]
=
(
int32
_t
)
3
;
else
if
((
ul_ref_sigs
[
0
][
0
][
Msc_RS_idx
][
k
<<
1
]
<
0
)
&&
(
ul_ref_sigs
[
0
][
0
][
Msc_RS_idx
][(
k
<<
1
)
+
1
]
<
0
))
txdataF
[
symbol_offset
+
carrier_pos
]
=
(
mod_sym
_t
)
1
;
txdataF
[
symbol_offset
+
carrier_pos
]
=
(
int32
_t
)
1
;
carrier_pos
+=
2
;
...
...
openair1/PHY/LTE_TRANSPORT/sss.c
View file @
15cd4ab0
...
...
@@ -44,7 +44,7 @@
//#define DEBUG_SSS
int
generate_sss
(
mod_sym
_t
**
txdataF
,
int
generate_sss
(
int32
_t
**
txdataF
,
int16_t
amp
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint16_t
symbol
,
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
View file @
15cd4ab0
...
...
@@ -73,7 +73,7 @@ void free_ue_ulsch(LTE_UE_ULSCH_t *ulsch)
msg
(
"Freeing ulsch %p
\n
"
,
ulsch
);
#endif
for
(
i
=
0
;
i
<
ulsch
->
Mdlharq
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
#ifdef DEBUG_ULSCH_FREE
msg
(
"Freeing ulsch process %d
\n
"
,
i
);
#endif
...
...
@@ -118,7 +118,7 @@ void free_ue_ulsch(LTE_UE_ULSCH_t *ulsch)
}
LTE_UE_ULSCH_t
*
new_ue_ulsch
(
unsigned
char
Mdlharq
,
unsigned
char
N_RB_UL
,
uint8_t
abstraction_flag
)
LTE_UE_ULSCH_t
*
new_ue_ulsch
(
unsigned
char
N_RB_UL
,
uint8_t
abstraction_flag
)
{
LTE_UE_ULSCH_t
*
ulsch
;
...
...
@@ -147,9 +147,8 @@ LTE_UE_ULSCH_t *new_ue_ulsch(unsigned char Mdlharq,unsigned char N_RB_UL, uint8_
if
(
ulsch
)
{
memset
(
ulsch
,
0
,
sizeof
(
LTE_UE_ULSCH_t
));
ulsch
->
Mdlharq
=
Mdlharq
;
for
(
i
=
0
;
i
<
Mdlharq
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
ulsch
->
harq_processes
[
i
]
=
(
LTE_UL_UE_HARQ_t
*
)
malloc16
(
sizeof
(
LTE_UL_UE_HARQ_t
));
...
...
@@ -187,7 +186,7 @@ LTE_UE_ULSCH_t *new_ue_ulsch(unsigned char Mdlharq,unsigned char N_RB_UL, uint8_
}
if
((
abstraction_flag
==
0
)
&&
(
exit_flag
==
0
))
{
for
(
i
=
0
;
i
<
Mdlharq
;
i
++
)
for
(
i
=
0
;
i
<
8
;
i
++
)
for
(
j
=
0
;
j
<
96
;
j
++
)
for
(
r
=
0
;
r
<
MAX_NUM_ULSCH_SEGMENTS
;
r
++
)
ulsch
->
harq_processes
[
i
]
->
d
[
r
][
j
]
=
LTE_NULL
;
...
...
@@ -541,7 +540,7 @@ uint32_t ulsch_encoding(uint8_t *a,
ulsch
->
e
+
r_offset
,
ulsch
->
harq_processes
[
harq_pid
]
->
C
,
// C
NSOFT
,
// Nsoft,
ulsch
->
Mdlharq
,
0
,
// this means UL
1
,
ulsch
->
harq_processes
[
harq_pid
]
->
rvidx
,
get_Qm_ul
(
ulsch
->
harq_processes
[
harq_pid
]
->
mcs
),
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
View file @
15cd4ab0
...
...
@@ -52,10 +52,6 @@
#include "PHY_INTERFACE/extern.h"
#endif
#ifdef OMP
#include <omp.h>
#endif
#ifdef PHY_ABSTRACTION
#include "UTIL/OCG/OCG.h"
#include "UTIL/OCG/OCG_extern.h"
...
...
@@ -70,7 +66,7 @@ void free_eNB_ulsch(LTE_eNB_ULSCH_t *ulsch)
int
i
,
r
;
if
(
ulsch
)
{
for
(
i
=
0
;
i
<
ulsch
->
Mdlharq
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
if
(
ulsch
->
harq_processes
[
i
])
{
if
(
ulsch
->
harq_processes
[
i
]
->
b
)
{
free16
(
ulsch
->
harq_processes
[
i
]
->
b
,
MAX_ULSCH_PAYLOAD_BYTES
);
...
...
@@ -98,7 +94,7 @@ void free_eNB_ulsch(LTE_eNB_ULSCH_t *ulsch)
}
}
LTE_eNB_ULSCH_t
*
new_eNB_ulsch
(
uint8_t
Mdlharq
,
uint8_t
max_turbo_iterations
,
uint8_t
N_RB_UL
,
uint8_t
abstraction_flag
)
LTE_eNB_ULSCH_t
*
new_eNB_ulsch
(
uint8_t
max_turbo_iterations
,
uint8_t
N_RB_UL
,
uint8_t
abstraction_flag
)
{
LTE_eNB_ULSCH_t
*
ulsch
;
...
...
@@ -127,10 +123,10 @@ LTE_eNB_ULSCH_t *new_eNB_ulsch(uint8_t Mdlharq,uint8_t max_turbo_iterations,uint
if
(
ulsch
)
{
memset
(
ulsch
,
0
,
sizeof
(
LTE_eNB_ULSCH_t
));
ulsch
->
Mdlharq
=
Mdlharq
;
ulsch
->
max_turbo_iterations
=
max_turbo_iterations
;
ulsch
->
Mlimit
=
4
;
for
(
i
=
0
;
i
<
Mdlharq
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
// msg("new_ue_ulsch: Harq process %d\n",i);
ulsch
->
harq_processes
[
i
]
=
(
LTE_UL_eNB_HARQ_t
*
)
malloc16
(
sizeof
(
LTE_UL_eNB_HARQ_t
));
...
...
@@ -180,15 +176,13 @@ LTE_eNB_ULSCH_t *new_eNB_ulsch(uint8_t Mdlharq,uint8_t max_turbo_iterations,uint
void
clean_eNb_ulsch
(
LTE_eNB_ULSCH_t
*
ulsch
)
{
unsigned
char
Mdlharq
;
unsigned
char
i
;
//ulsch = (LTE_eNB_ULSCH_t *)malloc16(sizeof(LTE_eNB_ULSCH_t));
if
(
ulsch
)
{
Mdlharq
=
ulsch
->
Mdlharq
;
ulsch
->
rnti
=
0
;
for
(
i
=
0
;
i
<
Mdlharq
;
i
++
)
{
for
(
i
=
0
;
i
<
8
;
i
++
)
{
if
(
ulsch
->
harq_processes
[
i
])
{
// ulsch->harq_processes[i]->Ndi = 0;
ulsch
->
harq_processes
[
i
]
->
status
=
0
;
...
...
@@ -1266,7 +1260,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
ulsch_harq
->
e
+
r_offset
,
ulsch_harq
->
C
,
NSOFT
,
ulsch
->
Mdlharq
,
0
,
//Uplink
1
,
ulsch_harq
->
rvidx
,
(
ulsch_harq
->
round
==
0
)
?
1
:
0
,
// clear
...
...
@@ -1300,12 +1294,6 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
*/
}
#ifdef OMP
#pragma omp parallel private(r,ret) shared(ulsch,harq_pid,crc_type,Kr,f1f2mat_old,phy_vars_eNB,status,iind,)
{
#pragma omp for nowait
#endif
for
(
r
=
0
;
r
<
ulsch_harq
->
C
;
r
++
)
{
// msg("Clearing c, %p\n",ulsch_harq->c[r]);
// memset(ulsch_harq->c[r],0,16);//block_length);
...
...
@@ -1365,9 +1353,6 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *phy_vars_eNB,
}
#ifdef OMP
}
#endif
// Reassembly of Transport block here
offset
=
0
;
// msg("F %d, Fbytes %d\n",ulsch_harq->F,ulsch_harq->F>>3);
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
View file @
15cd4ab0
...
...
@@ -50,7 +50,7 @@
//#define DEBUG_ULSCH_MODULATION
#ifndef OFDMA_ULSCH
void
dft_lte
(
mod_sym_t
*
z
,
mod_sym
_t
*
d
,
int32_t
Msc_PUSCH
,
uint8_t
Nsymb
)
void
dft_lte
(
int32_t
*
z
,
int32
_t
*
d
,
int32_t
Msc_PUSCH
,
uint8_t
Nsymb
)
{
#if defined(__x86_64__) || defined(__i386__)
...
...
@@ -373,7 +373,7 @@ void dft_lte(mod_sym_t *z,mod_sym_t *d, int32_t Msc_PUSCH, uint8_t Nsymb)
}
#endif
void
ulsch_modulation
(
mod_sym
_t
**
txdataF
,
void
ulsch_modulation
(
int32
_t
**
txdataF
,
short
amp
,
uint32_t
frame
,
uint32_t
subframe
,
...
...
@@ -393,7 +393,7 @@ void ulsch_modulation(mod_sym_t **txdataF,
// uint8_t harq_pid = (rag_flag == 1) ? 0 : subframe2harq_pid_tdd(frame_parms->tdd_config,subframe);
uint8_t
harq_pid
=
subframe2harq_pid
(
frame_parms
,
frame
,
subframe
);
uint8_t
Q_m
;
mod_sym
_t
*
txptr
;
int32
_t
*
txptr
;
uint32_t
symbol_offset
;
uint16_t
first_rb
;
uint16_t
nb_rb
;
...
...
openair1/PHY/MODULATION/defs.h
View file @
15cd4ab0
...
...
@@ -87,7 +87,7 @@ int slot_fep_ul(LTE_DL_FRAME_PARMS *frame_parms,
void
normal_prefix_mod
(
int32_t
*
txdataF
,
int32_t
*
txdata
,
uint8_t
nsymb
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
void
do_OFDM_mod
(
mod_sym
_t
**
txdataF
,
int32_t
**
txdata
,
uint32_t
frame
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
void
do_OFDM_mod
(
int32
_t
**
txdataF
,
int32_t
**
txdata
,
uint32_t
frame
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
);
void
remove_7_5_kHz
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
subframe
);
...
...
openair1/PHY/MODULATION/ofdm_mod.c
View file @
15cd4ab0
...
...
@@ -237,7 +237,7 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input
}
void
do_OFDM_mod
(
mod_sym
_t
**
txdataF
,
int32_t
**
txdata
,
uint32_t
frame
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
)
void
do_OFDM_mod
(
int32
_t
**
txdataF
,
int32_t
**
txdata
,
uint32_t
frame
,
uint16_t
next_slot
,
LTE_DL_FRAME_PARMS
*
frame_parms
)
{
int
aa
,
slot_offset
,
slot_offset_F
;
...
...
openair1/PHY/TOOLS/lte_dfts.c
View file @
15cd4ab0
...
...
@@ -5973,7 +5973,6 @@ simd256_q15_t *W4_12_256=(simd256_q15_t *)W4_12s_256;
simd256_q15_t *W6_12_256=(simd256_q15_t *)W6_12s_256;
static simd256_q15_t norm256;
static inline void dft12f_simd256(simd256_q15_t *x0,
simd256_q15_t *x1,
openair1/PHY/defs.h
View file @
15cd4ab0
...
...
@@ -122,7 +122,6 @@ static inline void* malloc16_clear( size_t size )
#define UNUSED(x) (void)x;
#include "spec_defs_top.h"
#include "impl_defs_top.h"
#include "impl_defs_lte.h"
...
...
openair1/PHY/impl_defs_lte.h
View file @
15cd4ab0
...
...
@@ -43,7 +43,6 @@
#include "types.h"
#include "spec_defs_top.h"
//#include "defs.h"
#define LTE_NUMBER_OF_SUBFRAMES_PER_FRAME 10
...
...
@@ -605,7 +604,7 @@ typedef struct {
/// - first index: eNB id [0..2] (hard coded)
/// - second index: tx antenna [0..nb_antennas_tx[
/// - third index: sample [0..]
mod_sym
_t
**
txdataF
[
3
];
int32
_t
**
txdataF
[
3
];
/// \brief Holds the received data in time domain.
/// Should point to the same memory as PHY_vars->rx_vars[a].RX_DMA_BUFFER.
/// - first index: eNB id [0..2] (hard coded)
...
...
@@ -749,7 +748,7 @@ typedef struct {
/// For IFFT_FPGA this points to the same memory as PHY_vars->rx_vars[a].RX_DMA_BUFFER.
/// - first index: tx antenna [0..nb_antennas_tx[
/// - second index: sample [0..FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX[
mod_sym
_t
**
txdataF
;
int32
_t
**
txdataF
;
/// \brief Holds the received data in time domain.
/// Should point to the same memory as PHY_vars->rx_vars[a].RX_DMA_BUFFER.
/// - first index: rx antenna [0..nb_antennas_rx[
...
...
openair1/PHY/impl_defs_top.h
View file @
15cd4ab0
...
...
@@ -115,7 +115,6 @@
*/
#include "types.h"
#include "spec_defs_top.h"
...
...
@@ -130,11 +129,7 @@
#define HALF_NUMBER_OF_USEFUL_CARRIERS (NUMBER_OF_USEFUL_CARRIERS>>1)
#define HALF_NUMBER_OF_USEFUL_CARRIERS_BYTES (HALF_NUMBER_OF_USEFUL_CARRIERS>>2)
#define FIRST_CARRIER_OFFSET (HALF_NUMBER_OF_USEFUL_CARRIERS+NUMBER_OF_ZERO_CARRIERS)
#ifdef OPENAIR_LTE
#define NUMBER_OF_OFDM_SYMBOLS_PER_SLOT (NUMBER_OF_SYMBOLS_PER_FRAME/LTE_SLOTS_PER_FRAME)
#else
#define NUMBER_OF_OFDM_SYMBOLS_PER_SLOT 16
#endif
#ifdef EMOS
#define EMOS_SCH_INDEX 1
...
...
@@ -267,66 +262,6 @@
/// Threshold for PUCCH Format 1a/1b detection
#define PUCCH1a_THRES 4
#ifndef OPENAIR_LTE
///
/// PHY-MAC Interface Defs
///
/// Maximum number of parallel streams per slot
#define NB_STREAMS_MAX 4
/// Maximum number of frequency groups per slot
#define NB_GROUPS_MAX 16
/// Maximum number of control bytes per slot
#define NB_CNTL_BYTES_MAX 8
/// Maximum number of data bytes per slot
#define NB_DATA_BYTES_MAX 256
#define MAX_NUM_TB 32
#define MAX_TB_SIZE_BYTES 128
/// Size of SACCH PDU in Bytes
#define SACCH_SIZE_BYTES (sizeof(UL_SACCH_PDU)+4)
/// Size of SACCH PDU in Bytes
#define SACCH_SIZE_BITS (SACCH_SIZE_BYTES<<3)
#define MAX_SACH_SIZE_BYTES 1024
#define SACH_ERROR 1
#define SACCH_ERROR 2
#define SACH_MISSING 3
#define SACH_PARAM_INVALID 10
#endif //OPENAIR_LTE
/*
enum STATUS_RX {STATUS_RX_OFF,
STATUS_RX_ON,
STATUS_RX_SYNCING,
STATUS_RX_CANNOT_SYNC,
STATUS_RX_DATA_PROBLEM,
STATUS_RX_LOST_SYNC,
STATUS_RX_ABORT,
STATUS_RX_TOO_LATE,
STATUS_RX_CLOCK_STOPPED};
enum STATUS_TX {
STATUS_TX_OFF,
STATUS_TX_ON,
STATUS_TX_INPUT_CORRUPT,
STATUS_TX_ABORT,
STATUS_TX_TOO_LATE,
STATUS_TX_CLOCK_STOPPED};
enum MODE {
SYNCHED,
SYNCHING,
NOT_SYNCHED};
*/
/// Data structure for transmission.
typedef
struct
{
/// RAW TX sample buffer
...
...
@@ -341,6 +276,14 @@ typedef struct {
int
*
RX_DMA_BUFFER
[
2
];
}
TX_RX_VARS
;
/*! \brief Extension Type */
typedef
enum
{
CYCLIC_PREFIX
,
CYCLIC_SUFFIX
,
ZEROS
,
NONE
}
Extension_t
;
/// Measurement Variables
#define NUMBER_OF_SUBBANDS_MAX 13
...
...
openair1/PHY/spec_defs.h
deleted
100755 → 0
View file @
ce454d64
This diff is collapsed.
Click to expand it.
openair1/PHY/spec_defs_top.h
deleted
100755 → 0
View file @
ce454d64
/*******************************************************************************
OpenAirInterface
Copyright(c) 1999 - 2014 Eurecom
OpenAirInterface is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenAirInterface is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenAirInterface.The full GNU General Public License is
included in this distribution in the file called "COPYING". If not,
see <http://www.gnu.org/licenses/>.
Contact Information
OpenAirInterface Admin: openair_admin@eurecom.fr
OpenAirInterface Tech : openair_tech@eurecom.fr
OpenAirInterface Dev : openair4g-devel@lists.eurecom.fr
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
#ifndef __PHY_SPEC_DEFS_TOP_H__
#define __PHY_SPEC_DEFS_TOP_H__
#include "types.h"
/*! \brief Extension Type */
typedef
enum
{
CYCLIC_PREFIX
,
CYCLIC_SUFFIX
,
ZEROS
,
NONE
}
Extension_t
;
/// mod_sym_t is the type of txdataF
#ifdef IFFT_FPGA
typedef
unsigned
char
mod_sym_t
;
#else
typedef
int
mod_sym_t
;
#endif //IFFT_FPGA
#endif
/*__PHY_SPEC_DEFS_TOP_H__ */
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
15cd4ab0
...
...
@@ -72,7 +72,6 @@
#define PUCCH 1
extern
int
exit_openair
;
//extern void do_OFDM_mod(mod_sym_t **txdataF, int32_t **txdata, uint32_t frame, uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms);
unsigned
char
dlsch_input_buffer
[
2700
]
__attribute__
((
aligned
(
32
)));
...
...
@@ -636,7 +635,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
for
(
aa
=
0
;
aa
<
phy_vars_eNB
->
lte_frame_parms
.
nb_antennas_tx_eNB
;
aa
++
)
{
memset
(
&
phy_vars_eNB
->
lte_eNB_common_vars
.
txdataF
[
0
][
aa
][
subframe
*
phy_vars_eNB
->
lte_frame_parms
.
ofdm_symbol_size
*
(
phy_vars_eNB
->
lte_frame_parms
.
symbols_per_tti
)],
0
,
phy_vars_eNB
->
lte_frame_parms
.
ofdm_symbol_size
*
(
phy_vars_eNB
->
lte_frame_parms
.
symbols_per_tti
)
*
sizeof
(
mod_sym
_t
));
0
,
phy_vars_eNB
->
lte_frame_parms
.
ofdm_symbol_size
*
(
phy_vars_eNB
->
lte_frame_parms
.
symbols_per_tti
)
*
sizeof
(
int32
_t
));
}
}
...
...
@@ -1990,7 +1989,7 @@ void process_HARQ_feedback(uint8_t UE_id,
// then Increment DLSCH round index
dlsch_harq_proc
->
round
++
;
if
(
dlsch_harq_proc
->
round
==
1
/*dlsch->Mdlharq*/
)
{
if
(
dlsch_harq_proc
->
round
==
dlsch
->
Mlimit
)
{
// This was the last round for DLSCH so reset round and increment l2_error counter
#ifdef DEBUG_PHY_PROC
LOG_W
(
PHY
,
"[eNB %d][PDSCH %x/%d] DLSCH retransmissions exhausted, dropping packet
\n
"
,
phy_vars_eNB
->
Mod_id
,
...
...
@@ -2673,7 +2672,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
phy_vars_eNB
->
Mod_id
,
harq_pid
,
frame
,
subframe
,
i
,
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
harq_processes
[
harq_pid
]
->
round
-
1
,
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
dlharq
,
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
limit
,
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
harq_processes
[
harq_pid
]
->
o_ACK
[
0
],
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
harq_processes
[
harq_pid
]
->
o_ACK
[
1
]);
...
...
@@ -2701,11 +2700,11 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
// dump_ulsch(phy_vars_eNB,sched_subframe,i);
//mac_exit_wrapper("ULSCH error");
if
(
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
harq_processes
[
harq_pid
]
->
round
==
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
dlharq
)
{
LOG_D
(
PHY
,
"[eNB %d][PUSCH %d] frame %d subframe %d UE %d ULSCH M
dlharq
%d reached
\n
"
,
if
(
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
harq_processes
[
harq_pid
]
->
round
==
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
limit
)
{
LOG_D
(
PHY
,
"[eNB %d][PUSCH %d] frame %d subframe %d UE %d ULSCH M
limit
%d reached
\n
"
,
phy_vars_eNB
->
Mod_id
,
harq_pid
,
frame
,
subframe
,
i
,
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
dlharq
);
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
limit
);
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
harq_processes
[
harq_pid
]
->
round
=
0
;
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
harq_processes
[
harq_pid
]
->
phich_active
=
0
;
...
...
@@ -2817,7 +2816,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
//#endif //DEBUG_PHY_PROC
for
(
k
=
0
;
k
<
8
;
k
++
)
{
//harq_processes
for
(
j
=
0
;
j
<
phy_vars_eNB
->
dlsch_eNB
[
i
][
0
]
->
M
dlharq
;
j
++
)
{
for
(
j
=
0
;
j
<
phy_vars_eNB
->
dlsch_eNB
[
i
][
0
]
->
M
limit
;
j
++
)
{
phy_vars_eNB
->
eNB_UE_stats
[
i
].
dlsch_NAK
[
k
][
j
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
dlsch_ACK
[
k
][
j
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
dlsch_trials
[
k
][
j
]
=
0
;
...
...
@@ -2827,7 +2826,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_errors
[
k
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_consecutive_errors
=
0
;
for
(
j
=
0
;
j
<
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
dlharq
;
j
++
)
{
for
(
j
=
0
;
j
<
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
limit
;
j
++
)
{
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_decoding_attempts
[
k
][
j
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_decoding_attempts_last
[
k
][
j
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_round_errors
[
k
][
j
]
=
0
;
...
...
@@ -3242,7 +3241,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
if
((
frame
%
100
==
0
)
&&
(
subframe
==
4
))
{
for
(
harq_idx
=
0
;
harq_idx
<
8
;
harq_idx
++
)
{
for
(
round
=
0
;
round
<
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
dlharq
;
round
++
)
{
for
(
round
=
0
;
round
<
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
limit
;
round
++
)
{
if
((
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_decoding_attempts
[
harq_idx
][
round
]
-
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_decoding_attempts_last
[
harq_idx
][
round
])
!=
0
)
{
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_round_fer
[
harq_idx
][
round
]
=
...
...
targets/RT/USER/lte-softmodem.c
View file @
15cd4ab0
...
...
@@ -513,7 +513,7 @@ void reset_stats(FL_OBJECT *button, long arg)
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
for
(
k
=
0
;
k
<
8
;
k
++
)
{
//harq_processes
for
(
j
=
0
;
j
<
phy_vars_eNB
->
dlsch_eNB
[
i
][
0
]
->
M
dlharq
;
j
++
)
{
for
(
j
=
0
;
j
<
phy_vars_eNB
->
dlsch_eNB
[
i
][
0
]
->
M
limit
;
j
++
)
{
phy_vars_eNB
->
eNB_UE_stats
[
i
].
dlsch_NAK
[
k
][
j
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
dlsch_ACK
[
k
][
j
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
dlsch_trials
[
k
][
j
]
=
0
;
...
...
@@ -523,7 +523,7 @@ void reset_stats(FL_OBJECT *button, long arg)
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_errors
[
k
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_consecutive_errors
=
0
;
for
(
j
=
0
;
j
<
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
dlharq
;
j
++
)
{
for
(
j
=
0
;
j
<
phy_vars_eNB
->
ulsch_eNB
[
i
]
->
M
limit
;
j
++
)
{
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_decoding_attempts
[
k
][
j
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_decoding_attempts_last
[
k
][
j
]
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_round_errors
[
k
][
j
]
=
0
;
...
...
targets/SIMU/USER/init_lte.c
View file @
15cd4ab0
...
...
@@ -73,7 +73,7 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms,
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
for
(
j
=
0
;
j
<
2
;
j
++
)
{
PHY_vars_eNB
->
dlsch_eNB
[
i
][
j
]
=
new_eNB_dlsch
(
1
,
NUMBER_OF_HARQ_PID_MAX
,
NSOFT
,
frame_parms
->
N_RB_DL
,
abstraction_flag
);
PHY_vars_eNB
->
dlsch_eNB
[
i
][
j
]
=
new_eNB_dlsch
(
1
,
8
,
NSOFT
,
frame_parms
->
N_RB_DL
,
abstraction_flag
);
if
(
!
PHY_vars_eNB
->
dlsch_eNB
[
i
][
j
])
{
LOG_E
(
PHY
,
"Can't get eNB dlsch structures for UE %d
\n
"
,
i
);
...
...
@@ -84,7 +84,7 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms,
}
}
PHY_vars_eNB
->
ulsch_eNB
[
1
+
i
]
=
new_eNB_ulsch
(
NUMBER_OF_HARQ_PID_MAX
,
MAX_TURBO_ITERATIONS
,
frame_parms
->
N_RB_UL
,
abstraction_flag
);
PHY_vars_eNB
->
ulsch_eNB
[
1
+
i
]
=
new_eNB_ulsch
(
MAX_TURBO_ITERATIONS
,
frame_parms
->
N_RB_UL
,
abstraction_flag
);
if
(
!
PHY_vars_eNB
->
ulsch_eNB
[
1
+
i
])
{
LOG_E
(
PHY
,
"Can't get eNB ulsch structures
\n
"
);
...
...
@@ -118,18 +118,18 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms,
}
// ULSCH for RA
PHY_vars_eNB
->
ulsch_eNB
[
0
]
=
new_eNB_ulsch
(
NUMBER_OF_HARQ_PID_MAX
,
MAX_TURBO_ITERATIONS
,
frame_parms
->
N_RB_UL
,
abstraction_flag
);
PHY_vars_eNB
->
ulsch_eNB
[
0
]
=
new_eNB_ulsch
(
MAX_TURBO_ITERATIONS
,
frame_parms
->
N_RB_UL
,
abstraction_flag
);
if
(
!
PHY_vars_eNB
->
ulsch_eNB
[
0
])
{
LOG_E
(
PHY
,
"Can't get eNB ulsch structures
\n
"
);
exit
(
-
1
);
}
PHY_vars_eNB
->
dlsch_eNB_SI
=
new_eNB_dlsch
(
1
,
1
,
NSOFT
,
frame_parms
->
N_RB_DL
,
abstraction_flag
);
PHY_vars_eNB
->
dlsch_eNB_SI
=
new_eNB_dlsch
(
1
,
8
,
NSOFT
,
frame_parms
->
N_RB_DL
,
abstraction_flag
);
LOG_D
(
PHY
,
"eNB %d : SI %p
\n
"
,
eNB_id
,
PHY_vars_eNB
->
dlsch_eNB_SI
);
PHY_vars_eNB
->
dlsch_eNB_ra
=
new_eNB_dlsch
(
1
,
1
,
NSOFT
,
frame_parms
->
N_RB_DL
,
abstraction_flag
);
PHY_vars_eNB
->
dlsch_eNB_ra
=
new_eNB_dlsch
(
1
,
8
,
NSOFT
,
frame_parms
->
N_RB_DL
,
abstraction_flag
);
LOG_D
(
PHY
,
"eNB %d : RA %p
\n
"
,
eNB_id
,
PHY_vars_eNB
->
dlsch_eNB_ra
);
PHY_vars_eNB
->
dlsch_eNB_MCH
=
new_eNB_dlsch
(
1
,
NUMBER_OF_HARQ_PID_MAX
,
NSOFT
,
frame_parms
->
N_RB_DL
,
0
);
PHY_vars_eNB
->
dlsch_eNB_MCH
=
new_eNB_dlsch
(
1
,
8
,
NSOFT
,
frame_parms
->
N_RB_DL
,
0
);
LOG_D
(
PHY
,
"eNB %d : MCH %p
\n
"
,
eNB_id
,
PHY_vars_eNB
->
dlsch_eNB_MCH
);
...
...
@@ -177,7 +177,7 @@ PHY_VARS_UE* init_lte_UE(LTE_DL_FRAME_PARMS *frame_parms,
PHY_vars_UE
->
ulsch_ue
[
i
]
=
new_ue_ulsch
(
NUMBER_OF_HARQ_PID_MAX
,
frame_parms
->
N_RB_UL
,
abstraction_flag
);
PHY_vars_UE
->
ulsch_ue
[
i
]
=
new_ue_ulsch
(
frame_parms
->
N_RB_UL
,
abstraction_flag
);
if
(
!
PHY_vars_UE
->
ulsch_ue
[
i
])
{
LOG_E
(
PHY
,
"Can't get ue ulsch structures
\n
"
);
...
...
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