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
a3d7d6a1
Commit
a3d7d6a1
authored
Dec 15, 2015
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'enhancement-60-exmimo-tdd' into develop
parents
f2e850c1
635da3dc
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
71 additions
and
20 deletions
+71
-20
targets/ARCH/COMMON/common_lib.h
targets/ARCH/COMMON/common_lib.h
+7
-0
targets/ARCH/EXMIMO/DEFS/pcie_interface.h
targets/ARCH/EXMIMO/DEFS/pcie_interface.h
+7
-0
targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
+11
-2
targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
...ts/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
+0
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.exmimo2.conf
...PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.exmimo2.conf
+4
-4
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
.../PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
+7
-7
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+35
-7
No files found.
targets/ARCH/COMMON/common_lib.h
View file @
a3d7d6a1
...
...
@@ -60,6 +60,11 @@ typedef enum {
max_gain
=
0
,
med_gain
,
byp_gain
}
rx_gain_t
;
typedef
enum
{
duplex_mode_TDD
=
1
,
duplex_mode_FDD
=
0
}
duplex_mode_t
;
/** @addtogroup _PHY_RF_INTERFACE_
* @{
*/
...
...
@@ -76,6 +81,8 @@ typedef struct {
int
Mod_id
;
// device log level
int
log_level
;
//! duplexing mode
duplex_mode_t
duplex_mode
;
//! number of downlink resource blocks
int
num_rb_dl
;
//! number of samples per frame
...
...
targets/ARCH/EXMIMO/DEFS/pcie_interface.h
View file @
a3d7d6a1
...
...
@@ -316,7 +316,9 @@ typedef struct {
//
// In TDD mode, there are two ways to control the RX/TX switch:
// 1. using the LSB from the TX data (TXRXSWITCH_LSB)
// only the LSB from RF chain set in the ACTIVE_RF register controls the switch on all the chains
// 2. using FPGA logic, based on switch_offset[0..3]
// this mode is not tested well and should be used with care
#define DUPLEXMODE_MASK (1<<0)
#define DUPLEXMODE_FDD 0
#define DUPLEXMODE_TDD (1<<0)
...
...
@@ -330,6 +332,11 @@ typedef struct {
#define SWITCHSTATE_1 (1<<3)
#define TEST_ADACLOOP_MASK (1<<4)
#define TEST_ADACLOOP_EN (1<<4)
#define RF_ACTIVE_MASK (15<<5)
#define RF_ACTIVE_1 (1<<5)
#define RF_ACTIVE_2 (2<<5)
#define RF_ACTIVE_3 (4<<5)
#define RF_ACTIVE_4 (8<<5)
typedef
enum
{
BW5
,
...
...
targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
View file @
a3d7d6a1
...
...
@@ -296,6 +296,7 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
int
ant
,
card
;
int
resampling_factor
=
2
;
int
rx_filter
=
RXLPF25
,
tx_filter
=
TXLPF25
;
int
ACTIVE_RF
=
0
;
exmimo_config_t
*
p_exmimo_config
;
exmimo_id_t
*
p_exmimo_id
;
...
...
@@ -315,8 +316,6 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
else
p_exmimo_config
->
framing
.
eNB_flag
=
!
UE_flag
;
p_exmimo_config
->
framing
.
tdd_config
=
DUPLEXMODE_FDD
+
TXRXSWITCH_LSB
;
if
(
openair0_num_detected_cards
==
1
)
p_exmimo_config
->
framing
.
multicard_syncmode
=
SYNCMODE_FREE
;
else
if
(
card
==
0
)
...
...
@@ -355,6 +354,7 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
for
(
ant
=
0
;
ant
<
4
;
ant
++
)
{
if
(
openair0_cfg
[
card
].
rx_freq
[
ant
]
||
openair0_cfg
[
card
].
tx_freq
[
ant
])
{
ACTIVE_RF
+=
(
1
<<
ant
)
<<
5
;
p_exmimo_config
->
rf
.
rf_mode
[
ant
]
=
RF_MODE_BASE
;
p_exmimo_config
->
rf
.
do_autocal
[
ant
]
=
1
;
//openair0_cfg[card].autocal[ant];
printf
(
"card %d, antenna %d, autocal %d
\n
"
,
card
,
ant
,
openair0_cfg
[
card
].
autocal
[
ant
]);
...
...
@@ -408,6 +408,15 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
}
}
if
(
openair0_cfg
[
card
].
duplex_mode
==
duplex_mode_FDD
)
{
p_exmimo_config
->
framing
.
tdd_config
=
DUPLEXMODE_FDD
;
printf
(
"!!!!!setting FDD (tdd_config=%d)
\n
"
,
p_exmimo_config
->
framing
.
tdd_config
);
}
else
{
p_exmimo_config
->
framing
.
tdd_config
=
DUPLEXMODE_TDD
+
TXRXSWITCH_LSB
+
ACTIVE_RF
;
printf
(
"!!!!!setting TDD (tdd_config=%d)
\n
"
,
p_exmimo_config
->
framing
.
tdd_config
);
}
ret
=
ioctl
(
openair0_fd
,
openair_DUMP_CONFIG
,
card
);
if
(
ret
!=
0
)
...
...
targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
View file @
a3d7d6a1
No preview for this file type
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.exmimo2.conf
View file @
a3d7d6a1
...
...
@@ -17,7 +17,7 @@ eNBs =
mobile_country_code
=
"208"
;
mobile_network_code
=
"9
2
"
;
mobile_network_code
=
"9
3
"
;
//////////
Physical
parameters
:
...
...
@@ -131,7 +131,7 @@ eNBs =
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.1
3.11
"
;
mme_ip_address
= ( {
ipv4
=
"192.168.1
2.70
"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
...
...
@@ -141,10 +141,10 @@ eNBs =
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.1
3.10
/24"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.1
2.212
/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.1
3.10
/24"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.1
2.212
/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
View file @
a3d7d6a1
...
...
@@ -17,7 +17,7 @@ eNBs =
mobile_country_code
=
"208"
;
mobile_network_code
=
"9
2
"
;
mobile_network_code
=
"9
3
"
;
//////////
Physical
parameters
:
...
...
@@ -31,7 +31,7 @@ eNBs =
downlink_frequency
=
2680000000
L
;
uplink_frequency_offset
= -
120000000
;
Nid_cell
=
0
;
N_RB_DL
=
50
;
N_RB_DL
=
25
;
Nid_cell_mbsfn
=
0
;
nb_antennas_tx
=
1
;
nb_antennas_rx
=
1
;
...
...
@@ -131,7 +131,7 @@ eNBs =
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"1
0.0.1.
1"
;
mme_ip_address
= ( {
ipv4
=
"1
92.168.12.17
1"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
...
...
@@ -140,11 +140,11 @@ eNBs =
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth
3
"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"1
0.0.1.229
/24"
;
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth
2
"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"1
92.168.12.80
/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth
3
"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"1
0.0.1.229
/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth
2
"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"1
92.168.12.80
/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
...
...
targets/RT/USER/lte-softmodem.c
View file @
a3d7d6a1
...
...
@@ -418,7 +418,7 @@ void help (void) {
printf
(
" --ue-txgain set UE TX gain
\n
"
);
printf
(
" --ue-scan_carrier set UE to scan around carrier
\n
"
);
printf
(
" --loop-memory get softmodem (UE) to loop through memory instead of acquiring from HW
\n
"
);
printf
(
" -C Set the downlink freque
cny for all Component carrier
\n
"
);
printf
(
" -C Set the downlink freque
ncy for all component carriers
\n
"
);
printf
(
" -d Enable soft scope and L1 and L2 stats (Xforms)
\n
"
);
printf
(
" -F Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime
\n
"
);
printf
(
" -g Set the global log level, valide options: (9:trace, 8/7:debug, 6:info, 4:warn, 3:error)
\n
"
);
...
...
@@ -432,6 +432,7 @@ void help (void) {
printf
(
" -r Set the PRB, valid values: 6, 25, 50, 100
\n
"
);
printf
(
" -S Skip the missed slots/subframes
\n
"
);
printf
(
" -t Set the maximum uplink MCS
\n
"
);
printf
(
" -T Set hardware to TDD mode (default: FDD). Used only with -U (otherwise set in config file).
\n
"
);
printf
(
" -U Set the lte softmodem as a UE
\n
"
);
printf
(
" -W Enable L2 wireshark messages on localhost
\n
"
);
printf
(
" -V Enable VCD (generated file will be located atopenair_dump_eNB.vcd, read it with target/RT/USER/eNB.gtkw
\n
"
);
...
...
@@ -966,6 +967,25 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
phy_vars_eNB
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
tx_offset
++
]
=
0x00010001
;
}
}
if
((((
phy_vars_eNB
->
lte_frame_parms
.
tdd_config
==
0
)
||
(
phy_vars_eNB
->
lte_frame_parms
.
tdd_config
==
1
)
||
(
phy_vars_eNB
->
lte_frame_parms
.
tdd_config
==
2
)
||
(
phy_vars_eNB
->
lte_frame_parms
.
tdd_config
==
6
))
&&
(
subframe
==
0
))
||
(
subframe
==
5
))
{
// turn on tx switch N_TA_offset before
//LOG_D(HW,"subframe %d, time to switch to tx (N_TA_offset %d, slot_offset %d) \n",subframe,phy_vars_eNB->N_TA_offset,slot_offset);
for
(
i
=
0
;
i
<
phy_vars_eNB
->
N_TA_offset
;
i
++
)
{
tx_offset
=
(
int
)
slot_offset
+
time_offset
[
aa
]
+
i
-
phy_vars_eNB
->
N_TA_offset
/
2
;
if
(
tx_offset
<
0
)
tx_offset
+=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_frame_parms
.
samples_per_tti
;
if
(
tx_offset
>=
(
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_frame_parms
.
samples_per_tti
))
tx_offset
-=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_frame_parms
.
samples_per_tti
;
phy_vars_eNB
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
tx_offset
]
=
0x00000000
;
}
}
}
}
}
...
...
@@ -2037,7 +2057,7 @@ static void get_options (int argc, char **argv)
{
NULL
,
0
,
NULL
,
0
}
};
while
((
c
=
getopt_long
(
argc
,
argv
,
"C:dK:g:F:G:hqO:m:SUVRM:r:P:Ws:t:x:"
,
long_options
,
NULL
))
!=
-
1
)
{
while
((
c
=
getopt_long
(
argc
,
argv
,
"C:dK:g:F:G:hqO:m:SUVRM:r:P:Ws:t:
T
x:"
,
long_options
,
NULL
))
!=
-
1
)
{
switch
(
c
)
{
case
LONG_OPTION_MAXPOWER
:
tx_max_power
[
0
]
=
atoi
(
optarg
);
...
...
@@ -2302,8 +2322,13 @@ static void get_options (int argc, char **argv)
printf
(
"Transmission mode > 2 (%d) not supported for the moment
\n
"
,
transmission_mode
);
exit
(
-
1
);
}
break
;
case
'T'
:
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
frame_parms
[
CC_id
]
->
frame_type
=
TDD
;
break
;
case
'h'
:
help
();
exit
(
-
1
);
...
...
@@ -2463,12 +2488,10 @@ int main( int argc, char **argv )
memset
(
tx_max_power
,
0
,
sizeof
(
int
)
*
MAX_NUM_CCs
);
set_latency_target
();
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
frame_parms
[
CC_id
]
=
(
LTE_DL_FRAME_PARMS
*
)
malloc
(
sizeof
(
LTE_DL_FRAME_PARMS
));
/* Set some default values that may be overwritten while reading options */
frame_parms
[
CC_id
]
->
frame_type
=
FDD
;
/* TDD */
frame_parms
[
CC_id
]
->
frame_type
=
FDD
;
frame_parms
[
CC_id
]
->
tdd_config
=
3
;
frame_parms
[
CC_id
]
->
tdd_config_S
=
0
;
frame_parms
[
CC_id
]
->
N_RB_DL
=
100
;
...
...
@@ -2816,7 +2839,7 @@ int main( int argc, char **argv )
}
#else
//already taken care of in lte-softmodem
//already taken care of in lte-softmodem
.c
PHY_vars_eNB_g
[
0
][
CC_id
]
->
N_TA_offset
=
0
;
#endif
...
...
@@ -2864,6 +2887,11 @@ int main( int argc, char **argv )
openair0_cfg
[
card
].
rx_bw
=
1.5e6
;
}
if
(
frame_parms
[
0
]
->
frame_type
==
TDD
)
openair0_cfg
[
card
].
duplex_mode
=
duplex_mode_TDD
;
else
//FDD
openair0_cfg
[
card
].
duplex_mode
=
duplex_mode_FDD
;
#ifdef ETHERNET
//calib needed
...
...
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