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
4abc1d21
Commit
4abc1d21
authored
Mar 09, 2017
by
gabrielC
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
20 MHz UE fix
parent
83b311be
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
17 deletions
+29
-17
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+15
-8
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+14
-9
No files found.
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
4abc1d21
...
...
@@ -3356,7 +3356,7 @@ ch_amp = ((pilots) ? (dlsch_ue[0]->sqrt_rho_b) : (dlsch_ue[0]->sqrt_rho_a));
//compute average channel_level on each (TX,RX) antenna pair
void
dlsch_channel_level
(
int
**
dl_ch_estimates_ext
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int
*
avg
,
int
32_t
*
avg
,
uint8_t
symbol
,
unsigned
short
nb_rb
)
{
...
...
@@ -3365,10 +3365,16 @@ void dlsch_channel_level(int **dl_ch_estimates_ext,
short
rb
;
unsigned
char
aatx
,
aarx
,
nre
=
12
,
symbol_mod
;
__m128i
*
dl_ch128
,
avg128D
;
__m128i
*
dl_ch128
,
avg128D
,
coeff128
;
symbol_mod
=
(
symbol
>=
(
7
-
frame_parms
->
Ncp
))
?
symbol
-
(
7
-
frame_parms
->
Ncp
)
:
symbol
;
float
one_over_nb_re
=
0
;
one_over_nb_re
=
1
/
(
nb_rb
*
12
);
int16_t
one_over_nb_re_q1_15
=
(
int16_t
)(
one_over_nb_re
*
(
float
)(
1
<<
15
)
);
coeff128
=
_mm_set_epi16
(
one_over_nb_re_q1_15
,
one_over_nb_re_q1_15
,
one_over_nb_re_q1_15
,
one_over_nb_re_q1_15
,
one_over_nb_re_q1_15
,
one_over_nb_re_q1_15
,
one_over_nb_re_q1_15
,
one_over_nb_re_q1_15
);
for
(
aatx
=
0
;
aatx
<
frame_parms
->
nb_antenna_ports_eNB
;
aatx
++
)
for
(
aarx
=
0
;
aarx
<
frame_parms
->
nb_antennas_rx
;
aarx
++
)
{
//clear average level
...
...
@@ -3380,8 +3386,9 @@ void dlsch_channel_level(int **dl_ch_estimates_ext,
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
// printf("rb %d : ",rb);
// print_shorts("ch",&dl_ch128[0]);
avg128D
=
_mm_add_epi32
(
avg128D
,
_mm_madd_epi16
(
dl_ch128
[
0
],
dl_ch128
[
0
]));
avg128D
=
_mm_add_epi32
(
avg128D
,
_mm_madd_epi16
(
dl_ch128
[
1
],
dl_ch128
[
1
]));
avg128D
=
_mm_add_epi32
(
avg128D
,
_mm_madd_epi16
(
dl_ch128
[
0
],
_mm_srai_epi16
(
_mm_mulhi_epi16
(
dl_ch128
[
0
],
coeff128
),
15
)));
avg128D
=
_mm_add_epi32
(
avg128D
,
_mm_madd_epi16
(
dl_ch128
[
1
],
_mm_srai_epi16
(
_mm_mulhi_epi16
(
dl_ch128
[
1
],
coeff128
),
15
)));
if
(((
symbol_mod
==
0
)
||
(
symbol_mod
==
(
frame_parms
->
Ncp
-
1
)))
&&
(
frame_parms
->
mode1_flag
==
0
))
{
dl_ch128
+=
2
;
}
...
...
@@ -3405,10 +3412,10 @@ void dlsch_channel_level(int **dl_ch_estimates_ext,
else
nre
=
12
;
avg
[(
aatx
<<
1
)
+
aarx
]
=
(((
in
t
*
)
&
avg128D
)[
0
]
+
((
in
t
*
)
&
avg128D
)[
1
]
+
((
in
t
*
)
&
avg128D
)[
2
]
+
((
int
*
)
&
avg128D
)[
3
])
/
(
nb_rb
*
nre
);
avg
[(
aatx
<<
1
)
+
aarx
]
=
(((
int32_
t
*
)
&
avg128D
)[
0
]
+
((
int32_
t
*
)
&
avg128D
)[
1
]
+
((
int32_
t
*
)
&
avg128D
)[
2
]
+
((
int32_t
*
)
&
avg128D
)[
3
]
);
// printf("Channel level : %d\n",avg[(aatx<<1)+aarx]);
}
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
4abc1d21
...
...
@@ -1048,7 +1048,7 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, uint8_t empt
#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)
int
overflow
=
0
;
int
k
,
l
;
int
dummy_tx_buffer
[
3840
*
4
]
__attribute__
((
aligned
(
16
)));
int
dummy_tx_buffer
[
frame_parms
->
samples_per_tti
]
__attribute__
((
aligned
(
16
)));
#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON
,
VCD_FUNCTION_IN
);
...
...
@@ -1081,11 +1081,15 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, uint8_t empt
overflow
=
ulsch_start
-
9
*
frame_parms
->
samples_per_tti
;
for
(
aa
=
0
;
aa
<
frame_parms
->
nb_antennas_tx
;
aa
++
)
{
memset
(
&
ue
->
common_vars
.
txdata
[
aa
][
ulsch_start
],
0
,
4
*
cmin
(
frame_parms
->
samples_per_tti
-
overflow
,
frame_parms
->
samples_per_tti
));
if
(
overflow
>
0
)
if
(
overflow
>
0
)
{
memset
(
&
ue
->
common_vars
.
txdata
[
aa
][
ulsch_start
],
0
,
4
*
(
frame_parms
->
samples_per_tti
-
overflow
));
memset
(
&
ue
->
common_vars
.
txdata
[
aa
][
0
],
0
,
4
*
overflow
);
}
else
{
memset
(
&
ue
->
common_vars
.
txdata
[
aa
][
ulsch_start
],
0
,
4
*
frame_parms
->
samples_per_tti
);
}
}
/*#else
overflow = ulsch_start - 9*frame_parms->samples_per_tti;
...
...
@@ -1480,7 +1484,7 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
LOG_D
(
PHY
,
"[UE %d][PDSCH %x] AbsSubFrame %d.%d Generating ACK (%d,%d) for %d bits on PUSCH
\n
"
,
Mod_id
,
ue
->
ulsch
[
eNB_id
]
->
rnti
,
frame_tx
,
subframe_tx
,
frame_tx
%
1024
,
subframe_tx
,
ue
->
ulsch
[
eNB_id
]
->
o_ACK
[
0
],
ue
->
ulsch
[
eNB_id
]
->
o_ACK
[
1
],
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
O_ACK
);
}
...
...
@@ -1644,8 +1648,8 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
T
(
T_UE_PHY_PUSCH_TX_POWER
,
T_INT
(
eNB_id
),
T_INT
(
Mod_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
tx_power_dBm
[
subframe_tx
]),
T_INT
(
tx_amp
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
f_pusch
),
T_INT
(
get_PL
(
Mod_id
,
0
,
eNB_id
)),
T_INT
(
nb_rb
));
#endif
LOG_D
(
PHY
,
"[UE %d][PUSCH %d]
Frame %d subframe
%d, generating PUSCH, Po_PUSCH: %d dBm (max %d dBm), amp %d
\n
"
,
Mod_id
,
harq_pid
,
frame_tx
,
subframe_tx
,
ue
->
tx_power_dBm
[
subframe_tx
],
ue
->
tx_power_max_dBm
,
tx_amp
);
LOG_D
(
PHY
,
"[UE %d][PUSCH %d]
AbsSubFrame %d.
%d, generating PUSCH, Po_PUSCH: %d dBm (max %d dBm), amp %d
\n
"
,
Mod_id
,
harq_pid
,
frame_tx
%
1024
,
subframe_tx
,
ue
->
tx_power_dBm
[
subframe_tx
],
ue
->
tx_power_max_dBm
,
tx_amp
);
start_meas
(
&
ue
->
ulsch_modulation_stats
);
ulsch_modulation
(
ue
->
common_vars
.
txdataF
,
tx_amp
,
...
...
@@ -1943,7 +1947,8 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
(
uint8_t
*
)
&
pucch_payload
,
&
len
);
LOG_D
(
PHY
,
"PUCCH feedback AbsSubframe %d.%d SR %d NbCW %d AckNack %d.%d CQI %d RI %d format %d pucch_resource %d pucch_payload %d %d
\n
"
,
frame_tx
,
subframe_tx
,
SR_payload
,
nb_cw
,
pucch_ack_payload
[
0
],
pucch_ack_payload
[
1
],
cqi_status
,
ri_status
,
format
,
pucch_resource
,
pucch_payload
[
0
],
pucch_payload
[
1
]);
LOG_D
(
PHY
,
"PUCCH feedback AbsSubframe %d.%d SR %d NbCW %d AckNack %d.%d CQI %d RI %d format %d pucch_resource %d pucch_payload %d %d
\n
"
,
frame_tx
%
1024
,
subframe_tx
,
SR_payload
,
nb_cw
,
pucch_ack_payload
[
0
],
pucch_ack_payload
[
1
],
cqi_status
,
ri_status
,
format
,
pucch_resource
,
pucch_payload
[
0
],
pucch_payload
[
1
]);
// Part - IV
...
...
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