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
71ea13fa
Commit
71ea13fa
authored
Jun 06, 2017
by
Elena_Lukashova
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'bugfix-243-dlsim' into feature-59-tm4
parents
ea39c866
9ddaf93e
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
140 additions
and
92 deletions
+140
-92
cmake_targets/lte-simulators/CMakeLists.txt
cmake_targets/lte-simulators/CMakeLists.txt
+1
-1
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+3
-3
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+32
-30
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+41
-39
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+60
-16
openair1/SIMULATION/LTE_PHY/pucchsim.c
openair1/SIMULATION/LTE_PHY/pucchsim.c
+1
-1
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+1
-1
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+1
-1
No files found.
cmake_targets/lte-simulators/CMakeLists.txt
View file @
71ea13fa
...
@@ -3,7 +3,7 @@ set(PACKAGE_NAME "unitary_tests_simulators")
...
@@ -3,7 +3,7 @@ set(PACKAGE_NAME "unitary_tests_simulators")
set
(
PHYSIM True
)
set
(
PHYSIM True
)
set
(
RF_BOARD None
)
set
(
RF_BOARD None
)
set
(
XFORMS True
)
set
(
XFORMS True
)
set
(
ENABLE_ITTI False
)
set
(
DEBUG_PHY False
)
set
(
DEBUG_PHY False
)
set
(
MU_RECIEVER False
)
set
(
MU_RECIEVER False
)
set
(
RANDOM_BF False
)
set
(
RANDOM_BF False
)
...
...
openair1/SCHED/defs.h
View file @
71ea13fa
...
@@ -102,7 +102,7 @@ void phy_procedures_eNB_lte(uint8_t subframe,PHY_VARS_eNB **phy_vars_eNB,uint8_t
...
@@ -102,7 +102,7 @@ void phy_procedures_eNB_lte(uint8_t subframe,PHY_VARS_eNB **phy_vars_eNB,uint8_t
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
@param *phy_vars_rn pointer to RN variables
@param *phy_vars_rn pointer to RN variables
*/
*/
void
phy_procedures_UE_lte
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
void
phy_procedures_UE_lte
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
#if defined(Rel10) || defined(Rel14)
#if defined(Rel10) || defined(Rel14)
/*! \brief Top-level entry routine for relay node procedures when acting as eNB. This proc will make us of the existing eNB procs.
/*! \brief Top-level entry routine for relay node procedures when acting as eNB. This proc will make us of the existing eNB procs.
...
@@ -138,7 +138,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t
...
@@ -138,7 +138,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
@param r_type indicates the relaying operation: 0: no_relaying, 1: unicast relaying type 1, 2: unicast relaying type 2, 3: multicast relaying
@param phy_vars_rn pointer to RN variables
@param phy_vars_rn pointer to RN variables
*/
*/
int
phy_procedures_UE_RX
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
int
phy_procedures_UE_RX
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
/*! \brief Scheduling for UE TX procedures in TDD S-subframes.
/*! \brief Scheduling for UE TX procedures in TDD S-subframes.
@param phy_vars_ue Pointer to UE variables on which to act
@param phy_vars_ue Pointer to UE variables on which to act
...
@@ -163,7 +163,7 @@ void phy_procedures_UE_S_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abst
...
@@ -163,7 +163,7 @@ void phy_procedures_UE_S_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abst
@param phy_vars_rn pointer to the RN variables
@param phy_vars_rn pointer to the RN variables
@param do_meas Do inline timing measurement
@param do_meas Do inline timing measurement
*/
*/
void
phy_procedures_eNB_TX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
,
int
do_meas
);
void
phy_procedures_eNB_TX
(
PHY_VARS_eNB
*
phy_vars_eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
,
int
do_meas
,
int
do_pdcch_flag
);
/*! \brief Scheduling for eNB RX UE-specific procedures in normal subframes.
/*! \brief Scheduling for eNB RX UE-specific procedures in normal subframes.
@param phy_vars_eNB Pointer to eNB variables on which to act
@param phy_vars_eNB Pointer to eNB variables on which to act
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
71ea13fa
...
@@ -1147,7 +1147,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
...
@@ -1147,7 +1147,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
eNB_rxtx_proc_t
*
proc
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
rn
,
PHY_VARS_RN
*
rn
,
int
do_meas
)
int
do_meas
,
int
do_pdcch_flag
)
{
{
UNUSED
(
rn
);
UNUSED
(
rn
);
int
frame
=
proc
->
frame_tx
;
int
frame
=
proc
->
frame_tx
;
...
@@ -1317,21 +1318,6 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
...
@@ -1317,21 +1318,6 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
}
}
num_pdcch_symbols
=
DCI_pdu
->
num_pdcch_symbols
;
LOG_D
(
PHY
,
"num_pdcch_symbols %"
PRIu8
",(dci common %"
PRIu8
", dci uespec %"
PRIu8
"
\n
"
,
num_pdcch_symbols
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
);
#if defined(SMBV)
// Sets up PDCCH and DCI table
if
(
smbv_is_config_frame
(
frame
)
&&
(
smbv_frame_cnt
<
4
)
&&
((
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
)
>
0
))
{
LOG_D
(
PHY
,
"[SMBV] Frame %3d, SF %d PDCCH, number of DCIs %d
\n
"
,
frame
,
subframe
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
);
dump_dci
(
fp
,
&
DCI_pdu
->
dci_alloc
[
0
]);
smbv_configure_pdcch
(
smbv_fname
,(
smbv_frame_cnt
*
10
)
+
(
subframe
),
num_pdcch_symbols
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
);
}
#endif
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO
,
DCI_pdu
->
num_pdcch_symbols
);
// loop over all DCIs for this subframe to generate DLSCH allocations
// loop over all DCIs for this subframe to generate DLSCH allocations
for
(
i
=
0
;
i
<
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
;
i
++
)
{
for
(
i
=
0
;
i
<
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
;
i
++
)
{
LOG_D
(
PHY
,
"[eNB] Subframe %d: DCI %d/%d : rnti %x, CCEind %d
\n
"
,
subframe
,
i
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
DCI_pdu
->
dci_alloc
[
i
].
firstCCE
);
LOG_D
(
PHY
,
"[eNB] Subframe %d: DCI %d/%d : rnti %x, CCEind %d
\n
"
,
subframe
,
i
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
DCI_pdu
->
dci_alloc
[
i
].
rnti
,
DCI_pdu
->
dci_alloc
[
i
].
firstCCE
);
...
@@ -1390,23 +1376,28 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
...
@@ -1390,23 +1376,28 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
eNB
->
num_common_dci
[(
subframe
)
&
1
]
=
0
;
eNB
->
num_common_dci
[(
subframe
)
&
1
]
=
0
;
}
}
if
(
eNB
->
abstraction_flag
==
0
)
{
if
(
eNB
->
abstraction_flag
==
0
)
{
if
(
do_pdcch_flag
)
{
if
(
DCI_pdu
->
Num_ue_spec_dci
+
DCI_pdu
->
Num_common_dci
>
0
)
{
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (common %"
PRIu8
",ue_spec %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
);
}
if
(
DCI_pdu
->
Num_ue_spec_dci
+
DCI_pdu
->
Num_common_dci
>
0
)
{
num_pdcch_symbols
=
generate_dci_top
(
DCI_pdu
->
Num_ue_spec_dci
,
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d, subframe %d: Calling generate_dci_top (pdcch) (common %"
PRIu8
",ue_spec %"
PRIu8
")
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
);
DCI_pdu
->
dci_alloc
,
0
,
AMP
,
fp
,
eNB
->
common_vars
.
txdataF
[
0
],
subframe
);
}
else
{
num_pdcch_symbols
=
DCI_pdu
->
num_pdcch_symbols
;
LOG_D
(
PHY
,
"num_pdcch_symbols %"
PRIu8
" (dci common %"
PRIu8
", dci uespec %"
PRIu8
")
\n
"
,
num_pdcch_symbols
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
);
}
}
num_pdcch_symbols
=
generate_dci_top
(
DCI_pdu
->
Num_ue_spec_dci
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
dci_alloc
,
0
,
AMP
,
fp
,
eNB
->
common_vars
.
txdataF
[
0
],
subframe
);
}
}
#ifdef PHY_ABSTRACTION // FIXME this ifdef seems suspicious
#ifdef PHY_ABSTRACTION // FIXME this ifdef seems suspicious
...
@@ -1417,8 +1408,19 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
...
@@ -1417,8 +1408,19 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
#endif
#endif
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_DCI_INFO
,
DCI_pdu
->
num_pdcch_symbols
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX
,
0
);
#if defined(SMBV)
// Sets up PDCCH and DCI table
if
(
smbv_is_config_frame
(
frame
)
&&
(
smbv_frame_cnt
<
4
)
&&
((
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
)
>
0
))
{
LOG_D
(
PHY
,
"[SMBV] Frame %3d, SF %d PDCCH, number of DCIs %d
\n
"
,
frame
,
subframe
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
);
dump_dci
(
fp
,
&
DCI_pdu
->
dci_alloc
[
0
]);
smbv_configure_pdcch
(
smbv_fname
,(
smbv_frame_cnt
*
10
)
+
(
subframe
),
num_pdcch_symbols
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
);
}
#endif
// Check for SI activity
// Check for SI activity
if
((
eNB
->
dlsch_SI
)
&&
(
eNB
->
dlsch_SI
->
active
==
1
))
{
if
((
eNB
->
dlsch_SI
)
&&
(
eNB
->
dlsch_SI
->
active
==
1
))
{
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
71ea13fa
...
@@ -3058,19 +3058,16 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
...
@@ -3058,19 +3058,16 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
(
dci_alloc_rx
[
i
].
rnti
==
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
crnti
)
&&
(
dci_alloc_rx
[
i
].
rnti
==
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
crnti
)
&&
(
dci_alloc_rx
[
i
].
format
!=
format0
))
{
(
dci_alloc_rx
[
i
].
format
!=
format0
))
{
LOG_I
(
PHY
,
"[UE %d][DCI][PDSCH %x] AbsSubframe %d.%d: format %d, num_pdcch_symbols %d, nCCE %d, total CCEs %d
\n
"
,
ue
->
Mod_id
,
dci_alloc_rx
[
i
].
rnti
,
frame_rx
%
1024
,
subframe_rx
,
dci_alloc_rx
[
i
].
format
,
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
num_pdcch_symbols
,
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
nCCE
[
subframe_rx
],
get_nCCE
(
3
,
&
ue
->
frame_parms
,
get_mi
(
&
ue
->
frame_parms
,
0
)));
LOG_D
(
PHY
,
"[UE %d][DCI][PDSCH %x] AbsSubframe %d.%d: format %d, num_pdcch_symbols %d, nCCE %d, total CCEs %d
\n
"
,
dump_dci
(
&
ue
->
frame_parms
,
&
dci_alloc_rx
[
i
]);
ue
->
Mod_id
,
dci_alloc_rx
[
i
].
rnti
,
frame_rx
%
1024
,
subframe_rx
,
dci_alloc_rx
[
i
].
format
,
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
num_pdcch_symbols
,
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
nCCE
[
subframe_rx
],
get_nCCE
(
3
,
&
ue
->
frame_parms
,
get_mi
(
&
ue
->
frame_parms
,
0
)));
//dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
if
((
ue
->
UE_mode
[
eNB_id
]
>
PRACH
)
&&
if
((
ue
->
UE_mode
[
eNB_id
]
>
PRACH
)
&&
(
generate_ue_dlsch_params_from_dci
(
frame_rx
,
(
generate_ue_dlsch_params_from_dci
(
frame_rx
,
subframe_rx
,
subframe_rx
,
...
@@ -4007,8 +4004,10 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
...
@@ -4007,8 +4004,10 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
}
}
int
phy_procedures_UE_RX
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
)
{
int
phy_procedures_UE_RX
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
)
{
int
l
,
l2
;
int
l
,
l2
;
int
pilot1
;
int
pilot1
;
...
@@ -4036,20 +4035,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
...
@@ -4036,20 +4035,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
pmch_flag
=
is_pmch_subframe
(
frame_rx
,
subframe_rx
,
&
ue
->
frame_parms
)
?
1
:
0
;
pmch_flag
=
is_pmch_subframe
(
frame_rx
,
subframe_rx
,
&
ue
->
frame_parms
)
?
1
:
0
;
if
(
do_pdcch_flag
)
{
// deactivate reception until we scan pdcch
// deactivate reception until we scan pdcch
if
(
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
])
if
(
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
])
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
active
=
0
;
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
active
=
0
;
if
(
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
1
])
if
(
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
1
])
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
1
]
->
active
=
0
;
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
1
]
->
active
=
0
;
if
(
ue
->
dlsch_SI
[
eNB_id
])
if
(
ue
->
dlsch_SI
[
eNB_id
])
ue
->
dlsch_SI
[
eNB_id
]
->
active
=
0
;
ue
->
dlsch_SI
[
eNB_id
]
->
active
=
0
;
if
(
ue
->
dlsch_p
[
eNB_id
])
if
(
ue
->
dlsch_p
[
eNB_id
])
ue
->
dlsch_p
[
eNB_id
]
->
active
=
0
;
ue
->
dlsch_p
[
eNB_id
]
->
active
=
0
;
if
(
ue
->
dlsch_ra
[
eNB_id
])
if
(
ue
->
dlsch_ra
[
eNB_id
])
ue
->
dlsch_ra
[
eNB_id
]
->
active
=
0
;
ue
->
dlsch_ra
[
eNB_id
]
->
active
=
0
;
}
#ifdef DEBUG_PHY_PROC
#ifdef DEBUG_PHY_PROC
LOG_D
(
PHY
,
"[%s %d] Frame %d subframe %d: Doing phy_procedures_UE_RX
\n
"
,
LOG_D
(
PHY
,
"[%s %d] Frame %d subframe %d: Doing phy_procedures_UE_RX
\n
"
,
...
@@ -4102,15 +4101,18 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
...
@@ -4102,15 +4101,18 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
}
}
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,(
subframe_rx
<<
1
),
abstraction_flag
,
mode
);
ue_measurement_procedures
(
l
-
1
,
ue
,
proc
,
eNB_id
,(
subframe_rx
<<
1
),
abstraction_flag
,
mode
);
if
((
l
==
pilot1
)
||
((
pmch_flag
==
1
)
&
(
l
==
l2
)))
{
LOG_D
(
PHY
,
"[UE %d] Frame %d: Calling pdcch procedures (eNB %d)
\n
"
,
ue
->
Mod_id
,
frame_rx
,
eNB_id
);
if
(
ue_pdcch_procedures
(
eNB_id
,
ue
,
proc
,
abstraction_flag
)
==
-
1
)
{
if
(
do_pdcch_flag
)
{
LOG_E
(
PHY
,
"[UE %d] Frame %d, subframe %d: Error in pdcch procedures
\n
"
,
ue
->
Mod_id
,
frame_rx
,
subframe_rx
);
if
((
l
==
pilot1
)
||
return
(
-
1
);
((
pmch_flag
==
1
)
&
(
l
==
l2
)))
{
LOG_D
(
PHY
,
"[UE %d] Frame %d: Calling pdcch procedures (eNB %d)
\n
"
,
ue
->
Mod_id
,
frame_rx
,
eNB_id
);
if
(
ue_pdcch_procedures
(
eNB_id
,
ue
,
proc
,
abstraction_flag
)
==
-
1
)
{
LOG_E
(
PHY
,
"[UE %d] Frame %d, subframe %d: Error in pdcch procedures
\n
"
,
ue
->
Mod_id
,
frame_rx
,
subframe_rx
);
return
(
-
1
);
}
LOG_D
(
PHY
,
"num_pdcch_symbols %d
\n
"
,
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
num_pdcch_symbols
);
}
}
LOG_D
(
PHY
,
"num_pdcch_symbols %d
\n
"
,
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
num_pdcch_symbols
);
}
}
}
// for l=1..l2
}
// for l=1..l2
...
@@ -4139,6 +4141,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
...
@@ -4139,6 +4141,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
// do procedures for C-RNTI
// do procedures for C-RNTI
if
(
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
active
==
1
)
{
if
(
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
active
==
1
)
{
LOG_D
(
PHY
,
"dlsch is active, doing ue_pdsch_procedures
\n
"
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC
,
VCD_FUNCTION_IN
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC
,
VCD_FUNCTION_IN
);
ue_pdsch_procedures
(
ue
,
ue_pdsch_procedures
(
ue
,
proc
,
proc
,
...
@@ -4456,9 +4459,8 @@ int phy_procedures_RN_UE_RX(uint8_t slot_rx, uint8_t next_slot, relaying_type_t
...
@@ -4456,9 +4459,8 @@ int phy_procedures_RN_UE_RX(uint8_t slot_rx, uint8_t next_slot, relaying_type_t
}
}
#endif
#endif
void
phy_procedures_UE_lte
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
void
phy_procedures_UE_lte
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
)
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
)
{
{
#if defined(ENABLE_ITTI)
#if defined(ENABLE_ITTI)
MessageDef
*
msg_p
;
MessageDef
*
msg_p
;
...
@@ -4527,7 +4529,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
...
@@ -4527,7 +4529,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
if
(
phy_procedures_RN_UE_RX
(
subframe_rx
,
subframe_tx
,
r_type
)
!=
0
)
if
(
phy_procedures_RN_UE_RX
(
subframe_rx
,
subframe_tx
,
r_type
)
!=
0
)
#endif
#endif
phy_procedures_UE_RX
(
ue
,
proc
,
eNB_id
,
abstraction
_flag
,
mode
,
r_type
,
phy_vars_rn
);
phy_procedures_UE_RX
(
ue
,
proc
,
eNB_id
,
abstraction_flag
,
do_pdcch
_flag
,
mode
,
r_type
,
phy_vars_rn
);
}
}
if
((
subframe_select
(
&
ue
->
frame_parms
,
subframe_tx
)
==
SF_S
)
&&
if
((
subframe_select
(
&
ue
->
frame_parms
,
subframe_tx
)
==
SF_S
)
&&
...
@@ -4541,7 +4543,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
...
@@ -4541,7 +4543,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
if
(
phy_procedures_RN_UE_RX
(
subframe_rx
,
subframe_tx
,
r_type
)
!=
0
)
if
(
phy_procedures_RN_UE_RX
(
subframe_rx
,
subframe_tx
,
r_type
)
!=
0
)
#endif
#endif
phy_procedures_UE_RX
(
ue
,
proc
,
eNB_id
,
abstraction
_flag
,
mode
,
r_type
,
phy_vars_rn
);
phy_procedures_UE_RX
(
ue
,
proc
,
eNB_id
,
abstraction_flag
,
do_pdcch
_flag
,
mode
,
r_type
,
phy_vars_rn
);
}
}
if
(
ue
->
mac_enabled
==
1
)
{
if
(
ue
->
mac_enabled
==
1
)
{
...
...
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
71ea13fa
...
@@ -1391,10 +1391,12 @@ int main(int argc, char **argv)
...
@@ -1391,10 +1391,12 @@ int main(int argc, char **argv)
FILE
*
csv_fd
=
NULL
;
FILE
*
csv_fd
=
NULL
;
char
csv_fname
[
32
];
char
csv_fname
[
32
];
//int dci_flag=1
;
int
dci_flag
=
0
;
int
two_thread_flag
=
0
;
int
two_thread_flag
=
0
;
int
DLSCH_RB_ALLOC
=
0
;
int
DLSCH_RB_ALLOC
=
0
;
int
log_level
=
LOG_ERR
;
#if defined(__arm__)
#if defined(__arm__)
FILE
*
proc_fd
=
NULL
;
FILE
*
proc_fd
=
NULL
;
char
buf
[
64
];
char
buf
[
64
];
...
@@ -1418,15 +1420,13 @@ int main(int argc, char **argv)
...
@@ -1418,15 +1420,13 @@ int main(int argc, char **argv)
//signal(SIGSEGV, handler);
//signal(SIGSEGV, handler);
//signal(SIGABRT, handler);
//signal(SIGABRT, handler);
logInit
();
// default parameters
// default parameters
n_frames
=
1000
;
n_frames
=
1000
;
snr0
=
0
;
snr0
=
0
;
// num_layers = 1;
// num_layers = 1;
perfect_ce
=
0
;
perfect_ce
=
0
;
while
((
c
=
getopt
(
argc
,
argv
,
"ahdpZDe:Em:n:o:s:f:t:c:g:r:F:x:q:y:z:AM:N:I:i:O:R:S:C:T:b:u:v:w:B:Pl:WXY"
))
!=
-
1
)
{
while
((
c
=
getopt
(
argc
,
argv
,
"ahdpZDe:Em:n:o:s:f:t:c:g:r:F:x:q:y:z:AM:N:I:i:O:R:S:C:T:b:u:v:w:B:Pl:WXY
L:
"
))
!=
-
1
)
{
switch
(
c
)
{
switch
(
c
)
{
case
'a'
:
case
'a'
:
awgn_flag
=
1
;
awgn_flag
=
1
;
...
@@ -1453,9 +1453,9 @@ int main(int argc, char **argv)
...
@@ -1453,9 +1453,9 @@ int main(int argc, char **argv)
Nid_cell
=
atoi
(
optarg
);
Nid_cell
=
atoi
(
optarg
);
break
;
break
;
//
case 'd':
case
'd'
:
//
dci_flag = 1;
dci_flag
=
1
;
//
break;
break
;
case
'D'
:
case
'D'
:
frame_type
=
TDD
;
frame_type
=
TDD
;
...
@@ -1482,7 +1482,7 @@ int main(int argc, char **argv)
...
@@ -1482,7 +1482,7 @@ int main(int argc, char **argv)
case
'i'
:
case
'i'
:
input_fd
=
fopen
(
optarg
,
"r"
);
input_fd
=
fopen
(
optarg
,
"r"
);
input_file
=
1
;
input_file
=
1
;
//
dci_flag = 1;
dci_flag
=
1
;
break
;
break
;
case
'I'
:
case
'I'
:
...
@@ -1722,7 +1722,9 @@ int main(int argc, char **argv)
...
@@ -1722,7 +1722,9 @@ int main(int argc, char **argv)
dump_table
=
1
;
dump_table
=
1
;
break
;
break
;
case
'L'
:
log_level
=
atoi
(
optarg
);
break
;
case
'h'
:
case
'h'
:
default:
default:
...
@@ -1732,7 +1734,7 @@ int main(int argc, char **argv)
...
@@ -1732,7 +1734,7 @@ int main(int argc, char **argv)
printf
(
"-c Number of PDCCH symbols
\n
"
);
printf
(
"-c Number of PDCCH symbols
\n
"
);
printf
(
"-m MCS1 for TB 1
\n
"
);
printf
(
"-m MCS1 for TB 1
\n
"
);
printf
(
"-M MCS2 for TB 2
\n
"
);
printf
(
"-M MCS2 for TB 2
\n
"
);
printf
(
"-d Transmit the DCI and compute its error statistics
and the overall throughput
\n
"
);
printf
(
"-d Transmit the DCI and compute its error statistics
\n
"
);
printf
(
"-p Use extended prefix mode
\n
"
);
printf
(
"-p Use extended prefix mode
\n
"
);
printf
(
"-n Number of frames to simulate
\n
"
);
printf
(
"-n Number of frames to simulate
\n
"
);
printf
(
"-o Sample offset for receiver
\n
"
);
printf
(
"-o Sample offset for receiver
\n
"
);
...
@@ -1757,6 +1759,16 @@ int main(int argc, char **argv)
...
@@ -1757,6 +1759,16 @@ int main(int argc, char **argv)
}
}
}
}
logInit
();
// enable these lines if you need debug info
set_comp_log
(
PHY
,
LOG_DEBUG
,
LOG_HIGH
,
1
);
set_glog
(
log_level
,
LOG_HIGH
);
// moreover you need to init itti with the following line
// however itti will catch all signals, so ctrl-c won't work anymore
// alternatively you can disable ITTI completely in CMakeLists.txt
//itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, NULL);
if
(
common_flag
==
0
)
{
if
(
common_flag
==
0
)
{
switch
(
N_RB_DL
)
{
switch
(
N_RB_DL
)
{
case
6
:
case
6
:
...
@@ -2159,7 +2171,7 @@ int main(int argc, char **argv)
...
@@ -2159,7 +2171,7 @@ int main(int argc, char **argv)
TPC
,
TPC
,
mcs1
,
mcs1
,
mcs2
,
mcs2
,
0
,
1
,
0
,
0
,
&
num_common_dci
,
&
num_common_dci
,
&
num_ue_spec_dci
,
&
num_ue_spec_dci
,
...
@@ -2361,11 +2373,12 @@ int main(int argc, char **argv)
...
@@ -2361,11 +2373,12 @@ int main(int argc, char **argv)
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
rvidx
=
round
&
3
;
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
rvidx
=
round
&
3
;
fill_DCI
(
eNB
,
&
dci_alloc
[
0
],
subframe
,
n_rnti
,
n_users
,
transmission_mode
,
common_flag
,
DLSCH_RB_ALLOC
,
TPC
,
mcs1
,
mcs2
,
trials
&
1
,
round
&
3
,
&
num_common_dci
,
&
num_ue_spec_dci
,
&
num_dci
);
fill_DCI
(
eNB
,
&
dci_alloc
[
0
],
subframe
,
n_rnti
,
n_users
,
transmission_mode
,
common_flag
,
DLSCH_RB_ALLOC
,
TPC
,
mcs1
,
mcs2
,
!
(
trials
&
1
),
round
&
3
,
&
num_common_dci
,
&
num_ue_spec_dci
,
&
num_dci
);
}
}
else
{
else
{
fill_DCI
(
eNB
,
&
dci_alloc
[
0
],
subframe
,
n_rnti
,
n_users
,
transmission_mode
,
common_flag
,
DLSCH_RB_ALLOC
,
TPC
,
fill_DCI
(
eNB
,
&
dci_alloc
[
0
],
subframe
,
n_rnti
,
n_users
,
transmission_mode
,
common_flag
,
DLSCH_RB_ALLOC
,
TPC
,
(
TB0_active
==
1
)
?
mcs1
:
0
,
mcs2
,
trials
&
1
,(
TB0_active
==
1
)
?
round
&
3
:
0
,
&
num_common_dci
,
&
num_ue_spec_dci
,
&
num_dci
);
(
TB0_active
==
1
)
?
mcs1
:
0
,
mcs2
,
!
(
trials
&
1
)
,(
TB0_active
==
1
)
?
round
&
3
:
0
,
&
num_common_dci
,
&
num_ue_spec_dci
,
&
num_dci
);
}
}
for
(
i
=
num_common_dci
;
i
<
num_dci
;
i
++
)
{
for
(
i
=
num_common_dci
;
i
<
num_dci
;
i
++
)
{
...
@@ -2419,7 +2432,7 @@ int main(int argc, char **argv)
...
@@ -2419,7 +2432,7 @@ int main(int argc, char **argv)
proc_eNB
->
subframe_tx
=
subframe
;
proc_eNB
->
subframe_tx
=
subframe
;
eNB
->
abstraction_flag
=
0
;
eNB
->
abstraction_flag
=
0
;
phy_procedures_eNB_TX
(
eNB
,
proc_eNB
,
no_relay
,
NULL
,
1
);
phy_procedures_eNB_TX
(
eNB
,
proc_eNB
,
no_relay
,
NULL
,
1
,
dci_flag
);
start_meas
(
&
eNB
->
ofdm_mod_stats
);
start_meas
(
&
eNB
->
ofdm_mod_stats
);
...
@@ -2455,7 +2468,7 @@ int main(int argc, char **argv)
...
@@ -2455,7 +2468,7 @@ int main(int argc, char **argv)
proc_eNB
->
subframe_tx
=
subframe
+
1
;
proc_eNB
->
subframe_tx
=
subframe
+
1
;
phy_procedures_eNB_TX
(
eNB
,
proc_eNB
,
no_relay
,
NULL
,
0
);
phy_procedures_eNB_TX
(
eNB
,
proc_eNB
,
no_relay
,
NULL
,
0
,
dci_flag
);
do_OFDM_mod_l
(
eNB
->
common_vars
.
txdataF
[
eNB_id
],
do_OFDM_mod_l
(
eNB
->
common_vars
.
txdataF
[
eNB_id
],
eNB
->
common_vars
.
txdata
[
eNB_id
],
eNB
->
common_vars
.
txdata
[
eNB_id
],
...
@@ -2506,7 +2519,38 @@ int main(int argc, char **argv)
...
@@ -2506,7 +2519,38 @@ int main(int argc, char **argv)
0
);
0
);
if
(
n_frames
==
1
)
printf
(
"Running phy_procedures_UE_RX
\n
"
);
if
(
n_frames
==
1
)
printf
(
"Running phy_procedures_UE_RX
\n
"
);
phy_procedures_UE_RX
(
UE
,
proc
,
0
,
0
,
normal_txrx
,
no_relay
,
NULL
);
if
(
dci_flag
==
0
)
{
if
(
n_frames
==
1
)
printf
(
"bypassing PDCCH/DCI detection
\n
"
);
if
(
generate_ue_dlsch_params_from_dci
(
proc
->
frame_rx
,
proc
->
subframe_rx
,
(
void
*
)
&
dci_alloc
[
0
].
dci_pdu
,
n_rnti
,
dci_alloc
[
0
].
format
,
UE
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
],
&
UE
->
frame_parms
,
UE
->
pdsch_config_dedicated
,
SI_RNTI
,
0
,
P_RNTI
,
UE
->
transmission_mode
[
eNB_id
]
<
7
?
0
:
UE
->
transmission_mode
[
eNB_id
],
0
)
==
0
)
{
dump_dci
(
&
UE
->
frame_parms
,
&
dci_alloc
[
0
]);
//UE->dlsch[proc->subframe_rx&0x1][eNB_id][0]->active = 1;
//UE->dlsch[proc->subframe_rx&0x1][eNB_id][1]->active = 1;
UE
->
pdcch_vars
[
proc
->
subframe_rx
&
0x1
][
eNB_id
]
->
num_pdcch_symbols
=
num_pdcch_symbols
;
UE
->
dlsch_received
[
eNB_id
]
++
;
}
else
{
LOG_E
(
PHY
,
"Problem in DCI!
\n
"
);
}
}
phy_procedures_UE_RX
(
UE
,
proc
,
0
,
0
,
dci_flag
,
normal_txrx
,
no_relay
,
NULL
);
if
(
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
active
==
0
)
{
if
(
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
active
==
0
)
{
//printf("DCI not received\n");
//printf("DCI not received\n");
...
...
openair1/SIMULATION/LTE_PHY/pucchsim.c
View file @
71ea13fa
...
@@ -297,7 +297,7 @@ int main(int argc, char **argv)
...
@@ -297,7 +297,7 @@ int main(int argc, char **argv)
}
}
logInit
();
logInit
();
itti_init
(
TASK_MAX
,
THREAD_MAX
,
MESSAGES_ID_MAX
,
tasks_info
,
messages_info
,
messages_definition_xml
,
NULL
);
//
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, NULL);
g_log
->
log_component
[
PHY
].
level
=
LOG_DEBUG
;
g_log
->
log_component
[
PHY
].
level
=
LOG_DEBUG
;
g_log
->
log_component
[
PHY
].
flag
=
LOG_HIGH
;
g_log
->
log_component
[
PHY
].
flag
=
LOG_HIGH
;
...
...
targets/RT/USER/lte-enb.c
View file @
71ea13fa
...
@@ -450,7 +450,7 @@ void proc_tx_high0(PHY_VARS_eNB *eNB,
...
@@ -450,7 +450,7 @@ void proc_tx_high0(PHY_VARS_eNB *eNB,
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_ENB
+
offset
,
proc
->
frame_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_ENB
+
offset
,
proc
->
frame_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_ENB
+
offset
,
proc
->
subframe_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_ENB
+
offset
,
proc
->
subframe_tx
);
phy_procedures_eNB_TX
(
eNB
,
proc
,
r_type
,
rn
,
1
);
phy_procedures_eNB_TX
(
eNB
,
proc
,
r_type
,
rn
,
1
,
1
);
/* we're done, let the next one proceed */
/* we're done, let the next one proceed */
if
(
pthread_mutex_lock
(
&
sync_phy_proc
.
mutex_phy_proc_tx
)
!=
0
)
{
if
(
pthread_mutex_lock
(
&
sync_phy_proc
.
mutex_phy_proc_tx
)
!=
0
)
{
...
...
targets/RT/USER/lte-ue.c
View file @
71ea13fa
...
@@ -543,7 +543,7 @@ static void *UE_thread_rxn_txnp4(void *arg) {
...
@@ -543,7 +543,7 @@ static void *UE_thread_rxn_txnp4(void *arg) {
(
sf_type
==
SF_UL
?
"SF_UL"
:
(
sf_type
==
SF_UL
?
"SF_UL"
:
(
sf_type
==
SF_S
?
"SF_S"
:
"UNKNOWN_SF_TYPE"
))));
(
sf_type
==
SF_S
?
"SF_S"
:
"UNKNOWN_SF_TYPE"
))));
}
}
phy_procedures_UE_RX
(
UE
,
proc
,
0
,
0
,
UE
->
mode
,
no_relay
,
NULL
);
phy_procedures_UE_RX
(
UE
,
proc
,
0
,
0
,
1
,
UE
->
mode
,
no_relay
,
NULL
);
}
}
start_meas
(
&
UE
->
generic_stat
);
start_meas
(
&
UE
->
generic_stat
);
...
...
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