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
838997d0
Commit
838997d0
authored
Sep 18, 2014
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git-svn-id:
http://svn.eurecom.fr/openair4G/trunk@5794
818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent
081b0783
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
68 additions
and
34 deletions
+68
-34
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
+3
-3
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
+4
-4
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+2
-2
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+1
-1
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+2
-2
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+2
-1
openair1/PHY/LTE_TRANSPORT/pmch.c
openair1/PHY/LTE_TRANSPORT/pmch.c
+2
-0
openair1/PHY/LTE_TRANSPORT/prach.c
openair1/PHY/LTE_TRANSPORT/prach.c
+2
-2
openair1/PHY/LTE_TRANSPORT/rar_tools.c
openair1/PHY/LTE_TRANSPORT/rar_tools.c
+1
-1
openair1/PHY/MODULATION/slot_fep.c
openair1/PHY/MODULATION/slot_fep.c
+1
-1
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+1
-2
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+33
-10
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+14
-5
No files found.
openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
View file @
838997d0
...
@@ -53,7 +53,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -53,7 +53,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
ncoef
=
32767
-
coef
;
ncoef
=
32767
-
coef
;
#ifdef DEBUG_PHY
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"frame %d
: rx_offset (before) = %d
\n
"
,
phy_vars_ue
->
frame
_rx
,
phy_vars_ue
->
rx_offset
);
LOG_D
(
PHY
,
"frame %d
, slot %d: rx_offset (before) = %d
\n
"
,
phy_vars_ue
->
frame_rx
,
phy_vars_ue
->
slot
_rx
,
phy_vars_ue
->
rx_offset
);
#endif //DEBUG_PHY
#endif //DEBUG_PHY
...
@@ -77,7 +77,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -77,7 +77,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
else
else
max_pos_fil
=
((
max_pos_fil
*
coef
)
+
(
max_pos
*
ncoef
))
>>
15
;
max_pos_fil
=
((
max_pos_fil
*
coef
)
+
(
max_pos
*
ncoef
))
>>
15
;
diff
=
max_pos_fil
-
2
;
//frame_parms->nb_prefix_samples/8;
diff
=
max_pos_fil
-
2
;
//frame_parms->nb_prefix_samples/8;
if
(
diff
>
SYNCH_HYST
)
if
(
diff
>
SYNCH_HYST
)
...
@@ -91,7 +91,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -91,7 +91,7 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
if
(
phy_vars_ue
->
rx_offset
>=
FRAME_LENGTH_COMPLEX_SAMPLES
)
if
(
phy_vars_ue
->
rx_offset
>=
FRAME_LENGTH_COMPLEX_SAMPLES
)
phy_vars_ue
->
rx_offset
-=
FRAME_LENGTH_COMPLEX_SAMPLES
;
phy_vars_ue
->
rx_offset
-=
FRAME_LENGTH_COMPLEX_SAMPLES
;
#ifdef DEBUG_PHY
#ifdef DEBUG_PHY
LOG_D
(
PHY
,
"frame %d: rx_offset (after) = %d : max_pos = %d,max_pos_fil = %d (peak %d)
\n
"
,
LOG_D
(
PHY
,
"frame %d: rx_offset (after) = %d : max_pos = %d,max_pos_fil = %d (peak %d)
\n
"
,
...
...
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
View file @
838997d0
...
@@ -102,7 +102,7 @@ int lte_est_freq_offset(int **dl_ch_estimates,
...
@@ -102,7 +102,7 @@ int lte_est_freq_offset(int **dl_ch_estimates,
dl_ch
=
(
int16_t
*
)
&
dl_ch_estimates
[
aa
][
12
+
ch_offset
];
dl_ch
=
(
int16_t
*
)
&
dl_ch_estimates
[
aa
][
12
+
ch_offset
];
dl_ch_shift
=
4
+
(
log2_approx
(
dl_channel_level
(
dl_ch
,
frame_parms
))
/
2
);
dl_ch_shift
=
6
+
(
log2_approx
(
dl_channel_level
(
dl_ch
,
frame_parms
))
/
2
);
// printf("dl_ch_shift: %d\n",dl_ch_shift);
// printf("dl_ch_shift: %d\n",dl_ch_shift);
if
(
ch_offset
==
0
)
if
(
ch_offset
==
0
)
...
@@ -131,12 +131,12 @@ int lte_est_freq_offset(int **dl_ch_estimates,
...
@@ -131,12 +131,12 @@ int lte_est_freq_offset(int **dl_ch_estimates,
omega_cpx
->
i
+=
((
struct
complex16
*
)
&
omega
)
->
i
;
omega_cpx
->
i
+=
((
struct
complex16
*
)
&
omega
)
->
i
;
// phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
// phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
phase_offset
+=
atan2
((
double
)
omega_cpx
->
i
,(
double
)
omega_cpx
->
r
);
phase_offset
+=
atan2
((
double
)
omega_cpx
->
i
,(
double
)
omega_cpx
->
r
);
//
printf(
"omega (%d,%d) -> %f\n",omega_cpx->r,omega_cpx->i,phase_offset);
//
LOG_D(PHY,
"omega (%d,%d) -> %f\n",omega_cpx->r,omega_cpx->i,phase_offset);
}
}
// phase_offset /= (frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx);
// phase_offset /= (frame_parms->nb_antennas_rx*frame_parms->nb_antennas_tx);
freq_offset_est
=
(
int
)
(
phase_offset
/
(
2
*
M_PI
)
/
2.5e-4
);
//2.5e-4 is the time between pilot symbols
freq_offset_est
=
(
int
)
(
phase_offset
/
(
2
*
M_PI
)
/
(
frame_parms
->
Ncp
==
NORMAL
?
(
285.8e-6
)
:
(
2.5e-4
))
);
//2.5e-4 is the time between pilot symbols
//
printf(
"symbol %d : freq_offset_est %d\n",l,freq_offset_est);
//
LOG_D(PHY,
"symbol %d : freq_offset_est %d\n",l,freq_offset_est);
// update freq_offset with phase_offset using a moving average filter
// update freq_offset with phase_offset using a moving average filter
if
(
first_run
==
1
)
{
if
(
first_run
==
1
)
{
...
...
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
View file @
838997d0
...
@@ -138,8 +138,8 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB,
...
@@ -138,8 +138,8 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB,
Msc_RS_idx
=
b
;
Msc_RS_idx
=
b
;
#endif
#endif
//
msg("lte_ul_channel_estimation:
subframe %d, Ns %d, l %d, Msc_RS = %d, Msc_RS_idx = %d, u %d, v %d, cyclic_shift %d\n",subframe,Ns,l,Msc_RS, Msc_RS_idx,u,v,cyclic_shift);
//
LOG_I(PHY,"
subframe %d, Ns %d, l %d, Msc_RS = %d, Msc_RS_idx = %d, u %d, v %d, cyclic_shift %d\n",subframe,Ns,l,Msc_RS, Msc_RS_idx,u,v,cyclic_shift);
#ifdef DEBUG_CH
#ifdef DEBUG_CH
#ifdef USER_MODE
#ifdef USER_MODE
if
(
Ns
==
0
)
if
(
Ns
==
0
)
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
838997d0
...
@@ -3678,7 +3678,7 @@ uint8_t ul_subframe2pdcch_alloc_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t
...
@@ -3678,7 +3678,7 @@ uint8_t ul_subframe2pdcch_alloc_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t
}
}
uint
8
_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
){
uint
32
_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
){
if
((
frame_parms
->
frame_type
==
TDD
)
&&
if
((
frame_parms
->
frame_type
==
TDD
)
&&
(
frame_parms
->
tdd_config
==
1
)
&&
(
frame_parms
->
tdd_config
==
1
)
&&
...
...
openair1/PHY/LTE_TRANSPORT/initial_sync.c
View file @
838997d0
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
#include "gain_control.h"
#include "gain_control.h"
#endif
#endif
#define DEBUG_INITIAL_SYNCH
//
#define DEBUG_INITIAL_SYNCH
int
pbch_detection
(
PHY_VARS_UE
*
phy_vars_ue
,
runmode_t
mode
)
{
int
pbch_detection
(
PHY_VARS_UE
*
phy_vars_ue
,
runmode_t
mode
)
{
...
@@ -458,7 +458,7 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
...
@@ -458,7 +458,7 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode) {
#ifdef OPENAIR2
#ifdef OPENAIR2
LOG_I
(
PHY
,
"[PHY][UE%d] Sending synch status to higher layers
\n
"
,
phy_vars_ue
->
Mod_id
);
LOG_I
(
PHY
,
"[PHY][UE%d] Sending synch status to higher layers
\n
"
,
phy_vars_ue
->
Mod_id
);
//mac_resynch();
//mac_resynch();
mac_xface
->
dl_phy_sync_success
(
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
frame_rx
,
0
,
1
);
//phy_vars_ue->lte_ue_common_vars.eNb_id);
mac_xface
->
dl_phy_sync_success
(
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
frame_rx
,
0
,
1
);
//phy_vars_ue->lte_ue_common_vars.eNb_id);
#endif //OPENAIR2
#endif //OPENAIR2
generate_pcfich_reg_mapping
(
frame_parms
);
generate_pcfich_reg_mapping
(
frame_parms
);
...
...
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
838997d0
...
@@ -53,7 +53,8 @@
...
@@ -53,7 +53,8 @@
//unsigned short phich_reg[MAX_NUM_PHICH_GROUPS][3];
//unsigned short phich_reg[MAX_NUM_PHICH_GROUPS][3];
uint8_t
rv_table
[
4
]
=
{
0
,
2
,
3
,
1
};
//36.321 5.4.2.2
uint8_t
rv_table
[
4
]
=
{
0
,
2
,
3
,
1
};
uint8_t
get_mi
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
)
{
uint8_t
get_mi
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
)
{
...
...
openair1/PHY/LTE_TRANSPORT/pmch.c
View file @
838997d0
...
@@ -104,6 +104,8 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
...
@@ -104,6 +104,8 @@ int is_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_par
uint32_t
period
;
uint32_t
period
;
uint8_t
i
;
uint8_t
i
;
// LOG_D(PHY,"is_pmch_subframe: frame %d, subframe %d, num_MBSFN_config %d\n",
// frame,subframe,frame_parms->num_MBSFN_config);
for
(
i
=
0
;
i
<
frame_parms
->
num_MBSFN_config
;
i
++
)
{
// we have at least one MBSFN configuration
for
(
i
=
0
;
i
<
frame_parms
->
num_MBSFN_config
;
i
++
)
{
// we have at least one MBSFN configuration
period
=
1
<<
frame_parms
->
MBSFN_config
[
i
].
radioframeAllocationPeriod
;
period
=
1
<<
frame_parms
->
MBSFN_config
[
i
].
radioframeAllocationPeriod
;
...
...
openair1/PHY/LTE_TRANSPORT/prach.c
View file @
838997d0
...
@@ -801,7 +801,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
...
@@ -801,7 +801,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
uint8_t
new_dft
=
0
;
uint8_t
new_dft
=
0
;
uint8_t
aa
;
uint8_t
aa
;
int32_t
lev
;
int32_t
lev
;
int
8
_t
levdB
;
int
16
_t
levdB
;
int
fft_size
,
log2_ifft_size
;
int
fft_size
,
log2_ifft_size
;
uint8_t
nb_ant_rx
=
1
;
//phy_vars_eNB->lte_frame_parms.nb_antennas_rx;
uint8_t
nb_ant_rx
=
1
;
//phy_vars_eNB->lte_frame_parms.nb_antennas_rx;
...
@@ -1121,7 +1121,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
...
@@ -1121,7 +1121,7 @@ void rx_prach(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe,uint16_t *preamble_ene
for
(
aa
=
0
;
aa
<
nb_ant_rx
;
aa
++
)
{
for
(
aa
=
0
;
aa
<
nb_ant_rx
;
aa
++
)
{
lev
+=
(
int32_t
)
prach_ifft
[
aa
][(
preamble_shift2
+
i
)
<<
2
]
*
prach_ifft
[
aa
][(
preamble_shift2
+
i
)
<<
2
]
+
(
int32_t
)
prach_ifft
[
aa
][
1
+
((
preamble_shift2
+
i
)
<<
2
)]
*
prach_ifft
[
aa
][
1
+
((
preamble_shift2
+
i
)
<<
2
)];
lev
+=
(
int32_t
)
prach_ifft
[
aa
][(
preamble_shift2
+
i
)
<<
2
]
*
prach_ifft
[
aa
][(
preamble_shift2
+
i
)
<<
2
]
+
(
int32_t
)
prach_ifft
[
aa
][
1
+
((
preamble_shift2
+
i
)
<<
2
)]
*
prach_ifft
[
aa
][
1
+
((
preamble_shift2
+
i
)
<<
2
)];
}
}
levdB
=
dB_fixed
(
lev
);
levdB
=
dB_fixed
_times10
(
lev
);
if
(
levdB
>
preamble_energy_list
[
preamble_index
]
)
{
if
(
levdB
>
preamble_energy_list
[
preamble_index
]
)
{
preamble_energy_list
[
preamble_index
]
=
levdB
;
preamble_energy_list
[
preamble_index
]
=
levdB
;
...
...
openair1/PHY/LTE_TRANSPORT/rar_tools.c
View file @
838997d0
...
@@ -80,7 +80,7 @@ int generate_eNB_ulsch_params_from_rar(unsigned char *rar_pdu,
...
@@ -80,7 +80,7 @@ int generate_eNB_ulsch_params_from_rar(unsigned char *rar_pdu,
uint16_t
*
RIV2nb_rb_LUT
,
*
RIV2first_rb_LUT
;
uint16_t
*
RIV2nb_rb_LUT
,
*
RIV2first_rb_LUT
;
uint16_t
RIV_max
;
uint16_t
RIV_max
;
LOG_
D
(
PHY
,
"[eNB][RAPROC] generate_eNB_ulsch_params_from_rar: subframe %d (harq_pid %d)
\n
"
,
subframe
,
harq_pid
);
LOG_
I
(
PHY
,
"[eNB][RAPROC] generate_eNB_ulsch_params_from_rar: subframe %d (harq_pid %d)
\n
"
,
subframe
,
harq_pid
);
switch
(
frame_parms
->
N_RB_DL
)
{
switch
(
frame_parms
->
N_RB_DL
)
{
case
6
:
case
6
:
RIV2nb_rb_LUT
=
&
RIV2nb_rb_LUT6
[
0
];
RIV2nb_rb_LUT
=
&
RIV2nb_rb_LUT6
[
0
];
...
...
openair1/PHY/MODULATION/slot_fep.c
View file @
838997d0
...
@@ -166,7 +166,7 @@ int slot_fep(PHY_VARS_UE *phy_vars_ue,
...
@@ -166,7 +166,7 @@ int slot_fep(PHY_VARS_UE *phy_vars_ue,
#ifdef DEBUG_FEP
#ifdef DEBUG_FEP
msg
(
"Frequency offset estimation
\n
"
);
msg
(
"Frequency offset estimation
\n
"
);
#endif
#endif
if
(
(
l
==
0
)
||
(
l
==
(
4
-
frame_parms
->
Ncp
)
))
{
if
(
l
==
(
4
-
frame_parms
->
Ncp
))
{
start_meas
(
&
phy_vars_ue
->
dlsch_freq_offset_estimation_stats
);
start_meas
(
&
phy_vars_ue
->
dlsch_freq_offset_estimation_stats
);
lte_est_freq_offset
(
ue_common_vars
->
dl_ch_estimates
[
0
],
lte_est_freq_offset
(
ue_common_vars
->
dl_ch_estimates
[
0
],
frame_parms
,
frame_parms
,
...
...
openair1/SCHED/defs.h
View file @
838997d0
...
@@ -416,7 +416,7 @@ uint8_t pdcch_alloc2ul_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t n);
...
@@ -416,7 +416,7 @@ uint8_t pdcch_alloc2ul_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t n);
@param n subframe of PDCCH
@param n subframe of PDCCH
@returns UL frame corresponding to pdcch order
@returns UL frame corresponding to pdcch order
*/
*/
uint
8
_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
);
uint
32
_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
);
uint16_t
get_Np
(
uint8_t
N_RB_DL
,
uint8_t
nCCE
,
uint8_t
plus1
);
uint16_t
get_Np
(
uint8_t
N_RB_DL
,
uint8_t
nCCE
,
uint8_t
plus1
);
...
@@ -533,7 +533,6 @@ void dump_dlsch(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,uint8_t
...
@@ -533,7 +533,6 @@ void dump_dlsch(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,uint8_t
void
dump_dlsch_SI
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch_SI
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch_ra
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch_ra
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
);
uint8_t
pdcch_alloc2ul_frame
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
frame
,
uint8_t
n
);
/**@}*/
/**@}*/
#endif //OPENAIR_LTE
#endif //OPENAIR_LTE
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
838997d0
...
@@ -1620,13 +1620,16 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
...
@@ -1620,13 +1620,16 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
}
}
#ifdef DEBUG_PHY_PROC
#ifdef DEBUG_PHY_PROC
//if (phy_vars_eNB->proc[sched_subframe].frame_tx%100 == 0)
//if (phy_vars_eNB->proc[sched_subframe].frame_tx%100 == 0)
LOG_I
(
PHY
,
"[eNB %d][PUSCH %d] Frame %d subframe %d Generated ULSCH (format0) DCI (rnti %x, dci %x) (DCI pos %d/%d), aggregation %d
\n
"
,
LOG_I
(
PHY
,
"[eNB %d][PUSCH %d] Frame %d subframe %d
UL Frame %d, UL Subframe %d,
Generated ULSCH (format0) DCI (rnti %x, dci %x) (DCI pos %d/%d), aggregation %d
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
Mod_id
,
subframe2harq_pid
(
&
phy_vars_eNB
->
lte_frame_parms
,
subframe2harq_pid
(
&
phy_vars_eNB
->
lte_frame_parms
,
pdcch_alloc2ul_frame
(
&
phy_vars_eNB
->
lte_frame_parms
,
(((
subframe
)
==
0
)
?
1
:
0
)
+
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
),
pdcch_alloc2ul_frame
(
&
phy_vars_eNB
->
lte_frame_parms
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
),
pdcch_alloc2ul_subframe
(
&
phy_vars_eNB
->
lte_frame_parms
,
subframe
)),
pdcch_alloc2ul_subframe
(
&
phy_vars_eNB
->
lte_frame_parms
,
subframe
)),
pdcch_alloc2ul_frame
(
&
phy_vars_eNB
->
lte_frame_parms
,(((
subframe
)
==
0
)
?
1
:
0
)
+
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
),
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
subframe
,
pdcch_alloc2ul_frame
(
&
phy_vars_eNB
->
lte_frame_parms
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
),
pdcch_alloc2ul_subframe
(
&
phy_vars_eNB
->
lte_frame_parms
,
subframe
),
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
*
(
unsigned
int
*
)
&
DCI_pdu
->
dci_alloc
[
i
].
dci_pdu
[
0
],
*
(
unsigned
int
*
)
&
DCI_pdu
->
dci_alloc
[
i
].
dci_pdu
[
0
],
i
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
i
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
1
<<
DCI_pdu
->
dci_alloc
[
i
].
L
);
1
<<
DCI_pdu
->
dci_alloc
[
i
].
L
);
...
@@ -1867,6 +1870,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
...
@@ -1867,6 +1870,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
&
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_frame
,
&
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_frame
,
&
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_subframe
);
&
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_subframe
);
LOG_I
(
PHY
,
"[eNB][RAPROC] Frame %d subframe %d, Activated Msg3 demodulation for UE %d in frame %d, subframe %d
\n
"
,
phy_vars_eNB
->
proc
[
sched_subframe
].
frame_tx
,
subframe
,
UE_id
,
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_frame
,
phy_vars_eNB
->
ulsch_eNB
[(
uint32_t
)
UE_id
]
->
Msg3_subframe
);
#else
#else
for
(
i
=
0
;
i
<
input_buffer_length
;
i
++
)
for
(
i
=
0
;
i
<
input_buffer_length
;
i
++
)
dlsch_input_buffer
[
i
]
=
(
unsigned
char
)
i
;
//(taus()&0xff);
dlsch_input_buffer
[
i
]
=
(
unsigned
char
)
i
;
//(taus()&0xff);
...
@@ -2552,6 +2562,8 @@ void get_n1_pucch_eNB(PHY_VARS_eNB *phy_vars_eNB,
...
@@ -2552,6 +2562,8 @@ void get_n1_pucch_eNB(PHY_VARS_eNB *phy_vars_eNB,
}
}
extern
int16_t
prach_ifft
[
4
][
1024
*
4
];
void
prach_procedures
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
sched_subframe
,
uint8_t
abstraction_flag
)
{
void
prach_procedures
(
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
sched_subframe
,
uint8_t
abstraction_flag
)
{
uint16_t
preamble_energy_list
[
64
],
preamble_delay_list
[
64
];
uint16_t
preamble_energy_list
[
64
],
preamble_delay_list
[
64
];
...
@@ -2589,7 +2601,7 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
...
@@ -2589,7 +2601,7 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
if
((
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
generate_prach
==
1
)
&&
if
((
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
generate_prach
==
1
)
&&
(
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
lte_frame_parms
.
prach_config_common
.
rootSequenceIndex
==
(
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
lte_frame_parms
.
prach_config_common
.
rootSequenceIndex
==
phy_vars_eNB
->
lte_frame_parms
.
prach_config_common
.
rootSequenceIndex
)
)
{
phy_vars_eNB
->
lte_frame_parms
.
prach_config_common
.
rootSequenceIndex
)
)
{
preamble_energy_list
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_PreambleIndex
]
=
80
;
preamble_energy_list
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_PreambleIndex
]
=
80
0
;
preamble_delay_list
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_PreambleIndex
]
=
5
;
preamble_delay_list
[
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_PreambleIndex
]
=
5
;
}
}
...
@@ -2612,16 +2624,27 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
...
@@ -2612,16 +2624,27 @@ void prach_procedures(PHY_VARS_eNB *phy_vars_eNB,uint8_t sched_subframe,uint8_t
preamble_delay_list
[
preamble_max
]);
preamble_delay_list
[
preamble_max
]);
#endif
#endif
if
(
preamble_energy_list
[
preamble_max
]
>
60
)
{
if
(
preamble_energy_list
[
preamble_max
]
>
600
)
{
/*
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],2048,1,1);
write_output("prach_rx0.m","prach_rx0",&phy_vars_eNB->lte_eNB_common_vars.rxdata[0][0][subframe*phy_vars_eNB->lte_frame_parms.samples_per_tti],6144+792,1,1);
write_output("prach_rxF0.m","prach_rxF0",phy_vars_eNB->lte_eNB_prach_vars.rxsigF[0],24576,1,1);
mac_xface->macphy_exit("Exiting for PRACH debug\n");
*/
UE_id
=
find_next_ue_index
(
phy_vars_eNB
);
UE_id
=
find_next_ue_index
(
phy_vars_eNB
);
if
(
UE_id
>=
0
)
{
if
(
UE_id
>=
0
)
{
phy_vars_eNB
->
eNB_UE_stats
[(
uint32_t
)
UE_id
].
UE_timing_offset
=
preamble_delay_list
[
preamble_max
]
&
0x1FFF
;
//limit to 13 (=11+2) bits
phy_vars_eNB
->
eNB_UE_stats
[(
uint32_t
)
UE_id
].
UE_timing_offset
=
preamble_delay_list
[
preamble_max
]
&
0x1FFF
;
//limit to 13 (=11+2) bits
//phy_vars_eNb->eNB_UE_stats[(uint32_t)UE_id].mode = PRACH;
//phy_vars_eNb->eNB_UE_stats[(uint32_t)UE_id].mode = PRACH;
phy_vars_eNB
->
eNB_UE_stats
[(
uint32_t
)
UE_id
].
sector
=
0
;
phy_vars_eNB
->
eNB_UE_stats
[(
uint32_t
)
UE_id
].
sector
=
0
;
LOG_I
(
PHY
,
"[eNB %d][RAPROC]
Initiating RA procedure with preamble %d, energy %d
, delay %d
\n
"
,
LOG_I
(
PHY
,
"[eNB %d][RAPROC]
Frame %d, subframe %d Initiating RA procedure with preamble %d, energy %d.%d dB
, delay %d
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
Mod_id
,
frame
,
subframe
,
preamble_max
,
preamble_max
,
preamble_energy_max
,
preamble_energy_max
/
10
,
preamble_energy_max
%
10
,
preamble_delay_list
[
preamble_max
]);
preamble_delay_list
[
preamble_max
]);
#ifdef OPENAIR2
#ifdef OPENAIR2
mac_xface
->
initiate_ra_proc
(
phy_vars_eNB
->
Mod_id
,
mac_xface
->
initiate_ra_proc
(
phy_vars_eNB
->
Mod_id
,
...
@@ -2645,6 +2668,7 @@ void ulsch_decoding_procedures(unsigned char subframe, unsigned int i, PHY_VARS_
...
@@ -2645,6 +2668,7 @@ void ulsch_decoding_procedures(unsigned char subframe, unsigned int i, PHY_VARS_
}
}
void
phy_procedures_eNB_RX
(
unsigned
char
sched_subframe
,
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
)
{
void
phy_procedures_eNB_RX
(
unsigned
char
sched_subframe
,
PHY_VARS_eNB
*
phy_vars_eNB
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
)
{
//RX processing
//RX processing
uint32_t
l
,
ret
=
0
,
i
,
j
,
k
;
uint32_t
l
,
ret
=
0
,
i
,
j
,
k
;
...
@@ -3724,8 +3748,7 @@ void phy_procedures_eNB_lte(unsigned char subframe,PHY_VARS_eNB **phy_vars_eNB,u
...
@@ -3724,8 +3748,7 @@ void phy_procedures_eNB_lte(unsigned char subframe,PHY_VARS_eNB **phy_vars_eNB,u
if (phy_vars_eNB->proc[sched_subframe].frame_tx >= 1000)
if (phy_vars_eNB->proc[sched_subframe].frame_tx >= 1000)
mac_xface->macphy_exit("Exiting after 1000 Frames\n");
mac_xface->macphy_exit("Exiting after 1000 Frames\n");
*/
*/
vcd_signal_dumper_dump_variable_by_name
(
VCD_SIGNAL_DUMPER_VARIABLES_SLOT_NUMBER_ENB
,
subframe
*
2
);
vcd_signal_dumper_dump_variable_by_name
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX_ENB
,
phy_vars_eNB
[
0
]
->
proc
[
subframe
].
frame_tx
);
vcd_signal_dumper_dump_variable_by_name
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_ENB
,
phy_vars_eNB
[
0
]
->
proc
[
subframe
].
frame_tx
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_LTE
,
1
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_LTE
,
1
);
start_meas
(
&
phy_vars_eNB
[
0
]
->
phy_proc
);
start_meas
(
&
phy_vars_eNB
[
0
]
->
phy_proc
);
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
838997d0
...
@@ -1476,19 +1476,23 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
...
@@ -1476,19 +1476,23 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
if
(
l
==
(
4
-
frame_parms
->
Ncp
))
{
if
(
l
==
(
4
-
frame_parms
->
Ncp
))
{
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS
,
VCD_FUNCTION_IN
);
ue_rrc_measurements
(
phy_vars_ue
,
ue_rrc_measurements
(
phy_vars_ue
,
slot_rx
,
slot_rx
,
abstraction_flag
);
abstraction_flag
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_RRC_MEASUREMENTS
,
VCD_FUNCTION_OUT
);
//phy_vars_ue->sinr_eff = sinr_eff_cqi_calc(phy_vars_ue, 0);
if
(
abstraction_flag
==
1
)
phy_vars_ue
->
sinr_eff
=
sinr_eff_cqi_calc
(
phy_vars_ue
,
0
);
}
}
if
((
slot_rx
==
1
)
&&
(
l
==
(
4
-
frame_parms
->
Ncp
)))
{
if
((
slot_rx
==
1
)
&&
(
l
==
(
4
-
frame_parms
->
Ncp
)))
{
// AGC
// AGC
#ifdef EXMIMO
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL
,
VCD_FUNCTION_IN
);
#if defined EXMIMO
if
((
openair_daq_vars
.
rx_gain_mode
==
DAQ_AGC_ON
)
&&
if
((
openair_daq_vars
.
rx_gain_mode
==
DAQ_AGC_ON
)
&&
(
mode
!=
rx_calib_ue
)
&&
(
mode
!=
rx_calib_ue_med
)
&&
(
mode
!=
rx_calib_ue_byp
)
)
(
mode
!=
rx_calib_ue
)
&&
(
mode
!=
rx_calib_ue_med
)
&&
(
mode
!=
rx_calib_ue_byp
)
)
...
@@ -1499,7 +1503,8 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
...
@@ -1499,7 +1503,8 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
phy_adjust_gain
(
phy_vars_ue
,
0
);
phy_adjust_gain
(
phy_vars_ue
,
0
);
#endif
#endif
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL
,
VCD_FUNCTION_OUT
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH
,
VCD_FUNCTION_IN
);
eNB_id
=
0
;
eNB_id
=
0
;
if
(
abstraction_flag
==
0
)
if
(
abstraction_flag
==
0
)
...
@@ -1508,6 +1513,7 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
...
@@ -1508,6 +1513,7 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
eNB_id
,
eNB_id
,
0
,
0
,
16384
);
16384
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ADJUST_SYNCH
,
VCD_FUNCTION_OUT
);
/* if (openair_daq_vars.auto_freq_correction == 1) {
/* if (openair_daq_vars.auto_freq_correction == 1) {
if (frame_rx % 100 == 0) {
if (frame_rx % 100 == 0) {
...
@@ -2349,6 +2355,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
...
@@ -2349,6 +2355,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
n_symb
=
0
;
n_symb
=
0
;
}
}
else
{
else
{
/*
if (is_pmch_subframe(frame_rx,subframe_rx,&phy_vars_ue->lte_frame_parms)) {
if (is_pmch_subframe(frame_rx,subframe_rx,&phy_vars_ue->lte_frame_parms)) {
if ((slot_rx%2)==0) {
if ((slot_rx%2)==0) {
n_symb=2;
n_symb=2;
...
@@ -2357,7 +2364,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
...
@@ -2357,7 +2364,7 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
else
else
n_symb=0;
n_symb=0;
}
}
else
else
*/
n_symb
=
phy_vars_ue
->
lte_frame_parms
.
symbols_per_tti
/
2
;
n_symb
=
phy_vars_ue
->
lte_frame_parms
.
symbols_per_tti
/
2
;
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...
@@ -2369,11 +2376,13 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
...
@@ -2369,11 +2376,13 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst
for
(
l
=
0
;
l
<
n_symb
;
l
++
)
{
for
(
l
=
0
;
l
<
n_symb
;
l
++
)
{
if
(
abstraction_flag
==
0
)
{
if
(
abstraction_flag
==
0
)
{
start_meas
(
&
phy_vars_ue
->
ofdm_demod_stats
);
start_meas
(
&
phy_vars_ue
->
ofdm_demod_stats
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP
,
VCD_FUNCTION_IN
);
slot_fep
(
phy_vars_ue
,
slot_fep
(
phy_vars_ue
,
l
,
l
,
slot_rx
,
slot_rx
,
phy_vars_ue
->
rx_offset
,
phy_vars_ue
->
rx_offset
,
0
);
0
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP
,
VCD_FUNCTION_OUT
);
stop_meas
(
&
phy_vars_ue
->
ofdm_demod_stats
);
stop_meas
(
&
phy_vars_ue
->
ofdm_demod_stats
);
}
}
...
...
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