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
canghaiwuhen
OpenXG-RAN
Commits
a2e7ddee
Commit
a2e7ddee
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
89eba068
Changes
10
Hide 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 @
a2e7ddee
...
...
@@ -233,7 +233,7 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
loop
++
;
#endif
for
(
i
=
0
;
i
<
loop
;
i
++
)
{
// int cur_byte=i<<3;
// for (b=0;b<8;b++)
...
...
@@ -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__)
...
...
@@ -584,7 +587,7 @@ void threegpplte_turbo_encoder(unsigned char *input,
for
(
state0
=
state1
=
i
=
0
;
i
<
input_length_bytes
;
i
++
)
{
cur_s1
=
input
[
i
];
cur_s2
=
systematic2
[
i
];
for
(
code_rate
=
0
;
code_rate
<
3
;
code_rate
++
)
{
#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 @
a2e7ddee
...
...
@@ -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 @
a2e7ddee
...
...
@@ -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 @
a2e7ddee
...
...
@@ -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 @
a2e7ddee
...
...
@@ -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 @
a2e7ddee
...
...
@@ -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 @
a2e7ddee
...
...
@@ -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 @
a2e7ddee
...
...
@@ -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 @
a2e7ddee
...
...
@@ -45,8 +45,9 @@ DIO_s8 DIO_LinearToALaw(DIO_s16 sample)
};
DIO_s32
sign
,
exponent
,
mantissa
;
DIO_s8
compandedValue
;
sample
=
(
sample
==-
32768
)
?
-
32767
:
sample
;
DIO_s8
compandedValue
;
sample
=
(
sample
==-
32768
)
?
-
32767
:
sample
;
sign
=
((
~
sample
)
>>
8
)
&
0x80
;
if
(
!
sign
)
sample
=
(
short
)
-
sample
;
...
...
@@ -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 @
a2e7ddee
...
...
@@ -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