Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
b833ffb0
Commit
b833ffb0
authored
Jun 12, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed AVX2 issue in 3gpplte_sse.c
parent
c86467e2
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
75 additions
and
121 deletions
+75
-121
openair1/PHY/CODING/3gpplte_sse.c
openair1/PHY/CODING/3gpplte_sse.c
+8
-4
openair1/PHY/CODING/lte_segmentation.c
openair1/PHY/CODING/lte_segmentation.c
+1
-1
openair1/PHY/INIT/lte_param_init.c
openair1/PHY/INIT/lte_param_init.c
+2
-1
openair1/PHY/LTE_ESTIMATION/defs.h
openair1/PHY/LTE_ESTIMATION/defs.h
+1
-0
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+3
-2
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
+9
-75
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+14
-14
openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
+1
-1
openair1/PHY/TOOLS/ALAW/companders.c
openair1/PHY/TOOLS/ALAW/companders.c
+16
-2
openair1/SIMULATION/LTE_PHY/ulsim.c
openair1/SIMULATION/LTE_PHY/ulsim.c
+20
-21
No files found.
openair1/PHY/CODING/3gpplte_sse.c
View file @
b833ffb0
...
...
@@ -438,12 +438,14 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
uint8_t
*
systematic2_ptr
=
(
uint8_t
*
)
output
;
#endif
#ifndef __AVX2__
int
input_length_words
=
n
>>
1
;
int
input_length_words
=
1
+
((
n
-
1
)
>>
1
)
;
#else
int
input_length_words
=
n
>>
2
;
int
input_length_words
=
1
+
((
n
-
1
)
>>
2
)
;
#endif
for
(
i
=
0
;
i
<
input_length_words
;
i
++
)
{
#if defined(__x86_64__) || defined(__i386__)
#ifndef __AVX2__
tmp
=
_mm_insert_epi8
(
tmp
,
expandInput
[
*
ptr_intl
++
],
7
);
...
...
@@ -571,6 +573,7 @@ void threegpplte_turbo_encoder(unsigned char *input,
unsigned
char
systematic2
[
768
]
__attribute__
((
aligned
(
32
)));
interleave_compact_byte
(
base_interleaver
,
input
,
systematic2
,
input_length_bytes
);
#if defined(__x86_64__) || defined(__i386__)
...
...
@@ -592,6 +595,7 @@ void threegpplte_turbo_encoder(unsigned char *input,
_mm_add_pi8(all_treillis[state0][cur_s1].parity1_64[code_rate],
all_treillis[state1][cur_s2].parity2_64[code_rate]));
*/
*
ptr_output
++
=
_mm_add_pi8
(
all_treillis
[
state0
][
cur_s1
].
systematic_andp1_64
[
code_rate
],
all_treillis
[
state1
][
cur_s2
].
parity2_64
[
code_rate
]);
...
...
openair1/PHY/CODING/lte_segmentation.c
View file @
b833ffb0
...
...
@@ -153,7 +153,7 @@ int lte_segmentation(unsigned char *input_buffer,
while
(
k
<
((
Kr
-
L
)
>>
3
))
{
output_buffers
[
r
][
k
]
=
input_buffer
[
s
];
// printf("encoding segment %d : byte %d => %d\n",r,k
,input_buffer[s]);
// printf("encoding segment %d : byte %d (%d) => %d\n",r,k,Kr>>3
,input_buffer[s]);
k
++
;
s
++
;
}
...
...
openair1/PHY/INIT/lte_param_init.c
View file @
b833ffb0
...
...
@@ -28,10 +28,11 @@ void lte_param_init(unsigned char N_tx,
LTE_DL_FRAME_PARMS
*
frame_parms
;
int
i
;
printf
(
"Start lte_param_init
\n
"
);
eNB
=
malloc
(
sizeof
(
PHY_VARS_eNB
));
UE
=
malloc
(
sizeof
(
PHY_VARS_UE
));
memset
((
void
*
)
eNB
,
0
,
sizeof
(
PHY_VARS_eNB
));
memset
((
void
*
)
UE
,
0
,
sizeof
(
PHY_VARS_UE
));
//PHY_config = malloc(sizeof(PHY_CONFIG));
mac_xface
=
malloc
(
sizeof
(
MAC_xface
));
...
...
openair1/PHY/LTE_ESTIMATION/defs.h
View file @
b833ffb0
...
...
@@ -217,6 +217,7 @@ void phy_adjust_gain (PHY_VARS_UE *phy_vars_ue,
unsigned
char
eNB_id
);
int
lte_ul_channel_estimation
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
module_id_t
eNB_id
,
module_id_t
UE_id
,
uint8_t
l
,
...
...
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
View file @
b833ffb0
...
...
@@ -53,6 +53,7 @@ static int16_t ru_90c[2*128] = {32767, 0,32766, -402,32758, -804,32746, -1206,32
#define SCALE 0x3FFF
int32_t
lte_ul_channel_estimation
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
UE_id
,
unsigned
char
l
,
...
...
@@ -67,8 +68,8 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
int32_t
**
ul_ch_estimates_0
=
pusch_vars
->
drs_ch_estimates_0
[
eNB_id
];
int32_t
**
ul_ch_estimates_1
=
pusch_vars
->
drs_ch_estimates_1
[
eNB_id
];
int32_t
**
rxdataF_ext
=
pusch_vars
->
rxdataF_ext
[
eNB_id
];
int
subframe
=
eNB
->
proc
.
subframe_rx
;
uint8_t
harq_pid
=
subframe2harq_pid
(
frame_parms
,
eNB
->
proc
.
frame_rx
,
subframe
);
int
subframe
=
proc
->
subframe_rx
;
uint8_t
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
int16_t
delta_phase
=
0
;
int16_t
*
ru1
=
ru_90
;
int16_t
*
ru2
=
ru_90
;
...
...
openair1/PHY/LTE_TRANSPORT/drs_modulation.c
View file @
b833ffb0
...
...
@@ -94,7 +94,7 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
if
(
Msc_idx_ptr
)
Msc_RS_idx
=
Msc_idx_ptr
-
dftsizes
;
else
{
msg
(
"generate_drs_pusch: index for Msc_RS=%d not found
\n
"
,
Msc_RS
);
printf
(
"generate_drs_pusch: index for Msc_RS=%d not found
\n
"
,
Msc_RS
);
return
(
-
1
);
}
...
...
@@ -107,7 +107,7 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
#endif
#ifdef DEBUG_DRS
msg
(
"[PHY] drs_modulation: Msc_RS = %d, Msc_RS_idx = %d,cyclic_shift %d, u0 %d, v0 %d, u1 %d, v1 %d,cshift0 %d,cshift1 %d
\n
"
,
Msc_RS
,
Msc_RS_idx
,
cyclic_shift
,
u0
,
v0
,
u1
,
v1
,
cyclic_shift0
,
cyclic_shift1
);
printf
(
"[PHY] drs_modulation: Msc_RS = %d, Msc_RS_idx = %d,cyclic_shift %d, u0 %d, v0 %d, u1 %d, v1 %d,cshift0 %d,cshift1 %d
\n
"
,
Msc_RS
,
Msc_RS_idx
,
cyclic_shift
,
u0
,
v0
,
u1
,
v1
,
cyclic_shift0
,
cyclic_shift1
);
#endif
...
...
@@ -116,21 +116,17 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
l
<
frame_parms
->
symbols_per_tti
;
l
+=
(
7
-
frame_parms
->
Ncp
),
u
=
u1
,
v
=
v1
,
cyclic_shift
=
cyclic_shift1
)
{
drs_offset
=
0
;
// msg("drs_modulation: Msc_RS = %d, Msc_RS_idx = %d\n",Msc_RS, Msc_RS_idx);
drs_offset
=
0
;
// printf("drs_modulation: Msc_RS = %d, Msc_RS_idx = %d\n",Msc_RS, Msc_RS_idx);
#ifdef IFFT_FPGA_UE
re_offset
=
frame_parms
->
N_RB_DL
*
12
/
2
;
subframe_offset
=
subframe
*
frame_parms
->
symbols_per_tti
*
frame_parms
->
N_RB_UL
*
12
;
symbol_offset
=
subframe_offset
+
frame_parms
->
N_RB_UL
*
12
*
l
;
#else
re_offset
=
frame_parms
->
first_carrier_offset
;
subframe_offset
=
subframe
*
frame_parms
->
symbols_per_tti
*
frame_parms
->
ofdm_symbol_size
;
symbol_offset
=
subframe_offset
+
frame_parms
->
ofdm_symbol_size
*
l
;
#endif
#ifdef DEBUG_DRS
msg
(
"generate_drs_pusch: symbol_offset %d, subframe offset %d, cyclic shift %d
\n
"
,
symbol_offset
,
subframe_offset
,
cyclic_shift
);
printf
(
"generate_drs_pusch: symbol_offset %d, subframe offset %d, cyclic shift %d
\n
"
,
symbol_offset
,
subframe_offset
,
cyclic_shift
);
#endif
alpha_ind
=
0
;
...
...
@@ -139,60 +135,9 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
if
((
rb
>=
first_rb
)
&&
(
rb
<
(
first_rb
+
nb_rb
)))
{
#ifdef DEBUG_DRS
msg
(
"generate_drs_pusch: doing RB %d, re_offset=%d, drs_offset=%d,cyclic shift %d
\n
"
,
rb
,
re_offset
,
drs_offset
,
cyclic_shift
);
printf
(
"generate_drs_pusch: doing RB %d, re_offset=%d, drs_offset=%d,cyclic shift %d
\n
"
,
rb
,
re_offset
,
drs_offset
,
cyclic_shift
);
#endif
#ifdef IFFT_FPGA_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
]
=
(
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
]
=
(
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
]
=
(
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
]
=
(
int32_t
)
4
;
re_offset
++
;
drs_offset
++
;
if
(
re_offset
>=
frame_parms
->
N_RB_UL
*
12
)
re_offset
=
0
;
}
}
else
if
(
cyclic_shift
==
6
)
{
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
]
=
(
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
]
=
(
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
]
=
(
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
]
=
(
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
]
=
(
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
]
=
(
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
]
=
(
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
]
=
(
int32_t
)
4
;
}
re_offset
++
;
drs_offset
++
;
if
(
re_offset
>=
frame_parms
->
N_RB_UL
*
12
)
re_offset
=
0
;
}
}
#else //IFFT_FPGA_UE
for
(
k
=
0
;
k
<
12
;
k
++
)
{
ref_re
=
(
int32_t
)
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][
drs_offset
<<
1
];
ref_im
=
(
int32_t
)
ul_ref_sigs
[
u
][
v
][
Msc_RS_idx
][(
drs_offset
<<
1
)
+
1
];
...
...
@@ -211,7 +156,7 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
alpha_ind
-=
12
;
#ifdef DEBUG_DRS
msg
(
"symbol_offset %d, alpha_ind %d , re_offset %d : (%d,%d)
\n
"
,
printf
(
"symbol_offset %d, alpha_ind %d , re_offset %d : (%d,%d)
\n
"
,
symbol_offset
,
alpha_ind
,
re_offset
,
...
...
@@ -226,21 +171,10 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
re_offset
=
0
;
}
#endif // IFFT_FPGA_UE
}
else
{
re_offset
+=
12
;
// go to next RB
// check if we crossed the symbol boundary and skip DC
#ifdef IFFT_FPGA_UE
if
(
re_offset
>=
frame_parms
->
N_RB_DL
*
12
)
{
if
(
frame_parms
->
N_RB_DL
&
1
)
// odd number of RBs
re_offset
=
6
;
else
// even number of RBs (doesn't straddle DC)
re_offset
=
0
;
}
#else
if
(
re_offset
>=
frame_parms
->
ofdm_symbol_size
)
{
if
(
frame_parms
->
N_RB_DL
&
1
)
// odd number of RBs
...
...
@@ -249,7 +183,7 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
re_offset
=
0
;
}
#endif
}
}
}
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
View file @
b833ffb0
...
...
@@ -739,7 +739,7 @@ void ulsch_extract_rbs_single(int32_t **rxdataF,
nb_rb2
=
2
*
nb_rb
-
nb_rb1
;
// 2 times no. RBs after the DC
#ifdef DEBUG_ULSCH
msg
(
"ulsch_extract_rbs_single: 2*nb_rb1 = %d, 2*nb_rb2 = %d
\n
"
,
nb_rb1
,
nb_rb2
);
printf
(
"ulsch_extract_rbs_single: 2*nb_rb1 = %d, 2*nb_rb2 = %d
\n
"
,
nb_rb1
,
nb_rb2
);
#endif
rxF_ext
=
&
rxdataF_ext
[
aarx
][(
symbol
*
frame_parms
->
N_RB_UL
*
12
)];
...
...
@@ -1608,7 +1608,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
harq_pid
=
subframe2harq_pid
(
frame_parms
,
proc
->
frame_rx
,
subframe
);
Qm
=
get_Qm_ul
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
mcs
);
#ifdef DEBUG_ULSCH
msg
(
"rx_ulsch: eNB_id %d, harq_pid %d, nb_rb %d first_rb %d, cooperation %d
\n
"
,
eNB_id
,
harq_pid
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
,
printf
(
"rx_ulsch: eNB_id %d, harq_pid %d, nb_rb %d first_rb %d, cooperation %d
\n
"
,
eNB_id
,
harq_pid
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
,
cooperation_flag
);
#endif //DEBUG_ULSCH
...
...
@@ -1622,7 +1622,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
for
(
l
=
0
;
l
<
(
frame_parms
->
symbols_per_tti
-
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
srs_active
);
l
++
)
{
#ifdef DEBUG_ULSCH
msg
(
"rx_ulsch : symbol %d (first_rb %d,nb_rb %d), rxdataF %p, rxdataF_ext %p
\n
"
,
l
,
printf
(
"rx_ulsch : symbol %d (first_rb %d,nb_rb %d), rxdataF %p, rxdataF_ext %p
\n
"
,
l
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
common_vars
->
rxdataF
[
eNB_id
],
...
...
@@ -1637,7 +1637,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
l
/
(
frame_parms
->
symbols_per_tti
/
2
),
frame_parms
);
lte_ul_channel_estimation
(
eNB
,
lte_ul_channel_estimation
(
eNB
,
proc
,
eNB_id
,
UE_id
,
l
%
(
frame_parms
->
symbols_per_tti
/
2
),
...
...
@@ -1681,7 +1681,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
avgU_0
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
);
//
msg
("[ULSCH] avg_0[0] %d\n",avgU_0[0]);
//
printf
("[ULSCH] avg_0[0] %d\n",avgU_0[0]);
avgs_0
=
0
;
...
...
@@ -1691,7 +1691,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
log2_maxh_0
=
(
log2_approx
(
avgs_0
)
/
2
)
+
log2_approx
(
frame_parms
->
nb_antennas_rx
-
1
)
+
3
;
#ifdef DEBUG_ULSCH
msg
(
"[ULSCH] log2_maxh_0 = %d (%d,%d)
\n
"
,
log2_maxh_0
,
avgU_0
[
0
],
avgs_0
);
printf
(
"[ULSCH] log2_maxh_0 = %d (%d,%d)
\n
"
,
log2_maxh_0
,
avgU_0
[
0
],
avgs_0
);
#endif
ulsch_channel_level
(
pusch_vars
->
drs_ch_estimates_1
[
eNB_id
],
...
...
@@ -1699,7 +1699,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
avgU_1
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
);
//
msg
("[ULSCH] avg_1[0] %d\n",avgU_1[0]);
//
printf
("[ULSCH] avg_1[0] %d\n",avgU_1[0]);
avgs_1
=
0
;
...
...
@@ -1709,7 +1709,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
log2_maxh_1
=
(
log2_approx
(
avgs_1
)
/
2
)
+
log2_approx
(
frame_parms
->
nb_antennas_rx
-
1
)
+
3
;
#ifdef DEBUG_ULSCH
msg
(
"[ULSCH] log2_maxh_1 = %d (%d,%d)
\n
"
,
log2_maxh_1
,
avgU_1
[
0
],
avgs_1
);
printf
(
"[ULSCH] log2_maxh_1 = %d (%d,%d)
\n
"
,
log2_maxh_1
,
avgU_1
[
0
],
avgs_1
);
#endif
log2_maxh
=
max
(
log2_maxh_0
,
log2_maxh_1
);
}
else
{
...
...
@@ -1718,7 +1718,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
avgU
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
);
//
msg
("[ULSCH] avg[0] %d\n",avgU[0]);
//
printf
("[ULSCH] avg[0] %d\n",avgU[0]);
avgs
=
0
;
...
...
@@ -1731,7 +1731,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
log2_maxh
=
(
log2_approx
(
avgs
)
/
2
)
+
log2_approx
(
frame_parms
->
nb_antennas_rx
-
1
)
+
4
;
#ifdef DEBUG_ULSCH
msg
(
"[ULSCH] log2_maxh = %d (%d,%d)
\n
"
,
log2_maxh
,
avgU
[
0
],
avgs
);
printf
(
"[ULSCH] log2_maxh = %d (%d,%d)
\n
"
,
log2_maxh
,
avgU
[
0
],
avgs
);
#endif
}
...
...
@@ -1827,11 +1827,11 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
//#ifdef DEBUG_ULSCH
// Inverse-Transform equalized outputs
//
msg
("Doing IDFTs\n");
//
printf
("Doing IDFTs\n");
lte_idft
(
frame_parms
,
(
uint32_t
*
)
pusch_vars
->
rxdataF_comp
[
eNB_id
][
0
],
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
*
12
);
//
msg
("Done\n");
//
printf
("Done\n");
//#endif //DEBUG_ULSCH
#endif
...
...
@@ -1877,7 +1877,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
default:
#ifdef DEBUG_ULSCH
msg
(
"ulsch_demodulation.c (rx_ulsch): Unknown Qm!!!!
\n
"
);
printf
(
"ulsch_demodulation.c (rx_ulsch): Unknown Qm!!!!
\n
"
);
#endif //DEBUG_ULSCH
break
;
}
...
...
@@ -1890,7 +1890,7 @@ void rx_ulsch_emul(PHY_VARS_eNB *eNB,
uint8_t
sect_id
,
uint8_t
UE_index
)
{
msg
(
"[PHY] EMUL eNB %d rx_ulsch_emul : subframe %d, sect_id %d, UE_index %d
\n
"
,
eNB
->
Mod_id
,
proc
->
subframe_rx
,
sect_id
,
UE_index
);
printf
(
"[PHY] EMUL eNB %d rx_ulsch_emul : subframe %d, sect_id %d, UE_index %d
\n
"
,
eNB
->
Mod_id
,
proc
->
subframe_rx
,
sect_id
,
UE_index
);
eNB
->
pusch_vars
[
UE_index
]
->
ulsch_power
[
0
]
=
31622
;
//=45dB;
eNB
->
pusch_vars
[
UE_index
]
->
ulsch_power
[
1
]
=
31622
;
//=45dB;
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
View file @
b833ffb0
...
...
@@ -754,7 +754,7 @@ void ulsch_modulation(int32_t **txdataF,
re_offset
=
re_offset0
;
symbol_offset
=
(
uint32_t
)
frame_parms
->
ofdm_symbol_size
*
(
l
+
(
subframe
*
nsymb
));
#ifdef DEBUG_ULSCH_MODULATION
printf
(
"ulsch_mod (
O
FDMA) symbol %d (subframe %d): symbol_offset %d
\n
"
,
l
,
subframe
,
symbol_offset
);
printf
(
"ulsch_mod (
SC-
FDMA) symbol %d (subframe %d): symbol_offset %d
\n
"
,
l
,
subframe
,
symbol_offset
);
#endif
txptr
=
&
txdataF
[
0
][
symbol_offset
];
...
...
openair1/PHY/TOOLS/ALAW/companders.c
View file @
b833ffb0
...
...
@@ -46,6 +46,7 @@ DIO_s8 DIO_LinearToALaw(DIO_s16 sample)
DIO_s32
sign
,
exponent
,
mantissa
;
DIO_s8
compandedValue
;
sample
=
(
sample
==-
32768
)
?
-
32767
:
sample
;
sign
=
((
~
sample
)
>>
8
)
&
0x80
;
if
(
!
sign
)
...
...
@@ -123,3 +124,16 @@ DIO_s32 DIO_IIRavgPower2FR (DIO_s32 prevAvg, DIO_u8 windowLenInBits, DIO_s16 new
iirAvg
=
(((
prevAvg
<<
windowLenInBits
)
-
prevAvg
)
+
(
DIO_I2FR
(
newSample
,
radix
)))
>>
windowLenInBits
;
return
iirAvg
;
}
#ifdef MAIN
int
main
(
int
argc
,
char
*
argv
[])
{
return
0
;
}
#endif
openair1/SIMULATION/LTE_PHY/ulsim.c
View file @
b833ffb0
...
...
@@ -668,7 +668,7 @@ int main(int argc, char **argv)
if
(
eNB
->
frame_parms
.
frame_type
==
TDD
)
{
((
DCI0_5MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
type
=
0
;
((
DCI0_5MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
rballoc
=
computeRIV
(
eNB
->
frame_parms
.
N_RB_UL
,
first_rb
,
nb_rb
);
// 12 RBs from position 8
printf
(
"nb_rb %d/%d, rballoc %d (dci %x)
\n
"
,
nb_rb
,
eNB
->
frame_parms
.
N_RB_UL
,((
DCI0_5MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
rballoc
,
*
(
uint32_t
*
)
&
UL_alloc_pdu
);
//
printf("nb_rb %d/%d, rballoc %d (dci %x)\n",nb_rb,eNB->frame_parms.N_RB_UL,((DCI0_5MHz_TDD_1_6_t*)&UL_alloc_pdu)->rballoc,*(uint32_t *)&UL_alloc_pdu);
((
DCI0_5MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
mcs
=
mcs
;
((
DCI0_5MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
ndi
=
1
;
((
DCI0_5MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
TPC
=
0
;
...
...
@@ -678,7 +678,7 @@ int main(int argc, char **argv)
}
else
{
((
DCI0_5MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
type
=
0
;
((
DCI0_5MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
rballoc
=
computeRIV
(
eNB
->
frame_parms
.
N_RB_UL
,
first_rb
,
nb_rb
);
// 12 RBs from position 8
printf
(
"nb_rb %d/%d, rballoc %d (dci %x)
\n
"
,
nb_rb
,
eNB
->
frame_parms
.
N_RB_UL
,((
DCI0_5MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
rballoc
,
*
(
uint32_t
*
)
&
UL_alloc_pdu
);
//
printf("nb_rb %d/%d, rballoc %d (dci %x)\n",nb_rb,eNB->frame_parms.N_RB_UL,((DCI0_5MHz_FDD_t*)&UL_alloc_pdu)->rballoc,*(uint32_t *)&UL_alloc_pdu);
((
DCI0_5MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
mcs
=
mcs
;
((
DCI0_5MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
ndi
=
1
;
((
DCI0_5MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
TPC
=
0
;
...
...
@@ -692,7 +692,7 @@ int main(int argc, char **argv)
if
(
eNB
->
frame_parms
.
frame_type
==
TDD
)
{
((
DCI0_10MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
type
=
0
;
((
DCI0_10MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
rballoc
=
computeRIV
(
eNB
->
frame_parms
.
N_RB_UL
,
first_rb
,
nb_rb
);
// 12 RBs from position 8
printf
(
"nb_rb %d/%d, rballoc %d (dci %x)
\n
"
,
nb_rb
,
eNB
->
frame_parms
.
N_RB_UL
,((
DCI0_10MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
rballoc
,
*
(
uint32_t
*
)
&
UL_alloc_pdu
);
//
printf("nb_rb %d/%d, rballoc %d (dci %x)\n",nb_rb,eNB->frame_parms.N_RB_UL,((DCI0_10MHz_TDD_1_6_t*)&UL_alloc_pdu)->rballoc,*(uint32_t *)&UL_alloc_pdu);
((
DCI0_10MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
mcs
=
mcs
;
((
DCI0_10MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
ndi
=
1
;
((
DCI0_10MHz_TDD_1_6_t
*
)
&
UL_alloc_pdu
)
->
TPC
=
0
;
...
...
@@ -702,7 +702,7 @@ int main(int argc, char **argv)
}
else
{
((
DCI0_10MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
type
=
0
;
((
DCI0_10MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
rballoc
=
computeRIV
(
eNB
->
frame_parms
.
N_RB_UL
,
first_rb
,
nb_rb
);
// 12 RBs from position 8
printf
(
"nb_rb %d/%d, rballoc %d (dci %x)
\n
"
,
nb_rb
,
eNB
->
frame_parms
.
N_RB_UL
,((
DCI0_10MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
rballoc
,
*
(
uint32_t
*
)
&
UL_alloc_pdu
);
//
printf("nb_rb %d/%d, rballoc %d (dci %x)\n",nb_rb,eNB->frame_parms.N_RB_UL,((DCI0_10MHz_FDD_t*)&UL_alloc_pdu)->rballoc,*(uint32_t *)&UL_alloc_pdu);
((
DCI0_10MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
mcs
=
mcs
;
((
DCI0_10MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
ndi
=
1
;
((
DCI0_10MHz_FDD_t
*
)
&
UL_alloc_pdu
)
->
TPC
=
0
;
...
...
@@ -754,16 +754,15 @@ int main(int argc, char **argv)
eNB
->
frame_parms
.
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
groupAssignmentPUSCH
=
0
;
eNB_rxtx_proc_t
*
proc_rxtx
=
&
eNB
->
proc
.
proc_rxtx
[
subframe
&
1
];
proc_rxtx
->
frame_rx
=
1
;
proc_rxtx
->
subframe_rx
=
subframe
;
proc_rxtx
->
frame_tx
=
pdcch_alloc2ul_frame
(
&
eNB
->
frame_parms
,
1
,
subframe
);
proc_rxtx
->
subframe_tx
=
pdcch_alloc2ul_subframe
(
&
eNB
->
frame_parms
,
subframe
);
eNB
->
proc
.
frame_rx
=
1
;
eNB
->
proc
.
subframe_rx
=
subframe
;
eNB
->
proc
.
frame_tx
=
pdcch_alloc2ul_frame
(
&
eNB
->
frame_parms
,
1
,
subframe
);
eNB
->
proc
.
subframe_tx
=
pdcch_alloc2ul_subframe
(
&
eNB
->
frame_parms
,
subframe
);
UE
->
frame_tx
=
eNB
->
proc
.
frame_rx
;
UE
->
frame_rx
=
eNB
->
proc
.
frame_tx
;
UE
->
frame_tx
=
proc_rxtx
->
frame_rx
;
UE
->
frame_rx
=
proc_rxtx
->
frame_tx
;
printf
(
"Init UL hopping UE
\n
"
);
init_ul_hopping
(
&
UE
->
frame_parms
);
...
...
@@ -773,11 +772,11 @@ int main(int argc, char **argv)
UE
->
dlsch
[
0
][
0
]
->
harq_ack
[
ul_subframe2pdcch_alloc_subframe
(
&
eNB
->
frame_parms
,
subframe
)].
send_harq_status
=
1
;
UE
->
ulsch_Msg3_active
[
eNB_id
]
=
0
;
UE
->
ul_power_control_dedicated
[
eNB_id
].
accumulationEnabled
=
1
;
generate_ue_ulsch_params_from_dci
((
void
*
)
&
UL_alloc_pdu
,
14
,
eNB
->
proc
.
subframe_tx
,
proc_rxtx
->
subframe_tx
,
format0
,
UE
,
SI_RNTI
,
...
...
@@ -789,7 +788,7 @@ int main(int argc, char **argv)
// printf("RIV %d\n",UL_alloc_pdu.rballoc);
generate_eNB_ulsch_params_from_dci
(
eNB
,
generate_eNB_ulsch_params_from_dci
(
eNB
,
proc_rxtx
,
(
void
*
)
&
UL_alloc_pdu
,
14
,
format0
,
...
...
@@ -848,7 +847,7 @@ int main(int argc, char **argv)
harq_pid
=
subframe2harq_pid
(
&
UE
->
frame_parms
,
UE
->
frame_tx
,
subframe
);
input_buffer_length
=
UE
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
TBS
/
8
;
input_buffer
=
(
unsigned
char
*
)
m
alloc
(
input_buffer_length
+
4
);
input_buffer
=
(
unsigned
char
*
)
m
emalign
(
32
,
input_buffer_length
+
6
4
);
// printf("UL frame %d/subframe %d, harq_pid %d\n",UE->frame,subframe,harq_pid);
if
(
input_fdUL
==
NULL
)
{
...
...
@@ -1230,7 +1229,7 @@ int main(int argc, char **argv)
*/
start_meas
(
&
eNB
->
ulsch_demodulation_stats
);
rx_ulsch
(
eNB
,
rx_ulsch
(
eNB
,
proc_rxtx
,
0
,
// this is the effective sector id
0
,
// this is the UE_id
eNB
->
ulsch
,
...
...
@@ -1253,7 +1252,7 @@ int main(int argc, char **argv)
start_meas
(
&
eNB
->
ulsch_decoding_stats
);
ret
=
ulsch_decoding
(
eNB
,
ret
=
ulsch_decoding
(
eNB
,
proc_rxtx
,
0
,
// UE_id
control_only_flag
,
1
,
// Nbundled
...
...
@@ -1303,7 +1302,7 @@ int main(int argc, char **argv)
print_CQI
(
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
o
,
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
uci_format
,
0
,
eNB
->
frame_parms
.
N_RB_DL
);
dump_ulsch
(
eNB
,
0
);
dump_ulsch
(
eNB
,
proc_rxtx
,
0
);
exit
(
-
1
);
}
...
...
@@ -1332,7 +1331,7 @@ int main(int argc, char **argv)
eNB
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
c
[
s
][
i
]
^
UE
->
ulsch
[
0
]
->
harq_processes
[
harq_pid
]
->
c
[
s
][
i
]);
}
dump_ulsch
(
eNB
,
0
);
dump_ulsch
(
eNB
,
proc_rxtx
,
0
);
exit
(
-
1
);
}
...
...
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