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
lizhongxiao
OpenXG-RAN
Commits
135104c9
Commit
135104c9
authored
Jan 13, 2023
by
Raghavendra Dinavahi
Committed by
Marwan Hammouda
Oct 18, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Enabled RX calibration sample offsets in RF simulator on the UE side
parent
6d4de820
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
92 additions
and
17 deletions
+92
-17
radio/BLADERF/bladerf_lib.c
radio/BLADERF/bladerf_lib.c
+1
-1
radio/COMMON/common_lib.h
radio/COMMON/common_lib.h
+3
-3
radio/IRIS/iris_lib.cpp
radio/IRIS/iris_lib.cpp
+1
-1
radio/LMSSDR/lms_lib.cpp
radio/LMSSDR/lms_lib.cpp
+2
-2
radio/LMSSDR/sodera_lib.cpp
radio/LMSSDR/sodera_lib.cpp
+1
-1
radio/USRP/usrp_lib.cpp
radio/USRP/usrp_lib.cpp
+9
-9
radio/rfsimulator/simulator.c
radio/rfsimulator/simulator.c
+75
-0
No files found.
radio/BLADERF/bladerf_lib.c
View file @
135104c9
...
...
@@ -330,7 +330,7 @@ int16_t cos_fsover8[8] = {2047, 1447, 0, -1448, -2047, -1448, 0,
int16_t
cos_3fsover8
[
8
]
=
{
2047
,
-
1448
,
0
,
1447
,
-
2047
,
1447
,
0
,
-
1448
};
/*! \brief calibration table for BladeRF */
rx_
gain_calib_table_t
calib_table_fx4
[]
=
{
gain_calib_table_t
calib_table_fx4
[]
=
{
{
2300000000
.
0
,
53
.
5
},
{
1880000000
.
0
,
57
.
0
},
{
816000000
.
0
,
73
.
0
},
...
...
radio/COMMON/common_lib.h
View file @
135104c9
...
...
@@ -134,7 +134,7 @@ typedef struct {
double
freq
;
//! Offset to be applied to RX gain
double
offset
;
}
rx_
gain_calib_table_t
;
}
gain_calib_table_t
;
/*! \brief Clock source types */
typedef
enum
{
...
...
@@ -229,9 +229,9 @@ typedef struct {
double
tune_offset
;
//! \brief memory
//! \brief Pointer to Calibration table for RX gains
rx_
gain_calib_table_t
*
rx_gain_calib_table
;
gain_calib_table_t
*
rx_gain_calib_table
;
//! \brief Pointer to Calibration table for TX gains
rx_
gain_calib_table_t
*
tx_gain_calib_table
;
gain_calib_table_t
*
tx_gain_calib_table
;
//! mode for rxgain (ExpressMIMO2)
rx_gain_t
rxg_mode
[
4
];
//! \brief Gain for RX in dB.
...
...
radio/IRIS/iris_lib.cpp
View file @
135104c9
...
...
@@ -393,7 +393,7 @@ int trx_iris_set_gains(openair0_device *device,
}
/*! \brief Iris RX calibration table */
rx_
gain_calib_table_t
calib_table_iris
[]
=
{
gain_calib_table_t
calib_table_iris
[]
=
{
{
3500000000.0
,
83
},
{
2660000000.0
,
83
},
{
2580000000.0
,
83
},
...
...
radio/LMSSDR/lms_lib.cpp
View file @
135104c9
...
...
@@ -298,7 +298,7 @@ int trx_lms_set_freq(openair0_device* device, openair0_config_t *openair0_cfg) {
// 31 = 19 dB => 105 dB total gain @ 2.6 GHz
/*! \brief calibration table for LMSSDR */
// V1.2 board
rx_
gain_calib_table_t
calib_table_lmssdr_1v2
[]
=
{
gain_calib_table_t
calib_table_lmssdr_1v2
[]
=
{
{
3500000000.0
,
44.0
},
// on L PAD
{
2660000000.0
,
55.0
},
// on L PAD
{
2300000000.0
,
54.0
},
// on L PAD
...
...
@@ -306,7 +306,7 @@ rx_gain_calib_table_t calib_table_lmssdr_1v2[] = {
{
816000000.0
,
79.0
},
// on W PAD
{
-
1
,
0
}};
// V1.4 board
rx_
gain_calib_table_t
calib_table_lmssdr
[]
=
{
gain_calib_table_t
calib_table_lmssdr
[]
=
{
{
3500000000.0
,
44.0
},
// on H PAD
{
2660000000.0
,
55.0
},
// on H PAD
{
2300000000.0
,
54.0
},
// on H PAD
...
...
radio/LMSSDR/sodera_lib.cpp
View file @
135104c9
...
...
@@ -403,7 +403,7 @@ int trx_sodera_stop(int card) {
}
rx_
gain_calib_table_t
calib_table_sodera
[]
=
{
gain_calib_table_t
calib_table_sodera
[]
=
{
{
3500000000.0
,
44.0
},
{
2660000000.0
,
49.0
},
{
2300000000.0
,
50.0
},
...
...
radio/USRP/usrp_lib.cpp
View file @
135104c9
...
...
@@ -981,7 +981,7 @@ int trx_usrp_stop(openair0_device *device) {
}
/*! \brief USRPB210 RX calibration table */
rx_
gain_calib_table_t
rx_calib_table_b210
[]
=
{
gain_calib_table_t
rx_calib_table_b210
[]
=
{
{
3500000000.0
,
44.0
},
{
2660000000.0
,
49.0
},
{
2300000000.0
,
50.0
},
...
...
@@ -991,7 +991,7 @@ rx_gain_calib_table_t rx_calib_table_b210[] = {
};
/*! \brief USRPB210 RX calibration table */
rx_
gain_calib_table_t
rx_calib_table_b210_38
[]
=
{
gain_calib_table_t
rx_calib_table_b210_38
[]
=
{
{
3500000000.0
,
44.0
},
{
2660000000.0
,
49.8
},
{
2300000000.0
,
51.0
},
...
...
@@ -1001,7 +1001,7 @@ rx_gain_calib_table_t rx_calib_table_b210_38[] = {
};
/*! \brief USRPx310 RX calibration table */
rx_
gain_calib_table_t
rx_calib_table_x310
[]
=
{
gain_calib_table_t
rx_calib_table_x310
[]
=
{
{
3500000000.0
,
73.0
},
{
2660000000.0
,
81.0
},
{
2300000000.0
,
81.0
},
...
...
@@ -1011,7 +1011,7 @@ rx_gain_calib_table_t rx_calib_table_x310[] = {
};
/*! \brief USRPN310 RX calibration table */
rx_
gain_calib_table_t
rx_calib_table_n310
[]
=
{
gain_calib_table_t
rx_calib_table_n310
[]
=
{
{
3500000000.0
,
67.0
},
{
2660000000.0
,
0.0
},
{
2300000000.0
,
0.0
},
...
...
@@ -1021,7 +1021,7 @@ rx_gain_calib_table_t rx_calib_table_n310[] = {
};
/*! \brief USRPB210 TX calibration table */
rx_
gain_calib_table_t
tx_calib_table_b210
[]
=
{
gain_calib_table_t
tx_calib_table_b210
[]
=
{
{
3500000000.0
,
0.0
},
{
2660000000.0
,
0.0
},
{
2300000000.0
,
0.0
},
...
...
@@ -1031,7 +1031,7 @@ rx_gain_calib_table_t tx_calib_table_b210[] = {
};
/*! \brief USRPB210 TX calibration table */
rx_
gain_calib_table_t
tx_calib_table_b210_38
[]
=
{
gain_calib_table_t
tx_calib_table_b210_38
[]
=
{
{
3500000000.0
,
0.0
},
{
2660000000.0
,
0.0
},
{
2300000000.0
,
0.0
},
...
...
@@ -1041,7 +1041,7 @@ rx_gain_calib_table_t tx_calib_table_b210_38[] = {
};
/*! \brief USRPx310 TX calibration table */
rx_
gain_calib_table_t
tx_calib_table_x310
[]
=
{
gain_calib_table_t
tx_calib_table_x310
[]
=
{
{
3500000000.0
,
150.0
},
{
2660000000.0
,
0.0
},
{
2300000000.0
,
0.0
},
...
...
@@ -1051,7 +1051,7 @@ rx_gain_calib_table_t tx_calib_table_x310[] = {
};
/*! \brief Empty RX calibration table */
rx_
gain_calib_table_t
calib_table_none
[]
=
{
gain_calib_table_t
calib_table_none
[]
=
{
{
3500000000.0
,
0.0
},
{
2660000000.0
,
0.0
},
{
2300000000.0
,
0.0
},
...
...
@@ -1061,7 +1061,7 @@ rx_gain_calib_table_t calib_table_none[] = {
};
/*! \brief USRPN310 TX calibration table */
rx_
gain_calib_table_t
tx_calib_table_n310
[]
=
{
gain_calib_table_t
tx_calib_table_n310
[]
=
{
{
3500000000.0
,
137.0
},
{
2660000000.0
,
0.0
},
{
2300000000.0
,
0.0
},
...
...
radio/rfsimulator/simulator.c
View file @
135104c9
...
...
@@ -149,6 +149,20 @@ static int TO_gNB_flag = 0;
static
int
TO_UE_flag
=
0
;
static
int
TO_wait_flag
=
1
;
/*! \brief Settings to be used for RF simulator.
Currently assumed to be 53db = 0dbm*/
gain_calib_table_t
rx_sample_calibvalues_UErfsim
[]
=
{
{
0
.
0
,
67
.
0
},
{
-
1
,
0
}
};
/*! \brief Settings to be used for RF simulator.
Currently assumed to be 53db = 0dbm */
gain_calib_table_t
tx_sample_calibvalues_UErfsim
[]
=
{
{
0
.
0
,
137
.
0
},
{
-
1
,
0
}
};
static
void
allocCirBuf
(
rfsimulator_state_t
*
bridge
,
int
sock
)
{
buffer_t
*
ptr
=&
bridge
->
buf
[
sock
];
AssertFatal
(
(
ptr
->
circularBuf
=
(
sample_t
*
)
malloc
(
sampleToByte
(
CirSize
,
1
)))
!=
NULL
,
""
);
...
...
@@ -1069,6 +1083,58 @@ static int rfsimulator_set_freq(openair0_device *device, openair0_config_t *open
return
0
;
}
static
int
rfsimulator_set_gains
(
openair0_device
*
device
,
openair0_config_t
*
openair0_cfg
,
int
dont_block
)
{
double
gain
=
0
;
// calculate tx gain
gain
=
device
->
max_tx_gain
[
0
]
-
openair0_cfg
[
0
].
tx_gain
[
0
];
if
(
gain
!=
device
->
app_tx_gain
[
0
])
{
// limit to maximum TX gain
if
(
gain
>
device
->
max_tx_gain
[
0
])
{
LOG_E
(
HW
,
"TX Gain 0 too high gain:%3.2f, min:%3.2f dB
\n
"
,
gain
,
device
->
max_tx_gain
[
0
]);
gain
=
device
->
max_tx_gain
[
0
];
openair0_cfg
[
0
].
tx_gain
[
0
]
=
0
;
//exit(-1);
}
else
if
(
gain
<
device
->
min_tx_gain
[
0
])
{
LOG_E
(
HW
,
"TX Gain 0 too low gain:%3.2f, min:%3.2f dB
\n
"
,
gain
,
device
->
min_tx_gain
[
0
]);
gain
=
device
->
min_tx_gain
[
0
];
openair0_cfg
[
0
].
tx_gain
[
0
]
=
device
->
max_tx_gain
[
0
]
-
device
->
min_tx_gain
[
0
];
//exit(-1);
}
// updated applied tx gain for UL processing
device
->
app_tx_gain
[
0
]
=
gain
;
LOG_I
(
HW
,
"RFSIM APPLIED TX gain is %3.2f Max: %3.2f, Min: %3.2f, tx_gain:%3.2f
\n
"
,
gain
,
device
->
max_tx_gain
[
0
],
device
->
min_tx_gain
[
0
],
openair0_cfg
[
0
].
tx_gain
[
0
]);
}
// Rx gain
//gain = openair0_cfg[0].rx_gain[0] - openair0_cfg[0].rx_gain_offset[0];
gain
=
openair0_cfg
[
0
].
rx_gain
[
0
];
if
(
gain
!=
device
->
app_rx_gain
[
0
])
{
// limit to maximum RX gain
if
(
gain
>
device
->
max_rx_gain
[
0
])
{
LOG_E
(
HW
,
"RX Gain 0 too high, reduce by %3.2f dB
\n
"
,
gain
-
device
->
max_rx_gain
[
0
]);
gain
=
device
->
max_rx_gain
[
0
];
openair0_cfg
[
0
].
rx_gain
[
0
]
=
0
;
//exit(-1);
}
else
if
(
gain
<
device
->
min_rx_gain
[
0
])
{
LOG_E
(
HW
,
"RX Gain 0 too low gain:%3.2f, min:%3.2f dB
\n
"
,
gain
,
device
->
min_rx_gain
[
0
]);
gain
=
device
->
min_rx_gain
[
0
];
openair0_cfg
[
0
].
rx_gain
[
0
]
=
device
->
min_rx_gain
[
0
];
//exit(-1);
}
device
->
app_rx_gain
[
0
]
=
gain
;
LOG_I
(
HW
,
"RFSIM APPLIED RX gain is %3.2f Max: %3.2f, Min: %3.2f, rx_gain:%3.2f
\n
"
,
gain
,
device
->
max_rx_gain
[
0
],
device
->
min_rx_gain
[
0
],
openair0_cfg
[
0
].
rx_gain
[
0
]);
}
return
0
;
}
static
int
rfsimulator_write_init
(
openair0_device
*
device
)
{
...
...
@@ -1101,6 +1167,15 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
device
->
trx_read_func
=
rfsimulator_read
;
/* let's pretend to be a b2x0 */
device
->
type
=
RFSIMULATOR
;
// Do this for UE, in order to test Powercontrol on UE
if
(
rfsimulator
->
typeStamp
==
UE_MAGICDL
)
{
openair0_cfg
[
0
].
rx_gain_calib_table
=
rx_sample_calibvalues_UErfsim
;
openair0_cfg
[
0
].
tx_gain_calib_table
=
tx_sample_calibvalues_UErfsim
;
openair0_cfg
[
0
].
rx_gain_offset
[
0
]
=
openair0_cfg
[
0
].
rx_gain_calib_table
[
0
].
offset
;
openair0_cfg
[
0
].
tx_gain_offset
[
0
]
=
openair0_cfg
[
0
].
tx_gain_calib_table
[
0
].
offset
;
device
->
max_rx_gain
[
0
]
=
65
.
0
;
device
->
max_tx_gain
[
0
]
=
65
.
0
;
}
openair0_cfg
[
0
].
rx_gain
[
0
]
=
0
;
device
->
openair0_cfg
=&
openair0_cfg
[
0
];
device
->
priv
=
rfsimulator
;
...
...
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