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
1540535b
Commit
1540535b
authored
Jul 20, 2017
by
hbilel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- fix init prach struct + fix TO compensation for 20MHz case
parent
003594d9
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
90 additions
and
44 deletions
+90
-44
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+4
-0
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
+50
-18
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
+3
-3
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+23
-21
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+3
-0
openair1/PHY/defs.h
openair1/PHY/defs.h
+1
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+5
-2
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+1
-0
No files found.
openair1/PHY/INIT/lte_init.c
View file @
1540535b
...
...
@@ -1089,6 +1089,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
LTE_UE_COMMON
*
const
common_vars
=
&
ue
->
common_vars
;
LTE_UE_PDSCH
**
const
pdsch_vars_SI
=
ue
->
pdsch_vars_SI
;
LTE_UE_PDSCH
**
const
pdsch_vars_ra
=
ue
->
pdsch_vars_ra
;
LTE_UE_PDSCH
**
const
pdsch_vars_p
=
ue
->
pdsch_vars_p
;
LTE_UE_PDSCH
**
const
pdsch_vars_mch
=
ue
->
pdsch_vars_MCH
;
LTE_UE_PDSCH
*
(
*
pdsch_vars_th
)[][
NUMBER_OF_CONNECTED_eNB_MAX
+
1
]
=
&
ue
->
pdsch_vars
;
LTE_UE_PDCCH
*
(
*
pdcch_vars_th
)[][
NUMBER_OF_CONNECTED_eNB_MAX
]
=
&
ue
->
pdcch_vars
;
...
...
@@ -1184,6 +1185,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_p
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
pdsch_vars_mch
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
));
prach_vars
[
eNB_id
]
=
(
LTE_UE_PRACH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PRACH
));
pbch_vars
[
eNB_id
]
=
(
LTE_UE_PBCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PBCH
));
...
...
@@ -1247,6 +1249,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
}
phy_init_lte_ue__PDSCH
(
pdsch_vars_SI
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_ra
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_p
[
eNB_id
],
fp
);
phy_init_lte_ue__PDSCH
(
pdsch_vars_mch
[
eNB_id
],
fp
);
// 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE
...
...
@@ -1311,6 +1314,7 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
pdsch_vars_SI
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_ra
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
pdsch_vars_p
[
eNB_id
]
=
(
LTE_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
LTE_UE_PDSCH
)
);
if
(
abstraction_flag
==
0
)
{
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
...
...
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
View file @
1540535b
...
...
@@ -40,6 +40,8 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
{
static
int
max_pos_fil
=
0
;
static
int
count_max_pos_ok
=
0
;
static
int
first_time
=
1
;
int
temp
=
0
,
i
,
aa
,
max_val
=
0
,
max_pos
=
0
;
int
diff
;
short
Re
,
Im
,
ncoef
;
...
...
@@ -76,30 +78,60 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
max_pos_fil
=
((
max_pos_fil
*
coef
)
+
(
max_pos
*
ncoef
))
>>
15
;
// do not filter to have proactive timing adjustment
max_pos_fil
=
max_pos
;
diff
=
max_pos_fil
-
(
frame_parms
->
nb_prefix_samples
>>
3
);
if
(
abs
(
diff
)
<
SYNCH_HYST
)
ue
->
rx_offset
=
0
;
else
ue
->
rx_offset
=
diff
;
if
(
ue
->
rx_offset
<
0
)
ue
->
rx_offset
+=
FRAME_LENGTH_COMPLEX_SAMPLES
;
//max_pos_fil = max_pos;
if
(
subframe
==
6
)
{
diff
=
max_pos_fil
-
(
frame_parms
->
nb_prefix_samples
>>
3
);
if
(
abs
(
diff
)
<
SYNCH_HYST
)
ue
->
rx_offset
=
0
;
else
ue
->
rx_offset
=
diff
;
if
(
abs
(
diff
)
<
5
)
count_max_pos_ok
++
;
else
count_max_pos_ok
=
0
;
if
(
count_max_pos_ok
>
10
&&
first_time
==
1
)
{
first_time
=
0
;
ue
->
time_sync_cell
=
1
;
if
(
ue
->
mac_enabled
==
1
)
{
LOG_I
(
PHY
,
"[UE%d] Sending synch status to higher layers
\n
"
,
ue
->
Mod_id
);
//mac_resynch();
mac_xface
->
dl_phy_sync_success
(
ue
->
Mod_id
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
0
,
1
);
//ue->common_vars.eNb_id);
ue
->
UE_mode
[
0
]
=
PRACH
;
}
else
{
ue
->
UE_mode
[
0
]
=
PUSCH
;
}
}
if
(
ue
->
rx_offset
>=
FRAME_LENGTH_COMPLEX_SAMPLES
)
ue
->
rx_offset
-
=
FRAME_LENGTH_COMPLEX_SAMPLES
;
if
(
ue
->
rx_offset
<
0
)
ue
->
rx_offset
+
=
FRAME_LENGTH_COMPLEX_SAMPLES
;
if
(
ue
->
rx_offset
>=
FRAME_LENGTH_COMPLEX_SAMPLES
)
ue
->
rx_offset
-=
FRAME_LENGTH_COMPLEX_SAMPLES
;
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"AbsSubframe %d.%d: rx_offset (after) = %d : max_pos = %d,max_pos_fil = %d (peak %d) target_pos %d
\n
"
,
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
,
subframe
,
ue
->
rx_offset
,
max_pos
,
max_pos_fil
,
temp
,(
frame_parms
->
nb_prefix_samples
>>
3
));
#endif //DEBUG_PHY
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH
,
VCD_FUNCTION_OUT
);
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"AbsSubframe %d.%d: diff =%i rx_offset (final) = %i : clear %d,max_pos = %d,max_pos_fil = %d (peak %d) max_val %d target_pos %d
\n
"
,
ue
->
proc
.
proc_rxtx
[
subframe
%
RX_NB_TH
].
frame_rx
,
subframe
,
diff
,
ue
->
rx_offset
,
clear
,
max_pos
,
max_pos_fil
,
temp
,
max_val
,
(
frame_parms
->
nb_prefix_samples
>>
3
));
#endif //DEBUG_PHY
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH
,
VCD_FUNCTION_OUT
);
}
}
...
...
openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
View file @
1540535b
...
...
@@ -215,7 +215,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
}
else
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
[
aarx
][(
13
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
-
1
)
%
RX_NB_TH
].
rxdataF
[
aarx
][(
13
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
2
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
//-ve spectrum from SSS
...
...
@@ -239,7 +239,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
}
else
{
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
[
aarx
][(
14
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_sss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
-
1
)
%
RX_NB_TH
].
rxdataF
[
aarx
][(
14
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
rxF_pss
=
(
int16_t
*
)
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
[
aarx
][(
3
*
ue
->
frame_parms
.
ofdm_symbol_size
)];
}
// ue->measurements.n0_power[aarx] += (((int32_t)rxF_pss[-72]*rxF_pss[-72])+((int32_t)rxF_pss[-71]*rxF_pss[-71]));
...
...
@@ -278,7 +278,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
%
RX_NB_TH
)].
rxdataF
;
rxF_pss
=
(
int16_t
*
)
&
rxdataF
[
aarx
][((
pss_symb
*
(
ue
->
frame_parms
.
ofdm_symbol_size
)))];
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
+
1
)
%
RX_NB_TH
].
rxdataF
;
rxdataF
=
ue
->
common_vars
.
common_vars_rx_data_per_thread
[(
subframe
-
1
)
%
RX_NB_TH
].
rxdataF
;
rxF_sss
=
(
int16_t
*
)
&
rxdataF
[
aarx
][((
sss_symb
*
(
ue
->
frame_parms
.
ofdm_symbol_size
)))];
//-ve spectrum from SSS
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
1540535b
...
...
@@ -5291,29 +5291,31 @@ void prepare_dl_decoding_format1_1A(DCI_format_t dci_format,
pdlsch0_harq
->
first_tx
=
0
;
pdlsch0_harq
->
status
=
ACTIVE
;
}
else
if
(
rv1
!=
0
)
//NDI has not been toggled but rv was increased by eNB: retransmission
{
if
(
pdlsch0_harq
->
status
==
SCH_IDLE
)
//packet was actually decoded in previous transmission (ACK was missed by eNB)
//However, the round is not a good check as it might have been decoded in a retransmission prior to this one.
{
LOG_D
(
PHY
,
"skip pdsch decoding and report ack
\n
"
);
// skip pdsch decoding and report ack
//pdlsch0_harq->status = SCH_IDLE;
pdlsch0
->
active
=
0
;
pdlsch0
->
harq_ack
[
subframe
].
ack
=
1
;
pdlsch0
->
harq_ack
[
subframe
].
harq_id
=
harq_pid
;
pdlsch0
->
harq_ack
[
subframe
].
send_harq_status
=
1
;
//pdlsch0_harq->first_tx = 0;
}
else
//normal retransmission
{
// nothing special to do
}
}
else
if
(
rv1
!=
0
)
//NDI has not been toggled but rv was increased by eNB: retransmission
{
if
(
pdlsch0_harq
->
status
==
SCH_IDLE
)
//packet was actually decoded in previous transmission (ACK was missed by eNB)
//However, the round is not a good check as it might have been decoded in a retransmission prior to this one.
else
{
LOG_D
(
PHY
,
"skip pdsch decoding and report ack
\n
"
);
// skip pdsch decoding and report ack
//pdlsch0_harq->status = SCH_IDLE;
pdlsch0
->
active
=
0
;
pdlsch0
->
harq_ack
[
subframe
].
ack
=
1
;
pdlsch0
->
harq_ack
[
subframe
].
harq_id
=
harq_pid
;
pdlsch0
->
harq_ack
[
subframe
].
send_harq_status
=
1
;
//pdlsch0_harq->first_tx = 0;
}
else
//normal retransmission
{
// nothing special to do
}
pdlsch0_harq
->
status
=
ACTIVE
;
}
}
...
...
openair1/PHY/LTE_TRANSPORT/initial_sync.c
View file @
1540535b
...
...
@@ -493,6 +493,8 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
ue
->
common_vars
.
freq_offset
);
#endif
// send sync status to higher layers later when timing offset converge to target timing
#if 0
if (ue->mac_enabled==1) {
LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",ue->Mod_id);
//mac_resynch();
...
...
@@ -502,6 +504,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
else {
ue->UE_mode[0] = PUSCH;
}
#endif
generate_pcfich_reg_mapping
(
frame_parms
);
generate_phich_reg_mapping
(
frame_parms
);
...
...
openair1/PHY/defs.h
View file @
1540535b
...
...
@@ -838,6 +838,7 @@ typedef struct {
uint8_t
decode_MIB
;
int
rx_offset
;
/// Timing offset
int
rx_offset_diff
;
/// Timing adjustment for ofdm symbol0 on HW USRP
int
time_sync_cell
;
int
timing_advance
;
///timing advance signalled from eNB
int
hw_timing_advance
;
int
N_TA_offset
;
///timing offset used in TDD
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
1540535b
...
...
@@ -271,7 +271,7 @@ void phy_reset_ue(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index)
PHY_VARS_UE
*
ue
=
PHY_vars_UE_g
[
Mod_id
][
CC_id
];
//[NUMBER_OF_RX_THREAD=2][NUMBER_OF_CONNECTED_eNB_MAX][2];
for
(
int
l
=
0
;
l
<
2
;
l
++
)
{
for
(
int
l
=
0
;
l
<
RX_NB_TH
;
l
++
)
{
for
(
i
=
0
;
i
<
NUMBER_OF_CONNECTED_eNB_MAX
;
i
++
)
{
for
(
j
=
0
;
j
<
2
;
j
++
)
{
//DL HARQ
...
...
@@ -336,6 +336,7 @@ void ra_succeeded(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index)
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
ulsch
[
eNB_index
]
->
harq_processes
[
i
]
->
status
=
IDLE
;
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
dlsch
[
0
][
eNB_index
][
0
]
->
harq_processes
[
i
]
->
round
=
0
;
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
dlsch
[
1
][
eNB_index
][
0
]
->
harq_processes
[
i
]
->
round
=
0
;
PHY_vars_UE_g
[
Mod_id
][
CC_id
]
->
ulsch
[
eNB_index
]
->
harq_processes
[
i
]
->
subframe_scheduling_flag
=
0
;
}
}
...
...
@@ -2662,7 +2663,8 @@ void ue_measurement_procedures(
}
if
((
subframe_rx
==
0
)
&&
(
slot
==
0
)
&&
(
l
==
(
4
-
frame_parms
->
Ncp
)))
{
// accumulate and filter timing offset estimation every subframe (instead of every frame)
if
((
(
slot
%
2
)
==
0
)
&&
(
l
==
(
4
-
frame_parms
->
Ncp
)))
{
// AGC
...
...
@@ -5636,6 +5638,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
if
(
ue
->
mac_enabled
==
1
)
{
if
(
slot
==
0
)
{
//LOG_I(PHY,"[UE %d] Frame %d, subframe %d, star ue_scheduler\n", ue->Mod_id,frame_rx,subframe_tx);
ret
=
mac_xface
->
ue_scheduler
(
ue
->
Mod_id
,
frame_rx
,
subframe_rx
,
...
...
targets/RT/USER/lte-ue.c
View file @
1540535b
...
...
@@ -725,6 +725,7 @@ void *UE_thread(void *arg) {
UE
->
frame_parms
.
nb_antennas_rx
),
""
);
}
UE
->
rx_offset
=
0
;
UE
->
time_sync_cell
=
0
;
//UE->proc.proc_rxtx[0].frame_rx++;
//UE->proc.proc_rxtx[1].frame_rx++;
for
(
th_id
=
0
;
th_id
<
RX_NB_TH
;
th_id
++
)
{
...
...
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