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
510612b3
Commit
510612b3
authored
Mar 10, 2017
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP: SRS configuration of PUSCH and PUCCH. No SRS detection yet. To be tested on HW
parent
4d9601b7
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
204 additions
and
173 deletions
+204
-173
openair1/PHY/impl_defs_lte.h
openair1/PHY/impl_defs_lte.h
+1
-1
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+4
-0
openair1/SCHED/phy_procedures_lte_common.c
openair1/SCHED/phy_procedures_lte_common.c
+145
-0
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+28
-12
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+18
-154
openair1/SIMULATION/LTE_PHY/ulsim.c
openair1/SIMULATION/LTE_PHY/ulsim.c
+2
-0
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+1
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
...PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
+5
-5
No files found.
openair1/PHY/impl_defs_lte.h
View file @
510612b3
...
@@ -320,7 +320,7 @@ typedef struct {
...
@@ -320,7 +320,7 @@ typedef struct {
uint16_t
srs_ConfigIndex
;
uint16_t
srs_ConfigIndex
;
/// Parameter: \f$n^\text{CS}_\text{SRS}\f$. See TS 36.211 (5.5.3.1). \vr{[0..7]} \note the specification sais it is an enumerated value.
/// Parameter: \f$n^\text{CS}_\text{SRS}\f$. See TS 36.211 (5.5.3.1). \vr{[0..7]} \note the specification sais it is an enumerated value.
uint8_t
cyclicShift
;
uint8_t
cyclicShift
;
// Parameter:
ue srs subframe for internal implementation
// Parameter:
internal implementation: UE SRS configured
uint8_t
srsConfigDedicatedSetup
;
uint8_t
srsConfigDedicatedSetup
;
// Parameter: cell srs subframe for internal implementation
// Parameter: cell srs subframe for internal implementation
uint8_t
srsCellSubframe
;
uint8_t
srsCellSubframe
;
...
...
openair1/SCHED/defs.h
View file @
510612b3
...
@@ -514,6 +514,10 @@ void dump_dlsch_ra(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
...
@@ -514,6 +514,10 @@ void dump_dlsch_ra(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
void
dump_dlsch2
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
,
uint16_t
coded_bits_per_codeword
,
int
round
,
unsigned
char
harq_pid
);
void
dump_dlsch2
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
,
uint16_t
coded_bits_per_codeword
,
int
round
,
unsigned
char
harq_pid
);
int
is_srs_occasion_common
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
int
frame_tx
,
int
subframe_tx
);
void
compute_srs_pos
(
lte_frame_type_t
frameType
,
uint16_t
isrs
,
uint16_t
*
psrsPeriodicity
,
uint16_t
*
psrsOffset
);
/*@}*/
/*@}*/
...
...
openair1/SCHED/phy_procedures_lte_common.c
View file @
510612b3
...
@@ -942,3 +942,148 @@ MU_MIMO_mode *get_mu_mimo_mode (module_id_t Mod_id, uint8_t CC_id, rnti_t rnti)
...
@@ -942,3 +942,148 @@ MU_MIMO_mode *get_mu_mimo_mode (module_id_t Mod_id, uint8_t CC_id, rnti_t rnti)
return
&
PHY_vars_eNB_g
[
Mod_id
][
CC_id
]
->
mu_mimo_mode
[
UE_id
];
return
&
PHY_vars_eNB_g
[
Mod_id
][
CC_id
]
->
mu_mimo_mode
[
UE_id
];
}
}
int
is_srs_occasion_common
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
int
frame_tx
,
int
subframe_tx
)
{
uint8_t
isSubframeSRS
=
0
;
// SRS Cell Occasion
//ue->ulsch[eNB_id]->srs_active = 0;
//ue->ulsch[eNB_id]->Nsymb_pusch = 12-(frame_parms->Ncp<<1)- ue->ulsch[eNB_id]->srs_active;
if
(
frame_parms
->
soundingrs_ul_config_common
.
enabled_flag
)
{
LOG_D
(
PHY
,
" SRS SUBFRAMECONFIG: %d
\n
"
,
frame_parms
->
soundingrs_ul_config_common
.
srs_SubframeConfig
);
uint8_t
TSFC
;
uint16_t
deltaTSFC
;
// bitmap
uint8_t
srs_SubframeConfig
;
// table resuming TSFC (Period) and deltaSFC (offset)
const
uint16_t
deltaTSFCTabType1
[
15
][
2
]
=
{
{
1
,
1
},{
1
,
2
},{
2
,
2
},{
1
,
5
},{
2
,
5
},{
4
,
5
},{
8
,
5
},{
3
,
5
},{
12
,
5
},{
1
,
10
},{
2
,
10
},{
4
,
10
},{
8
,
10
},{
351
,
10
},{
383
,
10
}
};
// Table 5.5.3.3-2 3GPP 36.211 FDD
const
uint16_t
deltaTSFCTabType2
[
14
][
2
]
=
{
{
2
,
5
},{
6
,
5
},{
10
,
5
},{
18
,
5
},{
14
,
5
},{
22
,
5
},{
26
,
5
},{
30
,
5
},{
70
,
10
},{
74
,
10
},{
194
,
10
},{
326
,
10
},{
586
,
10
},{
210
,
10
}
};
// Table 5.5.3.3-2 3GPP 36.211 TDD
srs_SubframeConfig
=
frame_parms
->
soundingrs_ul_config_common
.
srs_SubframeConfig
;
if
(
FDD
==
frame_parms
->
frame_type
)
{
// srs_SubframeConfig =< 14
deltaTSFC
=
deltaTSFCTabType1
[
srs_SubframeConfig
][
0
];
TSFC
=
deltaTSFCTabType1
[
srs_SubframeConfig
][
1
];
}
else
{
// srs_SubframeConfig =< 13
deltaTSFC
=
deltaTSFCTabType2
[
srs_SubframeConfig
][
0
];
TSFC
=
deltaTSFCTabType2
[
srs_SubframeConfig
][
1
];
}
// Sounding reference signal subframes are the subframes satisfying ns/2 mod TSFC (- deltaTSFC
uint16_t
tmp
=
(
subframe_tx
%
TSFC
);
if
((
1
<<
tmp
)
&
deltaTSFC
)
{
// This is a Sounding reference signal subframes
isSubframeSRS
=
1
;
}
LOG_D
(
PHY
,
" ISTDD: %d, TSFC: %d, deltaTSFC: %d, AbsSubframeTX: %d.%d
\n
"
,
frame_parms
->
frame_type
,
TSFC
,
deltaTSFC
,
frame_tx
,
subframe_tx
);
}
return
(
isSubframeSRS
);
}
void
compute_srs_pos
(
lte_frame_type_t
frameType
,
uint16_t
isrs
,
uint16_t
*
psrsPeriodicity
,
uint16_t
*
psrsOffset
)
{
if
(
TDD
==
frameType
)
{
if
(
isrs
<
10
)
{
mac_xface
->
macphy_exit
(
"2 ms SRS periodicity not supported"
);
}
if
((
isrs
>
9
)
&&
(
isrs
<
15
))
{
*
psrsPeriodicity
=
5
;
*
psrsOffset
=
isrs
-
10
;
}
if
((
isrs
>
14
)
&&
(
isrs
<
25
))
{
*
psrsPeriodicity
=
10
;
*
psrsOffset
=
isrs
-
15
;
}
if
((
isrs
>
24
)
&&
(
isrs
<
45
))
{
*
psrsPeriodicity
=
20
;
*
psrsOffset
=
isrs
-
25
;
}
if
((
isrs
>
44
)
&&
(
isrs
<
85
))
{
*
psrsPeriodicity
=
40
;
*
psrsOffset
=
isrs
-
45
;
}
if
((
isrs
>
84
)
&&
(
isrs
<
165
))
{
*
psrsPeriodicity
=
80
;
*
psrsOffset
=
isrs
-
85
;
}
if
((
isrs
>
164
)
&&
(
isrs
<
325
))
{
*
psrsPeriodicity
=
160
;
*
psrsOffset
=
isrs
-
165
;
}
if
((
isrs
>
324
)
&&
(
isrs
<
645
))
{
*
psrsPeriodicity
=
320
;
*
psrsOffset
=
isrs
-
325
;
}
if
(
isrs
>
644
)
{
mac_xface
->
macphy_exit
(
"Isrs out of range"
);
}
}
else
{
if
(
isrs
<
2
)
{
*
psrsPeriodicity
=
2
;
*
psrsOffset
=
isrs
;
}
if
((
isrs
>
1
)
&&
(
isrs
<
7
))
{
*
psrsPeriodicity
=
5
;
*
psrsOffset
=
isrs
-
2
;
}
if
((
isrs
>
6
)
&&
(
isrs
<
17
))
{
*
psrsPeriodicity
=
10
;
*
psrsOffset
=
isrs
-
7
;
}
if
((
isrs
>
16
)
&&
(
isrs
<
37
))
{
*
psrsPeriodicity
=
20
;
*
psrsOffset
=
isrs
-
17
;
}
if
((
isrs
>
36
)
&&
(
isrs
<
77
))
{
*
psrsPeriodicity
=
40
;
*
psrsOffset
=
isrs
-
37
;
}
if
((
isrs
>
76
)
&&
(
isrs
<
157
))
{
*
psrsPeriodicity
=
80
;
*
psrsOffset
=
isrs
-
77
;
}
if
((
isrs
>
156
)
&&
(
isrs
<
317
))
{
*
psrsPeriodicity
=
160
;
*
psrsOffset
=
isrs
-
157
;
}
if
((
isrs
>
316
)
&&
(
isrs
<
637
))
{
*
psrsPeriodicity
=
320
;
*
psrsOffset
=
isrs
-
317
;
}
if
(
isrs
>
636
)
{
mac_xface
->
macphy_exit
(
"Isrs out of range"
);
}
}
}
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
510612b3
...
@@ -307,8 +307,6 @@ void phy_procedures_emos_eNB_TX(unsigned char subframe, PHY_VARS_eNB *eNB)
...
@@ -307,8 +307,6 @@ void phy_procedures_emos_eNB_TX(unsigned char subframe, PHY_VARS_eNB *eNB)
}
}
#endif
#endif
void
phy_procedures_eNB_S_RX
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
)
void
phy_procedures_eNB_S_RX
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
)
{
{
UNUSED
(
r_type
);
UNUSED
(
r_type
);
...
@@ -824,6 +822,9 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
...
@@ -824,6 +822,9 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
int
frame
=
proc
->
frame_tx
;
int
frame
=
proc
->
frame_tx
;
int
subframe
=
proc
->
subframe_tx
;
int
subframe
=
proc
->
subframe_tx
;
uint16_t
srsPeriodicity
;
uint16_t
srsOffset
;
uint16_t
do_srs
=
0
;
LOG_D
(
PHY
,
LOG_D
(
PHY
,
"[eNB %"
PRIu8
"][PUSCH %"
PRIu8
"] Frame %d subframe %d UL Frame %"
PRIu32
", UL Subframe %"
PRIu8
", Generated ULSCH (format0) DCI (rnti %"
PRIx16
", dci %"
PRIx8
"), aggregation %d
\n
"
,
"[eNB %"
PRIu8
"][PUSCH %"
PRIu8
"] Frame %d subframe %d UL Frame %"
PRIu32
", UL Subframe %"
PRIu8
", Generated ULSCH (format0) DCI (rnti %"
PRIx16
", dci %"
PRIx8
"), aggregation %d
\n
"
,
...
@@ -839,6 +840,12 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
...
@@ -839,6 +840,12 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
dci_alloc
->
dci_pdu
[
0
],
dci_alloc
->
dci_pdu
[
0
],
1
<<
dci_alloc
->
L
);
1
<<
dci_alloc
->
L
);
if
(
is_srs_occasion_common
(
fp
,
frame
,
subframe
))
{
compute_srs_pos
(
fp
->
frame_type
,
eNB
->
physicalConfigDedicated
[
UE_id
]
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_ConfigIndex
,
&
srsPeriodicity
,
&
srsOffset
);
if
((((
10
*
frame
+
subframe
)
%
srsPeriodicity
)
==
srsOffset
))
do_srs
=
1
;
}
generate_eNB_ulsch_params_from_dci
(
eNB
,
generate_eNB_ulsch_params_from_dci
(
eNB
,
proc
,
proc
,
&
dci_alloc
->
dci_pdu
[
0
],
&
dci_alloc
->
dci_pdu
[
0
],
...
@@ -849,7 +856,7 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
...
@@ -849,7 +856,7 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
0
,
0
,
P_RNTI
,
P_RNTI
,
CBA_RNTI
,
CBA_RNTI
,
0
);
// do_srs
do_srs
);
// do_srs
LOG_T
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d subframe %d : CCE resources for UE spec DCI (PUSCH %"
PRIx16
") => %d
\n
"
,
LOG_T
(
PHY
,
"[eNB %"
PRIu8
"] Frame %d subframe %d : CCE resources for UE spec DCI (PUSCH %"
PRIx16
") => %d
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
,
dci_alloc
->
rnti
,
eNB
->
Mod_id
,
frame
,
subframe
,
dci_alloc
->
rnti
,
...
@@ -2083,6 +2090,9 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
...
@@ -2083,6 +2090,9 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
PUCCH_FMT_t
format
;
PUCCH_FMT_t
format
;
const
int
subframe
=
proc
->
subframe_rx
;
const
int
subframe
=
proc
->
subframe_rx
;
const
int
frame
=
proc
->
frame_rx
;
const
int
frame
=
proc
->
frame_rx
;
uint16_t
srsPeriodicity
;
uint16_t
srsOffset
;
uint16_t
do_srs
=
0
;
if
((
eNB
->
dlsch
[
UE_id
][
0
])
&&
if
((
eNB
->
dlsch
[
UE_id
][
0
])
&&
(
eNB
->
dlsch
[
UE_id
][
0
]
->
rnti
>
0
)
&&
(
eNB
->
dlsch
[
UE_id
][
0
]
->
rnti
>
0
)
&&
...
@@ -2092,6 +2102,14 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
...
@@ -2092,6 +2102,14 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
do_SR
=
is_SR_subframe
(
eNB
,
proc
,
UE_id
);
do_SR
=
is_SR_subframe
(
eNB
,
proc
,
UE_id
);
// do_SR = 0;
// do_SR = 0;
// check if there is SRS and we have to use shortened format
// TODO: check for exceptions in transmission of SRS together with ACK/NACK
if
(
is_srs_occasion_common
(
fp
,
frame
,
subframe
))
{
compute_srs_pos
(
fp
->
frame_type
,
eNB
->
physicalConfigDedicated
[
UE_id
]
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_ConfigIndex
,
&
srsPeriodicity
,
&
srsOffset
);
if
((((
10
*
frame
+
subframe
)
%
srsPeriodicity
)
==
srsOffset
))
do_srs
=
1
;
}
// Now ACK/NAK
// Now ACK/NAK
// First check subframe_tx flag for earlier subframes
// First check subframe_tx flag for earlier subframes
...
@@ -2150,7 +2168,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
...
@@ -2150,7 +2168,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
UE_id
,
UE_id
,
eNB
->
scheduling_request_config
[
UE_id
].
sr_PUCCH_ResourceIndex
,
eNB
->
scheduling_request_config
[
UE_id
].
sr_PUCCH_ResourceIndex
,
0
,
// n2_pucch
0
,
// n2_pucch
0
,
// shortened format, should be use_srs flag, later
do_srs
,
// shortened format
&
SR_payload
,
&
SR_payload
,
frame
,
frame
,
subframe
,
subframe
,
...
@@ -2190,7 +2208,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
...
@@ -2190,7 +2208,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
UE_id
,
UE_id
,
(
uint16_t
)
n1_pucch0
,
(
uint16_t
)
n1_pucch0
,
0
,
//n2_pucch
0
,
//n2_pucch
0
,
// shortened format
do_srs
,
// shortened format
pucch_payload0
,
pucch_payload0
,
frame
,
frame
,
subframe
,
subframe
,
...
@@ -2220,7 +2238,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
...
@@ -2220,7 +2238,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
UE_id
,
UE_id
,
eNB
->
scheduling_request_config
[
UE_id
].
sr_PUCCH_ResourceIndex
,
eNB
->
scheduling_request_config
[
UE_id
].
sr_PUCCH_ResourceIndex
,
0
,
//n2_pucch
0
,
//n2_pucch
0
,
// shortened format
do_srs
,
// shortened format
pucch_payload0
,
pucch_payload0
,
frame
,
frame
,
subframe
,
subframe
,
...
@@ -2281,7 +2299,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
...
@@ -2281,7 +2299,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
UE_id
,
UE_id
,
eNB
->
scheduling_request_config
[
UE_id
].
sr_PUCCH_ResourceIndex
,
eNB
->
scheduling_request_config
[
UE_id
].
sr_PUCCH_ResourceIndex
,
0
,
//n2_pucch
0
,
//n2_pucch
0
,
// shortened format
do_srs
,
// shortened format
pucch_payload0
,
pucch_payload0
,
frame
,
frame
,
subframe
,
subframe
,
...
@@ -2313,7 +2331,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
...
@@ -2313,7 +2331,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
UE_id
,
UE_id
,
(
uint16_t
)
n1_pucch0
,
(
uint16_t
)
n1_pucch0
,
0
,
// n2_pucch
0
,
// n2_pucch
0
,
// shortened format
do_srs
,
// shortened format
pucch_payload0
,
pucch_payload0
,
frame
,
frame
,
subframe
,
subframe
,
...
@@ -2338,7 +2356,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
...
@@ -2338,7 +2356,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
UE_id
,
UE_id
,
(
uint16_t
)
n1_pucch1
,
(
uint16_t
)
n1_pucch1
,
0
,
//n2_pucch
0
,
//n2_pucch
0
,
// shortened format
do_srs
,
// shortened format
pucch_payload1
,
pucch_payload1
,
frame
,
frame
,
subframe
,
subframe
,
...
@@ -2886,8 +2904,6 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
...
@@ -2886,8 +2904,6 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
eNB
->
rb_mask_ul
[
2
]
=
0
;
eNB
->
rb_mask_ul
[
2
]
=
0
;
eNB
->
rb_mask_ul
[
3
]
=
0
;
eNB
->
rb_mask_ul
[
3
]
=
0
;
// Check for active processes in current subframe
// Check for active processes in current subframe
harq_pid
=
subframe2harq_pid
(
fp
,
harq_pid
=
subframe2harq_pid
(
fp
,
frame
,
subframe
);
frame
,
subframe
);
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
510612b3
...
@@ -435,162 +435,25 @@ uint8_t is_ri_TXOp(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id)
...
@@ -435,162 +435,25 @@ uint8_t is_ri_TXOp(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id)
return
(
0
);
return
(
0
);
}
}
void
compute_srs_pos
(
lte_frame_type_t
frameType
,
uint16_t
isrs
,
uint16_t
*
psrsPeriodicity
,
uint16_t
*
psrsOffset
)
{
if
(
TDD
==
frameType
)
{
if
(
isrs
<
10
)
{
mac_xface
->
macphy_exit
(
"2 ms SRS periodicity not supported"
);
}
if
((
isrs
>
9
)
&&
(
isrs
<
15
))
{
*
psrsPeriodicity
=
5
;
*
psrsOffset
=
isrs
-
10
;
}
if
((
isrs
>
14
)
&&
(
isrs
<
25
))
{
*
psrsPeriodicity
=
10
;
*
psrsOffset
=
isrs
-
15
;
}
if
((
isrs
>
24
)
&&
(
isrs
<
45
))
{
*
psrsPeriodicity
=
20
;
*
psrsOffset
=
isrs
-
25
;
}
if
((
isrs
>
44
)
&&
(
isrs
<
85
))
{
*
psrsPeriodicity
=
40
;
*
psrsOffset
=
isrs
-
45
;
}
if
((
isrs
>
84
)
&&
(
isrs
<
165
))
{
*
psrsPeriodicity
=
80
;
*
psrsOffset
=
isrs
-
85
;
}
if
((
isrs
>
164
)
&&
(
isrs
<
325
))
{
*
psrsPeriodicity
=
160
;
*
psrsOffset
=
isrs
-
165
;
}
if
((
isrs
>
324
)
&&
(
isrs
<
645
))
{
*
psrsPeriodicity
=
320
;
*
psrsOffset
=
isrs
-
325
;
}
if
(
isrs
>
644
)
void
ue_compute_srs_occasion
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
isSubframeSRS
)
{
mac_xface
->
macphy_exit
(
"Isrs out of range"
);
}
}
else
{
if
(
isrs
<
2
)
{
*
psrsPeriodicity
=
2
;
*
psrsOffset
=
isrs
;
}
if
((
isrs
>
1
)
&&
(
isrs
<
7
))
{
*
psrsPeriodicity
=
5
;
*
psrsOffset
=
isrs
-
2
;
}
if
((
isrs
>
6
)
&&
(
isrs
<
17
))
{
*
psrsPeriodicity
=
10
;
*
psrsOffset
=
isrs
-
7
;
}
if
((
isrs
>
16
)
&&
(
isrs
<
37
))
{
*
psrsPeriodicity
=
20
;
*
psrsOffset
=
isrs
-
17
;
}
if
((
isrs
>
36
)
&&
(
isrs
<
77
))
{
*
psrsPeriodicity
=
40
;
*
psrsOffset
=
isrs
-
37
;
}
if
((
isrs
>
76
)
&&
(
isrs
<
157
))
{
*
psrsPeriodicity
=
80
;
*
psrsOffset
=
isrs
-
77
;
}
if
((
isrs
>
156
)
&&
(
isrs
<
317
))
{
*
psrsPeriodicity
=
160
;
*
psrsOffset
=
isrs
-
157
;
}
if
((
isrs
>
316
)
&&
(
isrs
<
637
))
{
*
psrsPeriodicity
=
320
;
*
psrsOffset
=
isrs
-
317
;
}
if
(
isrs
>
636
)
{
mac_xface
->
macphy_exit
(
"Isrs out of range"
);
}
}
}
void
ue_compute_srs_occasion
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
)
{
{
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
int
frame_tx
=
proc
->
frame_tx
;
int
frame_tx
=
proc
->
frame_tx
;
int
subframe_tx
=
proc
->
subframe_tx
;
int
subframe_tx
=
proc
->
subframe_tx
;
uint8_t
isSubframeSRS
=
0
;
// SRS Cell Occasion
SOUNDINGRS_UL_CONFIG_DEDICATED
*
pSoundingrs_ul_config_dedicated
=&
ue
->
soundingrs_ul_config_dedicated
[
eNB_id
];
uint16_t
srsPeriodicity
;
uint16_t
srsOffset
;
uint8_t
is_pucch2_subframe
=
0
;
uint8_t
is_pucch2_subframe
=
0
;
uint8_t
is_sr_an_subframe
=
0
;
uint8_t
is_sr_an_subframe
=
0
;
SOUNDINGRS_UL_CONFIG_DEDICATED
*
pSoundingrs_ul_config_dedicated
=&
ue
->
soundingrs_ul_config_dedicated
[
eNB_id
];
// check for SRS opportunity
// check for SRS opportunity
pSoundingrs_ul_config_dedicated
->
srsUeSubframe
=
0
;
pSoundingrs_ul_config_dedicated
->
srsUeSubframe
=
0
;
pSoundingrs_ul_config_dedicated
->
srsCellSubframe
=
0
;
pSoundingrs_ul_config_dedicated
->
srsCellSubframe
=
isSubframeSRS
;
ue
->
ulsch
[
eNB_id
]
->
srs_active
=
0
;
ue
->
ulsch
[
eNB_id
]
->
Nsymb_pusch
=
12
-
(
frame_parms
->
Ncp
<<
1
)
-
ue
->
ulsch
[
eNB_id
]
->
srs_active
;
if
(
frame_parms
->
soundingrs_ul_config_common
.
enabled_flag
)
{
LOG_D
(
PHY
,
" SRS SUBFRAMECONFIG: %d, Isrs: %d
\n
"
,
frame_parms
->
soundingrs_ul_config_common
.
srs_SubframeConfig
,
pSoundingrs_ul_config_dedicated
->
srs_ConfigIndex
);
if
(
isSubframeSRS
)
{
uint8_t
TSFC
;
uint16_t
deltaTSFC
;
// bitmap
uint8_t
srs_SubframeConfig
;
uint16_t
srsPeriodicity
;
uint16_t
srsOffset
;
// table resuming TSFC (Period) and deltaSFC (offset)
const
uint16_t
deltaTSFCTabType1
[
15
][
2
]
=
{
{
1
,
1
},{
1
,
2
},{
2
,
2
},{
1
,
5
},{
2
,
5
},{
4
,
5
},{
8
,
5
},{
3
,
5
},{
12
,
5
},{
1
,
10
},{
2
,
10
},{
4
,
10
},{
8
,
10
},{
351
,
10
},{
383
,
10
}
};
// Table 5.5.3.3-2 3GPP 36.211 FDD
const
uint16_t
deltaTSFCTabType2
[
14
][
2
]
=
{
{
2
,
5
},{
6
,
5
},{
10
,
5
},{
18
,
5
},{
14
,
5
},{
22
,
5
},{
26
,
5
},{
30
,
5
},{
70
,
10
},{
74
,
10
},{
194
,
10
},{
326
,
10
},{
586
,
10
},{
210
,
10
}
};
// Table 5.5.3.3-2 3GPP 36.211 TDD
srs_SubframeConfig
=
frame_parms
->
soundingrs_ul_config_common
.
srs_SubframeConfig
;
if
(
FDD
==
frame_parms
->
frame_type
)
{
// srs_SubframeConfig =< 14
deltaTSFC
=
deltaTSFCTabType1
[
srs_SubframeConfig
][
0
];
TSFC
=
deltaTSFCTabType1
[
srs_SubframeConfig
][
1
];
}
else
{
// srs_SubframeConfig =< 13
deltaTSFC
=
deltaTSFCTabType2
[
srs_SubframeConfig
][
0
];
TSFC
=
deltaTSFCTabType2
[
srs_SubframeConfig
][
1
];
}
// Sounding reference signal subframes are the subframes satisfying ns/2 mod TSFC (- deltaTSFC
uint16_t
tmp
=
(
subframe_tx
%
TSFC
);
if
((
1
<<
tmp
)
&
deltaTSFC
)
{
// This is a Sounding reference signal subframes
isSubframeSRS
=
1
;
pSoundingrs_ul_config_dedicated
->
srsCellSubframe
=
1
;
}
LOG_D
(
PHY
,
" ISTDD: %d, TSFC: %d, deltaTSFC: %d, AbsSubframeTX: %d.%d, srsCellSubframe: %d
\n
"
,
frame_parms
->
frame_type
,
TSFC
,
deltaTSFC
,
frame_tx
,
subframe_tx
,
pSoundingrs_ul_config_dedicated
->
srsCellSubframe
);
LOG_D
(
PHY
,
" SrsDedicatedSetup: %d
\n
"
,
pSoundingrs_ul_config_dedicated
->
srsConfigDedicatedSetup
);
LOG_D
(
PHY
,
" SrsDedicatedSetup: %d
\n
"
,
pSoundingrs_ul_config_dedicated
->
srsConfigDedicatedSetup
);
if
(
pSoundingrs_ul_config_dedicated
->
srsConfigDedicatedSetup
)
if
(
pSoundingrs_ul_config_dedicated
->
srsConfigDedicatedSetup
)
{
{
...
@@ -666,6 +529,7 @@ void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id
...
@@ -666,6 +529,7 @@ void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id
}
}
}
}
void
get_cqipmiri_params
(
PHY_VARS_UE
*
ue
,
uint8_t
eNB_id
)
void
get_cqipmiri_params
(
PHY_VARS_UE
*
ue
,
uint8_t
eNB_id
)
{
{
...
@@ -2131,9 +1995,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
...
@@ -2131,9 +1995,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
int
subframe_tx
=
proc
->
subframe_tx
;
int
subframe_tx
=
proc
->
subframe_tx
;
int
frame_tx
=
proc
->
frame_tx
;
int
frame_tx
=
proc
->
frame_tx
;
unsigned
int
aa
;
unsigned
int
aa
;
uint8_t
isSubframeSRS
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX
,
VCD_FUNCTION_IN
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX
,
VCD_FUNCTION_IN
);
...
@@ -2161,7 +2023,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
...
@@ -2161,7 +2023,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
if
(
ue
->
UE_mode
[
eNB_id
]
!=
PRACH
)
{
if
(
ue
->
UE_mode
[
eNB_id
]
!=
PRACH
)
{
// check cell srs subframe and ue srs subframe. This has an impact on pusch encoding
// check cell srs subframe and ue srs subframe. This has an impact on pusch encoding
ue_compute_srs_occasion
(
ue
,
proc
,
eNB_id
);
isSubframeSRS
=
is_srs_occasion_common
(
&
ue
->
frame_parms
,
proc
->
frame_tx
,
proc
->
subframe_tx
);
ue_compute_srs_occasion
(
ue
,
proc
,
eNB_id
,
isSubframeSRS
);
ue_ulsch_uespec_procedures
(
ue
,
proc
,
eNB_id
,
abstraction_flag
);
ue_ulsch_uespec_procedures
(
ue
,
proc
,
eNB_id
,
abstraction_flag
);
...
...
openair1/SIMULATION/LTE_PHY/ulsim.c
View file @
510612b3
...
@@ -632,12 +632,14 @@ int main(int argc, char **argv)
...
@@ -632,12 +632,14 @@ int main(int argc, char **argv)
UE
->
pdcch_vars
[
0
]
->
crnti
=
14
;
UE
->
pdcch_vars
[
0
]
->
crnti
=
14
;
UE
->
frame_parms
.
soundingrs_ul_config_common
.
enabled_flag
=
srs_flag
;
UE
->
frame_parms
.
soundingrs_ul_config_common
.
srs_BandwidthConfig
=
2
;
UE
->
frame_parms
.
soundingrs_ul_config_common
.
srs_BandwidthConfig
=
2
;
UE
->
frame_parms
.
soundingrs_ul_config_common
.
srs_SubframeConfig
=
7
;
UE
->
frame_parms
.
soundingrs_ul_config_common
.
srs_SubframeConfig
=
7
;
UE
->
soundingrs_ul_config_dedicated
[
eNB_id
].
srs_Bandwidth
=
0
;
UE
->
soundingrs_ul_config_dedicated
[
eNB_id
].
srs_Bandwidth
=
0
;
UE
->
soundingrs_ul_config_dedicated
[
eNB_id
].
transmissionComb
=
0
;
UE
->
soundingrs_ul_config_dedicated
[
eNB_id
].
transmissionComb
=
0
;
UE
->
soundingrs_ul_config_dedicated
[
eNB_id
].
freqDomainPosition
=
0
;
UE
->
soundingrs_ul_config_dedicated
[
eNB_id
].
freqDomainPosition
=
0
;
eNB
->
frame_parms
.
soundingrs_ul_config_common
.
enabled_flag
=
srs_flag
;
eNB
->
frame_parms
.
soundingrs_ul_config_common
.
srs_BandwidthConfig
=
2
;
eNB
->
frame_parms
.
soundingrs_ul_config_common
.
srs_BandwidthConfig
=
2
;
eNB
->
frame_parms
.
soundingrs_ul_config_common
.
srs_SubframeConfig
=
7
;
eNB
->
frame_parms
.
soundingrs_ul_config_common
.
srs_SubframeConfig
=
7
;
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
510612b3
...
@@ -885,7 +885,7 @@ abort();
...
@@ -885,7 +885,7 @@ abort();
rb_table_index
=
UE_template
->
pre_allocated_rb_table_index_ul
;
rb_table_index
=
UE_template
->
pre_allocated_rb_table_index_ul
;
}
else
{
}
else
{
mcs
=
10
;
//cmin (10, openair_daq_vars.target_ue_ul_mcs);
mcs
=
10
;
//cmin (10, openair_daq_vars.target_ue_ul_mcs);
rb_table_index
=
5
;
// for PHR
rb_table_index
=
13
;
// for PHR
}
}
UE_list
->
eNB_UE_stats
[
CC_id
][
UE_id
].
ulsch_mcs2
=
mcs
;
UE_list
->
eNB_UE_stats
[
CC_id
][
UE_id
].
ulsch_mcs2
=
mcs
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
View file @
510612b3
...
@@ -62,11 +62,11 @@ eNBs =
...
@@ -62,11 +62,11 @@ eNBs =
pusch_nDMRS1
=
1
;
pusch_nDMRS1
=
1
;
phich_duration
=
"NORMAL"
;
phich_duration
=
"NORMAL"
;
phich_resource
=
"ONESIXTH"
;
phich_resource
=
"ONESIXTH"
;
srs_enable
=
"
DIS
ABLE"
;
srs_enable
=
"
ENB
ABLE"
;
/*
srs_BandwidthConfig
=
;
srs_BandwidthConfig
=
2
;
srs_SubframeConfig
=;
srs_SubframeConfig
=
3
;
srs_ackNackST
=;
srs_ackNackST
=
"FALSE"
;
srs_MaxUpPts
=
;*/
srs_MaxUpPts
=
"DISABLE"
;
pusch_p0_Nominal
= -
90
;
pusch_p0_Nominal
= -
90
;
pusch_alpha
=
"AL1"
;
pusch_alpha
=
"AL1"
;
...
...
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