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
32623507
Commit
32623507
authored
6 years ago
by
matzakos
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Applied bugfix for PSCCH signal level estimation
parent
c44152e6
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
31 additions
and
25 deletions
+31
-25
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+4
-3
openair1/PHY/LTE_UE_TRANSPORT/slbch.c
openair1/PHY/LTE_UE_TRANSPORT/slbch.c
+2
-2
openair1/PHY/LTE_UE_TRANSPORT/sldch.c
openair1/PHY/LTE_UE_TRANSPORT/sldch.c
+2
-2
openair1/PHY/LTE_UE_TRANSPORT/slsch.c
openair1/PHY/LTE_UE_TRANSPORT/slsch.c
+23
-18
No files found.
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
View file @
32623507
...
...
@@ -1035,7 +1035,8 @@ void ulsch_channel_compensation(int32_t **rxdataF_ext,
void
ulsch_channel_level
(
int32_t
**
drs_ch_estimates_ext
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
avg
,
uint16_t
nb_rb
)
uint16_t
nb_rb
,
int
symbol_offset
)
{
int16_t
rb
;
...
...
@@ -1051,7 +1052,7 @@ void ulsch_channel_level(int32_t **drs_ch_estimates_ext,
//clear average level
#if defined(__x86_64__) || defined(__i386__)
avg128U
=
_mm_setzero_ps
();
ul_ch128
=
(
__m128i
*
)
drs_ch_estimates_ext
[
aarx
]
;
ul_ch128
=
(
__m128i
*
)
((
symbol_offset
*
frame_parms
->
N_RB_UL
*
12
)
+
drs_ch_estimates_ext
[
aarx
])
;
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
...
...
@@ -1224,7 +1225,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
ulsch_channel_level
(
pusch_vars
->
drs_ch_estimates
,
frame_parms
,
avgU
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
);
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
0
);
LOG_D
(
PHY
,
"[ULSCH] avg[0] %d
\n
"
,
avgU
[
0
]);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_UE_TRANSPORT/slbch.c
View file @
32623507
...
...
@@ -48,7 +48,7 @@
//#define PSBCH_DEBUG 1
void
dft_lte
(
int32_t
*
z
,
int32_t
*
d
,
int32_t
Msc_PUSCH
,
uint8_t
Nsymb
);
void
ulsch_channel_level
(
int32_t
**
drs_ch_estimates_ext
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
avg
,
uint16_t
nb_rb
);
void
ulsch_channel_level
(
int32_t
**
drs_ch_estimates_ext
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
avg
,
uint16_t
nb_rb
,
int
symbol_offset
);
void
lte_idft
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
*
z
,
uint16_t
Msc_PUSCH
);
void
pbch_quantize
(
int8_t
*
pbch_llr8
,
int16_t
*
pbch_llr
,
uint16_t
len
);
void
ulsch_extract_rbs_single
(
int32_t
**
rxdataF
,
...
...
@@ -251,7 +251,7 @@ int rx_psbch(PHY_VARS_UE *ue,int frame_rx,int subframe_rx) {
ulsch_channel_level
(
drs_ch_estimates
,
&
ue
->
frame_parms
,
avgU
,
2
);
2
,
0
);
#ifdef PSBCH_DEBUG
if
(
ue
->
is_synchronizedSL
==
1
&&
ue
->
frame_parms
.
Nid_SL
==
170
)
write_output
(
"drsbch_est0.m"
,
"drsbchest0"
,
drs_ch_estimates
[
0
],
ue
->
frame_parms
.
N_RB_UL
*
12
*
14
,
1
,
1
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_UE_TRANSPORT/sldch.c
View file @
32623507
...
...
@@ -40,7 +40,7 @@
#include "SCHED_UE/sched_UE.h"
extern
uint8_t
D2D_en
;
void
ulsch_channel_level
(
int32_t
**
drs_ch_estimates_ext
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
avg
,
uint16_t
nb_rb
);
void
ulsch_channel_level
(
int32_t
**
drs_ch_estimates_ext
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
avg
,
uint16_t
nb_rb
,
int
symbol_offset
);
void
ulsch_extract_rbs_single
(
int32_t
**
rxdataF
,
int32_t
**
rxdataF_ext
,
uint32_t
first_rb
,
...
...
@@ -168,7 +168,7 @@ void sldch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
ulsch_channel_level
((
int32_t
**
)
drs_ch_estimates
,
&
ue
->
frame_parms
,
avgU
,
2
);
2
,
0
);
#ifdef PSDCH_DEBUG
write_output
(
"drs_ext0.m"
,
"drsest0"
,
drs_ch_estimates
[
0
],
ue
->
frame_parms
.
N_RB_UL
*
12
*
14
,
1
,
1
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_UE_TRANSPORT/slsch.c
View file @
32623507
...
...
@@ -44,7 +44,7 @@ extern int
multicast_link_write_sock
(
int
groupP
,
char
*
dataP
,
uint32_t
sizeP
);
extern
uint8_t
D2D_en
;
void
ulsch_channel_level
(
int32_t
**
drs_ch_estimates_ext
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
avg
,
uint16_t
nb_rb
);
void
ulsch_channel_level
(
int32_t
**
drs_ch_estimates_ext
,
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
*
avg
,
uint16_t
nb_rb
,
int
symbol_offset
);
void
ulsch_extract_rbs_single
(
int32_t
**
rxdataF
,
int32_t
**
rxdataF_ext
,
uint32_t
first_rb
,
...
...
@@ -392,7 +392,7 @@ void pscch_codingmodulation(PHY_VARS_UE *ue,int frame_tx,int subframe_tx,uint32_
// coding part
if
(
ue
->
pscch_coded
==
0
)
{
LOG_
I
(
PHY
,
"pscch_coding
\n
"
);
LOG_
D
(
PHY
,
"pscch_coding
\n
"
);
sci
=
sci_mapping
(
ue
);
int
length
=
log2_approx
(
slsch
->
N_SL_RB_data
*
((
ue
->
slsch_rx
.
N_SL_RB_data
+
1
)
>>
1
))
+
32
;
...
...
@@ -476,7 +476,7 @@ void pscch_codingmodulation(PHY_VARS_UE *ue,int frame_tx,int subframe_tx,uint32_
int32_t
d
[
Msymb
];
int16_t
gain_lin_QPSK
=
(
int16_t
)((
tx_amp
*
ONE_OVER_SQRT2_Q15
)
>>
15
);
LOG_
I
(
PHY
,
"pscch modulation, Msymb %d
\n
"
,
Msymb
);
LOG_
D
(
PHY
,
"pscch modulation, Msymb %d
\n
"
,
Msymb
);
for
(
int
i
=
0
,
j
=
0
;
i
<
Msymb
;
i
++
,
j
+=
2
)
{
((
int16_t
*
)
&
d
[
i
])[
0
]
=
(
pscch
->
b_tilde
[
j
]
==
1
)
?
(
-
gain_lin_QPSK
)
:
gain_lin_QPSK
;
...
...
@@ -503,7 +503,7 @@ void pscch_codingmodulation(PHY_VARS_UE *ue,int frame_tx,int subframe_tx,uint32_
int32_t
*
txptr
;
if
(
ue
->
generate_ul_signal
[
subframe_tx
][
0
]
==
0
){
LOG_
I
(
PHY
,
"%d.%d: clearing ul_signal
\n
"
,
frame_tx
,
subframe_tx
);
LOG_
D
(
PHY
,
"%d.%d: clearing ul_signal
\n
"
,
frame_tx
,
subframe_tx
);
for
(
int
aa
=
0
;
aa
<
ue
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
memset
(
&
ue
->
common_vars
.
txdataF
[
aa
][
subframe_tx
*
ue
->
frame_parms
.
ofdm_symbol_size
*
ue
->
frame_parms
.
symbols_per_tti
],
0
,
...
...
@@ -544,7 +544,7 @@ void pscch_codingmodulation(PHY_VARS_UE *ue,int frame_tx,int subframe_tx,uint32_
ue
->
pscch_generated
|=
(
1
+
slot
);
ue
->
generate_ul_signal
[
subframe_tx
][
0
]
=
1
;
LOG_
I
(
PHY
,
"PSCCH signal generated
\n
"
);
LOG_
D
(
PHY
,
"PSCCH signal generated
\n
"
);
}
...
...
@@ -560,7 +560,7 @@ void slsch_codingmodulation(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_tx,in
AssertFatal
(
ue
->
slsch_sdu_active
>
0
,
"ue->slsch_sdu_active isn't active
\n
"
);
LOG_
I
(
PHY
,
"Generating SLSCH for rvidx %d, group_id %d, mcs %d, resource first rb %d, L_crbs %d
\n
"
,
LOG_
D
(
PHY
,
"Generating SLSCH for rvidx %d, group_id %d, mcs %d, resource first rb %d, L_crbs %d
\n
"
,
slsch
->
rvidx
,
slsch
->
group_destination_id
,
slsch
->
mcs
,
slsch
->
RB_start
+
slsch
->
prb_Start_data
,
slsch
->
L_CRBs
);
...
...
@@ -626,7 +626,7 @@ void slsch_codingmodulation(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_tx,in
ulsch
->
harq_processes
[
0
]
->
mcs
=
slsch
->
mcs
;
ulsch
->
Nsymb_pusch
=
((
Nsymb
-
1
)
<<
1
);
LOG_
I
(
PHY
,
"%d.%d : SLSCH nbrb %d, first rb %d
\n
"
,
frame_tx
,
subframe_tx
,
slsch
->
L_CRBs
,
slsch
->
RB_start
+
slsch
->
prb_Start_data
);
LOG_
D
(
PHY
,
"%d.%d : SLSCH nbrb %d, first rb %d
\n
"
,
frame_tx
,
subframe_tx
,
slsch
->
L_CRBs
,
slsch
->
RB_start
+
slsch
->
prb_Start_data
);
ue
->
sl_chan
=
PSSCH_12
;
...
...
@@ -672,7 +672,7 @@ void slsch_codingmodulation(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_tx,in
ue
->
pssch_generated
=
1
;
ue
->
generate_ul_signal
[
subframe_tx
][
0
]
=
1
;
LOG_
I
(
PHY
,
"PSSCH signal generated
\n
"
);
LOG_
D
(
PHY
,
"PSSCH signal generated
\n
"
);
}
void
check_and_generate_pssch
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
int
frame_tx
,
int
subframe_tx
)
{
...
...
@@ -699,7 +699,7 @@ void check_and_generate_pssch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_tx,
absSF_modP
=
absSF_offset
%
P
;
LOG_
I
(
PHY
,
"Checking pssch for absSF_mod P %d, SubframeBitmapSL_length %d
\n
"
,
absSF_modP
,
slsch
->
SubframeBitmapSL_length
);
LOG_
D
(
PHY
,
"Checking pssch for absSF_mod P %d, SubframeBitmapSL_length %d
\n
"
,
absSF_modP
,
slsch
->
SubframeBitmapSL_length
);
// This is the condition for short SCCH bitmap (slsch->SubframeBitmapSL_length bits), check that the current subframe is for SLSCH
if
(
absSF_modP
<
slsch
->
SubframeBitmapSL_length
)
return
;
...
...
@@ -715,7 +715,7 @@ void check_and_generate_pssch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_tx,
"received Itrp %d: TRP8 is used with Itrp in 0...%d
\n
"
,
slsch
->
time_resource_pattern
,
TRP8_MAX
);
LOG_
I
(
PHY
,
"Checking pssch for absSF %d (trp mask %d, rv %d)
\n
"
,
LOG_
D
(
PHY
,
"Checking pssch for absSF %d (trp mask %d, rv %d)
\n
"
,
absSF
,
trp8
[
slsch
->
time_resource_pattern
][
absSF_modP
&
7
],
slsch
->
rvidx
);
// Note : this assumes Ntrp=8 for now
...
...
@@ -789,7 +789,7 @@ void check_and_generate_pscch(PHY_VARS_UE *ue,int frame_tx,int subframe_tx) {
uint32_t
b2
=
(
slsch
->
n_pscch
+
1
+
(
a1
%
(
LPSCCH
-
1
)))
%
LPSCCH
;
LOG_
I
(
PHY
,
"Checking pscch for absSF %d / n_pscch %d (N_SL_RB_SC %d, LPSCCH %d, M_RB_PSCCH_RP %d, a1 %d, a2 %d, b1 %d, b2 %d) pscch_coded %d
\n
"
,
LOG_
D
(
PHY
,
"Checking pscch for absSF %d / n_pscch %d (N_SL_RB_SC %d, LPSCCH %d, M_RB_PSCCH_RP %d, a1 %d, a2 %d, b1 %d, b2 %d) pscch_coded %d
\n
"
,
absSF
,
slsch
->
n_pscch
,
slsch
->
N_SL_RB_SC
,
LPSCCH
,
M_RB_PSCCH_RP
,
a1
,
a2
,
b1
,
b2
,
ue
->
pscch_coded
);
ue
->
slsch_sdu_active
=
1
;
...
...
@@ -933,7 +933,7 @@ void pscch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
ulsch_channel_level
((
int32_t
**
)
drs_ch_estimates
,
&
ue
->
frame_parms
,
avgU
,
1
);
1
,
slot
*
7
);
avgs
=
0
;
for
(
int
aarx
=
0
;
aarx
<
ue
->
frame_parms
.
nb_antennas_rx
;
aarx
++
)
...
...
@@ -943,7 +943,10 @@ void pscch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
log2_maxh
=
(
log2_approx
(
avgs
)
/
2
)
+
log2_approx
(
ue
->
frame_parms
.
nb_antennas_rx
-
1
)
+
4
;
LOG_D
(
PHY
,
"%d.%d: nprb %d slot %d, pssch log2_maxh %d
\n
"
,
frame_rx
,
subframe_rx
,
nprb
,
slot
,
log2_maxh
);
if
(
log2_maxh
>
5
)
LOG_D
(
PHY
,
"%d.%d: nprb %d slot %d, pscch log2_maxh %d (avgs %d, slot energy %d dB)
\n
"
,
frame_rx
,
subframe_rx
,
nprb
,
slot
,
log2_maxh
,
avgs
,
dB_fixed
(
signal_energy
(
&
ue
->
common_vars
.
rxdata
[
0
][((
subframe_rx
<<
1
)
+
slot
)
*
(
ue
->
frame_parms
.
samples_per_tti
>>
1
)],
ue
->
frame_parms
.
samples_per_tti
>>
1
)));
for
(
int
l
=
0
;
l
<
(
ue
->
frame_parms
.
symbols_per_tti
>>
1
)
-
slot
;
l
++
)
{
int
l2
=
l
+
slot
*
(
ue
->
frame_parms
.
symbols_per_tti
>>
1
);
...
...
@@ -1084,8 +1087,9 @@ void pscch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
ue
->
slcch_received
=
1
;
ue
->
slsch_decoded
=
0
;
#ifdef DEBUG_SCI_DECODING
printf
(
"sci %lx (%d bits,RAbits %d) : freq_hop %d, resource_block_coding %d, time_resource_pattern %d, mcs %d, timing_advance_indication %d, group_destination_id %d (gid shift %d result %lx => %lx
\n
"
,
sci_rx_flip
,
length
,
RAbits
,
printf
(
"%d.%d sci %lx (%d bits,RAbits %d) : freq_hop %d, resource_block_coding %d, time_resource_pattern %d, mcs %d, timing_advance_indication %d, group_destination_id %d (gid shift %d result %lx => %lx
\n
"
,
frame_rx
,
subframe_rx
,
sci_rx_flip
,
length
,
RAbits
,
slsch
->
freq_hopping_flag
,
slsch
->
resource_block_coding
,
slsch
->
time_resource_pattern
,
...
...
@@ -1113,7 +1117,8 @@ void pscch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
12*2*(ue->frame_parms.symbols_per_tti>>1),
1,0);
exit(-1);*/
exit(-1);
*/
}
else
{
/*
...
...
@@ -1312,7 +1317,7 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
ulsch_channel_level
((
int32_t
**
)
drs_ch_estimates
,
&
ue
->
frame_parms
,
avgU
,
slsch
->
L_CRBs
);
slsch
->
L_CRBs
,
0
);
#ifdef PSSCH_DEBUG
write_output
(
"drs_ext0.m"
,
"drsest0"
,
drs_ch_estimates
[
0
],
ue
->
frame_parms
.
N_RB_UL
*
12
*
14
,
1
,
1
);
...
...
@@ -1523,7 +1528,7 @@ void slsch_decoding(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,int frame_rx,int subfra
}
else
if
(
ue
->
dlsch_rx_slsch
->
harq_processes
[
0
]
->
rvidx
==
1
&&
ret
==
ue
->
dlsch_rx_slsch
->
max_turbo_iterations
)
{
LOG_
I
(
PHY
,
"sLSCH received in error for group_id %d (L_CRBs %d, mcs %d) power (%d,%d)
\n
"
,
LOG_
D
(
PHY
,
"sLSCH received in error for group_id %d (L_CRBs %d, mcs %d) power (%d,%d)
\n
"
,
slsch
->
group_destination_id
,
slsch
->
L_CRBs
,
slsch
->
mcs
,
dB_fixed
(
ue
->
pusch_slsch
->
ulsch_power
[
0
]),
dB_fixed
(
ue
->
pusch_slsch
->
ulsch_power
[
1
]));
...
...
This diff is collapsed.
Click to expand it.
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