RENEWLab  1.1.0
RENEW project
BaseRadioSet-calibrate.cc File Reference
#include "include/BaseRadioSet.h"
#include "include/Radio.h"
#include "include/comms-lib.h"
#include "include/macros.h"
#include "include/utils.h"
Include dependency graph for BaseRadioSet-calibrate.cc:

Functions

static std::vector< std::complex< float > > snoopSamples (SoapySDR::Device *dev, size_t channel, size_t readSize)
 
static void adjustCalibrationGains (std::vector< SoapySDR::Device * > rxDevs, SoapySDR::Device *txDev, size_t channel, double fftBin)
 
static void setIQBalance (SoapySDR::Device *dev, int direction, size_t channel, int gcorr, int iqcorr)
 
static void dciqMinimize (SoapySDR::Device *targetDev, SoapySDR::Device *refDev, int direction, size_t channel, double rxCenterTone, double txCenterTone)
 

Function Documentation

◆ adjustCalibrationGains()

static void adjustCalibrationGains ( std::vector< SoapySDR::Device * >  rxDevs,
SoapySDR::Device *  txDev,
size_t  channel,
double  fftBin 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dciqMinimize()

static void dciqMinimize ( SoapySDR::Device *  targetDev,
SoapySDR::Device *  refDev,
int  direction,
size_t  channel,
double  rxCenterTone,
double  txCenterTone 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ setIQBalance()

static void setIQBalance ( SoapySDR::Device *  dev,
int  direction,
size_t  channel,
int  gcorr,
int  iqcorr 
)
static
Here is the caller graph for this function:

◆ snoopSamples()

static std::vector<std::complex<float> > snoopSamples ( SoapySDR::Device *  dev,
size_t  channel,
size_t  readSize 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:
syms_eq
else Do nz_sc(j))' *H_hat(Apply nz_sc(j))') *squeeze(Y_data(end syms_eq(:, nz_sc(j),:)
iris_py.type
type
Definition: iris_py.py:333
SISO_TXRX_TDD.siso_tdd_burst
def siso_tdd_burst(serial1, serial2, rate, freq, txgain, rxgain, numSamps, prefix_pad, postfix_pad)
Functions #.
Definition: SISO_TXRX_TDD.py:74
np
num fading clusters np
Definition: getRxVec.m:112
matplotlibcpp::scatter
bool scatter(const std::vector< NumericX > &x, const std::vector< NumericY > &y, const double s=1.0)
Definition: matplotlibcpp.h:721
bs_sched
bs_sched
Definition: rl_ofdm_siso.m:77
csi_lib.CSI.close
def close(self)
Definition: csi_lib.py:145
SOUNDER_TXRX.signal_handler
def signal_handler(rate, numSyms, use_trig, signal, frame)
Definition: SOUNDER_TXRX.py:387
pin_thread_to_core
int pin_thread_to_core(int core_id, pthread_t &thread_to_pin)
Definition: utils.cc:18
vector
else Define an empty phase correction vector(used by plotting code below) pilot_phase_err
Config::reader_thread_num
size_t reader_thread_num(void) const
Definition: config.h:218
Radio.h
w
w
Definition: berr_perfect.m:45
sdr_params
Iris nodes parameters sdr_params
Definition: ofdm_siso.m:165
CP_LEN
Number of subcarriers CP_LEN
Definition: rl_ofdm_siso.m:90
data_recorder.DataRecorder.timeref
timeref
Definition: data_recorder.py:80
channel_analysis.calExpectedCapacity
def calExpectedCapacity(csi, user=0, max_delay=100, conj=True, downlink=False)
Definition: channel_analysis.py:212
Config::beacon_seq
const std::string & beacon_seq(void) const
Definition: config.h:107
iris_py.prefix_len
prefix_len
Definition: iris_py.py:408
nsubi
else nsubi
Definition: getRxVec.m:131
MOD_ORDER
Number of OFDM symbols for it needs to be less than MOD_ORDER
Definition: rl_ofdm_mimo.m:95
ofdm_plotter.OFDMplotter.rx_syms_mat2
rx_syms_mat2
Definition: ofdm_plotter.py:62
Receiver::syncSearch
int syncSearch(std::vector< std::complex< int16_t >> sync_buff, size_t sync_num_samps)
Definition: receiver.cc:762
filter
Interpolate Zero pad then filter(same as interp or upfirdn without signal processing toolbox) tx_vec_air
Config::bs_channel
const std::string & bs_channel(void) const
Definition: config.h:104
pilots_mat
Repeat the pilots across all OFDM symbols pilots_mat
Definition: ofdm_simo.m:102
iris_py.Iris_py.__init__
def __init__(self, serial_id=None, tx_freq=None, rx_freq=None, tx_gain=None, rx_gain=None, bw=None, sample_rate=None, n_samp=None, both_channels=False, agc_en=False)
Definition: iris_py.py:83
nt
nt
Definition: rl_ofdm_simo.m:46
agc_fsm_iris.AutomaticGainControl.is_fineTuningNotDone
def is_fineTuningNotDone(self)
Definition: agc_fsm_iris.py:239
cal_mat
cal_mat
Definition: rl_ofdm_calib.m:99
SAMP_FREQ
Enable Residual CFO estimation correction SAMP_FREQ
Definition: rl_ofdm_mmimo_sim.m:41
kQueueSize
static constexpr size_t kQueueSize
Definition: macros.h:20
csi_lib.CalibCSI
Definition: csi_lib.py:221
x
x
Definition: rl_ofdm_mimo.m:362
agc_fsm_iris.AutomaticGainControl.__init__
def __init__(self, sdr, ch)
Definition: agc_fsm_iris.py:67
iris_py_single_frame.Iris_py.setup_stream_rx
def setup_stream_rx(self)
Definition: iris_py_single_frame.py:249
csi_lib.CSI.rxBsStream
rxBsStream
Definition: csi_lib.py:54
fprintf
otherwise fprintf('Invalid MOD_ORDER(%d)! Must be in[2, 4, 16, 64]\n', MOD_ORDER)
deployment_tool.parse_signal_hdf5
def parse_signal_hdf5(hdf5_signal, hdf5_noise, default_frame=100, ant_i=0, user_i=0, thresh=0.001, sub_sample=1, plot_level=0)
Definition: deployment_tool.py:147
mod_fcn_16qam
mod_fcn_16qam
Definition: bits2syms.m:36
Config::isDlData
bool isDlData(int, int)
Definition: config.cc:896
fst_clr
fst_clr
Definition: rl_ofdm_mimo.m:407
b_scheds
b_scheds
Definition: ofdm_simo.m:58
pilots
Define the pilot tone values as BPSK symbols pilots
Definition: siso_ofdm_mf_sim.m:87
Sounder::Scheduler::kRecvCore
const unsigned int kRecvCore
Definition: scheduler.h:56
Utils::printVector
static void printVector(std::vector< std::complex< int16_t >> &data)
Definition: utils.cc:222
isnr
for isnr
Definition: rl_ofdm_simo.m:153
sec_clr
sec_clr
Definition: ofdm_mimo.m:353
waveform
Scale for Tx waveform([0:1]) else nt
Config::dl_data_slot_present
bool dl_data_slot_present(void) const
Definition: config.h:44
mod_fcn_qpsk
mod_fcn_qpsk
Definition: bits2syms.m:35
bs_sched
bs_sched
Definition: rl_ofdm_simo.m:72
title
title('Rx Waveform(I)')
Sounder::Scheduler::tx_ptoks_ptr_
std::vector< moodycamel::ProducerToken * > tx_ptoks_ptr_
Definition: scheduler.h:49
tx_ul_syms
Map the data values on to complex symbols switch MOD_ORDER case BPSK tx_ul_syms
Definition: rl_ofdm_mmimo_sim.m:124
plot
plot(lts_corr(sp,:))
ofdm_plotter.OFDMplotter.rx_data2
rx_data2
Definition: ofdm_plotter.py:57
n_samp
UE schedule number of samples in a frame n_samp
Definition: rl_ofdm_mimo.m:215
demod_fcn_qpsk
demod_fcn_qpsk
Definition: rl_ofdm_mmimo_sim.m:75
csi_lib.CalibCSI.close
def close(self)
Definition: csi_lib.py:364
Config::nco
double nco(void) const
Definition: config.h:56
data_len
data_len
Definition: rl_ofdm_mimo.m:256
hdf5_lib.csi_from_pilots
def csi_from_pilots(pilots_dump, z_padding=150, fft_size=64, cp=16, frm_st_idx=0, frame_to_plot=0, ref_ant=0, ref_user=0)
Definition: hdf5_lib.py:30
Sounder::Scheduler::bs_tx_buffer_
SampleBuffer * bs_tx_buffer_
Definition: scheduler.h:37
iris_py_single_frame.str
str
Definition: iris_py_single_frame.py:348
data_recorder.DataRecorder.h5file
h5file
Definition: data_recorder.py:53
FFT_OFFSET
id FFT_OFFSET()
Definition: siso_ofdm_mf_sim.m:30
hdf5_lib.hdf5_lib.data
data
Definition: hdf5_lib.py:278
ue_scheds
ue_scheds
Definition: ofdm_mimo.m:51
CommsLib::correlate_avx
static std::vector< std::complex< float > > correlate_avx(std::vector< std::complex< float >> const &f, std::vector< std::complex< float >> const &g)
iris_py.Iris_py.serial_id
serial_id
Definition: iris_py.py:88
demod_fcn_16qam
demod_fcn_16qam
Definition: rl_ofdm_mmimo_sim.m:76
csi_lib.CSI.debug_enabled
debug_enabled
Definition: csi_lib.py:47
data_recorder.DataRecorder.init_datasets
def init_datasets(self, group=None)
Definition: data_recorder.py:75
CommsLib::correlate_avx_s
static std::vector< float > correlate_avx_s(std::vector< float > const &f, std::vector< float > const &g)
Receiver::cl_tx_buffer_
SampleBuffer * cl_tx_buffer_
Definition: receiver.h:97
arrayfun
mod_fcn_16qam, data arrayfun()
nbits
nbits
Definition: mod_demod.m:15
Event_data::buff_size
size_t buff_size
Definition: macros.h:68
values
Insert the data and pilot values
Definition: rl_ofdm_mmimo_sim.m:153
CP
Remove the cyclic keeping FFT_OFFSET samples of CP(on average) payload_mat_noCP
modvec_16qam
modvec_16qam
Definition: berr_perfect.m:10
length
num clusters if length(angcTx)
sample_offset_cal.find_corr_idx
def find_corr_idx(waveRxA, waveRxB)
Definition: sample_offset_cal.py:269
TX_GN
TX_GN
Definition: rl_ofdm_siso.m:66
kEventTxSymbol
@ kEventTxSymbol
Definition: macros.h:38
nbits
end Error rates nbits
Definition: berr_perfect.m:72
N_ZPAD_PRE
Number of samples that will go over the air N_ZPAD_PRE
Definition: ofdm_siso.m:75
FFT_OFFSET
id FFT_OFFSET()
Definition: siso_ofdm_mf_sim.m:30
rx_freq
rx_freq
Definition: iris_py.m:29
CommsLib::find_beacon
static int find_beacon(const std::vector< std::complex< float >> &iq)
Definition: comms-lib.cc:114
hdf5_lib.hdf5_lib.h5struct
h5struct
Definition: hdf5_lib.py:277
Config::pilot_sc
std::vector< std::complex< float > > & pilot_sc(void)
Definition: config.h:195
iris_py
Definition: iris_py.py:1
bs_sched
bs_sched
Definition: rl_ofdm_calib.m:34
fprintf
Theoretical BER fprintf("Channel type: %s \n", chan_type)
DATA_REP
DATA_REP
Definition: rl_ofdm_calib.m:83
N_OFDM_SYMS
Waveform params N_OFDM_SYMS
Definition: rl_ofdm_mmimo_sim.m:20
wrapper.Config
Definition: wrapper.py:6
Hz
Doppler shift in Hz
Definition: getRxVec.m:159
waveform
Scale for Tx waveform([0:1]) else nt
dsepTx
number of RX antennas dsepTx
Definition: getRxVec.m:76
myAxis
myAxis
Definition: ofdm_mimo.m:399
symbols
Number of data symbols(one per data-bearing subcarrier per OFDM symbol) SYM_LEN
ofdmtxrx.ofdmTxRx.bpsk_dem
def bpsk_dem(self, iq)
Definition: ofdmtxrx.py:101
iris_py_single_frame.Iris_py.max_frames
max_frames
Definition: iris_py_single_frame.py:84
ofdmtxrx.ofdmTxRx.n_ofdm_syms
n_ofdm_syms
Definition: ofdmtxrx.py:25
H
UL noise matrix H
Definition: rl_ofdm_mmimo_sim.m:186
ClientRadioSet::radioTx
int radioTx(size_t radio_id, const void *const *buffs, int numSamps, int flags, long long &frameTime)
Definition: ClientRadioSet.cc:351
iue
for iue
Definition: rl_ofdm_mimo.m:313
Packet::frame_id
uint32_t frame_id
Definition: macros.h:53
lts_t
lts_t
Definition: rl_ofdm_mmimo_sim.m:59
bar
bar(bw_span, fftshift(abs(squeeze(H_hat(ibs, iue, :)))), 1, 'LineWidth', 1)
tx_data
Generate a payload of random integers tx_data
Definition: ofdm_siso.m:92
find_lts
Definition: find_lts.py:1
idlyMax
sample period of upcoverted signal in ms idlyMax
Definition: getRxVec.m:168
wrapper.Sounder.obj
obj
Definition: wrapper.py:23
Config::hub_ids
const std::vector< std::string > & hub_ids(void) const
Definition: config.h:222
lts_f
Enable Residual CFO estimation correction Define the preamble LTS for fine CFO and channel estimation lts_f
Definition: rl_ofdm_mimo.m:116
Radio::Radio
Radio(const SoapySDR::Kwargs &args, const char soapyFmt[], const std::vector< size_t > &channels)
Definition: Radio.cc:95
iris_health_monitor.disp_params
def disp_params(freq, rx_pwr_limit, golden_serial, golden_ant, golden_tx_gain, golden_rx_gain, gain_step, uut_serials, pf_rx, pf_tx, en_logging, detailed_logs, log_name_rx, log_name_tx, test_tx_only, test_rx_only)
Definition: iris_health_monitor.py:274
agc_fsm_iris.AutomaticGainControl
Definition: agc_fsm_iris.py:27
legend
legend({ 'Rx', 'Tx'}, 'Location', 'EastOutside', 'fontsize', 12)
a
id a()
Definition: iris_py.m:254
tx_ref_hw_phase
if DO_RECIPROCAL_CALIBRATION tx_ref_hw_phase
Definition: rl_ofdm_mmimo_sim.m:97
Sounder::RecorderWorker::cfg_
Config * cfg_
Definition: recorder_worker.h:30
bs_ids
bs_ids
Definition: rl_ofdm_simo.m:71
ue_sdr_params
ue_sdr_params
Definition: rl_ofdm_siso.m:177
lts_t
end lts_t
Definition: siso_ofdm_mf_sim.m:110
jp
for jp
Definition: rl_ofdm_calib.m:86
SC_IND_DATA
Pilot subcarrier indices SC_IND_DATA
Definition: ofdm_mimo.m:63
bh
bh
Definition: rl_ofdm_mimo.m:515
agc_fsm_iris.AutomaticGainControl.stageCounter
def stageCounter(self)
Definition: agc_fsm_iris.py:262
iris_py.args
args
Definition: iris_py.py:349
preamble
preamble
Definition: rl_ofdm_mimo.m:124
Receiver::clientTxRx
void clientTxRx(int tid)
Definition: receiver.cc:594
Config::beacon_size
int beacon_size(void) const
Definition: config.h:53
ofdmtxrx.ofdmTxRx.qam64_dem
def qam64_dem(self, iq)
Definition: ofdmtxrx.py:144
hdf5_lib.hdf5_lib.frame_sanity
def frame_sanity(match_filt, k_lts, n_lts, st_frame=0, frame_to_plot=0, plt_ant=0, cp=16)
Definition: hdf5_lib.py:641
demod_fcn_64qam
demod_fcn_64qam
Definition: rl_ofdm_mmimo_sim.m:77
syms_eq_pc
Apply the pilot phase correction per symbol syms_eq_pc
Definition: rl_ofdm_mimo.m:392
N
Modulation order N
Definition: mod_demod.m:14
pilots_f_mat_comp
pilots_f_mat_comp
Definition: rl_ofdm_mimo.m:380
csi_lib.CSI.trig_dev
trig_dev
Definition: csi_lib.py:40
sdr_setupbeacon_single
node_bs sdr_setupbeacon_single()
demod_fcn_64qam
demod_fcn_64qam
Definition: demod_sym.m:19
channel_analysis.calDemmel
def calDemmel(userCSI)
Definition: channel_analysis.py:47
Sounder::Scheduler::cl_tx_buffer_
SampleBuffer * cl_tx_buffer_
Definition: scheduler.h:39
mod_fcn_bpsk
mod_fcn_bpsk
Definition: bits2syms.m:34
demod_fcn_16qam
demod_fcn_16qam
Definition: berr_perfect.m:54
bh
bh
Definition: ofdm_mimo.m:459
tx_var
oversampling ratio tx_var
Definition: getRxVec.m:80
Radio::reset_DATA_clk_domain
void reset_DATA_clk_domain(void)
Definition: Radio.cc:180
SOUNDER_TXRX.tx_thread
def tx_thread(sdr, rate, txStream, rxStream, waveTx, numSamps, numSyms, txSymNum, startSymbol)
Functions #.
Definition: SOUNDER_TXRX.py:125
matplotlibcpp::plot
bool plot(const std::vector< Numeric > &x, const std::vector< Numeric > &y, const std::map< std::string, std::string > &keywords)
Definition: matplotlibcpp.h:388
SC_IND_DATA
Pilot subcarrier indices SC_IND_DATA
Definition: rl_ofdm_mmimo_sim.m:26
N_UE
id N_UE()
Definition: ofdm_mimo.m:39
Receiver::zeros
std::vector< void * > zeros
Definition: receiver.h:101
wrapper.Sounder.start
def start(self)
Definition: wrapper.py:25
SignalHandler
Definition: signalHandler.hpp:13
version_config.h
Sounder project version configuration file.
CommsLib::auto_corr_mult_avx
static std::vector< std::complex< float > > auto_corr_mult_avx(std::vector< std::complex< float >> const &f, const int dly, const bool conj=true)
Sounder::RecorderThread::sync_
std::mutex sync_
Definition: recorder_thread.h:64
plt_simp.plot_data
def plot_data(pilot, rxdata, channelnum, framelen=512, framenum=100, pilotsymnum=1, uplinksymnum=0)
Definition: plt_simp.py:38
elseif
elseif(obj.n_sdrs > 1) &&length(lts_corr_frm) >
sdr_gettriggers
read data node_ue sdr_gettriggers()
waveform
Scale for Tx waveform([0:1]) % OFDM params SC_IND_PILOTS
USE_HUB
USE_HUB
Definition: rl_ofdm_mimo.m:56
rx_fft
rx_fft
Definition: rl_ofdm_calib.m:97
Event_data
Definition: macros.h:62
Receiver::pilotbuffA
std::vector< void * > pilotbuffA
Definition: receiver.h:99
Utils::cint16_to_uint32
static std::vector< uint32_t > cint16_to_uint32(const std::vector< std::complex< int16_t >> &in, bool conj, const std::string &order)
Definition: utils.cc:103
lts
lts
Definition: rl_ofdm_calib.m:81
on
hold on
Definition: siso_ofdm_mf_sim.m:260
Author
Author(s)[version, executable, isloaded]
Definition: rl_ofdm_mimo.m:32
SIM_snr
Calculate the noise variance SIM_snr
Definition: siso_ofdm_mf_sim.m:119
mod
if mod(nbits, sym_bits) ~=0error("Length of bit stream has to be divisible by sym_bits")
DEBUG
DEBUG
Definition: rl_ofdm_mimo.m:43
Config::tx_advance
int tx_advance(size_t id) const
Definition: config.h:96
n_samp
n_samp
Definition: rl_ofdm_siso.m:162
Config::getPacketDataLength
size_t getPacketDataLength() const
Definition: config.h:258
subplot
subplot(N_UE, 2, 2 *sp)
n_zpad_samp
n_zpad_samp
Definition: iris_py.m:35
bit_errs
bit_errs
Definition: berr_perfect.m:73
data
set trigger to start the frame Iris Rx Only UL data
Definition: getRxVec.m:239
Config::cl_dl_slots
const std::vector< std::vector< size_t > > & cl_dl_slots(void) const
Definition: config.h:153
UE
UE(single-input) bs_ids
MOD_ORDER
Number of OFDM symbols for it needs to be less than MOD_ORDER
Definition: rl_ofdm_simo.m:84
node_bs
else node_bs
Definition: getRxVec.m:201
init_fncs.agc_init
def agc_init(sdr, rssi_target_idx, agc_en)
Definition: init_fncs.py:17
b_scheds
b_scheds
Definition: ofdm_mimo.m:49
SISO_OFDM.txrx_app
def txrx_app(args, rate, ampl, ant, txgain, rxgain, freq, bbfreq, serialTx, serialRx, ofdm_params, num_samps_rd, ota, ofdm_obj, agc_en)
Definition: SISO_OFDM.py:422
Radio::deactivateXmit
void deactivateXmit(void)
Definition: Radio.cc:174
txgain
ue_sdr_params txgain
Definition: rl_ofdm_simo.m:176
data
function data
Definition: demod_sym.m:1
yourselves
else Do yourselves
Definition: ofdm_mimo.m:310
iris_py.Iris_py.config_beacon
def config_beacon(self, prefix_len=0)
Definition: iris_py.py:295
N_DATA_SYMS
Cyclic prefix length N_DATA_SYMS
Definition: ofdm_siso.m:72
Receiver::pilotbuffB
std::vector< void * > pilotbuffB
Definition: receiver.h:100
bandpower
Definition: bandpower.py:1
bs_ids
bs_ids
Definition: rl_ofdm_calib.m:33
logger.h
Logging macros that can be optimized out by the compiler.
N_SC
Data subcarrier indices N_SC
Definition: siso_ofdm_mf_sim.m:24
sdrtx
Burn beacon to the BS(1) RAM node_ue1.sdrtx(tx_data(Burn data to the UE RAM if n_ue node_ue2 sdrtx(tx_data(:, 2))
repmat
repmat(lts_t, N_LTS_SYM, 1)]
pt_pilots
Define the pilot tone values as BPSK symbols pt_pilots
Definition: rl_ofdm_mmimo_sim.m:140
Config::rx_gain
const std::vector< double > & rx_gain(void) const
Definition: config.h:233
rx_vec_iris
rx_vec_iris
Definition: rl_ofdm_simo.m:179
BaseRadioSet::getRadioNotFound
bool getRadioNotFound()
Definition: BaseRadioSet.h:30
Sounder::Scheduler_new
Scheduler * Scheduler_new(Config *in_cfg)
Definition: scheduler.cc:310
Radio::txs
SoapySDR::Stream * txs
Definition: Radio.h:16
yourselves
Time Domain Do yourselves
Definition: rl_ofdm_siso.m:127
Sounder::Scheduler::recorders_
std::vector< Sounder::RecorderThread * > recorders_
Definition: scheduler.h:43
Receiver::clientTxRx_launch
static void * clientTxRx_launch(void *in_context)
Definition: receiver.cc:580
start_index
start_index
Definition: rl_ofdm_calib.m:150
tdd_sched
tdd_sched
Definition: iris_py.m:34
N_SYM_SAMP
Number of N_SYM_SAMP
Definition: rl_ofdm_siso.m:93
Sounder::RecorderThread::HandleEvent
void HandleEvent(Event_data event)
Definition: recorder_thread.cc:134
sdrtrigger
activate correlator node_bs sdrtrigger(trig)
Sounder::Hdf5Lib::setTargetPrimaryDimSize
void setTargetPrimaryDimSize(hsize_t dim_size)
Definition: hdf5_lib.h:40
max
abs(tx_vecs_iris max()
ue_sched
ue_sched
Definition: ofdm_simo.m:154
channel_analysis.calContCapacity
def calContCapacity(csi, conj=True, downlink=False, offset=1)
Definition: channel_analysis.py:128
FFT
Number of CP samples to use in FFT(on average) %% Define the preamble % LTS for fine CFO and channel estimation lts_f
ip
power of each path in linear scale ip
Definition: getRxVec.m:120
csi_lib.CSI.txBsStream
txBsStream
Definition: csi_lib.py:55
channel_analysis.demult
def demult(csi, data, method='zf')
Definition: channel_analysis.py:362
FFT_OFFSET
Number of OFDM symbols for it needs to be less than Rx processing params FFT_OFFSET
Definition: rl_ofdm_calib.m:50
gain
end Generate complex gains and Doppler shifts gain
Definition: getRxVec.m:158
obj
end methods function obj
Definition: iris_py.m:41
Sounder::RecorderWorker::record
void record(int tid, Packet *pkt)
Definition: recorder_worker.cc:282
Radio::recv
int recv(void *const *buffs, int samples, long long &frameTime)
Definition: Radio.cc:120
Sounder::RecorderThread::event_queue_
moodycamel::ConcurrentQueue< Event_data > event_queue_
Definition: recorder_thread.h:45
Tx
Tx
Definition: siso_ofdm_mf_sim.m:284
tx_syms_mat
Reshape the symbol vector to a matrix with one column per OFDM symbol tx_syms_mat
Definition: ofdm_mimo.m:98
MOD_ORDER
Number of OFDM symbols for it needs to be less than MOD_ORDER
Definition: ofdm_simo.m:65
csi_lib.CalibCSI.trig_dev
trig_dev
Definition: csi_lib.py:227
order
Modulation order(2/4/16/64=BSPK/QPSK/16-QAM/64-QAM) TX_SCALE
ifft_in_mat
ifft_in_mat
Definition: siso_ofdm_mf_sim.m:101
h_dl_calib
h_dl_calib
Definition: rl_ofdm_mmimo_sim.m:111
N_SYM_SAMP
Number of N_SYM_SAMP
Definition: rl_ofdm_simo.m:94
tdd_sched_index
tdd_sched_index
Definition: getRxVec.m:212
matplotlibcpp::stem
bool stem(const std::vector< Numeric > &x, const std::vector< Numeric > &y, const std::map< std::string, std::string > &keywords)
Definition: matplotlibcpp.h:516
tx_syms
tx_syms
Definition: rl_ofdm_mimo.m:132
padding
Leftover from zero padding
Definition: rl_ofdm_simo.m:149
rp
for rp
Definition: rl_ofdm_calib.m:88
ibs
for ibs
Definition: rl_ofdm_mimo.m:262
iris_health_monitor.test_a_tx_rx_pair
def test_a_tx_rx_pair(sdr_tx, sdr_rx, tx_gain, rx_gain, freq, tx_ant, samp_rate=5e6, fft_size=1024, rx_num_samps=1024, wait_trigger=False, tx_amp=1, bb_freq=0, wave_freq=None, tx_num_samps=2 **10, lo_tone=False)
Definition: iris_health_monitor.py:573
rx_lts_idx
end Take N_SC spamples from each LTS rx_lts_idx
Definition: rl_ofdm_mimo.m:319
extract_pilots_data.extract_pilots_data
def extract_pilots_data(cmpx_pilots, seq_conj, seq_num, seq_len, frame)
Definition: extract_pilots_data.py:4
ofdm_plotter.OFDMplotter.demmel_text
demmel_text
Definition: ofdm_plotter.py:280
ofdm_plotter.OFDMplotter.chan_est2
chan_est2
Definition: ofdm_plotter.py:58
Config::getUlSlotIndex
int getUlSlotIndex(int, int)
Definition: config.cc:854
iris_py.Iris_py.sample_rate
sample_rate
Definition: iris_py.py:92
agc_fsm_iris.AutomaticGainControl.waitTimeout
def waitTimeout(self)
Definition: agc_fsm_iris.py:267
agc_fsm_iris.AutomaticGainControl.is_saturationDetected
def is_saturationDetected(self)
Definition: agc_fsm_iris.py:244
burst
Number of OFDM symbols for burst
Definition: rl_ofdm_calib.m:47
max_frames
max_frames
Definition: iris_py.m:62
Radio::xmit
int xmit(const void *const *buffs, int samples, int flags, long long &frameTime)
Definition: Radio.cc:153
ofdm_plotter.OFDMplotter.demmel
demmel
Definition: ofdm_plotter.py:54
Note
just to agree with what the hardware spits out Init Iris nodes Set up the Iris experimenty else Create BS Hub and UE objects Note
Definition: rl_ofdm_mimo.m:210
params
else Iris params
Definition: rl_ofdm_mimo.m:54
aevms
aevms
Definition: ofdm_mimo.m:470
Config::fft_size
size_t fft_size(void) const
Definition: config.h:75
hub_id
hub_id
Definition: rl_ofdm_simo.m:200
ofdmtxrx.ofdmTxRx.mod_order
mod_order
Definition: ofdmtxrx.py:26
SISO_RX.Rate
int Rate
Definition: SISO_RX.py:87
wrapper.Config.__init__
def __init__(self, val)
Definition: wrapper.py:7
iris_health_monitor.process_rx_log
def process_rx_log(log_name_rx, rx_thresh)
Definition: iris_health_monitor.py:307
rx_gain
rx_gain
Definition: iris_py.m:32
agc_fsm_iris.AutomaticGainControl.satDetectedFlag
bool satDetectedFlag
Definition: agc_fsm_iris.py:47
FFT
Number of CP samples to use in FFT(on average) LTS_CORR_THRESH=0.6
max
abs(tx_vecs_iris max()
csi_lib.CSI.collectCSI
def collectCSI(self)
Definition: csi_lib.py:158
rx_fft_ref
rx_fft_ref
Definition: rl_ofdm_calib.m:98
csi_lib.CSI.bsRxSamps
bsRxSamps
Definition: csi_lib.py:49
demod_fcn_64qam
demod_fcn_64qam
Definition: berr_perfect.m:55
modvec_16qam
modvec_16qam
Definition: mod_sym.m:19
Sounder::Hdf5Lib::getTargetPrimaryDimSize
hsize_t getTargetPrimaryDimSize()
Definition: hdf5_lib.h:43
fprintf
otherwise fprintf('Invalid MOD_ORDER(%d)! Must be in[2, 4, 16, 64]\n', MOD_ORDER)
FFT
Number of CP samples to use in FFT(on average) DO_APPLY_PHASE_ERR_CORRECTION
peakdet
Definition: peakdet.py:1
sim_N0
Average power on each SC sim_N0
Definition: siso_ofdm_mf_sim.m:121
imagesc
imagesc(1:N_OFDM_SYM,(SC_IND_DATA - N_SC/2), 100 *fftshift(reshape(evm_mat(:, sp), [], N_OFDM_SYM), 1))
dlyspdns
excess delay of first path in cluster nsec dlyspdns
Definition: getRxVec.m:69
real
data real()
ber_SIM
end ber_SIM
Definition: rl_ofdm_siso.m:57
sp_cols
end sp_cols
Definition: ofdm_mimo.m:416
DO_APPLY_PHASE_ERR_CORRECTION
end DO_APPLY_PHASE_ERR_CORRECTION
Definition: rl_ofdm_mimo.m:375
ofdmtxrx.ofdmTxRx.qam64_mod
def qam64_mod(self, val)
Definition: ofdmtxrx.py:83
python
Parameters to feed python(pun very intended!) serial_ids
csi_lib.CSI.num_ants
num_ants
Definition: csi_lib.py:44
iris_py_single_frame.Iris_py.config_sdr_tdd_chained
def config_sdr_tdd_chained(self, tdd_sched=None)
Definition: iris_py_single_frame.py:182
Config::bw_filter
double bw_filter(void) const
Definition: config.h:54
iris_py_single_frame.Iris_py.recv_stream_tdd
def recv_stream_tdd(self)
Definition: iris_py_single_frame.py:291
RX_GN
RX_GN
Definition: rl_ofdm_siso.m:67
hdf5_lib.hdf5_lib.filename
filename
Definition: hdf5_lib.py:275
a
a
Definition: iris_py.m:254
csi_lib.CalibCSI.sdr_ant
sdr_ant
Definition: csi_lib.py:228
N_DATA_SYMS
Cyclic prefix length N_DATA_SYMS
Definition: siso_ofdm_mf_sim.m:26
lts_corr
lts_corr
Definition: ofdm_mimo.m:207
DO_APPLY_PHASE_ERR_CORRECTION
Normalized threshold for LTS correlation DO_APPLY_PHASE_ERR_CORRECTION
Definition: ofdm_simo.m:82
channel
Equalize with *known * channel
Definition: berr_perfect.m:49
modvec_bpsk
1/sqrt(2 modvec_bpsk()
csi_lib.CSI.rf_roundtrip
rf_roundtrip
Definition: csi_lib.py:35
Sounder::Hdf5Reader::Start
void Start(void)
Definition: hdf5_reader.cc:39
storepath
char * storepath
Definition: config.cc:914
csi_lib.CalibCSI.collect_calib_pilots
def collect_calib_pilots(self)
Definition: csi_lib.py:250
detect_peaks._plot
def _plot(x, mph, mpd, threshold, edge, valley, ax, ind)
Definition: detect_peaks.py:157
SIM_snr_db
Channel to tune Tx and Rx radios SIM_snr_db
Definition: siso_ofdm_mf_sim.m:14
pl_idx
pl_idx
Definition: rl_ofdm_mimo.m:288
print_sensor.print_sensor
def print_sensor(irises, *args)
Definition: print_sensor.py:14
Config::dl_slot_per_frame
size_t dl_slot_per_frame(void) const
Definition: config.h:89
Config::cl_ul_slots
const std::vector< std::vector< size_t > > & cl_ul_slots(void) const
Definition: config.h:150
FFT_OFFSET
Rx processing params FFT_OFFSET
Definition: rl_ofdm_mmimo_sim.m:35
n_samp
end end n_samp
Definition: rl_ofdm_calib.m:95
SISO_TXRX_TDD.main
def main()
Main #.
Definition: SISO_TXRX_TDD.py:225
SignalHandler::~SignalHandler
~SignalHandler()
Definition: signalHandler.cpp:18
wrapper.Sounder
Definition: wrapper.py:12
iris_py_single_frame.Iris_py.agc_en
agc_en
Definition: iris_py_single_frame.py:81
ber_SIM
end ber_SIM
Definition: ofdm_simo.m:43
iris_py.Iris_py
SDR Class: #######.
Definition: iris_py.py:78
data
data
Definition: bits2syms.m:26
ofdm_plotter.OFDMplotter.FIG_LEN
FIG_LEN
Definition: ofdm_plotter.py:33
nt
nt
Definition: ofdm_simo.m:30
fft_power
Definition: fft_power.py:1
data_recorder.DataRecorder.samples
samples
Definition: data_recorder.py:78
agc_fsm_iris.AutomaticGainControl.gainPGA
float gainPGA
Definition: agc_fsm_iris.py:57
Sounder::RecorderWorker::num_antennas
size_t num_antennas(void)
Definition: recorder_worker.h:26
square
end axis square
Definition: bits2syms.m:67
ofdmtxrx.ofdmTxRx.demodulation
def demodulation(self, in_data, mod_order)
Definition: ofdmtxrx.py:242
csi_lib.CalibCSI.pilot
pilot
Definition: csi_lib.py:224
fprintf
Number of UE nodes end fprintf("Channel type: %s \n", chan_type)
SC_IND_DATA
Pilot subcarrier indices SC_IND_DATA
Definition: siso_ofdm_mf_sim.m:23
xlabel
xlabel('Inphase')
H_var
H_var
Definition: rl_ofdm_mmimo_sim.m:51
Receiver::notifyPacket
void notifyPacket(NodeType node_type, int frame_id, int slot_id, int ant_id, int buff_size, int offset=0)
Definition: receiver.cc:279
find_lts.find_zc_pilot
def find_zc_pilot(iq, thresh=0.8, us=1, seq_length=512, cp=32, pilot_seq=[])
Definition: find_lts.py:20
N_OFDM_SYMS
simulation data SC SNR Waveform params N_OFDM_SYMS
Definition: siso_ofdm_mf_sim.m:17
Sounder::RecorderThread::DispatchWork
bool DispatchWork(Event_data event)
Definition: recorder_thread.cc:65
ofdm_plotter.OFDMplotter
Definition: ofdm_plotter.py:25
recorder_worker.h
tx_payload_vec
Reshape to a vector tx_payload_vec
Definition: siso_ofdm_mf_sim.m:113
ofdm_plotter.OFDMplotter.corr2
corr2
Definition: ofdm_plotter.py:63
data_recorder.DataRecorder.init_h5file
def init_h5file(self, filename=None, init_datasets=True)
Definition: data_recorder.py:39
N_OFDM_SYM
Waveform params N_OFDM_SYM
Definition: ofdm_mimo.m:57
SampleBuffer::pkt_buf_inuse
std::atomic_int * pkt_buf_inuse
Definition: macros.h:49
Config::txdata_time_dom
std::vector< std::vector< std::complex< int16_t > > > & txdata_time_dom(void)
Definition: config.h:240
yourselves
Time Domain Do yourselves
Definition: ofdm_siso.m:108
bit_errs
bit_errs
Definition: ofdm_mimo.m:468
iris_py.Iris_py.max_frames
max_frames
Definition: iris_py.py:99
validIdx
Estimate the channel by averaging over the two LTS Calculate Condition Number validIdx
Definition: rl_ofdm_mimo.m:339
mod_fcn_bpsk
mod_fcn_bpsk
Definition: rl_ofdm_mmimo_sim.m:69
sim_SNR_db
sim_SNR_db
Definition: rl_ofdm_simo.m:47
csi_lib.CalibCSI.sampsRx
sampsRx
Definition: csi_lib.py:237
return
return
Definition: berr_perfect.m:30
Config::num_bs_sdrs_all
size_t num_bs_sdrs_all(void) const
Definition: config.h:28
Event_data::ant_id
int ant_id
Definition: macros.h:67
values
Insert the data and pilot values
Definition: ofdm_siso.m:110
agc_fsm_iris.AutomaticGainControl.is_finalStage
def is_finalStage(self)
Definition: agc_fsm_iris.py:274
data_frame
end data_frame
Definition: iris_py.m:287
SIM_MOD
Channel to tune Tx and Rx radios SIM_MOD
Definition: ofdm_simo.m:25
im
im
Definition: iris_py.m:127
node_ue
initialize BS end node_ue
Definition: getRxVec.m:203
fmaxHz
number of subpaths per cluster fmaxHz
Definition: getRxVec.m:57
sec_clr
sec_clr
Definition: rl_ofdm_mimo.m:408
Sounder::RecorderWorker::max_frame_number_
size_t max_frame_number_
Definition: recorder_worker.h:35
fprintf
fprintf("Symbol Error Rate = %12.4e\t Bit Error Rate = %12.4e\n", sym_err, bit_err)
Definition: iris_py.m:110
iris_py_single_frame.Iris_py.activate_stream_rx
def activate_stream_rx(self, flags=0)
Definition: iris_py_single_frame.py:254
data_len
data_len
Definition: ofdm_mimo.m:208
ifft_in_mat_pl
IFFT Construct the IFFT input matrix ifft_in_mat_pl
Definition: siso_ofdm_mf_sim.m:95
deployment_tool.plotter_final
def plotter_final(frame_map, snr, snrf, seq_found, n_frames_to_inspect)
Definition: deployment_tool.py:538
rx_data
Demodulate rx_data
Definition: rl_ofdm_mimo.m:403
ofdm_plotter.OFDMplotter.fig
fig
Definition: ofdm_plotter.py:72
agc_fsm_iris.AutomaticGainControl.gainLNA
float gainLNA
Definition: agc_fsm_iris.py:55
AGC_SIM_DEMO.format
format
Definition: AGC_SIM_DEMO.py:87
Sounder::RecorderThread
Definition: recorder_thread.h:18
line
line([-1.5, 1.5], [0 0], 'LineStyle', '-', 'Color', ln_clr, 'LineWidth', 1)
tx_payload_mat
Perform the IFFT tx_payload_mat
Definition: siso_ofdm_mf_sim.m:103
clf
clf
Definition: mod_demod.m:29
all
Author(s) close all
Definition: ofdm_siso.m:3
matplotlibcpp::grid
void grid(bool flag)
Definition: matplotlibcpp.h:1550
rx_vec_iris
rx_vec_iris
Definition: ofdm_siso.m:140
utx
utx(:, i)
ofdm_plotter.OFDMplotter.evm_text
evm_text
Definition: ofdm_plotter.py:388
fprintf
otherwise fprintf('Invalid MOD_ORDER(%d)! Must be in[2, 4, 16, 64]\n', MOD_ORDER)
off
hold off
Definition: ofdm_mimo.m:512
ofdmtxrx.ofdmTxRx
Definition: ofdmtxrx.py:19
sdr_close
end function sdr_close(obj) for ipy
FFT
Take FFT
Definition: rl_ofdm_mimo.m:327
N_0
N_0
Definition: rl_ofdm_mmimo_sim.m:50
iris_py.Iris_py.sdr_gettriggers
def sdr_gettriggers(self)
Definition: iris_py.py:172
rx_lts_f
rx_lts_f
Definition: siso_ofdm_mf_sim.m:183
CP_LEN
Number of subcarriers CP_LEN
Definition: ofdm_mimo.m:66
iris_py.Iris_py.both_channels
both_channels
Definition: iris_py.py:98
plot_hdf5.analyze_hdf5
def analyze_hdf5(hdf5, frame_i=10, cell_i=0, subcarrier_i=7, offset=-1, zoom=0, pl=0)
Definition: plot_hdf5.py:628
iris_py.Iris_py.sync_delays
def sync_delays(self)
Definition: iris_py.py:241
sample_offset_cal.cleanup
def cleanup(sdrs, frame_len, m_rxStream, s_rxStream)
Definition: sample_offset_cal.py:343
N_UE
N_UE
Definition: rl_ofdm_simo.m:210
zeros
N_ZPAD_PRE, N_UE zeros()
deployment_tool.pilot_finder
def pilot_finder(samples, pilot_type, flip=False, pilot_seq=[])
Definition: deployment_tool.py:742
lts_f
Enable Residual CFO estimation correction Define the preamble LTS for fine CFO and channel estimation lts_f
Definition: ofdm_mimo.m:79
iris_py_single_frame.Iris_py.sync_delays
def sync_delays(self, is_bs=True)
Definition: iris_py_single_frame.py:240
SISO_TX.signal_handler
def signal_handler(signal, frame)
Definition: SISO_TX.py:194
generate_sequence.preamble_generator
def preamble_generator(N, index=0, CP=0, bpsk=0, shift=0, upsample=1)
Definition: generate_sequence.py:226
N_DATA_SYMS
Cyclic prefix length N_DATA_SYMS
Definition: rl_ofdm_siso.m:91
csi_lib.CSI.beacon_weights
beacon_weights
Definition: csi_lib.py:31
deployment_tool.main
def main()
Definition: deployment_tool.py:786
macros.h
Config::beacon_radio
size_t beacon_radio(void) const
Definition: config.h:73
csi_lib.CalibCSI.txStream
txStream
Definition: csi_lib.py:234
N_FRM
N_FRM
Definition: ofdm_siso.m:55
on
grid on
Definition: rl_ofdm_mimo.m:299
iris_py.hub
hub
Definition: iris_py.py:373
powcdB
delay spread within cluster in nsec powcdB
Definition: getRxVec.m:70
tx_syms
tx_syms
Definition: ofdm_mimo.m:95
syms_f_mat_sc
Take the FFT syms_f_mat_sc
Definition: siso_ofdm_mf_sim.m:180
FFT_OFFSET
id FFT_OFFSET()
Definition: siso_ofdm_mf_sim.m:30
Receiver::~Receiver
~Receiver()
Definition: receiver.cc:79
set
set(bh, 'FaceColor', cond_clr)
N_SYM_SAMP
Number of N_SYM_SAMP
Definition: rl_ofdm_mimo.m:106
csi_lib.CSI.coeffs
coeffs
Definition: csi_lib.py:30
l_rx_dec
l_rx_dec
Definition: ofdm_simo.m:194
payload_mat
payload_mat
Definition: siso_ofdm_mf_sim.m:173
agc_fsm_iris.AutomaticGainControl.is_AGCenabled
def is_AGCenabled(self)
Definition: agc_fsm_iris.py:135
zeros
np, 1 zeros()
N_UE
N_UE
Definition: rl_ofdm_siso.m:63
n_ant
n_ant
Definition: mod_demod.m:17
Sounder::Hdf5Lib::closeDataset
void closeDataset()
Definition: hdf5_lib.cc:130
choose_best_frame
elseif choose_best_frame
Definition: iris_py.m:211
tx_syms_mat
Reshape the symbol vector to a matrix with one column per OFDM symbol tx_syms_mat
Definition: rl_ofdm_siso.m:116
data0_len
set trigger to start the frame Iris Rx Only UL data0_len
Definition: getRxVec.m:239
data_recorder.DataRecorder.lna
lna
Definition: data_recorder.py:30
Sounder::RecorderThread::running_
bool running_
Definition: recorder_thread.h:66
rx_lts_idx
end Take N_SC spamples from each LTS rx_lts_idx
Definition: ofdm_mimo.m:271
figure
figure(cf)
AGC_SIM_DEMO.fontsize
fontsize
Definition: AGC_SIM_DEMO.py:106
Packet::cell_id
uint32_t cell_id
Definition: macros.h:55
Receiver::startRecvThreads
std::vector< pthread_t > startRecvThreads(SampleBuffer *rx_buffer, size_t n_rx_threads, SampleBuffer *tx_buffer, unsigned in_core_id=0)
Definition: receiver.cc:151
iris_py.Iris_py.activate_stream_rx
def activate_stream_rx(self, flags=0)
Definition: iris_py.py:250
on
grid on
Definition: ofdm_mimo.m:251
iris_py.Iris_py.burn_beacon
def burn_beacon(self)
Definition: iris_py.py:255
sp_cols
end sp_cols
Definition: rl_ofdm_mimo.m:472
pilots
Define the pilot tone values as BPSK symbols pilots
Definition: rl_ofdm_simo.m:117
snr_mat
snr_mat
Definition: ofdm_mimo.m:471
matplotlibcpp::legend
void legend()
Definition: matplotlibcpp.h:1261
sdr_activate_rx
Burn data to the UE RAM end node_bs sdr_activate_rx()
legend
legend(hlegs, 'Tx', 'Rx', 'Fontsize', 16)
N_OFDM_SYM
Waveform params N_OFDM_SYM
Definition: ofdm_siso.m:64
Radio::deactivateRecv
void deactivateRecv(void)
Definition: Radio.cc:151
SIM_MOD
Channel to tune Tx and Rx radios SIM_MOD
Definition: ofdm_siso.m:27
Config::beacon_ant
size_t beacon_ant(void) const
Definition: config.h:72
csi_lib.CSI.rate
rate
Definition: csi_lib.py:34
ny
Add noise ny
Definition: getRxVec.m:191
lts_peaks
lts_peaks
Definition: ofdm_mimo.m:212
Author
Author(s)[version, executable, isloaded]
Definition: ofdm_mimo.m:17
Sounder::RecorderWorker::hdf5_name_
H5std_string hdf5_name_
Definition: recorder_worker.h:31
pilots
Define the pilot tone values as BPSK symbols pilots
Definition: rl_ofdm_siso.m:119
params
if ~isloaded pyversion usr bin python py print() %weird bug where py isn 't loaded in an external script end % Params Enable writing plots to PNG Iris params
Definition: rl_ofdm_calib.m:19
channel_analysis.calCond
def calCond(userCSI)
Definition: channel_analysis.py:28
preamble
preamble
Definition: rl_ofdm_calib.m:85
ofdm_plotter.OFDMplotter.init_tx_signal
def init_tx_signal(self, fig_len_)
Definition: ofdm_plotter.py:235
bit_errs
bit_errs
Definition: rl_ofdm_mimo.m:525
fprintf
Theoretical BER fprintf("Channel type: %s \n", chan_type)
tx_payload_vecs
end Reshape to a vector tx_payload_vecs
Definition: rl_ofdm_mimo.m:162
fprintf
Theoretical BER fprintf("Channel type: %s \n", chan_type)
zeros
1, N_ZPAD_POST zeros()
iris_py.Iris_py.n_zpad_samp
n_zpad_samp
Definition: iris_py.py:113
Sounder::RecorderWorker::num_antennas_
size_t num_antennas_
Definition: recorder_worker.h:38
N_BS_ANT
N_BS_ANT
Definition: rl_ofdm_mmimo_sim.m:48
rng
Generate mMIMO tranceivers random phase vector[-pi, pi] if DO_APPLY_HW_IMPERFECTION rng('shuffle')
payload_noCP
payload_noCP
Definition: ofdm_mimo.m:292
modvec_64qam
modvec_64qam
Definition: bits2syms.m:32
ue_sched
BS schedule ue_sched
Definition: rl_ofdm_mimo.m:211
nt
sample period in ms nt
Definition: getRxVec.m:163
agc_fsm_iris.AutomaticGainControl.full_reset
def full_reset(self)
Definition: agc_fsm_iris.py:283
a
id a()
Definition: iris_py.m:254
SISO_OFDM.main
def main()
Main #.
Definition: SISO_OFDM.py:562
hleg2
hleg2
Definition: mod_demod.m:58
csi_lib.CSI.rxClStream
rxClStream
Definition: csi_lib.py:53
Receiver::cl_tx_ptoks_
std::vector< moodycamel::ProducerToken * > cl_tx_ptoks_
Definition: receiver.h:94
rx_vec_air
Spatial Channel Matrix rx_vec_air
Definition: rl_ofdm_mmimo_sim.m:188
data_recorder.DataRecorder.serial
serial
Definition: data_recorder.py:27
FFT
Take FFT
Definition: ofdm_mimo.m:279
iris_py.Iris_py.setup_stream_rx
def setup_stream_rx(self)
Definition: iris_py.py:246
iris_py.gen_lts
def gen_lts(seq_length=128, cp=0, upsample=1)
Definition: iris_py.py:42
b_scheds
b_scheds
Definition: ofdm_siso.m:58
rx_vec_iris
rx_vec_iris
Definition: rl_ofdm_siso.m:182
ofdmtxrx.ofdmTxRx.cfo_correction
def cfo_correction(self, rxSignal, lts_start, lts_syms_len, fft_offset)
Definition: ofdmtxrx.py:262
scheduler.h
x
x
Definition: ofdm_mimo.m:306
REF_ANT
REF_ANT
Definition: rl_ofdm_calib.m:77
fft_power.main
def main()
Definition: fft_power.py:117
MLPD_SYMBOL
#define MLPD_SYMBOL(...)
Definition: logger.h:87
ylabel
ylabel('Quadrature')
Config::cl_agc_en
bool cl_agc_en(void) const
Definition: config.h:59
rx_clr
rx_clr
Definition: mod_demod.m:51
Receiver::clientSyncTxRx
void clientSyncTxRx(int tid, int core_id, SampleBuffer *rx_buffer)
Definition: receiver.cc:780
plot_hdf5.compute_legacy
def compute_legacy(hdf5)
Definition: plot_hdf5.py:761
demod_fcn_bpsk
Demodulate demod_fcn_bpsk
Definition: berr_perfect.m:52
N_SC
N_SC
Definition: ofdm_mimo.m:65
max
abs(tx_vec_iris max()
matplotlibcpp::bar
bool bar(const std::vector< Numeric > &y, std::string ec="black", std::string ls="-", double lw=1.0, const std::map< std::string, std::string > &keywords={})
Definition: matplotlibcpp.h:747
LICENSE
function Inc Distributed under the WARP License Rice University RENEW OPEN SOURCE LICENSE
Definition: mod_sym.m:18
pin_to_core
int pin_to_core(int core_id)
Definition: utils.cc:13
preamble
time domain preamble
Definition: ofdm_simo.m:89
Radio::dev
SoapySDR::Device * dev
Definition: Radio.h:14
SISO_RX.recorder
recorder
Definition: SISO_RX.py:85
SignalHandler::SignalHandler
SignalHandler()
Definition: signalHandler.cpp:13
iris_health_monitor.iris_health_monitor
def iris_health_monitor(en_logging, freq, uut_serials, golden_serial, gain_step, golden_tx_gain, golden_ant, golden_rx_gain, rx_pwr_limit, rm_from_uut_serials, detailed_logs, sdr_log_level, test_tx_only, test_rx_only)
Definition: iris_health_monitor.py:895
chan_type
if SIM_MOD chan_type
Definition: ofdm_simo.m:29
MOD_ORDER
Number of OFDM symbols for it needs to be less than MOD_ORDER
Definition: rl_ofdm_siso.m:84
Config::num_cells
size_t num_cells(void) const
Definition: config.h:47
data_recorder.DataRecorder.longitude
longitude
Definition: data_recorder.py:36
NB_CAL_DEMO.main
def main()
Definition: NB_CAL_DEMO.py:240
n_chain
n_chain
Definition: iris_py.m:25
mod_fcn_16qam
mod_fcn_16qam
Definition: rl_ofdm_mmimo_sim.m:71
tx_vec
tx_vec
Definition: ofdm_simo.m:128
hdf5_lib.hdf5_lib.pilot_samples
pilot_samples
Definition: hdf5_lib.py:280
Sounder::Scheduler::do_it
void do_it()
Definition: scheduler.cc:122
n_samp
n_samp
Definition: getRxVec.m:195
params
Iris params
Definition: ofdm_simo.m:48
ofdm_plotter.OFDMplotter.tx_data2
tx_data2
Definition: ofdm_plotter.py:56
CP_LEN
Number of subcarriers CP_LEN
Definition: ofdm_simo.m:72
tdd_sched
ue_sdr_params tdd_sched
Definition: rl_ofdm_mimo.m:238
hdf5_lib.hdf5_lib.noise_samples
noise_samples
Definition: hdf5_lib.py:283
data_recorder.DataRecorder.lna1
lna1
Definition: data_recorder.py:31
demod_fcn_qpsk
demod_fcn_qpsk
Definition: berr_perfect.m:53
Radio::activateXmit
void activateXmit(void)
Definition: Radio.cc:166
WRITE_PNG_FILES
WRITE_PNG_FILES
Definition: rl_ofdm_mimo.m:41
ts1
num input time samples after upconverting Compute size of y based on maximum path delay ts1
Definition: getRxVec.m:167
Config::n_bs_sdrs_agg
const std::vector< size_t > & n_bs_sdrs_agg(void) const
Definition: config.h:114
berr_th
BER berr_th
Definition: ofdm_siso.m:44
sim_SNR_db
sim_SNR_db
Definition: ofdm_simo.m:31
tx_vec_air
tx_vec_air
Definition: rl_ofdm_mmimo_sim.m:179
SOUNDER_TXRX.siso_sounder
def siso_sounder(hub, serial1, serial2, rate, freq, txgain, rxgain, numSamps, numSyms, txSymNum, threshold, tx_advance, prefix_length, postfix_length, both_channels, wait_trigger, calibrate, record, use_trig, tx_power_loop, agc_en)
Definition: SOUNDER_TXRX.py:202
bits
bits
Definition: syms2bits.m:61
ul_rx_hw_phase
ul_rx_hw_phase
Definition: rl_ofdm_mmimo_sim.m:85
sdr_configgainctrl
initialize UE node_ue sdr_configgainctrl()
pl_idx
pl_idx
Definition: ofdm_mimo.m:240
N_BEGIN_ZERO_PAD
Trigger time offset toleration between Tx and Rx that can be accomodated N_BEGIN_ZERO_PAD
Definition: rl_ofdm_mmimo_sim.m:43
WB_CAL_DEMO.signal_handler
def signal_handler(signum, frame)
Definition: WB_CAL_DEMO.py:50
SIM_MOD
if ~isloaded pyversion usr bin python py print() %weird bug where py isn 't loaded in an external script end % Params Enable writing plots to PNG SIM_MOD
Definition: rl_ofdm_simo.m:41
Sounder::RecorderThread::condition_
std::condition_variable condition_
Definition: recorder_thread.h:65
Config::running
bool running(void) const
Definition: config.h:100
CP_LEN
Number of subcarriers CP_LEN
Definition: rl_ofdm_mimo.m:103
AGC_SIM_DEMO.rate
int rate
Definition: AGC_SIM_DEMO.py:71
nsnr
nsnr
Definition: rl_ofdm_simo.m:48
SISO_OFDM.animate
def animate(i, num_samps_rd, rxStream, sdr, sdrTx, ofdm_params, tx_struct, ota, ofdm_obj, agc_en, infoTx)
Definition: SISO_OFDM.py:216
Sounder::Scheduler_getTraceFileName
const char * Scheduler_getTraceFileName(Scheduler *rec)
Definition: scheduler.cc:319
Sounder::RecorderThread::packet_data_length_
size_t packet_data_length_
Definition: recorder_thread.h:51
kThreadTermination
@ kThreadTermination
Definition: macros.h:41
agc_fsm_iris.AutomaticGainControl.maxGain
int maxGain
Definition: agc_fsm_iris.py:35
arrayfun
demod_fcn_16qam, syms_eq arrayfun()
bw_span
bw_span
Definition: rl_ofdm_mimo.m:498
n_frame
obj n_frame
Definition: iris_py.m:61
y
function y
Definition: getRxVec.m:1
iris_py.Iris_py.unset_corr
def unset_corr(self)
Definition: iris_py.py:178
node_ue2
initialize UE if n_ue node_ue2
Definition: getRxVec.m:199
pilot_phase_corr
pilot_phase_corr
Definition: rl_ofdm_mimo.m:389
rx_H_est
rx_H_est
Definition: siso_ofdm_mf_sim.m:186
ofdm_plotter.OFDMplotter.ani_init
def ani_init(self)
Definition: ofdm_plotter.py:84
plot_hdf5.pilot_finder
def pilot_finder(samples, pilot_type, flip=False, pilot_seq=[], seq_length=64, cp=0)
Definition: plot_hdf5.py:917
example_mode_string
example_mode_string
Definition: siso_ofdm_mf_sim.m:45
agc_fsm_iris.AutomaticGainControl.is_satDetGood
def is_satDetGood(self)
Definition: agc_fsm_iris.py:258
h
h
Definition: rl_ofdm_mimo.m:551
title
title(sprintf('UE %d Tx Waveform(I)', sp))
values
Insert the data and pilot values
Definition: rl_ofdm_mimo.m:148
RX_GN
RX_GN
Definition: ofdm_siso.m:53
berr_th
BER berr_th
Definition: ofdm_simo.m:44
Location
Location
Definition: siso_ofdm_mf_sim.m:284
Receiver
Definition: receiver.h:41
pream_ind_ibs
pream_ind_ibs
Definition: rl_ofdm_mimo.m:287
ibs
for ibs
Definition: ofdm_mimo.m:214
Config::ul_data_frame_num
size_t ul_data_frame_num(void) const
Definition: config.h:64
file_rdwr.read_from_file
def read_from_file(name, leng, offset, num_bits=12)
Definition: file_rdwr.py:26
payload_ind
payload_ind
Definition: ofdm_mimo.m:210
symbols
Estimate the channel by averaging over the two LTS symbols
Definition: ofdm_mimo.m:288
if
Insert the cyclic prefix if(CP_LEN > 0) tx_cp
matplotlibcpp::close
void close()
Definition: matplotlibcpp.h:1585
Sounder::RecorderWorker::init
void init(void)
Definition: recorder_worker.cc:34
mutex
pthread_mutex_t mutex
Definition: receiver.cc:24
tx_syms
tx_syms
Definition: ofdm_siso.m:94
pilots
Define the pilot tone values as BPSK symbols pilots
Definition: ofdm_mimo.m:101
arrayfun
mod_fcn_16qam, tx_ul_data arrayfun()
N_DATA_SYMS
Cyclic prefix length N_DATA_SYMS
Definition: rl_ofdm_mmimo_sim.m:29
iris_py_single_frame.Iris_py
SDR Class: #######.
Definition: iris_py_single_frame.py:66
data_recorder.DataRecorder.elevation
elevation
Definition: data_recorder.py:37
SISO_RX.rxsamples_app
def rxsamples_app(srl, freq, gain, num_samps, recorder, agc_en, wait_trigger)
Definition: SISO_RX.py:215
Sounder::RecorderThread::worker_
RecorderWorker worker_
Definition: recorder_thread.h:47
GetSounderProjectVersion
const std::string GetSounderProjectVersion()
Definition: version_config.h:10
mod_fcn_16qam
mod_fcn_16qam
Definition: siso_ofdm_mf_sim.m:65
PLOT
PLOT
Definition: rl_ofdm_mimo.m:44
CommsLib::correlate_avx_si
static std::vector< int16_t > correlate_avx_si(std::vector< int16_t > const &f, std::vector< int16_t > const &g)
tx_gain
tx_gain
Definition: iris_py.m:31
tx_freq
tx_freq
Definition: iris_py.m:28
hdf5_lib.hdf5_lib.filter_pilots
def filter_pilots(cmpx_pilots, z_padding=150, fft_size=64, cp=16, pilot_type='lts', seq_length=[])
Definition: hdf5_lib.py:422
SignalHandler::exitSignalHandler
static void exitSignalHandler(int _ignored)
Definition: signalHandler.cpp:38
h_ul_calib
h_ul_calib
Definition: rl_ofdm_mmimo_sim.m:105
Author
Author(s)[version, executable, isloaded]
Definition: rl_ofdm_simo.m:33
exist
if exist('bs_param.beacon_sweep', 'var') if bs_param.beacon_sweep disp('Beacon sweep')
Config::pilot_sym_t
std::vector< std::vector< float > > & pilot_sym_t(void)
Definition: config.h:189
len
end len
Definition: iris_py.m:214
SISO_TX.siggen_app
def siggen_app(args, rate, ampl, ant, gain, freq, bbfreq, waveFreq, numSamps, serial, sigType, lo_tone)
Definition: SISO_TX.py:74
N_SYM_SAMP
Number of N_SYM_SAMP
Definition: ofdm_mimo.m:69
SOUNDER_TXRX.main
def main()
Main #.
Definition: SOUNDER_TXRX.py:419
iris_py_single_frame.Iris_py.both_channels
both_channels
Definition: iris_py_single_frame.py:82
ofdm_plotter.OFDMplotter.lts_corr2
lts_corr2
Definition: ofdm_plotter.py:60
waveform
Scale for Tx waveform([0:1]) bs_ids
payload_rx
payload_rx
Definition: rl_ofdm_mimo.m:259
ofdm_plotter.OFDMplotter.anim
anim
Definition: ofdm_plotter.py:31
pilot_phase_err_corr
end pilot_phase_err_corr
Definition: ofdm_mimo.m:332
Author
Author(s)[version, executable, isloaded]
Definition: ofdm_simo.m:16
iris_py.Iris_py.close
def close(self)
Definition: iris_py.py:302
lts_t
lts_t
Definition: ofdm_simo.m:88
rx_lts_mat
rx_lts_mat
Definition: rl_ofdm_mimo.m:257
agc_fsm_iris.AutomaticGainControl.setFinalStage
def setFinalStage(self)
Definition: agc_fsm_iris.py:248
Receiver::message_queue_
moodycamel::ConcurrentQueue< Event_data > * message_queue_
Definition: receiver.h:90
mod_fcn_64qam
mod_fcn_64qam
Definition: mod_sym.m:25
berr_th
BER berr_th
Definition: rl_ofdm_siso.m:58
ipy
for ipy
Definition: iris_py.m:65
Params
siso_ofdm_mf_sim m A sane example of Simulated OFDM sysetm Copyright(c) 2015 Mango Communications - All Rights Reserved % Distributed under the WARP License(http Params
Definition: siso_ofdm_mf_sim.m:4
padding
Leftover from zero padding
Definition: ofdm_mimo.m:131
Config::recorder_thread_num
size_t recorder_thread_num(void) const
Definition: config.h:215
max_idx
position of the last peak max_idx
Definition: ofdm_mimo.m:228
hdf5_lib.hdf5_lib.get_metadata
def get_metadata(self)
Definition: hdf5_lib.py:365
Utils::float_to_cint16
static std::vector< std::complex< int16_t > > float_to_cint16(const std::vector< std::vector< float >> &in)
Definition: utils.cc:58
ofdm_plotter.OFDMplotter.set_data
def set_data(self, frameIdx, num_cl, tx, rx, chan_est, rx_H_est_plot, lts_corr, pilot_thresh, rx_syms_mat, corr, data_syms, user_params, metadata, phase_error, avg_evm, snr_from_evm, demmelNumber)
Definition: ofdm_plotter.py:128
Equalize
Equalize(zero-forcing, just divide by complex chan estimates) syms_eq_mat
sample_rate
number of Iris boards in a chain sample_rate
Definition: iris_py.m:27
bandpower.bandpower
def bandpower(x, fs, fmin, fmax)
Definition: bandpower.py:15
ofdm_plotter.OFDMplotter.init_frame_corr
def init_frame_corr(self, fig_len_)
Definition: ofdm_plotter.py:351
ClientRadioSet::radioRx
int radioRx(size_t radio_id, void *const *buffs, int numSamps, long long &frameTime)
Definition: ClientRadioSet.cc:329
rx_vec_iris
rx_vec_iris
Definition: ofdm_simo.m:139
Sounder::Hdf5Lib::openDataset
void openDataset()
Definition: hdf5_lib.cc:86
y0
output vector y0
Definition: getRxVec.m:34
avgCond
end avgCond
Definition: rl_ofdm_mimo.m:344
Config::ref_node_enable
bool ref_node_enable(void) const
Definition: config.h:120
chan_type
if SIM_MOD chan_type
Definition: ofdm_siso.m:30
plot
else plot(syms(:), 0,' *', 'MarkerSize', 16, 'LineWidth', 2)
DO_APPLY_CFO_CORRECTION
Normalized threshold for LTS correlation DO_APPLY_CFO_CORRECTION
Definition: siso_ofdm_mf_sim.m:32
bs_ids
end bs_ids
Definition: rl_ofdm_siso.m:76
order
Modulation order(2/4/16/64=BSPK/QPSK/16-QAM/64-QAM) TX_SCALE=0.5
agc_fsm_iris.AutomaticGainControl.is_fineTuningDone
def is_fineTuningDone(self)
Definition: agc_fsm_iris.py:234
sample_offset_cal.txrx_app
def txrx_app(serials, ref_node_idx, hub_serial, rate, freq, txgain, rxgain, numSamps, prefix_pad, postfix_pad, debug)
Functions #.
Definition: sample_offset_cal.py:54
arrayfun
demod_fcn_16qam, syms arrayfun()
w
w
Definition: syms2bits.m:32
Config::isPilot
bool isPilot(int, int)
Definition: config.cc:872
bs_sdr_params
bs_sdr_params
Definition: rl_ofdm_siso.m:163
sp_rows
else sp_rows
Definition: ofdm_mimo.m:414
csi_lib.CSI.symSamp
symSamp
Definition: csi_lib.py:32
off
hold off
Definition: rl_ofdm_mimo.m:571
dimension
Reshape the matix to have each lts pilot in a different dimension
Definition: ofdm_mimo.m:276
plt_simp.pilot
pilot
Definition: plt_simp.py:99
BEACON_SWEEP.beamsweeper
def beamsweeper(hub, serials, rate, freq, txgain, rxgain, numSamps, numSyms, prefix_length, postfix_length, calibrate, both_channels)
Definition: BEACON_SWEEP.py:60
mod_fcn_bpsk
mod_fcn_bpsk
Definition: berr_perfect.m:13
ofdm_plotter.OFDMplotter.rx_syms_mat
rx_syms_mat
Definition: ofdm_plotter.py:43
figure
end if DEBUG figure
Definition: rl_ofdm_mimo.m:295
MAX_TX_LEN
Use the AGC if running on WARP hardware MAX_TX_LEN
Definition: siso_ofdm_mf_sim.m:38
v0
v0
Definition: siso_ofdm_mf_sim.m:143
b_prim_sched
b_prim_sched
Definition: ofdm_mimo.m:151
N_SC
Data subcarrier indices N_SC
Definition: rl_ofdm_siso.m:89
agc_fsm_iris.AutomaticGainControl.gainTable
gainTable
Definition: agc_fsm_iris.py:62
Receiver::txTimeDelta
size_t txTimeDelta
Definition: receiver.h:102
hdf5_lib.hdf5_lib.downlink_samples
downlink_samples
Definition: hdf5_lib.py:282
Receiver::tx_queue_
std::vector< moodycamel::ConcurrentQueue< Event_data > * > tx_queue_
Definition: receiver.h:91
ofdm_plotter.OFDMplotter.pilot_thresh
pilot_thresh
Definition: ofdm_plotter.py:42
tx_syms_mat
Reshape the symbol vector to a matrix with one column per OFDM symbol tx_syms_mat
Definition: rl_ofdm_mimo.m:135
utils.h
iu
for iu
Definition: ofdm_mimo.m:163
kStreamEndBurst
static constexpr size_t kStreamEndBurst
Definition: macros.h:14
hub_py.Hub_py.__init__
def __init__(self, serial_id=None)
Definition: hub_py.py:31
Config::cl_sdr_ch
size_t cl_sdr_ch(void) const
Definition: config.h:97
Config::cal_ref_sdr_id
size_t cal_ref_sdr_id(void) const
Definition: config.h:121
Config::getFrameDurationSec
double getFrameDurationSec() const
Return the frame duration in seconds.
Definition: config.h:263
evm_mat
evm_mat
Definition: ofdm_mimo.m:469
dlycns
TX angular spread in radians dlycns
Definition: getRxVec.m:68
SampleBuffer::buffer
std::vector< char > buffer
Definition: macros.h:48
ue_sched
ue_sched
Definition: ofdm_mimo.m:153
xlabel
xlabel('Inphase')
ofdm_plotter.OFDMplotter.init_constellation
def init_constellation(self)
Definition: ofdm_plotter.py:380
data_generator.h
Implementation file for the Data generator class to generate binary files as inputs to Agora,...
objects
just to agree with what the hardware spits out else Init Iris nodes Set up the Iris experiment Create a two Iris node objects
Definition: ofdm_simo.m:149
params
Iris params
Definition: ofdm_mimo.m:38
data_recorder.DataRecorder.freq
freq
Definition: data_recorder.py:34
yourselves
Do yourselves
Definition: bits2syms.m:19
clf
clf
Definition: ofdm_mimo.m:357
nvar
nvar
Definition: getRxVec.m:11
ofdmtxrx.ofdmTxRx.qam16_mod
def qam16_mod(self, val)
Definition: ofdmtxrx.py:65
DO_APPLY_PHASE_ERR_CORRECTION
Enable SFO estimation correction DO_APPLY_PHASE_ERR_CORRECTION
Definition: rl_ofdm_mmimo_sim.m:39
Utils::cint16_to_cfloat
static std::vector< std::complex< float > > cint16_to_cfloat(const std::vector< std::complex< int16_t >> &in)
Definition: utils.cc:71
ofdm_plotter.OFDMplotter.lts_corr
lts_corr
Definition: ofdm_plotter.py:41
pilots_f_mat_comp
pilots_f_mat_comp
Definition: ofdm_mimo.m:324
lts_peaks
lts_peaks
Definition: siso_ofdm_mf_sim.m:149
ofdm_plotter.OFDMplotter.pilot_thresh2
pilot_thresh2
Definition: ofdm_plotter.py:61
Config::dl_slots
const std::vector< std::vector< size_t > > & dl_slots(void) const
Definition: config.h:92
payload_ind
payload_ind
Definition: rl_ofdm_mimo.m:258
deployment_tool.datasets
def datasets(n_frames_to_inspect, fr_strt)
Definition: deployment_tool.py:40
matplotlibcpp::semilogy
bool semilogy(const std::vector< NumericX > &x, const std::vector< NumericY > &y, const std::string &s="")
Definition: matplotlibcpp.h:932
Receiver::startClientThreads
std::vector< pthread_t > startClientThreads(SampleBuffer *rx_buffer, SampleBuffer *tx_buffer, unsigned in_core_id=0)
Definition: receiver.cc:120
cf
Plot results cf
Definition: rl_ofdm_mimo.m:406
SISO_OFDM.title
title
Definition: SISO_OFDM.py:105
demod_fcn_qpsk
demod_fcn_qpsk
Definition: syms2bits.m:40
type_conv.uint32tocfloat
def uint32tocfloat(arr, order='IQ')
Definition: type_conv.py:16
Config::radio_rf_freq
double radio_rf_freq(void) const
Definition: config.h:57
tx_data
Generate a payload of random integers tx_data
Definition: rl_ofdm_simo.m:110
N_SC
Data subcarrier indices N_SC
Definition: rl_ofdm_mmimo_sim.m:27
csi_lib.CSI.num_csdrs
num_csdrs
Definition: csi_lib.py:45
iris_py.Iris_py.rx_stream
rx_stream
Definition: iris_py.py:248
FindArrays.testTriggers
def testTriggers(sdrs, which)
Definition: FindArrays.py:23
csi_lib.CSI.__init__
def __init__(self, bsdrs, csdrs, trig_dev, txBsStream, rxBsStream, rxClStream, ota_trig, ant, rate, symSamp, pilot, beacon, coeffs, beacon_weights, rf_roundtrip)
Definition: csi_lib.py:26
Config::cl_rx_thread_num
size_t cl_rx_thread_num(void) const
Definition: config.h:213
step
Take Construct known pilot matrix to use i next step
Definition: ofdm_mimo.m:279
TIME_DELTA
#define TIME_DELTA
Definition: macros.h:31
fdd_mat
other subcarriers will remain at fdd_mat(SC_IND_DATA, :)
tx_syms
Map the data values on to complex symbols switch MOD_ORDER case BPSK tx_syms
Definition: siso_ofdm_mf_sim.m:71
Config::freq
double freq(void) const
Definition: config.h:55
data_raw
end data_raw
Definition: iris_py.m:190
ofdm_plotter.OFDMplotter.rx_data
rx_data
Definition: ofdm_plotter.py:38
padding
Leftover from zero padding
Definition: rl_ofdm_mimo.m:168
berr_th
function berr_th
Definition: berr_perfect.m:1
dl_rx_calib_fft
dl_rx_calib_fft
Definition: rl_ofdm_mmimo_sim.m:110
demod_fcn_64qam
demod_fcn_64qam
Definition: syms2bits.m:42
symbols
Number of data symbols(one per data-bearing subcarrier per OFDM symbol) N_LTS_SYM
NB_CAL_DEMO.calibrate_array
def calibrate_array(hub_serial, serials, ref_serial, rate, freq, txgain, rxgain, numSamps, prefix_pad, postfix_pad, second_channel)
Definition: NB_CAL_DEMO.py:50
SAMP_FREQ
SAMP_FREQ
Definition: siso_ofdm_mf_sim.m:44
csi_lib.CSI.setup
def setup(self)
Definition: csi_lib.py:59
Sounder::Scheduler::bs_tx_thread_buff_size_
size_t bs_tx_thread_buff_size_
Definition: scheduler.h:38
ofdm_plotter.OFDMplotter.init_rx_signal
def init_rx_signal(self, fig_len_)
Definition: ofdm_plotter.py:266
Config::cl_pilot_slots
const std::vector< std::vector< size_t > > & cl_pilot_slots(void) const
Definition: config.h:147
aevms
aevms
Definition: rl_ofdm_mimo.m:527
TX_GN
TX_GN
Definition: ofdm_siso.m:52
CommsLib::getSequence
static std::vector< std::vector< float > > getSequence(size_t type, size_t seq_len=0)
Definition: comms-lib.cc:516
Config::cl_rxgain_vec
const std::vector< std::vector< double > > & cl_rxgain_vec(void) const
Definition: config.h:182
fprintf
fprintf('Length of the received vector from HW:\tUE:%d\n', data0_len)
preamble
time domain preamble
Definition: rl_ofdm_simo.m:107
bar
bar(bw_span, fftshift(abs(squeeze(H_hat(ibs, iue, :)))), 1, 'LineWidth', 1)
n_samp
n_samp
Definition: iris_py.m:33
hdf5_lib.hdf5_lib.metadata
metadata
Definition: hdf5_lib.py:279
Receiver::clientTxPilots
void clientTxPilots(size_t user_id, long long base_time)
Definition: receiver.cc:686
MLPD_WARN
#define MLPD_WARN(...)
Definition: logger.h:59
AGC_SIM_DEMO.init
def init()
Functions #.
Definition: AGC_SIM_DEMO.py:144
tx_data
Generate a payload of random integers tx_data
Definition: rl_ofdm_siso.m:111
agc_fsm_iris.AutomaticGainControl.cumulativeGainAdjust
int cumulativeGainAdjust
Definition: agc_fsm_iris.py:52
Receiver::baseTxData
int baseTxData(int radio_id, int cell, int frame_id, long long base_time)
Definition: receiver.cc:225
pilot_phase_err_corr
end pilot_phase_err_corr
Definition: rl_ofdm_mimo.m:388
mod_fcn_qpsk
mod_fcn_qpsk
Definition: mod_sym.m:23
kEventRxSymbol
@ kEventRxSymbol
Definition: macros.h:37
wrapper.Sounder.getMaxFrame
def getMaxFrame(self)
Definition: wrapper.py:28
bs_only
char bool bs_only
Definition: config.cc:915
axis
axis(1.5 *[-1 1 -1 1])
Config::pilot_sym_f
std::vector< std::vector< float > > & pilot_sym_f(void)
Definition: config.h:192
Config::postfix
int postfix(void) const
Definition: config.h:52
ofdmtxrx.ofdmTxRx.__init__
def __init__(self)
Definition: ofdmtxrx.py:24
ul_tx_calib
ul_tx_calib
Definition: rl_ofdm_mmimo_sim.m:100
ofdm_plotter.OFDMplotter.snr
snr
Definition: ofdm_plotter.py:53
csi_lib.CalibCSI.numSamps
numSamps
Definition: csi_lib.py:225
WB_CAL_DEMO.init
def init(hub, bnodes, ref_ant, ampl, rate, freq, txgain, rxgain, cyc_prefix, num_samps, prefix_length, postfix_length, take_duration, both_channels, plotter)
Definition: WB_CAL_DEMO.py:55
isnr
for isnr
Definition: rl_ofdm_siso.m:155
tx_syms
tx_syms
Definition: rl_ofdm_siso.m:113
tx_data
tx_data
Definition: berr_perfect.m:5
WB_CAL_DEMO.main
def main()
Definition: WB_CAL_DEMO.py:349
mod_fcn_16qam
mod_fcn_16qam
Definition: berr_perfect.m:15
iris_health_monitor.set_gain_limits
def set_gain_limits(frontend)
Definition: iris_health_monitor.py:253
hub_py.Hub_py.sync_delays
def sync_delays(self)
Definition: hub_py.py:47
hdf5_lib.hdf5_lib.__init__
def __init__(self, filename, n_frames_to_inspect=0, n_fr_insp_st=0, sub_sample=0)
Definition: hdf5_lib.py:273
t
t
Definition: getRxVec.m:172
Sounder::Scheduler::~Scheduler
~Scheduler()
Definition: scheduler.cc:120
g
Author(s) pyhton object array This array decribes Iris board or a collection of Iris boards that belong to the same entity E g
Definition: iris_py.m:3
Config::ul_tx_fd_data_files
const std::vector< std::string > & ul_tx_fd_data_files(void) const
Definition: config.h:159
demod_fcn_bpsk
Demodulate demod_fcn_bpsk
Definition: syms2bits.m:39
rx_vec_air
rx_vec_air
Definition: siso_ofdm_mf_sim.m:138
TX_FRQ
TX_FRQ
Definition: ofdm_siso.m:50
Event_data::node_type
NodeType node_type
Definition: macros.h:64
Receiver::clientRadioSet_
ClientRadioSet * clientRadioSet_
Definition: receiver.h:85
hleg1
else hleg1
Definition: mod_demod.m:61
xs
delay of path ip xs
Definition: getRxVec.m:180
BaseRadioSet::radioStop
void radioStop(void)
Definition: BaseRadioSet.cc:471
cf
Plot results cf
Definition: ofdm_mimo.m:351
pilots_mat
Repeat the pilots across all OFDM symbols pilots_mat
Definition: rl_ofdm_mimo.m:141
modvec_64qam
modvec_64qam
Definition: siso_ofdm_mf_sim.m:61
sim_SNR_db
Will use only Rayleigh for simulation sim_SNR_db
Definition: ofdm_mimo.m:31
type_conv.int_to_bin
def int_to_bin(val, nbits)
Definition: type_conv.py:65
fdd_mat
other subcarriers will remain at fdd_mat(SC_IND_DATA, :)
sample_offset_cal.main
def main()
Main #.
Definition: sample_offset_cal.py:364
Receiver::go
void go()
Definition: receiver.cc:187
data_recorder.DataRecorder.latitude
latitude
Definition: data_recorder.py:35
Config::guard_mult
size_t guard_mult(void) const
Definition: config.h:48
dl_rx_calib
dl_rx_calib
Definition: rl_ofdm_mmimo_sim.m:109
mod_fcn_16qam
mod_fcn_16qam
Definition: mod_sym.m:24
vector
else Define an empty phase correction vector(used by plotting code below) pilot_phase_err
trig
end trig
Definition: getRxVec.m:201
N_SYM_SAMP
Number of N_SYM_SAMP
Definition: ofdm_siso.m:74
matplotlibcpp::xlim
void xlim(Numeric left, Numeric right)
Definition: matplotlibcpp.h:1288
ofdm_plotter.OFDMplotter.update_tx_signal_fig
def update_tx_signal_fig(self, fig_len_)
Definition: ofdm_plotter.py:259
Utils::uint32tocfloat
static std::vector< std::complex< float > > uint32tocfloat(const std::vector< uint32_t > &in, const std::string &order)
Definition: utils.cc:81
ofdmtxrx.ofdmTxRx.qam16_dem
def qam16_dem(self, iq)
Definition: ofdmtxrx.py:127
fprintf
end fprintf("Channel type: %s \n", chan_type)
unos
unos
Definition: siso_ofdm_mf_sim.m:142
msb
id msb()
min
MAX_TX_LEN, 2^20 min()
Receiver::initBuffers
void initBuffers()
Definition: receiver.cc:98
axis
axis([0 length(rx_vec_iris(sp,:)) -TX_SCALE TX_SCALE]) grid on
SC_ZER0
SC_ZER0
Definition: rl_ofdm_mmimo_sim.m:31
ue_scheds
ue_scheds
Definition: ofdm_simo.m:60
fst_clr
fst_clr
Definition: ofdm_mimo.m:352
N_ZPAD_PRE
Number of samples that will go over the air N_ZPAD_PRE
Definition: ofdm_mimo.m:70
awgn
number of antennas awgn
Definition: mod_demod.m:18
modvec_64qam
modvec_64qam
Definition: mod_sym.m:20
dsepRx
TX antenna separation dsepRx
Definition: getRxVec.m:77
DO_APPLY_SFO_CORRECTION
Enable CFO estimation correction DO_APPLY_SFO_CORRECTION
Definition: siso_ofdm_mf_sim.m:33
kSampleBufferFrameNum
static constexpr size_t kSampleBufferFrameNum
Definition: macros.h:19
Sounder::Hdf5Lib::write_attribute
void write_attribute(const char name[], double val)
Definition: hdf5_lib.cc:279
agc_fsm_iris.AutomaticGainControl.maxNumFineAdjust
int maxNumFineAdjust
Definition: agc_fsm_iris.py:50
nov
RX antenna separation nov
Definition: getRxVec.m:79
plot
else plot(syms(:), 0,' *', 'MarkerSize', 16, 'LineWidth', 2)
ClientRadioSet::triggers
int triggers(int i)
Definition: ClientRadioSet.cc:327
if
Insert the cyclic prefix if(CP_LEN > 0) tx_cp
data_recorder.DataRecorder.__init__
def __init__(self, tag, serial, freq, lna, pga, tia, lna1, lna2, attn, numSamps, latitude, longitude, elevation)
Definition: data_recorder.py:22
ofdm_plotter.OFDMplotter.signal_handler
def signal_handler(sig)
Definition: ofdm_plotter.py:426
Config::samps_per_slot
size_t samps_per_slot(void) const
Definition: config.h:35
symbols
Number of data symbols(one per data-bearing subcarrier per OFDM symbol) N_LTS_SYM
end_idx
end_idx
Definition: iris_py.m:284
hdf5_lib.hdf5_lib.n_frm_end
n_frm_end
Definition: hdf5_lib.py:285
Sounder::RecorderThread::id_
size_t id_
Definition: recorder_thread.h:50
AGC_SIM_DEMO.animate
def animate(i)
Definition: AGC_SIM_DEMO.py:207
sdr_close
node_bs sdr_close()
lts_t
lts_t
Definition: rl_ofdm_calib.m:57
j
for j
Definition: ofdm_mimo.m:301
ofdm_plotter.OFDMplotter.user_params
user_params
Definition: ofdm_plotter.py:46
N_FRM
N_FRM
Definition: rl_ofdm_siso.m:69
schedule
BS primary noede s schedule
Definition: ofdm_simo.m:153
ofdmtxrx.ofdmTxRx.cp_length
cp_length
Definition: ofdmtxrx.py:27
ofdm_plotter.OFDMplotter.phase_err2
phase_err2
Definition: ofdm_plotter.py:65
csi_lib.CSI.csdrs
csdrs
Definition: csi_lib.py:38
title
title('Constellation')
iris_py.Iris_py.set_trigger
def set_trigger(self)
Definition: iris_py.py:164
angcTx
RX angular spread in radians angcTx
Definition: getRxVec.m:66
Config::frames
const std::vector< std::string > & frames(void) const
Definition: config.h:202
TX_SCALE
TX_SCALE
Definition: ofdm_siso.m:35
modvec_64qam
modvec_64qam
Definition: rl_ofdm_mmimo_sim.m:67
sdr_setcorr
activate reading stream node_ue sdr_setcorr()
iris_py_single_frame.Iris_py.burn_data
def burn_data(self, data_r, data_i=None, replay_addr=0)
Definition: iris_py_single_frame.py:279
Packet::slot_id
uint32_t slot_id
Definition: macros.h:54
nvar
end Add noise nvar
Definition: berr_perfect.m:44
ofdm_plotter.OFDMplotter.update_phaser_err
def update_phaser_err(self, ofdm_syms_)
Definition: ofdm_plotter.py:314
Config::cl_sdr_ids
const std::vector< std::string > & cl_sdr_ids(void) const
Definition: config.h:156
snr
number of bits snr
Definition: mod_demod.m:16
FontWeight
tb FontWeight
Definition: rl_ofdm_mimo.m:462
Sounder::Scheduler::cl_tx_queue_
std::vector< moodycamel::ConcurrentQueue< Event_data > * > cl_tx_queue_
Definition: scheduler.h:50
symbols
Number of data symbols(one per data-bearing subcarrier per OFDM symbol) N_LTS
comms-lib.h
NB_CAL_DEMO.running
bool running
Definition: NB_CAL_DEMO.py:42
Sounder::RecorderThread::RecorderThread
RecorderThread(Config *in_cfg, size_t thread_id, int core, size_t queue_size, size_t antenna_offset, size_t num_antennas, bool wait_signal=true)
Definition: recorder_thread.cc:17
Sounder::Scheduler::getRecordedFrameNum
int getRecordedFrameNum()
Definition: scheduler.cc:307
awgn
Author(s) Create channel if awgn
Definition: syms2bits.m:22
h
h
Definition: berr_perfect.m:36
Y_lts
Y_lts
Definition: ofdm_mimo.m:272
agc_fsm_iris.AutomaticGainControl.gainAdjustStage
int gainAdjustStage
Definition: agc_fsm_iris.py:45
H_ref
H_ref
Definition: rl_ofdm_mmimo_sim.m:101
N_UE
N_UE
Definition: ofdm_simo.m:49
square
axis square
Definition: ofdm_mimo.m:421
MyFuncAnimation.MyFuncAnimation
Definition: MyFuncAnimation.py:3
Sounder::Scheduler::cl_tx_thread_buff_size_
size_t cl_tx_thread_buff_size_
Definition: scheduler.h:40
Y_lts
Y_lts
Definition: rl_ofdm_mimo.m:320
lts_f
Enable Residual CFO estimation correction Define the preamble LTS for fine CFO and channel estimation lts_f
Definition: rl_ofdm_siso.m:104
FontWeight
tb FontWeight
Definition: ofdm_mimo.m:406
SC_IND_DATA
Pilot subcarrier indices SC_IND_DATA
Definition: ofdm_simo.m:69
I
end I
Definition: getRxVec.m:133
data_len
data_len
Definition: rl_ofdm_calib.m:84
FFT_OFFSET
id FFT_OFFSET()
Definition: siso_ofdm_mf_sim.m:30
data_recorder.DataRecorder.num_frame
num_frame
Definition: data_recorder.py:23
USE_AGC
Enable Residual CFO estimation correction WARPLab experiment params USE_AGC
Definition: siso_ofdm_mf_sim.m:37
ofdm_plotter.OFDMplotter.evm2
evm2
Definition: ofdm_plotter.py:66
Config::max_frame
size_t max_frame(void) const
Definition: config.h:63
Config::pilot_ci16
std::vector< std::complex< int16_t > > & pilot_ci16(void)
Definition: config.h:136
Receiver::baseTxBeacon
void baseTxBeacon(int radio_id, int cell, int frame_id, long long base_time)
Definition: receiver.cc:193
NB_CAL_DEMO.signal_handler
def signal_handler(signum, frame)
Definition: NB_CAL_DEMO.py:45
ofdm_plotter.OFDMplotter.animate
def animate(self)
Definition: ofdm_plotter.py:228
Sounder::Scheduler::receiver_
std::unique_ptr< Receiver > receiver_
Definition: scheduler.h:34
mod_fcn_64qam
mod_fcn_64qam
Definition: berr_perfect.m:16
ReceiverException
Definition: receiver.h:33
N_UE
N_UE
Definition: ofdm_mimo.m:39
modvec_bpsk
1/sqrt(2 modvec_bpsk()
syms_eq
else Do nz_sc(j))' *H_hat(Apply nz_sc(j))') *squeeze(Y_data(end syms_eq(:, nz_sc(j),:)
MOD_ORDER
Number of OFDM symbols MOD_ORDER
Definition: siso_ofdm_mf_sim.m:18
Config::pilot_slot_per_frame
size_t pilot_slot_per_frame(void) const
Definition: config.h:80
main
int main(int argc, char *argv[])
Definition: main.cc:28
SC_IND_DATA
Pilot subcarrier indices SC_IND_DATA
Definition: rl_ofdm_mimo.m:100
Packet
Definition: macros.h:52
arrayfun
mod_fcn_16qam, tx_data arrayfun()
pilot_phase_err
pilot_phase_err
Definition: ofdm_mimo.m:325
BEACON_SWEEP.main
def main()
Definition: BEACON_SWEEP.py:173
tdd_sched
configure the ue_param tdd_sched(tdd_sched_index))
suubcarrier
Apply ZF by multiplying the pseudo inverse of H_hat[N_BS_NODE x NUE] for each suubcarrier
Definition: ofdm_mimo.m:297
Sounder::Hdf5Lib::extendDataset
bool extendDataset(std::string dataset_name, size_t prim_dim_size)
Definition: hdf5_lib.cc:157
SISO_RX.main
def main()
Main #.
Definition: SISO_RX.py:431
i
for i
Definition: rl_ofdm_calib.m:121
rx_syms
rx_syms
Definition: berr_perfect.m:46
set_tddconfig
for uplink only one frame schedule is sufficient node_bs set_tddconfig(1, bs_param.tdd_sched(tdd_sched_index))
iris_health_monitor.plotter
def plotter(rx_axis_x0, rx_axis_x1, rx_axis_y0, rx_axis_y1, rx_noise_floor0, rx_noise_floor1, rx_serials, tx_axis_x0, tx_axis_x1, tx_axis_y0, tx_axis_y1, tx_noise_floor0, tx_noise_floor1, tx_serials, test_tx_only, test_rx_only, pf_rx, pf_tx, golden_serial, golden_ant, golden_tx_gain, golden_rx_gain, test_datetime, rx_thresh, rx_lo, rx_hi, tx_lo, tx_hi)
Definition: iris_health_monitor.py:440
rx_data
case QPSK rx_data
Definition: berr_perfect.m:64
agc_fsm_iris.AutomaticGainControl.fineTuningCounter
def fineTuningCounter(self)
Definition: agc_fsm_iris.py:229
ofdm_plotter.OFDMplotter.phase_err
phase_err
Definition: ofdm_plotter.py:51
pilots
Define the pilot tone values as BPSK symbols pilots
Definition: rl_ofdm_mimo.m:138
nantRx
number of TX antennas nantRx
Definition: getRxVec.m:75
zeros
N_ZPAD_PRE, N_UE zeros()
N_OFDM_SYM
Waveform params N_OFDM_SYM
Definition: ofdm_simo.m:64
SISO_RX.format
format
Definition: SISO_RX.py:117
BS
configure the BS
Definition: rl_ofdm_calib.m:123
matplotlibcpp::subplots_adjust
bool subplots_adjust(const std::map< std::string, double > &keywords={})
Definition: matplotlibcpp.h:777
arrayfun
mod_fcn_16qam, data arrayfun()
pilots_mat
Repeat the pilots across all OFDM symbols pilots_mat
Definition: ofdm_mimo.m:104
sdr_setupbeacon
node_bs sdr_setupbeacon()
display
if TX_GN display('WARNING:MAXIMUM TX GAIN IS 81!')
hdf5_lib.hdf5_lib
Definition: hdf5_lib.py:271
lts_f_mat
Take Construct known pilot matrix to use i next N_BS_NODE *N_UE lts_f_mat
Definition: ofdm_mimo.m:282
symbols
Number of data symbols(one per data-bearing subcarrier per OFDM symbol) N_LTS_SYM
payload_rx
payload_rx
Definition: ofdm_mimo.m:211
v1
v1
Definition: siso_ofdm_mf_sim.m:144
NodeType
NodeType
Definition: macros.h:44
ue_ids
ue_ids
Definition: rl_ofdm_siso.m:78
sgtitle
end sgtitle('LTS correlations accross antennas') end %% Rx processing % Construct a matrix from the received pilots n_plt_samp
i
for i
Definition: rl_ofdm_mmimo_sim.m:144
l_rx_dec
l_rx_dec
Definition: rl_ofdm_simo.m:244
CHANNEL
Enable writing plots to PNG CHANNEL
Definition: siso_ofdm_mf_sim.m:13
W_ul
noise vector W_ul
Definition: getRxVec.m:15
iris_py_single_frame.Iris_py.__init__
def __init__(self, serial_id=None, tx_freq=None, rx_freq=None, tx_gain=None, rx_gain=None, bw=None, sample_rate=None, n_samp=None, n_zpad_samp=150, max_frames=10, both_channels=False, agc_en=False)
Definition: iris_py_single_frame.py:70
agc_fsm_iris.AutomaticGainControl.fineAdjustCount
int fineAdjustCount
Definition: agc_fsm_iris.py:51
Config::isUlData
bool isUlData(int, int)
Definition: config.cc:888
repmat
repmat(lts_t, N_LTS_SYM, 1)]
Receiver::ReceiverContext::tid
size_t tid
Definition: receiver.h:48
Sounder::Hdf5Lib::createDataset
int createDataset(std::string dataset_name, std::array< hsize_t, kDsDimsNum > tot_dims, std::array< hsize_t, kDsDimsNum > chunk_dims)
Definition: hdf5_lib.cc:43
MLPD_ERROR
#define MLPD_ERROR(...)
Definition: logger.h:50
SC_IND_DATA
Pilot subcarrier indices SC_IND_DATA
Definition: ofdm_siso.m:69
csi_lib.CalibCSI.rxStream
rxStream
Definition: csi_lib.py:235
Sounder::Scheduler::Scheduler
Scheduler(Config *in_cfg, unsigned int core_start=0u)
Definition: scheduler.cc:24
pkt_strt
pkt_strt
Definition: siso_ofdm_mf_sim.m:147
type_conv.bin_to_int
def bin_to_int(val, nbits)
Definition: type_conv.py:54
N_ZPAD_POST
configure the N_ZPAD_PRE N_ZPAD_POST
Definition: rl_ofdm_calib.m:123
samples
end Rx payload processing Extract the payload samples(integral number of OFDM symbols following preamble) payload_vec
DO_SAVE_RX_DATA
DO_SAVE_RX_DATA
Definition: rl_ofdm_mmimo_sim.m:53
CommsLib::hadamard2
static int hadamard2(int i, int j)
Definition: comms-lib.h:107
agc_fsm_iris.AutomaticGainControl.currentSample
int currentSample
Definition: agc_fsm_iris.py:37
iris_py_single_frame.Iris_py.close
def close(self)
Definition: iris_py_single_frame.py:312
demod_fcn_16qam
demod_fcn_16qam
Definition: demod_sym.m:18
N_END_ZERO_PAD
N_END_ZERO_PAD
Definition: rl_ofdm_mmimo_sim.m:44
CP_LEN
Number of subcarriers CP_LEN
Definition: rl_ofdm_calib.m:43
rx_vec_iris
rx_vec_iris
Definition: rl_ofdm_mimo.m:198
iris_py.Iris_py.sdr
sdr
Definition: iris_py.py:86
FFT_OFFSET
id FFT_OFFSET()
Definition: siso_ofdm_mf_sim.m:30
n_ue
if n_ue
Definition: getRxVec.m:29
Receiver::completeRecvThreads
void completeRecvThreads(const std::vector< pthread_t > &recv_thread)
Definition: receiver.cc:180
N_OFDM_SYM
Waveform params N_OFDM_SYM
Definition: rl_ofdm_mimo.m:94
Sounder::Scheduler::cl_tx_ptoks_ptr_
std::vector< moodycamel::ProducerToken * > cl_tx_ptoks_ptr_
Definition: scheduler.h:51
client_only
char bool bool client_only
Definition: config.cc:916
ofdmtxrx.ofdmTxRx.qpsk_mod
def qpsk_mod(self, val)
Definition: ofdmtxrx.py:47
chan_type
if SIM_MOD chan_type
Definition: rl_ofdm_siso.m:45
y_label
y_label
Definition: ofdm_mimo.m:253
lts_f
id lts_f()
Definition: iris_py.py:385
ofdmtxrx.ofdmTxRx.sfo_correction
def sfo_correction(self, rxSig_freq_eq, pilot_sc, pilots_matrix, n_ofdm_syms)
Definition: ofdmtxrx.py:291
Sounder::Scheduler::kSchedulerCore
const unsigned int kSchedulerCore
Definition: scheduler.h:55
iue
for iue
Definition: ofdm_mimo.m:265
waveform
Scale for Tx waveform([0:1]) N_BS_NODE
agc_fsm_iris.AutomaticGainControl.disableAGC
def disableAGC(self)
Definition: agc_fsm_iris.py:131
channel_analysis.calCapacity
def calCapacity(userCSI, noise, beamweights, downlink=False)
Definition: channel_analysis.py:71
SOUNDER_TXRX.rx_thread
def rx_thread(sdr, rxStream, numSamps, txSymNum, both_channels)
Definition: SOUNDER_TXRX.py:159
Config::isNoise
bool isNoise(int, int)
Definition: config.cc:880
csi_lib.CSI.sdr_ant
sdr_ant
Definition: csi_lib.py:41
demod_fcn_bpsk
demod_fcn_bpsk
Definition: rl_ofdm_mmimo_sim.m:74
Sounder
Definition: hdf5_lib.cc:20
MOD_ORDER
MOD_ORDER
Definition: mod_demod.m:13
ue_ids
ue_ids
Definition: rl_ofdm_simo.m:54
CN
CN(0, nvar)
rx_data
case QPSK rx_data
Definition: syms2bits.m:51
main
int main()
Definition: test-main.cc:7
AGC_SIM_DEMO.main
def main()
Main #.
Definition: AGC_SIM_DEMO.py:339
tx_syms_mat
Reshape the symbol vector to a matrix with one column per OFDM symbol tx_syms_mat
Definition: ofdm_simo.m:96
MOD_ORDER
Number of OFDM symbols for it needs to be less than MOD_ORDER
Definition: ofdm_mimo.m:58
ofdm_plotter.OFDMplotter.evm
evm
Definition: ofdm_plotter.py:52
Utils::strToChannels
static std::vector< size_t > strToChannels(const std::string &channel)
Definition: utils.cc:29
chained_mode
chained_mode
Definition: getRxVec.m:220
cond_clr
cond_clr
Definition: rl_ofdm_mimo.m:496
payload_rx
payload_rx
Definition: rl_ofdm_calib.m:96
dlyns
constant frequency error in Hz dlyns
Definition: getRxVec.m:59
fdHz
complex gain of each path fdHz
Definition: getRxVec.m:159
agc_fsm_iris.AutomaticGainControl.rssi
rssi
Definition: agc_fsm_iris.py:65
pilot_phase_corr
pilot_phase_corr
Definition: ofdm_mimo.m:333
Config::ul_data_slot_present
bool ul_data_slot_present(void) const
Definition: config.h:41
nbits
Author(s) nbits
Definition: bits2syms.m:17
channel
Equalize with *known * channel
Definition: syms2bits.m:36
iris_health_monitor.test_receiver
def test_receiver(gain_step, freq, uut_sdrs, uut_serials, uut_frontends, golden_sdr, golden_serial, golden_tx_gain, golden_ant, rx_pwr_limit, detailed_logs, en_logging, log_writer)
Definition: iris_health_monitor.py:743
axis
axis(1.5 *[-1 1 -1 1])
Radio::getTriggers
int getTriggers(void) const
Definition: Radio.cc:176
Receiver::loopRecv
void loopRecv(int tid, int core_id, SampleBuffer *rx_buffer)
Definition: receiver.cc:307
sched_id
sched_id
Definition: rl_ofdm_calib.m:78
kDsDimSymbol
static constexpr size_t kDsDimSymbol
Definition: macros.h:16
extract_pilots_data.reps
reps
Definition: extract_pilots_data.py:48
ofdm_plotter.OFDMplotter.ani_update
def ani_update(self, i)
Definition: ofdm_plotter.py:171
iris_py.Iris_py.sdr_settxgain
def sdr_settxgain(self, tx_gain)
Definition: iris_py.py:183
off
hold off
Definition: mod_demod.m:44
tx_ul_data
end Uplink Generate a payload of random integers tx_ul_data
Definition: rl_ofdm_mmimo_sim.m:119
ul_tx_hw_phase
ul_tx_hw_phase
Definition: rl_ofdm_mmimo_sim.m:84
Sounder::Scheduler::rx_buffer_
SampleBuffer * rx_buffer_
Definition: scheduler.h:35
tx_clr
tx_clr
Definition: mod_demod.m:50
SC_IND_DATA
Pilot subcarrier indices SC_IND_DATA
Definition: rl_ofdm_siso.m:88
tdd_tx_payload_mat
Do Insert the cyclic prefix if(CP_LEN > 0) % Do yourselves tdd_tx_payload_mat
Definition: rl_ofdm_siso.m:140
lts_f_mat
Take Construct known pilot matrix to use i next N_BS_NODE *N_UE lts_f_mat
Definition: rl_ofdm_mimo.m:330
hlegs
end hlegs
Definition: mod_demod.m:65
rx_syms
rx_syms
Definition: syms2bits.m:33
Event_data::slot_id
int slot_id
Definition: macros.h:66
signalHandler.hpp
values
Insert the data and pilot values
Definition: siso_ofdm_mf_sim.m:97
N_UE
N_UE
Definition: ofdm_siso.m:49
iris_py_single_frame.Iris_py.rx_stream
rx_stream
Definition: iris_py_single_frame.py:251
agc_fsm_iris.AutomaticGainControl.states
list states
Definition: agc_fsm_iris.py:31
ber_SIM
end ber_SIM
Definition: ofdm_siso.m:43
hdf5_lib.hdf5_lib.uplink_samples
uplink_samples
Definition: hdf5_lib.py:281
agc_fsm_iris.AutomaticGainControl.enableAGC
def enableAGC(self)
Definition: agc_fsm_iris.py:127
matplotlibcpp::text
void text(Numeric x, Numeric y, const std::string &s="")
Definition: matplotlibcpp.h:1175
Config::num_cl_antennas
size_t num_cl_antennas(void) const
Definition: config.h:74
ofdm_plotter.OFDMplotter.data_syms
data_syms
Definition: ofdm_plotter.py:45
xlabel
xlabel('Samples')
Sounder::Scheduler_start
void Scheduler_start(Scheduler *rec)
Definition: scheduler.cc:315
Event_data::buffer
SampleBuffer * buffer
Definition: macros.h:70
nc
Convert scalar parameters to vectors nc
Definition: getRxVec.m:90
N_DATA_SYMS
Cyclic prefix length N_DATA_SYMS
Definition: rl_ofdm_simo.m:92
v1
v1
Definition: iris_py.m:257
sp
end if DEBUG for sp
Definition: rl_ofdm_mimo.m:296
N_ZPAD_PRE
Number of samples that will go over the air N_ZPAD_PRE
Definition: rl_ofdm_simo.m:95
iris_py.Iris_py.tdd_sched
tdd_sched
Definition: iris_py.py:191
ofdm_plotter.OFDMplotter.ofdm_syms
ofdm_syms
Definition: ofdm_plotter.py:36
Receiver::ReceiverContext::core_id
size_t core_id
Definition: receiver.h:47
CN
CN(0, nvar)
lts_f
Enable Residual CFO estimation correction Define the preamble LTS for fine CFO and channel estimation lts_f
Definition: ofdm_siso.m:85
N_BS_NODE
All BS Ref Schedule N_BS_NODE
Definition: rl_ofdm_calib.m:76
axis
axis([0 length(rx_vec_air) -TX_SCALE TX_SCALE]) grid on
a
read data process received reciprocity pilots a
Definition: rl_ofdm_calib.m:130
iris_py.Iris_py.set_corr
def set_corr(self)
Definition: iris_py.py:167
function
end Read n_frame x n_samp data function[data, len]
Definition: iris_py.m:186
hdf5_lib.hdf5_lib.open_hdf5
def open_hdf5(self)
Definition: hdf5_lib.py:291
x1
Upsample x1
Definition: getRxVec.m:171
sim_SNR_db
sim_SNR_db
Definition: rl_ofdm_siso.m:47
N_SC
N_SC
Definition: rl_ofdm_simo.m:90
ofdm_plotter.OFDMplotter.snr2
snr2
Definition: ofdm_plotter.py:67
Sounder::RecorderThread::~RecorderThread
~RecorderThread()
Definition: recorder_thread.cc:32
hdf5_lib.hdf5_lib.get_data
def get_data(self)
Definition: hdf5_lib.py:305
tx_ul_syms_mat
end Reshape the symbol vector to a matrix with one column per OFDM symbol tx_ul_syms_mat
Definition: rl_ofdm_mmimo_sim.m:137
sdrrxsetup
synchronize delays only for BS node_ue sdrrxsetup()
TX_SCALE
TX_SCALE
Definition: rl_ofdm_siso.m:50
mod_fcn_64qam
mod_fcn_64qam
Definition: rl_ofdm_mmimo_sim.m:72
Receiver::txFrameDelta
size_t txFrameDelta
Definition: receiver.h:103
clf
clf
Definition: rl_ofdm_mimo.m:412
iris_health_monitor.process_tx_log
def process_tx_log(log_name_tx)
Definition: iris_health_monitor.py:365
tx_syms_mat
end Reshape the symbol vector to a matrix with one column per OFDM symbol tx_syms_mat
Definition: siso_ofdm_mf_sim.m:84
tx_syms
function tx_syms
Definition: mod_sym.m:1
off
hold off
Definition: bits2syms.m:71
ofdm_plotter.OFDMplotter.postfix_len
postfix_len
Definition: ofdm_plotter.py:50
data_recorder.DataRecorder.tia
tia
Definition: data_recorder.py:28
data
end data
Definition: iris_py.m:229
agc_fsm_iris.AutomaticGainControl.machine
machine
Definition: agc_fsm_iris.py:70
peakdet.peakdet
def peakdet(v, delta, x=None)
Definition: peakdet.py:16
digital_rssi.main
def main()
Definition: digital_rssi.py:69
Config::getNoiseSlotIndex
int getNoiseSlotIndex(int, int)
Definition: config.cc:845
arrayfun
mod_fcn_16qam, tx_data arrayfun()
condNum
condNum
Definition: rl_ofdm_mimo.m:340
N_OFDM_SYM
Waveform params N_OFDM_SYM
Definition: rl_ofdm_siso.m:83
symbols
Estimate the channel by averaging over the two LTS symbols
Definition: rl_ofdm_mimo.m:336
csi_lib.CSI
Definition: csi_lib.py:25
Author
Author(s)[version, executable, isloaded]
Definition: rl_ofdm_calib.m:16
RX_FRQ
RX_FRQ
Definition: ofdm_siso.m:51
Sounder::Scheduler::rx_thread_buff_size_
size_t rx_thread_buff_size_
Definition: scheduler.h:36
data_recorder.DataRecorder.frame_number
frame_number
Definition: data_recorder.py:24
Note
time domain Init Iris nodes Set up the Iris experiment Create BS Hub and UE objects Note
Definition: rl_ofdm_calib.m:68
csi_lib.CalibCSI.debug_enabled
debug_enabled
Definition: csi_lib.py:230
SIM_MOD
Channel to tune Tx and Rx radios SIM_MOD
Definition: ofdm_mimo.m:26
TX_SCALE
TX_SCALE
Definition: rl_ofdm_simo.m:50
Sounder::RecorderThread::thread_
std::thread thread_
Definition: recorder_thread.h:48
agc_fsm_iris.AutomaticGainControl.numSatSamps
int numSatSamps
Definition: agc_fsm_iris.py:44
agc_fsm_iris.AutomaticGainControl.satDetGoodFlag
bool satDetGoodFlag
Definition: agc_fsm_iris.py:46
MOD_ORDER
Number of OFDM symbols for it needs to be less than MOD_ORDER
Definition: ofdm_siso.m:65
legend
legend('Rx', 'Tx', 'Location', 'EastOutside', 'fontsize', 12)
urx
Spatial signature of each path urx
Definition: getRxVec.m:122
TX_NUM_SAMPS
TX_NUM_SAMPS
Definition: siso_ofdm_mf_sim.m:134
max
abs(tx_vec_iris max()
Sounder::RecorderWorker::datasets
std::vector< std::string > datasets
Definition: recorder_worker.h:33
SignalHandler::setExitSignal
static void setExitSignal(bool _bExitSignal)
Definition: signalHandler.cpp:29
CommsLib::GOLD_IFFT
@ GOLD_IFFT
Definition: comms-lib.h:51
mod_fcn_qpsk
mod_fcn_qpsk
Definition: siso_ofdm_mf_sim.m:64
agc_fsm_iris.AutomaticGainControl.sdr
sdr
Definition: agc_fsm_iris.py:123
Sounder::Scheduler::max_frame_number_
size_t max_frame_number_
Definition: scheduler.h:45
modvec_bpsk
1/sqrt(2 modvec_bpsk()
values
Insert the data and pilot values
Definition: rl_ofdm_siso.m:129
dlypns
AoD in radians dlypns
Definition: getRxVec.m:118
sp
end if DEBUG for sp
Definition: ofdm_mimo.m:248
N_SC
N_SC
Definition: rl_ofdm_mimo.m:102
wrapper.Config.obj
obj
Definition: wrapper.py:10
csi_lib.CalibCSI.__init__
def __init__(self, sdrs, trig_dev, txStream, rxStream, ant, numSamps, pilot)
Definition: csi_lib.py:222
ylabel
ylabel(y_label)
Event_data::event_type
SchedulerEventType event_type
Definition: macros.h:63
a
Correlate for LTS a
Definition: rl_ofdm_simo.m:248
BaseRadioSet::radioRx
void radioRx(void *const *buffs)
Definition: BaseRadioSet.cc:519
Config::gold_cf32
const std::vector< std::complex< float > > & gold_cf32(void) const
Definition: config.h:209
iris_py.lts_f
lts_f
Definition: iris_py.py:385
hvar
hvar
Definition: getRxVec.m:28
Config::single_gain
bool single_gain(void) const
Definition: config.h:58
xlabel
xlabel('Samples')
nty
idlyMax expressed in units of ts1 nty
Definition: getRxVec.m:169
rx_H_est0
rx_H_est0
Definition: siso_ofdm_mf_sim.m:185
SISO_OFDM.init
def init()
Functions #.
Definition: SISO_OFDM.py:173
ofdm_plotter.OFDMplotter.__init__
def __init__(self, num_cl)
Definition: ofdm_plotter.py:27
deployment_tool.plotter_per_dataset
def plotter_per_dataset(samps, default_frame, ant_i, user_i, offset, pilot_frames, match_filt_clr, hdf5, frame_map, seq_found, corr_total, snr)
Definition: deployment_tool.py:385
sim_SNR_db
sim_SNR_db
Definition: ofdm_siso.m:32
Config::internal_measurement
bool internal_measurement(void) const
Definition: config.h:117
csi_lib.CalibCSI.num_sdrs
num_sdrs
Definition: csi_lib.py:231
kUseUHD
static constexpr bool kUseUHD
Definition: macros.h:10
b_prim_sched
b_prim_sched
Definition: ofdm_siso.m:152
lts_f
Enable Residual CFO estimation correction Define the preamble LTS for fine CFO and channel estimation lts_f
Definition: ofdm_simo.m:86
n_sdrs
ue_sdr_params n_sdrs
Definition: rl_ofdm_mimo.m:195
step
Take Construct known pilot matrix to use i next step
Definition: rl_ofdm_mimo.m:327
agc_fsm_iris.AutomaticGainControl.printState
def printState(self)
Definition: agc_fsm_iris.py:297
N_SC_ZERO
Indices of subcarriers with no data N_SC_ZERO
Definition: rl_ofdm_mmimo_sim.m:32
Sounder::RecorderWorker::finalize
void finalize(void)
Definition: recorder_worker.cc:277
calib_mat
end BS Calibration calib_mat
Definition: rl_ofdm_mmimo_sim.m:95
values
Insert the data and pilot values
Definition: rl_ofdm_simo.m:127
N_BS_NODE
N_BS_NODE
Definition: rl_ofdm_mimo.m:83
AGC_SIM_DEMO.agc_thread
def agc_thread()
Definition: AGC_SIM_DEMO.py:156
N_BS_NODE
SIMULATION N_BS_NODE
Definition: ofdm_mimo.m:138
channel_condition
channel_condition
Definition: ofdm_mimo.m:299
Radio::activateRecv
int activateRecv(const long long rxTime=0, const size_t numSamps=0, int flags=0)
Definition: Radio.cc:137
pilots
Define the pilot tone values as BPSK symbols pilots
Definition: ofdm_siso.m:100
now
if USE_HUB Using chains of different size requires some internal calibration on the BS This functionality will be added later For now
Definition: rl_ofdm_mimo.m:72
tx_syms_mat
Reshape the symbol vector to a matrix with one column per OFDM symbol tx_syms_mat
Definition: rl_ofdm_simo.m:114
sc
for sc
Definition: rl_ofdm_mimo.m:341
ofdm_plotter.OFDMplotter.metadata
metadata
Definition: ofdm_plotter.py:47
waveform
Scale for Tx waveform([0:1]) % OFDM params SC_IND_PILOTS
SIM_MOD
Enable writing plots to PNG SIM_MOD
Definition: rl_ofdm_mimo.m:42
MIMO_ALG
MIMO_ALG
Definition: ofdm_mimo.m:53
Sounder::RecorderWorker::RecorderWorker
RecorderWorker(Config *in_cfg, size_t antenna_offset, size_t num_antennas)
Definition: recorder_worker.cc:18
mod_fcn_64qam
mod_fcn_64qam
Definition: bits2syms.m:37
ofdm_plotter.OFDMplotter.update_frame_corr
def update_frame_corr(self, fig_len_)
Definition: ofdm_plotter.py:373
MOD_ORDER
if MOD_ORDER
Definition: bits2syms.m:62
FindArrays.setupSDR
def setupSDR(sdr)
Definition: FindArrays.py:38
Config::symbol_data_subcarrier_num
size_t symbol_data_subcarrier_num(void) const
Definition: config.h:77
Config::beam_sweep
bool beam_sweep(void) const
Definition: config.h:70
n_sdrs
n_sdrs
Definition: iris_py.m:26
ofdm_plotter.OFDMplotter.rx_H_est_plot
rx_H_est_plot
Definition: ofdm_plotter.py:40
fsampMHz
noise variance per data sample Carrier and sample rate fsampMHz
Definition: getRxVec.m:84
channel_condition_db
channel_condition_db
Definition: ofdm_mimo.m:300
iris_py.Iris_py.config_gain_ctrl
def config_gain_ctrl(self)
Definition: iris_py.py:235
bit_err
bit_err
Definition: mod_demod.m:75
agc_fsm_iris.AutomaticGainControl.enableAGCflag
int enableAGCflag
Definition: agc_fsm_iris.py:38
DEBUG
DEBUG
Definition: ofdm_mimo.m:27
csi_lib.CSI.nSyms
nSyms
Definition: csi_lib.py:57
plot_hdf5.verify_hdf5
def verify_hdf5(hdf5, frame_i=100, cell_i=0, ofdm_sym_i=0, ant_i=0, user_i=0, ul_sf_i=0, subcarrier_i=10, offset=-1, dn_calib_offset=0, up_calib_offset=0, thresh=0.001, deep_inspect=False, corr_thresh=0.00, exclude_bs_nodes=[], demodulate=False)
Definition: plot_hdf5.py:34
angcRx
angle of motion KEEP at Cluster parameters represented as a vector with one component per cluster angcRx
Definition: getRxVec.m:64
clear
Author(s) clear
Definition: mod_demod.m:3
ul_rx_calib
ul_rx_calib
Definition: rl_ofdm_mmimo_sim.m:103
nsnr
nsnr
Definition: ofdm_simo.m:32
fprintf
Theoretical BER fprintf("Channel type: %s \n", chan_type)
iris_py.cp
cp
Definition: iris_py.py:385
hdf5_lib.hdf5_lib.h5file
h5file
Definition: hdf5_lib.py:274
ncfade
end Compute total number of paths ncfade
Definition: getRxVec.m:111
selves
Do your selves
Definition: mod_demod.m:74
ClientRadioSet.h
hdf5_lib.hdf5_lib.samps2csi_large
def samps2csi_large(samps, num_users, samps_per_user=224, offset=47, chunk_size=1000, legacy=False)
Definition: hdf5_lib.py:615
BaseRadioSet::radioStart
void radioStart(void)
Definition: BaseRadioSet.cc:446
iris_py_single_frame.Iris_py.tx_gain_ctrl
def tx_gain_ctrl(self)
Definition: iris_py_single_frame.py:236
Packet::ant_id
uint32_t ant_id
Definition: macros.h:56
ofdm_plotter.OFDMplotter.init_channel_est
def init_channel_est(self)
Definition: ofdm_plotter.py:405
modvec_16qam
modvec_16qam
Definition: rl_ofdm_mmimo_sim.m:66
iris_py.Iris_py.config_sdr_tdd_chained
def config_sdr_tdd_chained(self, tdd_sched=None)
Definition: iris_py.py:216
Radio::~Radio
~Radio(void)
Definition: Radio.cc:112
lts_t
lts_t
Definition: rl_ofdm_simo.m:106
Config::getTotNumAntennas
size_t getTotNumAntennas()
Definition: config.cc:807
Config
Definition: config.h:20
tx_vec_pow_avg
tx_vec_pow_avg
Definition: siso_ofdm_mf_sim.m:120
evm_mat
evm_mat
Definition: rl_ofdm_mimo.m:526
Sounder::Scheduler
Definition: scheduler.h:18
Receiver::ReceiverContext::buffer
SampleBuffer * buffer
Definition: receiver.h:46
w
w
Definition: getRxVec.m:192
vector
Maybe you need to transpose bits_matrix before reshaping it to a vector
Definition: syms2bits.m:62
angpTx
AoA in radians angpTx
Definition: getRxVec.m:117
Sounder::Hdf5Lib::setMaxPrimaryDimSize
void setMaxPrimaryDimSize(hsize_t dim_size)
Definition: hdf5_lib.h:44
Config::noise_slot_per_frame
size_t noise_slot_per_frame(void) const
Definition: config.h:83
BEACON_INTERVAL
#define BEACON_INTERVAL
Definition: macros.h:34
iris_py_single_frame.Iris_py.set_corr
def set_corr(self)
Definition: iris_py_single_frame.py:176
data
Real value doesn t matter since we have corrrupt data
Definition: rl_ofdm_mimo.m:282
EdgeColor
bold EdgeColor
Definition: rl_ofdm_mimo.m:555
padding
Leftover from zero padding
Definition: ofdm_siso.m:132
http
function Inc Distributed under the WARP License http
Definition: mod_sym.m:10
DO_RECIPROCAL_CALIBRATION
DO_RECIPROCAL_CALIBRATION
Definition: rl_ofdm_mmimo_sim.m:55
Utils::split
static std::vector< std::string > split(const std::string &s, char delimiter)
Definition: utils.cc:212
AGC_SIM_DEMO.filename
filename
LOGGER #.
Definition: AGC_SIM_DEMO.py:85
hdf5_lib.hdf5_lib.samps2csi
def samps2csi(samps, num_users, samps_per_user=224, fft_size=64, offset=0, bound=94, cp=0, sub=1, legacy=False, pilot_f=[])
Definition: hdf5_lib.py:501
plot_hdf5.main
def main()
Definition: plot_hdf5.py:960
MLPD_TRACE
#define MLPD_TRACE(...)
Definition: logger.h:97
figure
Rx signal figure
Definition: siso_ofdm_mf_sim.m:152
data_recorder.DataRecorder.lna2
lna2
Definition: data_recorder.py:32
csi_lib.CSI.bsdrs
bsdrs
Definition: csi_lib.py:37
http
function Inc Distributed under the WARP License http
Definition: demod_sym.m:10
file_rdwr.write_to_file
def write_to_file(name, arr, num_bits=12)
Definition: file_rdwr.py:15
N_DATA_SYMS
Cyclic prefix length N_DATA_SYMS
Definition: ofdm_mimo.m:67
tx_payload_vec
end Reshape to a vector tx_payload_vec
Definition: ofdm_siso.m:125
hdf5_lib.hdf5_lib.n_frm_st
n_frm_st
Definition: hdf5_lib.py:284
tx_payload_vecs
end Reshape to a vector tx_payload_vecs
Definition: ofdm_mimo.m:125
type_conv.cfloat2uint32
def cfloat2uint32(arr, order='IQ')
Definition: type_conv.py:35
schedule
All BS schedule
Definition: rl_ofdm_calib.m:75
iris_py_single_frame.Iris_py.config_beacon
def config_beacon(self, prefix_len=0)
Definition: iris_py_single_frame.py:259
ofdmtxrx.ofdmTxRx.qpsk_dem
def qpsk_dem(self, iq)
Definition: ofdmtxrx.py:114
demod_fcn_16qam
demod_fcn_16qam
Definition: syms2bits.m:41
syms_eq_pc
Apply the pilot phase correction per symbol syms_eq_pc
Definition: ofdm_mimo.m:336
sample_offset_cal.calibrate
def calibrate(corr_idx_vec, ssdr)
Definition: sample_offset_cal.py:308
DO_APPLY_HW_IMPERFECTION
DO_APPLY_HW_IMPERFECTION
Definition: rl_ofdm_mmimo_sim.m:54
ifft_in_mat
IFFT Construct the IFFT input matrix ifft_in_mat
Definition: ofdm_mimo.m:109
iris_health_monitor.generate_sine
def generate_sine(tx_num_samps, rate, wave_freq, bb_freq, amp)
Definition: iris_health_monitor.py:513
ln_clr
ln_clr
Definition: mod_demod.m:30
chan_type
if chan_type
Definition: getRxVec.m:8
chan_type
if SIM_MOD chan_type
Definition: ofdm_mimo.m:30
agc_fsm_iris.AutomaticGainControl.ch
ch
Definition: agc_fsm_iris.py:124
SignalHandler::mbGotExitSignal
static bool mbGotExitSignal
Definition: signalHandler.hpp:15
N_SC
N_SC
Definition: ofdm_simo.m:71
padding
Leftover from zero padding
Definition: rl_ofdm_siso.m:151
agc_fsm_iris.AutomaticGainControl.maxNumSatAdjust
int maxNumSatAdjust
Definition: agc_fsm_iris.py:49
sprintf
sprintf('wl_ofdm_plots_%s_txIQ', example_mode_string)
N_UE
Number of nodes antennas at the BS N_UE
Definition: rl_ofdm_mimo.m:84
ue_scheds
ue_scheds
Definition: ofdm_siso.m:60
Config::prefix
int prefix(void) const
Definition: config.h:51
recorder_thread.h
title
title('Constellation')
m_filt
m_filt
Definition: siso_ofdm_mf_sim.m:145
values
Insert the data and pilot values
Definition: ofdm_simo.m:109
fprintf
fprintf('Beacon detected at UE %d ? %d \n', ipy, trig_found)
set
set(bh, 'FaceColor', cond_clr)
Config::cp_size
size_t cp_size(void) const
Definition: config.h:76
Config::slot_per_frame
size_t slot_per_frame(void) const
Definition: config.h:36
csi_lib.CSI.pilot
pilot
Definition: csi_lib.py:28
cond_clr
cond_clr
Definition: ofdm_mimo.m:440
iris_py.Iris_py.tx_gain_ctrl
def tx_gain_ctrl(self)
Definition: iris_py.py:272
n_samp
end n_samp
Definition: ofdm_siso.m:162
is_bs
is_bs
Definition: iris_py.m:37
Config::num_bs_antennas_all
size_t num_bs_antennas_all(void) const
Definition: config.h:29
zeros
1, N_ZPAD_POST zeros()
pilots_mat
Repeat the pilots across all OFDM symbols pilots_mat
Definition: rl_ofdm_siso.m:122
Config::getClientId
int getClientId(int, int)
Definition: config.cc:834
square
axis square
Definition: rl_ofdm_mimo.m:477
Config::num_cl_sdrs
size_t num_cl_sdrs(void) const
Definition: config.h:32
agc_fsm_iris.AutomaticGainControl.waitCount
int waitCount
Definition: agc_fsm_iris.py:48
Sounder::Scheduler::cfg_
Config * cfg_
Definition: scheduler.h:33
hub_py.Hub_py.set_trigger
def set_trigger(self)
Definition: hub_py.py:44
Config::samps_per_frame
size_t samps_per_frame(void) const
Definition: config.h:38
mod_fcn_64qam
mod_fcn_64qam
Definition: siso_ofdm_mf_sim.m:66
G_lts
Get the channel by dividing by the pilots G_lts
Definition: rl_ofdm_mimo.m:334
Sounder::Scheduler::kMainDispatchCore
const unsigned int kMainDispatchCore
Definition: scheduler.h:54
Config::bs_present
bool bs_present(void) const
Definition: config.h:26
FontWeight
FontWeight
Definition: siso_ofdm_mf_sim.m:307
awgn
end Create channel if awgn
Definition: berr_perfect.m:34
on
grid on
Definition: mod_demod.m:32
disp
Burn beacon to the BS RAM else disp('Beacon from single TX')
BF
else Do nz_sc(j))' *H_hat(Apply BF
Definition: ofdm_mimo.m:310
agc_fsm_iris.AutomaticGainControl.setSatGain
def setSatGain(self)
Definition: agc_fsm_iris.py:140
matplotlibcpp::subplot
void subplot(long nrows, long ncols, long plot_number)
Definition: matplotlibcpp.h:1438
LICENSE
function Inc Distributed under the WARP License Rice University RENEW OPEN SOURCE LICENSE
Definition: demod_sym.m:16
syms_f_mat
syms_f_mat
Definition: siso_ofdm_mf_sim.m:181
stream
activate reading stream[rx_vec_iris, data0_len]
Definition: rl_ofdm_calib.m:127
pt_pilots_mat
Repeat the pilots across all OFDM symbols pt_pilots_mat
Definition: rl_ofdm_mmimo_sim.m:143
Utils::loadSlots
static std::vector< std::vector< size_t > > loadSlots(const std::vector< std::string > &frames, char sym)
Definition: utils.cc:118
Sounder::RecorderThread::wait_signal_
bool wait_signal_
Definition: recorder_thread.h:63
csi_lib.CalibCSI.setup
def setup(self)
Definition: csi_lib.py:239
RX_FRQ
RX_FRQ
Definition: rl_ofdm_siso.m:65
receiver.h
Config::beacon_ci16
std::vector< std::complex< int16_t > > & beacon_ci16(void)
Definition: config.h:127
zeros
1, N_ZPAD_POST zeros()
N_UPLINK_SYMBOLS
N_BS_ANT N_UE N_UPLINK_SYMBOLS
Definition: rl_ofdm_mmimo_sim.m:49
Sounder::RecorderThread::Finalize
void Finalize()
Definition: recorder_thread.cc:54
ofdmtxrx.ofdmTxRx.generate_data
def generate_data(self, n_ofdm_syms=100, mod_order=4, cp_length=16, datastream=[])
Definition: ofdmtxrx.py:162
payload_noCP
payload_noCP
Definition: rl_ofdm_mimo.m:348
G_lts
Get the channel by dividing by the pilots G_lts
Definition: ofdm_mimo.m:286
Receiver::bs_tx_buffer_
SampleBuffer * bs_tx_buffer_
Definition: receiver.h:98
payload_syms_mat
Apply the pilot phase correction per symbol payload_syms_mat
Definition: siso_ofdm_mf_sim.m:192
Config::rate
double rate(void) const
Definition: config.h:95
SignalHandler::setupSignalHandlers
void setupSignalHandlers()
Definition: signalHandler.cpp:43
tdd_tx_payload_mat
Do Insert the cyclic prefix if(CP_LEN > 0) % Do yourselves tdd_tx_payload_mat
Definition: ofdm_siso.m:121
iris_py_single_frame.Iris_py.tx_stream
tx_stream
Setup channel rates, ports, gains, and filters ###.
Definition: iris_py_single_frame.py:147
csi_lib.CalibCSI.sample_cal
def sample_cal(self, offset, ref_ant, target_offset=0, forward=True)
Definition: csi_lib.py:315
kClient
@ kClient
Definition: macros.h:44
ofdm_plotter.OFDMplotter.prefix_len
prefix_len
Definition: ofdm_plotter.py:49
imagesc
imagesc(1:N_OFDM_SYM,(SC_IND_DATA - N_SC/2), 100 *fftshift(reshape(evm_mat(:, sp), [], N_OFDM_SYM), 1))
BF
else Do nz_sc(j))' *H_hat(Apply BF
Definition: rl_ofdm_mimo.m:366
ofdm_plotter.OFDMplotter.chan_est
chan_est
Definition: ofdm_plotter.py:39
plot_hdf5.show_plot
def show_plot(cmpx_pilots, lts_seq_orig, match_filt, ref_user, ref_ant, ref_frame, frm_st_idx)
Definition: plot_hdf5.py:854
tx_syms
tx_syms
Definition: ofdm_simo.m:94
j
for j
Definition: rl_ofdm_mimo.m:357
Config::cl_txgain_vec
const std::vector< std::vector< double > > & cl_txgain_vec(void) const
Definition: config.h:179
BaseRadioSet::radioTx
void radioTx(const void *const *buffs)
Definition: BaseRadioSet.cc:485
Config::pilot_sc_ind
std::vector< size_t > & pilot_sc_ind(void)
Definition: config.h:198
channel
AWGN channel(1) or fading(0) % random bits mybits
tx_vec_padded
Pad with zeros for transmission tx_vec_padded
Definition: siso_ofdm_mf_sim.m:124
BaseRadioSet
Definition: BaseRadioSet.h:16
matplotlibcpp::save
void save(const std::string &filename)
Definition: matplotlibcpp.h:1632
iris_py_single_frame.Iris_py.set_trigger
def set_trigger(self, trig=False)
Definition: iris_py_single_frame.py:172
rx_data
Demodulate rx_data
Definition: ofdm_mimo.m:347
agc_fsm_iris.AutomaticGainControl.gainTIA
float gainTIA
Definition: agc_fsm_iris.py:56
Utils::loadTDDConfig
static void loadTDDConfig(const std::string &filename, std::string &jconfig)
Definition: utils.cc:196
ylabel
ylabel('Quadrature')
Receiver::ReceiverContext
Definition: receiver.h:44
Config::tx_gain
const std::vector< double > & tx_gain(void) const
Definition: config.h:230
tx_payload_mat
Perform the IFFT tx_payload_mat
Definition: rl_ofdm_mimo.m:153
assert
assert(length(ue_param.id)==n_ue)
Radio::dev_init
void dev_init(Config *_cfg, int ch, double rxgain, double txgain)
Definition: Radio.cc:18
BEACON_SWEEP.signal_handler
def signal_handler(rate, numSyms, signal, frame)
Definition: BEACON_SWEEP.py:158
pream_ind_ibs
pream_ind_ibs
Definition: ofdm_mimo.m:239
tx_payload_mat
Perform the IFFT tx_payload_mat
Definition: ofdm_mimo.m:116
iris_py.cfloat2uint32
def cfloat2uint32(arr, order='IQ')
Definition: iris_py.py:57
sdrsync
node_bs sdrsync()
print_sensor
Definition: print_sensor.py:1
Config::beacon_channel
size_t beacon_channel(void) const
Definition: config.h:71
Config::bs_rx_thread_num
size_t bs_rx_thread_num(void) const
Definition: config.h:214
agc_fsm_iris.AutomaticGainControl.minGain
int minGain
Definition: agc_fsm_iris.py:36
a
id a()
Definition: iris_py.m:254
clf
clf
Definition: siso_ofdm_mf_sim.m:152
berr_th
BER berr_th
Definition: rl_ofdm_simo.m:78
ifft_in_mat
IFFT Construct the IFFT input matrix ifft_in_mat
Definition: rl_ofdm_mimo.m:146
subplot
subplot(2, 1, 1)
iris_py_single_frame.Iris_py.sample_rate
sample_rate
Definition: iris_py_single_frame.py:77
Config::ul_slot_per_frame
size_t ul_slot_per_frame(void) const
Definition: config.h:86
data_recorder.DataRecorder.close
def close(self)
Definition: data_recorder.py:109
channel_analysis.find_bad_nodes
def find_bad_nodes(csi, corr_thresh=0.32, user=0)
Definition: channel_analysis.py:236
node_ue1
initialize BS node_ue1
Definition: getRxVec.m:197
agc_fsm_iris.AutomaticGainControl.numSampsProcess
int numSampsProcess
Definition: agc_fsm_iris.py:39
peak
normalized correlation position of the last peak[~, max_idx]
Definition: rl_ofdm_calib.m:139
Receiver::thread_num_
size_t thread_num_
Definition: receiver.h:88
ofdm_plotter.OFDMplotter.data_syms2
data_syms2
Definition: ofdm_plotter.py:64
TX_FRQ
TX_FRQ
Definition: rl_ofdm_siso.m:64
N_LTS_SYM
Reshape the matix to have each lts pilot in a different N_LTS_SYM
Definition: ofdm_mimo.m:276
data_recorder.DataRecorder.save_frame
def save_frame(self, frame, timestamp)
Definition: data_recorder.py:85
lts_to_plot
lts_to_plot
Definition: siso_ofdm_mf_sim.m:258
Packet::data
short data[]
Definition: macros.h:57
Sounder::RecorderThread::DoRecording
void DoRecording(void)
Definition: recorder_thread.cc:86
hub_id
else hub_id
Definition: rl_ofdm_calib.m:70
SignalHandler::gotExitSignal
static bool gotExitSignal()
Definition: signalHandler.cpp:24
agc_fsm_iris.AutomaticGainControl.fineTuning
def fineTuning(self)
Definition: agc_fsm_iris.py:185
tx_data
end Generate a payload of random integers tx_data
Definition: rl_ofdm_mimo.m:130
Config::data_ind
const std::vector< size_t > & data_ind(void) const
Definition: config.h:172
ofdm_plotter.OFDMplotter.evm_text2
evm_text2
Definition: ofdm_plotter.py:400
mod_fcn_bpsk
mod_fcn_bpsk
Definition: mod_sym.m:22
fadec
gain power in dB the power on each cluster fadec
Definition: getRxVec.m:71
bit_mat
end bits to integer numbers bit_mat
Definition: bits2syms.m:25
MLPD_INFO
#define MLPD_INFO(...)
Definition: logger.h:68
CommsLib::find_beacon_avx
static int find_beacon_avx(const std::vector< std::complex< float >> &iq, const std::vector< std::complex< float >> &seq)
figure
end if DEBUG figure
Definition: ofdm_mimo.m:247
kBS
@ kBS
Definition: macros.h:44
N_SYM_SAMP
Number of N_SYM_SAMP
Definition: ofdm_simo.m:75
CommsLib::abs2_avx
static std::vector< float > abs2_avx(std::vector< std::complex< float >> const &f)
Config::neg_beacon_ci16
std::vector< std::complex< int16_t > > & neg_beacon_ci16(void)
Definition: config.h:130
snr_plot
snr_plot
Definition: ofdm_simo.m:33
Config::pilot_seq
const std::string & pilot_seq(void) const
Definition: config.h:108
modvec_16qam
modvec_16qam
Definition: siso_ofdm_mf_sim.m:60
iris_py.str
str
Definition: iris_py.py:333
generate_sequence.generate_training_seq
def generate_training_seq(preamble_type='lts', seq_length=0, cp=32, upsample=1, reps=10)
Definition: generate_sequence.py:21
sp_rows
else sp_rows
Definition: rl_ofdm_mimo.m:470
square
end axis square
Definition: mod_demod.m:40
matplotlibcpp::xlabel
void xlabel(const std::string &str, const std::map< std::string, std::string > &keywords={})
Definition: matplotlibcpp.h:1508
figure
end Plot constellation if do_plot figure(1) ln_clr
dl_tx_calib
dl_tx_calib
Definition: rl_ofdm_mmimo_sim.m:107
nvar
end Add noise nvar
Definition: syms2bits.m:31
dimension
Reshape the matix to have each lts pilot in a different dimension
Definition: rl_ofdm_mimo.m:324
modvec_16qam
modvec_16qam
Definition: bits2syms.m:31
N_ZPAD_PRE
Number of samples that will go over the air N_ZPAD_PRE
Definition: rl_ofdm_siso.m:94
agc_fsm_iris.AutomaticGainControl.targetRSSI
int targetRSSI
Definition: agc_fsm_iris.py:34
Config::bs_sdr_ch
size_t bs_sdr_ch(void) const
Definition: config.h:98
angspdTx
TX center angle in radians angspdTx
Definition: getRxVec.m:67
Event_data::frame_id
int frame_id
Definition: macros.h:65
lts_peaks
lts_peaks
Definition: rl_ofdm_mimo.m:260
SC_IND_PILOTS
Waveform params OFDM params SC_IND_PILOTS
Definition: rl_ofdm_calib.m:39
on
grid on
Definition: bits2syms.m:59
lts_corr
lts_corr
Definition: rl_ofdm_mimo.m:255
SC_IND_DATA
Pilot subcarrier indices SC_IND_DATA
Definition: rl_ofdm_simo.m:88
N_DATA_SYMS
Cyclic prefix length N_DATA_SYMS
Definition: ofdm_simo.m:73
SISO_TX.main
def main()
Main #.
Definition: SISO_TX.py:207
MAX_FRAME_INC
#define MAX_FRAME_INC
Definition: macros.h:30
Config::bs_hw_framer
bool bs_hw_framer(void) const
Definition: config.h:49
channel_condition_db
channel_condition_db
Definition: rl_ofdm_mimo.m:356
fprintf
otherwise fprintf('Invalid MOD_ORDER(%d)! Must be in[2, 4, 16, 64]\n', MOD_ORDER)
iris_py_single_frame.Iris_py.config_sdr_tdd
def config_sdr_tdd(self, tdd_sched=None, is_bs=True)
Definition: iris_py_single_frame.py:193
bw_span
bw_span
Definition: ofdm_mimo.m:442
Sounder::RecorderWorker::antenna_offset
size_t antenna_offset(void)
Definition: recorder_worker.h:27
TRIGGER_OFFSET_TOL_NS
Maximum number of samples to use for this experiment TRIGGER_OFFSET_TOL_NS
Definition: siso_ofdm_mf_sim.m:39
csi_lib.CSI.ota_trig
ota_trig
Definition: csi_lib.py:33
Sounder::Scheduler::getTraceFileName
std::string getTraceFileName()
Definition: scheduler.h:25
Sounder::Scheduler::KDequeueBulkSize
static const int KDequeueBulkSize
Definition: scheduler.h:31
tx_data
Generate a payload of random integers tx_data
Definition: siso_ofdm_mf_sim.m:55
SISO_OFDM.find_optimal_gain
def find_optimal_gain(sdrTx, sdrRx)
Definition: SISO_OFDM.py:190
cond
pthread_cond_t cond
Definition: receiver.cc:25
powp
delay in us of each path powp
Definition: getRxVec.m:119
values
Insert the data and pilot values
Definition: ofdm_mimo.m:111
iris_health_monitor
Definition: iris_health_monitor.py:1
SMPL_RT
SMPL_RT
Definition: ofdm_siso.m:54
schedule
BS primary node s schedule
Definition: ofdm_mimo.m:152
N_SC
N_SC
Definition: rl_ofdm_calib.m:42
kStreamContinuous
static constexpr size_t kStreamContinuous
Definition: macros.h:13
DO_APPLY_SFO_CORRECTION
Enable CFO estimation correction DO_APPLY_SFO_CORRECTION
Definition: rl_ofdm_mmimo_sim.m:38
extract_pilots_data
Definition: extract_pilots_data.py:1
myAxis
myAxis
Definition: rl_ofdm_mimo.m:455
channel_condition
channel_condition
Definition: rl_ofdm_mimo.m:355
Config::data_mod
const std::string & data_mod(void) const
Definition: config.h:109
iris_py.float
float
Definition: iris_py.py:339
ofdm_plotter.OFDMplotter.init_phase_err
def init_phase_err(self, ofdm_syms_)
Definition: ofdm_plotter.py:302
sdr_txgainctrl
node_ue1 sdr_txgainctrl()
SMPL_RT
SMPL_RT
Definition: rl_ofdm_siso.m:68
subplot
subplot(N_BS_NODE, 2, 2 *sp)
UHD_INIT_TIME_SEC
#define UHD_INIT_TIME_SEC
Definition: macros.h:33
tx_syms
tx_syms
Definition: rl_ofdm_simo.m:112
txgain
ue_sdr_params txgain
Definition: rl_ofdm_mimo.m:196
b_prim_sched
b_prim_sched
Definition: ofdm_simo.m:152
SISO_RX.init
def init()
Functions #.
Definition: SISO_RX.py:196
FFT_OFFSET
id FFT_OFFSET()
Definition: siso_ofdm_mf_sim.m:30
x
sample frequency in MHz x
Definition: getRxVec.m:86
zeros
1, N_ZPAD_POST zeros()
pilot_phase_err
pilot_phase_err
Definition: rl_ofdm_mimo.m:381
N_LTS_SYM
Reshape the matix to have each lts pilot in a different N_LTS_SYM
Definition: rl_ofdm_mimo.m:324
rx_ref_hw_phase
rx_ref_hw_phase
Definition: rl_ofdm_mmimo_sim.m:98
n_samp
end n_samp
Definition: ofdm_simo.m:166
mod_fcn_qpsk
mod_fcn_qpsk
Definition: rl_ofdm_mmimo_sim.m:70
data
Real value doesn t matter since we have corrrupt data
Definition: ofdm_mimo.m:234
ofdm_plotter.OFDMplotter.rx_H_est_plot2
rx_H_est_plot2
Definition: ofdm_plotter.py:59
DO_APPLY_PHASE_ERR_CORRECTION
Enable SFO estimation correction DO_APPLY_PHASE_ERR_CORRECTION
Definition: siso_ofdm_mf_sim.m:34
mod_fcn_qpsk
mod_fcn_qpsk
Definition: berr_perfect.m:14
extract_pilots_data.frame
frame
Definition: extract_pilots_data.py:58
data_recorder.DataRecorder
Definition: data_recorder.py:20
Sounder::Scheduler::readers_
std::vector< Sounder::Hdf5Reader * > readers_
Definition: scheduler.h:44
Sounder::Scheduler::tx_queue_
std::vector< moodycamel::ConcurrentQueue< Event_data > * > tx_queue_
Definition: scheduler.h:48
Z_mat
Z_mat
Definition: rl_ofdm_mmimo_sim.m:102
SampleBuffer
Definition: macros.h:47
CP_LEN
Number of subcarriers CP_LEN
Definition: ofdm_siso.m:71
agc_fsm_iris.AutomaticGainControl.resetSaturation
def resetSaturation(self)
Definition: agc_fsm_iris.py:253
bits_matrix
This is a matrix now bits_matrix
Definition: syms2bits.m:60
ue_ids
ue_ids
Definition: ofdm_siso.m:59
CommsLib::complex_mult_avx
static std::vector< std::complex< float > > complex_mult_avx(std::vector< std::complex< float >> const &f, std::vector< std::complex< float >> const &g, const bool conj)
pilots_mat
Repeat the pilots across all OFDM symbols pilots_mat
Definition: ofdm_siso.m:103
all
Author(s) close all
Definition: rl_ofdm_siso.m:3
if
if(obj.n_chain > 1) sched2
irx
Filter the signal by summing each path Sum shifted and scaled versions of x1 to create the output y for irx
Definition: getRxVec.m:176
csi_lib.CSI.trigger_counts
trigger_counts
Definition: csi_lib.py:51
suubcarrier
Apply ZF by multiplying the pseudo inverse of H_hat[N_BS_NODE x NUE] for each suubcarrier
Definition: rl_ofdm_mimo.m:353
a
Correlate for LTS a
Definition: ofdm_simo.m:198
waveform
Scale for Tx waveform([0:1]) % OFDM params SC_IND_PILOTS
MyFuncAnimation.MyFuncAnimation._blit_clear
def _blit_clear(self, artists, bg_cache)
Definition: MyFuncAnimation.py:10
Receiver::config_
Config * config_
Definition: receiver.h:84
data_recorder.DataRecorder.filename
filename
Definition: data_recorder.py:47
DO_APPLY_CFO_CORRECTION
Normalized threshold for LTS correlation DO_APPLY_CFO_CORRECTION
Definition: rl_ofdm_mmimo_sim.m:37
ClientRadioSet::radioStop
void radioStop(void)
Definition: ClientRadioSet.cc:303
data_recorder.DataRecorder.numSamps
numSamps
Definition: data_recorder.py:25
Sounder::RecorderWorker::~RecorderWorker
~RecorderWorker()
Definition: recorder_worker.cc:32
objects
just to agree with what the hardware spits out else Init Iris nodes Set up the Iris experiment Create two Iris node objects
Definition: ofdm_siso.m:149
h
h
Definition: ofdm_mimo.m:491
ofdm_plotter.OFDMplotter.gs
gs
Definition: ofdm_plotter.py:74
iris_py.Iris_py.agc_en
agc_en
Definition: iris_py.py:97
ofdm_plotter.OFDMplotter.tx_data
tx_data
Definition: ofdm_plotter.py:37
ofdmtxrx.ofdmTxRx.bpsk_mod
def bpsk_mod(self, val)
Definition: ofdmtxrx.py:29
rho_max
Take the N_UE largest values rho_max
Definition: ofdm_mimo.m:223
omgiTx
omgiTx
Definition: getRxVec.m:150
Sounder::RecorderThread::Stop
void Stop(void)
Definition: recorder_thread.cc:48
preamble
time domain preamble
Definition: rl_ofdm_siso.m:108
data_recorder.DataRecorder.attn
attn
Definition: data_recorder.py:33
ofdm_plotter.OFDMplotter.update_rx_signal_fig
def update_rx_signal_fig(self, fig_len_)
Definition: ofdm_plotter.py:295
max
abs(tx_vec_iris max()
ofdm_plotter.OFDMplotter.frameIdx
frameIdx
Definition: ofdm_plotter.py:69
kTaskRead
@ kTaskRead
Definition: macros.h:40
sgtitle
end sgtitle('LTS correlations accross antennas') end %% Rx processing % Construct a matrix from the received pilots n_plt_samp
Sounder::Hdf5Lib
Definition: hdf5_lib.h:22
Event_data::offset
int offset
Definition: macros.h:69
max
abs(tx_vec_iris max()
Sounder::RecorderWorker::hdf5_
Hdf5Lib * hdf5_
Definition: recorder_worker.h:32
plot
plot(lts_corr(sp,:))
Config::core_alloc
size_t core_alloc(void) const
Definition: config.h:33
plot
plot(real(rx_vec_air), 'b')
Config::bs_sdr_ids
const std::vector< std::vector< std::string > > & bs_sdr_ids(void) const
Definition: config.h:206
unos
unos
Definition: iris_py.m:253
fft_power.fft_power
def fft_power(samples, samp_rate, num_bins=None, peak=1.0, scaling='density', peak_thresh=10)
Definition: fft_power.py:38
agc_fsm_iris.AutomaticGainControl.is_notFinalStage
def is_notFinalStage(self)
Definition: agc_fsm_iris.py:279
hub_py.Hub_py
Hub Class: #######.
Definition: hub_py.py:26
ClientRadioSet
Definition: ClientRadioSet.h:12
EdgeColor
bold EdgeColor
Definition: siso_ofdm_mf_sim.m:309
data_recorder.DataRecorder.h5group
h5group
Definition: data_recorder.py:76
pin_to_core
int pin_to_core(int core_id)
Definition: utils.cc:13
demod_fcn_qpsk
demod_fcn_qpsk
Definition: demod_sym.m:17
if
Insert the cyclic prefix if(CP_LEN > 0) tx_cp
yourselves
else Do yourselves
Definition: rl_ofdm_mimo.m:366
ul_rx_calib_fft
ul_rx_calib_fft
Definition: rl_ofdm_mmimo_sim.m:104
data_recorder.DataRecorder.stop
def stop(self)
Definition: data_recorder.py:101
tx_payload_vec
end Reshape to a vector tx_payload_vec
Definition: rl_ofdm_siso.m:144
Receiver::loopRecv_launch
static void * loopRecv_launch(void *in_context)
Definition: receiver.cc:296
TRIGGER_OFFSET_TOL_NS
TRIGGER_OFFSET_TOL_NS
Definition: rl_ofdm_mmimo_sim.m:42
n_samp
UE schedule n_samp
Definition: rl_ofdm_simo.m:215
pilots
Define the pilot tone values as BPSK symbols pilots
Definition: ofdm_simo.m:99
cf
Plot Tx constellation cf
Definition: mod_demod.m:27
SignalException
Definition: signalHandler.hpp:8
modvec_bpsk
1/sqrt(2 modvec_bpsk()
H_ul
noise variance per data sample H_ul
Definition: getRxVec.m:13
matplotlibcpp::axis
void axis(const std::string &axisstr)
Definition: matplotlibcpp.h:1495
iris_py_single_frame.Iris_py.sdr
sdr
Definition: iris_py_single_frame.py:73
hdf5_lib.hdf5_lib.sub_sample
sub_sample
Definition: hdf5_lib.py:286
sdr_txbeacon
end node_bs sdr_txbeacon(N_ZPAD_PRE)
Config::getNumRecordedSdrs
size_t getNumRecordedSdrs()
Definition: config.cc:817
N_BS
N_BS
Definition: rl_ofdm_calib.m:82
Receiver::Receiver
Receiver(Config *config, moodycamel::ConcurrentQueue< Event_data > *in_queue, std::vector< moodycamel::ConcurrentQueue< Event_data > * > tx_queue, std::vector< moodycamel::ProducerToken * > tx_ptoks, std::vector< moodycamel::ConcurrentQueue< Event_data > * > cl_tx_queue, std::vector< moodycamel::ProducerToken * > cl_tx_ptoks)
Definition: receiver.cc:27
CP_LEN
Number of subcarriers CP_LEN
Definition: rl_ofdm_mmimo_sim.m:28
b_ids
b_ids
Definition: ofdm_siso.m:57
line
line([-1.5, 1.5], [0 0], 'LineStyle', '-', 'Color', ln_clr, 'LineWidth', 1)
iris_health_monitor.print_header
def print_header(en_logging, log_writer)
Definition: iris_health_monitor.py:539
title
title(sprintf('BS antenna %d Rx Waveform(I)', sp))
lts_f
LTS for CFO and channel estimation lts_f
Definition: rl_ofdm_mmimo_sim.m:58
Note
just to agree with what the hardware spits out else Init Iris nodes Set up the Iris experiment Create BS Hub and UE objects Note
Definition: rl_ofdm_simo.m:196
csi_lib.CSI.num_bsdrs
num_bsdrs
Definition: csi_lib.py:43
Utils::loadDevices
static void loadDevices(const std::string &filename, std::vector< std::string > &data)
Definition: utils.cc:134
DO_APPLY_PHASE_ERR_CORRECTION
end DO_APPLY_PHASE_ERR_CORRECTION
Definition: ofdm_mimo.m:319
csi_lib.CSI.beacon
beacon
Definition: csi_lib.py:29
AGC_SIM_DEMO.num_samps
int num_samps
Definition: AGC_SIM_DEMO.py:72
ofdm_plotter.OFDMplotter.pilot_len
pilot_len
Definition: ofdm_plotter.py:34
TX_SCALE
TX_SCALE
Definition: ofdm_simo.m:34
N_SC
Data subcarrier indices N_SC
Definition: ofdm_siso.m:70
digital_rssi.getDigitalRSSI
def getDigitalRSSI(sdr, agc_avg)
Definition: digital_rssi.py:44
padding
Leftover from zero padding
Definition: ofdm_simo.m:131
tx_data
end Generate a payload of random integers tx_data
Definition: ofdm_mimo.m:93
Config::frame_mode
const std::string & frame_mode(void) const
Definition: config.h:103
error
otherwise error('Invalid MOD_ORDER(%d)! Must be in[2, 4, 16, 64]\n', MOD_ORDER)
Radio::rxs
SoapySDR::Stream * rxs
Definition: Radio.h:15
N_ZPAD_PRE
Number of samples that will go over the air N_ZPAD_PRE
Definition: ofdm_simo.m:76
Sounder::Scheduler_getRecordedFrameNum
int Scheduler_getRecordedFrameNum(Scheduler *rec)
Definition: scheduler.cc:316
Y_data
Take FFT Y_data
Definition: rl_ofdm_mimo.m:350
Sounder::RecorderThread::Start
void Start(void)
Definition: recorder_thread.cc:36
TX_SCALE
TX_SCALE
Definition: rl_ofdm_mimo.m:48
N_ZPAD_PRE
Number of samples that will go over the air N_ZPAD_PRE
Definition: rl_ofdm_mimo.m:107
rx_vec_iris
rx_vec_iris
Definition: ofdm_mimo.m:139
FFT_OFFSET
Rx processing params FFT_OFFSET
Definition: siso_ofdm_mf_sim.m:30
Config::client_present
bool client_present(void) const
Definition: config.h:27
csi_lib.CalibCSI.num_ants
num_ants
Definition: csi_lib.py:232
n_samp
end number of samples in a frame n_samp
Definition: ofdm_mimo.m:168
iris_health_monitor.print_results
def print_results(pf, uut_serial, fft_pwr_db_1, fft_pwr_db_2, noise_floor_1, noise_floor_2, uut_ch, uut_gain, uut_gain_lo, uut_gain_hi, golden_serial, golden_ant, golden_gain, rx_pwr_limit, lms7_temp, zynq_temp, pwr_dbfs, rx_start, rx_stop, en_logging, log_writer)
Definition: iris_health_monitor.py:546
ofdm_plotter.OFDMplotter.update_corr_peaks
def update_corr_peaks(self, pilot_len_)
Definition: ofdm_plotter.py:344
mod_fcn_bpsk
mod_fcn_bpsk
Definition: siso_ofdm_mf_sim.m:63
Receiver::base_radio_set_
BaseRadioSet * base_radio_set_
Definition: receiver.h:86
DEFINE_string
DEFINE_string(conf, "files/conf.json", "JSON configuration file name")
N_OFDM_SYM
Waveform params N_OFDM_SYM
Definition: rl_ofdm_simo.m:83
Sounder::Hdf5Reader
Definition: hdf5_reader.h:21
ofdm_plotter.OFDMplotter.corr
corr
Definition: ofdm_plotter.py:44
Config::trace_file
const std::string & trace_file(void) const
Definition: config.h:105
Sounder::Hdf5Lib::closeFile
void closeFile()
Definition: hdf5_lib.cc:35
iris_py.Iris_py.config_sdr_tdd
def config_sdr_tdd(self, is_bs=True, tdd_sched="G", prefix_len=0, max_frames=1)
Definition: iris_py.py:187
h
h
Definition: syms2bits.m:24
iris_py_single_frame.Iris_py.tdd_sched
tdd_sched
Definition: iris_py_single_frame.py:185
iris_py_single_frame.Iris_py.burn_beacon
def burn_beacon(self, prefix_len=82)
Definition: iris_py_single_frame.py:269
csi_lib.CSI.clRxSamps
clRxSamps
Definition: csi_lib.py:50
y_label
y_label
Definition: rl_ofdm_mimo.m:301
EastOutside
EastOutside
Definition: siso_ofdm_mf_sim.m:284
Utils::loadData
static void loadData(const char *filename, std::vector< std::complex< int16_t >> &data, int samples)
Definition: utils.cc:171
Y_data
Take FFT Y_data
Definition: ofdm_mimo.m:294
dl_tx_hw_phase
dl_tx_hw_phase
Definition: rl_ofdm_mmimo_sim.m:82
max
abs(tx_vec_air max()
csi_lib.CalibCSI.sdrs
sdrs
Definition: csi_lib.py:226
find_lts.find_lts
def find_lts(iq, thresh=0.8, us=1, cp=32, flip=False, lts_seq=[])
Definition: find_lts.py:60
iris_py.Iris_py.tx_stream
tx_stream
Setup channel rates, ports, gains, and filters ###.
Definition: iris_py.py:144
ue_sched
BS schedule ue_sched
Definition: rl_ofdm_simo.m:213
symbols
Number of data symbols(one per data-bearing subcarrier per OFDM symbol) N_LTS_SYM
Config::cl_frames
const std::vector< std::string > & cl_frames(void) const
Definition: config.h:144
Sounder::Scheduler::gc
void gc(void)
Definition: scheduler.cc:109
CP_LEN
Number of subcarriers CP_LEN
Definition: siso_ofdm_mf_sim.m:25
SISO_RX.replay
def replay(name, leng)
Definition: SISO_RX.py:404
iris_py.Iris_py.recv_stream_tdd
def recv_stream_tdd(self)
Definition: iris_py.py:282
params
Iris params
Definition: rl_ofdm_simo.m:64
Sounder::RecorderWorker::antenna_offset_
size_t antenna_offset_
Definition: recorder_worker.h:37
angMotion
constant delay in ns angMotion
Definition: getRxVec.m:60
Config::getDlSlotIndex
int getDlSlotIndex(int, int)
Definition: config.cc:864
Receiver::tx_ptoks_
std::vector< moodycamel::ProducerToken * > tx_ptoks_
Definition: receiver.h:92
iris_py.Iris_py.n_samp
n_samp
Definition: iris_py.py:95
iris_health_monitor.prepare_irises
def prepare_irises(uut_serials, golden_serial, rm_from_uut_serials)
Definition: iris_health_monitor.py:209
N_ZPAD_PRE
Number of samples that will go over the air N_ZPAD_PRE
Definition: rl_ofdm_calib.m:45
Utils::cfloat_to_cint16
static std::vector< std::complex< int16_t > > cfloat_to_cint16(const std::vector< std::complex< float >> &in)
Definition: utils.cc:48
SIM_MOD
if ~isloaded pyversion usr bin python py print() %weird bug where py isn 't loaded in an external script end % Params Enable writing plots to PNG SIM_MOD
Definition: rl_ofdm_siso.m:41
iu
for iu
Definition: ofdm_simo.m:162
prefix
Remove the cyclic prefix
Definition: siso_ofdm_mf_sim.m:175
matplotlibcpp::internal::imshow
void imshow(void *ptr, const NPY_TYPES type, const int rows, const int columns, const int colors, const std::map< std::string, std::string > &keywords)
Definition: matplotlibcpp.h:643
syms
Map the data values on to complex symbols switch MOD_ORDER case BPSK syms
Definition: bits2syms.m:42
kTaskRecord
@ kTaskRecord
Definition: macros.h:39
data_recorder.DataRecorder.pga
pga
Definition: data_recorder.py:29
tx_syms_mat
Reshape the symbol vector to a matrix with one column per OFDM symbol tx_syms_mat
Definition: ofdm_siso.m:97
Receiver::clientTxData
int clientTxData(int tid, int frame_id, long long base_time)
Definition: receiver.cc:714
iris_py_single_frame.Iris_py.n_zpad_samp
n_zpad_samp
Definition: iris_py_single_frame.py:83
iris_py.Iris_py.burn_data
def burn_data(self, data_r, data_i=None, replay_addr=0)
Definition: iris_py.py:268
ofdm_plotter.OFDMplotter.slot_size
slot_size
Definition: ofdm_plotter.py:48
FFT
Number of CP samples to use in FFT(on average) LTS_CORR_THRESH=0.8
isnr
for isnr
Definition: ofdm_simo.m:135
modvec_64qam
modvec_64qam
Definition: berr_perfect.m:11
tx_syms
Map the data values on to complex symbols switch MOD_ORDER case BPSK tx_syms
Definition: berr_perfect.m:21
generate_sequence.read_precomp_code
def read_precomp_code(N, index=0)
Definition: generate_sequence.py:260
channel_analysis.calCorr
def calCorr(userCSI, corr_vec)
Definition: channel_analysis.py:325
FFT
Number of CP samples to use in FFT(on average) LTS_CORR_THRESH=0.8
axis
axis([0 length(tx_vecs_iris(:, sp)) -TX_SCALE TX_SCALE]) grid on
ue_sched
ue_sched
Definition: rl_ofdm_siso.m:79
ofdmtxrx.ofdmTxRx.phase_correction
def phase_correction(self, rxSig_freq_eq, pilot_sc, pilots_matrix)
Definition: ofdmtxrx.py:325
order
Modulation order(2/4/16/64=BSPK/QPSK/16-QAM/64-QAM) TX_SCALE
set_config
node_bs set_config(chained_mode, 1)
MOD_ORDER
Number of OFDM symbols MOD_ORDER
Definition: rl_ofdm_mmimo_sim.m:21
SISO_RX.animate
def animate(i, num_samps, recorder, agc_en, wait_trigger, info)
Definition: SISO_RX.py:274
Sounder::Hdf5Lib::writeDataset
herr_t writeDataset(std::string dataset_name, std::array< hsize_t, kDsDimsNum > target_id, std::array< hsize_t, kDsDimsNum > wrt_dim, short *wrt_data)
Definition: hdf5_lib.cc:177
lts_f
Enable Residual CFO estimation correction Define the preamble LTS for fine CFO and channel estimation lts_f
Definition: rl_ofdm_simo.m:104
Radio::drain_buffers
void drain_buffers(std::vector< void * > buffs, int symSamp)
Definition: Radio.cc:76
ylabel
ylabel(y_label)
detect_peaks.detect_peaks
def detect_peaks(x, mph=None, mpd=1, threshold=0, edge='rising', kpsh=False, valley=False, show=False, ax=None)
Definition: detect_peaks.py:20
digital_rssi.setUpDigitalRssiMode
def setUpDigitalRssiMode(sdr)
Definition: digital_rssi.py:17
EdgeColor
bold EdgeColor
Definition: ofdm_mimo.m:495
max_idx
position of the last peak max_idx
Definition: rl_ofdm_mimo.m:276
a
id a()
Definition: iris_py.m:254
wrapper.Sounder.__init__
def __init__(self, configfile)
Definition: wrapper.py:13
iris_health_monitor.test_transmitter
def test_transmitter(gain_step, freq, uut_sdrs, uut_serials, uut_frontends, golden_sdr, golden_serial, golden_rx_gain, golden_ant, rx_pwr_limit, detailed_logs, en_logging, log_writer)
Definition: iris_health_monitor.py:812
tdd_sched
ue_sdr_params tdd_sched
Definition: rl_ofdm_simo.m:235
Receiver::ReceiverContext::ptr
Receiver * ptr
Definition: receiver.h:45
tx_data
Generate a payload of random integers tx_data
Definition: ofdm_simo.m:92
rx_lts_mat
rx_lts_mat
Definition: ofdm_mimo.m:209
angspdRx
RX center angle in radians angspdRx
Definition: getRxVec.m:65
N_SYM_SAMP
Cyclic prefix length N_SYM_SAMP
Definition: rl_ofdm_calib.m:44
ofdm_plotter.OFDMplotter.num_sc
num_sc
Definition: ofdm_plotter.py:35
n_sdrs
ue_sdr_params n_sdrs
Definition: rl_ofdm_simo.m:175
ofdm_plotter.OFDMplotter.num_cl
num_cl
Definition: ofdm_plotter.py:32
BS
configure the BS
Definition: getRxVec.m:214
SISO_TX.print_thread
def print_thread(sdr, info)
Functions #.
Definition: SISO_TX.py:62
N_DATA_SYMS
Cyclic prefix length N_DATA_SYMS
Definition: rl_ofdm_mimo.m:104
hdf5_lib.hdf5_lib.log2csi_hdf5
def log2csi_hdf5(self, filename, offset=0)
Definition: hdf5_lib.py:464
ntx
number of input samples ntx
Definition: getRxVec.m:164
data_recorder.DataRecorder.tag
tag
Definition: data_recorder.py:26
wrapper.Sounder.getTraceFileName
def getTraceFileName(self)
Definition: wrapper.py:31
sdrtx_single
end end function sdrtx_single(obj, data, index) obj.py_obj_array
Definition: iris_py.m:181
selves
end Do your selves
Definition: syms2bits.m:59
tx_payload_vec
end Reshape to a vector tx_payload_vec
Definition: ofdm_simo.m:123
iris_health_monitor.comamnd_line
def comamnd_line()
Functions #.
Definition: iris_health_monitor.py:103
Sounder::Scheduler::message_queue_
moodycamel::ConcurrentQueue< Event_data > message_queue_
Definition: scheduler.h:47
dl_rx_hw_phase
dl_rx_hw_phase
Definition: rl_ofdm_mmimo_sim.m:83
iris_py_single_frame.Iris_py.n_samp
n_samp
Definition: iris_py_single_frame.py:79
MIMO_ALG
MIMO_ALG
Definition: rl_ofdm_mimo.m:90
CP_LEN
Number of subcarriers CP_LEN
Definition: rl_ofdm_simo.m:91
AGC_SIM_DEMO.rxsamples_app
def rxsamples_app(args, srl, freq, bw, rxgain, clockRate, out)
Definition: AGC_SIM_DEMO.py:274
pin_thread_to_core
int pin_thread_to_core(int core_id, pthread_t &thread_to_pin)
Definition: utils.cc:18
snr_mat
snr_mat
Definition: rl_ofdm_mimo.m:528
if
Insert the cyclic prefix if(CP_LEN > 0) tx_cp
preamble
preamble
Definition: ofdm_mimo.m:87
N_BS_NODE
N_BS_NODE
Definition: rl_ofdm_simo.m:209
Receiver::cl_tx_queue_
std::vector< moodycamel::ConcurrentQueue< Event_data > * > cl_tx_queue_
Definition: receiver.h:93
ofdm_plotter.OFDMplotter.init_corr_peaks
def init_corr_peaks(self, pilot_len_)
Definition: ofdm_plotter.py:320
preamble
time domain preamble
Definition: ofdm_siso.m:89
hdf5_lib.hdf5_lib.dirpath
dirpath
Definition: hdf5_lib.py:276
DEFINE_bool
DEFINE_bool(gen_data_bits, false, "Generate random bits for uplink/downlink transmissions, otherwise read " "from file!")
matplotlibcpp::ylabel
void ylabel(const std::string &str, const std::map< std::string, std::string > &keywords={})
Definition: matplotlibcpp.h:1529
iris_py.beacon
int beacon
Definition: iris_py.py:38
Sounder::RecorderThread::core_alloc_
int core_alloc_
Definition: recorder_thread.h:55
hub_py.Hub_py.sdr
sdr
Definition: hub_py.py:34