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
wangwenhui
OpenXG-RAN
Commits
e450941f
Commit
e450941f
authored
Nov 21, 2016
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into feature-21-TM7
parents
5c5c3363
e86b3e31
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
215 additions
and
12 deletions
+215
-12
common/utils/T/T_messages.txt
common/utils/T/T_messages.txt
+4
-0
openair1/PHY/CODING/3gpplte_turbo_decoder.c
openair1/PHY/CODING/3gpplte_turbo_decoder.c
+1
-1
openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
+1
-1
openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
+1
-1
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
+1
-1
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
+1
-1
openair1/PHY/LTE_TRANSPORT/defs.h
openair1/PHY/LTE_TRANSPORT/defs.h
+8
-0
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+18
-6
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+32
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band4.exmimo2.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band4.exmimo2.conf
+147
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
...ets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
+1
-1
No files found.
common/utils/T/T_messages.txt
View file @
e450941f
...
...
@@ -61,6 +61,10 @@ ID = ENB_PHY_PUCCH_1_ENERGY
DESC = eNodeB PUCCH 1 energy and threshold
GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,energy : int,threshold
ID = ENB_PHY_PHICH
DESC = eNodeB PHICH
GROUP = ALL:PHY:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid : int,NGROUP : int,NSF : int,ngroup : int,nseq : int,ACK : int,first_rb : int,n_DMRS
#MAC logs
ID = ENB_MAC_UE_DL_SDU
...
...
openair1/PHY/CODING/3gpplte_turbo_decoder.c
View file @
e450941f
...
...
@@ -1058,7 +1058,7 @@ unsigned char phy_threegpplte_turbo_decoder_scalar(llr_t *y,
break
;
}
if
(
(
crc
==
oldcrc
)
&&
(
crc
!=
0
)
)
{
if
(
crc
==
oldcrc
)
{
return
(
iteration_cnt
);
}
...
...
openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
View file @
e450941f
...
...
@@ -1375,7 +1375,7 @@ unsigned char phy_threegpplte_turbo_decoder16avx2(int16_t *y,
fprintf
(
fdavx2b
,
"oldcrc %x, crc %x, oldcrc_cw2 %x, crc_cw2 %x
\n
"
,
oldcrc
,
crc
,
oldcrc_cw2
,
crc_cw2
);
#endif
if
(
(
crc
==
oldcrc
)
&&
(
crc
!=
0
)
&&
(
crc_cw2
==
oldcrc_cw2
)
&&
(
crc_cw2
!=
0
)
)
{
if
(
crc
==
oldcrc
&&
crc_cw2
==
oldcrc_cw2
)
{
return
(
iteration_cnt
);
}
}
...
...
openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
View file @
e450941f
...
...
@@ -2556,7 +2556,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
stop_meas
(
intl2_stats
);
if
(
(
crc
==
oldcrc
)
&&
(
crc
!=
0
)
)
{
if
(
crc
==
oldcrc
)
{
return
(
iteration_cnt
);
}
}
...
...
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
View file @
e450941f
...
...
@@ -1612,7 +1612,7 @@ unsigned char phy_threegpplte_turbo_decoder16(short *y,
fprintf
(
fdsse4
,
"oldcrc %x, crc %x
\n
"
,
oldcrc
,
crc
);
#endif
if
(
(
crc
==
oldcrc
)
&&
(
crc
!=
0
)
)
{
if
(
crc
==
oldcrc
)
{
return
(
iteration_cnt
);
}
}
...
...
openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
View file @
e450941f
...
...
@@ -1625,7 +1625,7 @@ unsigned char phy_threegpplte_turbo_decoder8(short *y,
if
(
intl2_stats
)
stop_meas
(
intl2_stats
);
if
(
(
crc
==
oldcrc
)
&&
(
crc
!=
0
)
)
{
if
(
crc
==
oldcrc
)
{
return
(
iteration_cnt
);
}
}
...
...
openair1/PHY/LTE_TRANSPORT/defs.h
View file @
e450941f
...
...
@@ -364,6 +364,10 @@ typedef struct {
uint8_t
TPC
;
/// First Allocated RB
uint16_t
first_rb
;
/// First Allocated RB - previous scheduling
/// This is needed for PHICH generation which
/// is done after a new scheduling
uint16_t
previous_first_rb
;
/// Current Number of RBs
uint16_t
nb_rb
;
/// Transport block size
...
...
@@ -448,6 +452,10 @@ typedef struct {
uint8_t
Nsymb_initial
;
/// n_DMRS for cyclic shift of DMRS (36.213 Table 9.1.2-2)
uint8_t
n_DMRS
;
/// n_DMRS for cyclic shift of DMRS (36.213 Table 9.1.2-2) - previous scheduling
/// This is needed for PHICH generation which
/// is done after a new scheduling
uint8_t
previous_n_DMRS
;
/// n_DMRS 2 for cyclic shift of DMRS (36.211 Table 5.5.1.1.-1)
uint8_t
n_DMRS2
;
/// Flag to indicate that this ULSCH is for calibration information sent from UE (i.e. no MAC SDU to pass up)
...
...
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
e450941f
...
...
@@ -1453,8 +1453,12 @@ void generate_phich_top(PHY_VARS_eNB *eNB,
LOG_D
(
PHY
,
"[eNB][PUSCH %d/%x] Frame %d subframe %d (pusch_subframe %d,pusch_frame %d) phich active %d
\n
"
,
harq_pid
,
ulsch
[
UE_id
]
->
rnti
,
proc
->
frame_tx
,
subframe
,
pusch_subframe
,
pusch_frame
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
phich_active
);
ngroup_PHICH
=
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
+
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
n_DMRS
)
%
Ngroup_PHICH
;
/* the HARQ process may have been reused by a new scheduling, so we use
* previous values of first_rb and n_DMRS to compute ngroup_PHICH and nseq_PHICH
*/
ngroup_PHICH
=
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
previous_first_rb
+
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
previous_n_DMRS
)
%
Ngroup_PHICH
;
if
((
frame_parms
->
tdd_config
==
0
)
&&
(
frame_parms
->
frame_type
==
TDD
)
)
{
...
...
@@ -1462,20 +1466,28 @@ void generate_phich_top(PHY_VARS_eNB *eNB,
ngroup_PHICH
+=
Ngroup_PHICH
;
}
nseq_PHICH
=
((
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
/
Ngroup_PHICH
)
+
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
n_DMRS
)
%
(
2
*
NSF_PHICH
);
nseq_PHICH
=
((
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
previous_
first_rb
/
Ngroup_PHICH
)
+
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
previous_
n_DMRS
)
%
(
2
*
NSF_PHICH
);
LOG_D
(
PHY
,
"[eNB %d][PUSCH %d] Frame %d subframe %d Generating PHICH, ngroup_PHICH %d/%d, nseq_PHICH %d : HI %d, first_rb %d dci_alloc %d)
\n
"
,
eNB
->
Mod_id
,
harq_pid
,
proc
->
frame_tx
,
subframe
,
ngroup_PHICH
,
Ngroup_PHICH
,
nseq_PHICH
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
phich_ACK
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
previous_
first_rb
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
dci_alloc
);
T
(
T_ENB_PHY_PHICH
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
proc
->
frame_tx
),
T_INT
(
subframe
),
T_INT
(
UE_id
),
T_INT
(
ulsch
[
UE_id
]
->
rnti
),
T_INT
(
harq_pid
),
T_INT
(
Ngroup_PHICH
),
T_INT
(
NSF_PHICH
),
T_INT
(
ngroup_PHICH
),
T_INT
(
nseq_PHICH
),
T_INT
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
phich_ACK
),
T_INT
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
previous_first_rb
),
T_INT
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
previous_n_DMRS
));
if
(
ulsch
[
UE_id
]
->
Msg3_active
==
1
)
{
LOG_D
(
PHY
,
"[eNB %d][PUSCH %d][RAPROC] Frame %d, subframe %d: Generating Msg3 PHICH for UE %d, ngroup_PHICH %d/%d, nseq_PHICH %d : HI %d, first_rb %d
\n
"
,
eNB
->
Mod_id
,
harq_pid
,
proc
->
frame_tx
,
subframe
,
UE_id
,
ngroup_PHICH
,
Ngroup_PHICH
,
nseq_PHICH
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
phich_ACK
,
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
);
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
previous_
first_rb
);
}
if
(
eNB
->
abstraction_flag
==
0
)
{
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
e450941f
...
...
@@ -1217,6 +1217,38 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
eNB
->
dlsch
[
i
][
0
]
->
subframe_tx
[
subframe
]
=
0
;
}
/* save old HARQ information needed for PHICH generation */
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
if
(
eNB
->
ulsch
[
i
])
{
/* Store first_rb and n_DMRS for correct PHICH generation below.
* For PHICH generation we need "old" values of last scheduling
* for this HARQ process. 'generate_eNB_dlsch_params' below will
* overwrite first_rb and n_DMRS and 'generate_phich_top', done
* after 'generate_eNB_dlsch_params', would use the "new" values
* instead of the "old" ones.
*
* This has been tested for FDD only, may be wrong for TDD.
*
* TODO: maybe we should restructure the code to be sure it
* is done correctly. The main concern is if the code
* changes and first_rb and n_DMRS are modified before
* we reach here, then the PHICH processing will be wrong,
* using wrong first_rb and n_DMRS values to compute
* ngroup_PHICH and nseq_PHICH.
*
* TODO: check if that works with TDD.
*/
if
((
subframe_select
(
fp
,
ul_subframe
)
==
SF_UL
)
||
(
fp
->
frame_type
==
FDD
))
{
harq_pid
=
subframe2harq_pid
(
fp
,
ul_frame
,
ul_subframe
);
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
previous_first_rb
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
first_rb
;
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
previous_n_DMRS
=
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
n_DMRS
;
}
}
}
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
,
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band4.exmimo2.conf
0 → 100644
View file @
e450941f
Active_eNBs
= (
"eNB_Eurecom_LTEBox"
);
# Asn1_verbosity, choice in: none, info, annoying
Asn1_verbosity
=
"none"
;
eNBs
=
(
{
# real_time choice in {hard, rt-preempt, no}
real_time
=
"no"
;
//////////
Identification
parameters
:
eNB_ID
=
0
xe00
;
cell_type
=
"CELL_MACRO_ENB"
;
eNB_name
=
"eNB_Eurecom_LTEBox"
;
//
Tracking
area
code
,
0
x0000
and
0
xfffe
are
reserved
values
tracking_area_code
=
"1"
;
mobile_country_code
=
"208"
;
mobile_network_code
=
"94"
;
//////////
Physical
parameters
:
component_carriers
= (
{
frame_type
=
"FDD"
;
tdd_config
=
3
;
tdd_config_s
=
0
;
prefix_type
=
"NORMAL"
;
eutra_band
=
4
;
downlink_frequency
=
2112500000
L
;
uplink_frequency_offset
= -
400000000
;
Nid_cell
=
0
;
N_RB_DL
=
25
;
Nid_cell_mbsfn
=
0
;
nb_antennas_tx
=
1
;
nb_antennas_rx
=
1
;
nb_antenna_ports
=
1
;
tx_gain
=
20
;
rx_gain
=
20
;
prach_root
=
22
;
prach_config_index
=
0
;
prach_high_speed
=
"DISABLE"
;
prach_zero_correlation
=
1
;
prach_freq_offset
=
2
;
pucch_delta_shift
=
1
;
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
25
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
pusch_hoppingMode
=
"interSubFrame"
;
pusch_hoppingOffset
=
1
;
pusch_groupHoppingEnabled
=
"ENABLE"
;
pusch_groupAssignment
=
0
;
pusch_sequenceHoppingEnabled
=
"DISABLE"
;
pusch_nDMRS1
=
0
;
phich_duration
=
"NORMAL"
;
phich_resource
=
"ONESIXTH"
;
srs_enable
=
"DISABLE"
;
/*
srs_BandwidthConfig
=;
srs_SubframeConfig
=;
srs_ackNackST
=;
srs_MaxUpPts
=;*/
pusch_p0_Nominal
= -
85
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
96
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
pucch_deltaF_Format2
=
"deltaF0"
;
pucch_deltaF_Format2a
=
"deltaF0"
;
pucch_deltaF_Format2b
=
"deltaF0"
;
rach_numberOfRA_Preambles
=
64
;
rach_preamblesGroupAConfig
=
"DISABLE"
;
/*
rach_sizeOfRA_PreamblesGroupA
= ;
rach_messageSizeGroupA
= ;
rach_messagePowerOffsetGroupB
= ;
*/
rach_powerRampingStep
=
2
;
rach_preambleInitialReceivedTargetPower
= -
100
;
rach_preambleTransMax
=
10
;
rach_raResponseWindowSize
=
10
;
rach_macContentionResolutionTimer
=
48
;
rach_maxHARQ_Msg3Tx
=
4
;
pcch_default_PagingCycle
=
128
;
pcch_nB
=
"oneT"
;
bcch_modificationPeriodCoeff
=
2
;
ue_TimersAndConstants_t300
=
1000
;
ue_TimersAndConstants_t301
=
1000
;
ue_TimersAndConstants_t310
=
1000
;
ue_TimersAndConstants_t311
=
20000
; //
10000
;
ue_TimersAndConstants_n310
=
20
;
ue_TimersAndConstants_n311
=
1
;
ue_TransmissionMode
=
1
;
}
);
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.12.70"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.12.212/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.12.212/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
log_config
:
{
global_log_level
=
"info"
;
global_log_verbosity
=
"high"
;
hw_log_level
=
"info"
;
hw_log_verbosity
=
"high"
;
phy_log_level
=
"info"
;
phy_log_verbosity
=
"high"
;
mac_log_level
=
"debug"
;
mac_log_verbosity
=
"high"
;
rlc_log_level
=
"info"
;
rlc_log_verbosity
=
"high"
;
pdcp_log_level
=
"info"
;
pdcp_log_verbosity
=
"high"
;
rrc_log_level
=
"info"
;
rrc_log_verbosity
=
"high"
;
};
}
);
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
View file @
e450941f
...
...
@@ -135,7 +135,7 @@ eNBs =
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.12.
171
"
;
mme_ip_address
= ( {
ipv4
=
"192.168.12.
70
"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
...
...
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