RENEWLab  1.1.0
RENEW project
SISO_OFDM Namespace Reference

Functions

def init ()
 Functions #. More...
 
def find_optimal_gain (sdrTx, sdrRx)
 
def animate (i, num_samps_rd, rxStream, sdr, sdrTx, ofdm_params, tx_struct, ota, ofdm_obj, agc_en, infoTx)
 
def txrx_app (args, rate, ampl, ant, txgain, rxgain, freq, bbfreq, serialTx, serialRx, ofdm_params, num_samps_rd, ota, ofdm_obj, agc_en)
 
def main ()
 Main #. More...
 

Variables

bool running = True
 Global Parameters #. More...
 
int pkt_count = 0
 
int nextValRX = 0
 
int nextValTX = 0
 
int prevValTX = 0
 
int FIG_LEN = 2**13
 
int APPLY_CFO_CORR = 1
 
int APPLY_SFO_CORR = 1
 
int APPLY_PHASE_CORR = 1
 
 fig = plt.figure(figsize=(10, 20), dpi=120)
 Create Plots #. More...
 
 hspace
 
 top
 
 bottom
 
 gs = gridspec.GridSpec(ncols=4, nrows=5)
 
 ax1 = fig.add_subplot(gs[0, :])
 
 title = ax1.text(0.5, 1, '|', ha="center")
 
 label
 
 animated
 
 fontsize
 
 ax2 = fig.add_subplot(gs[1, :])
 
 ax3 = fig.add_subplot(gs[2, :])
 
 ax4 = fig.add_subplot(gs[3, :])
 
 ax5 = fig.add_subplot(gs[4, 0:2])
 
 ax6 = fig.add_subplot(gs[4, 2:4])
 

Detailed Description

 SISO_OFDM.py

   Generates, transmits, and receives and OFDM signal.
   The user can select one of the following modulation schemes BPSK/QPSK/16QAM/64QAM
   It requires two Iris boards (chained or unchained). The TX board will transmit
   the signal from RF chain A and the RX board will receive it at RF chain A as well
   (script can be extended to support both chains).
   The script can be run in two modes:
       - SIM (simulation using an AWGN channel)
       - OTA (over-the-air transmission)

   Figure "SISO_OFDM_output.png" inside the "figures" folder shows an the output
   generated for a 16-QAM OTA transmission

    NOTE ON GAINS:
    Gain settings will vary depending on RF frontend board being used
    If using CBRS:
rxgain: at 2.5GHz [3:1:105], at 3.6GHz [3:1:102]
txgain: at 2.5GHz [16:1:81], at 3.6GHz [15:1:81]

    If using only Dev Board:
    rxgain: at both frequency bands [0:1:30]
    txgain: at both frequency bands [0:1:42]

    The code assumes both TX and RX have the same type of RF frontend board.

   Usage example: python3 SISO_OFDM.py --mode="SIM"

   Based on the wl_example_siso_ofdm.m script developed for the WARP platform:
   http://warpproject.org/trac/wiki/WARPLab/Examples/OFDM

---------------------------------------------------------------------
 Copyright © 2018-2019. Rice University.
 RENEW OPEN SOURCE LICENSE: http://renew-wireless.org/license
 ---------------------------------------------------------------------

Function Documentation

◆ animate()

def SISO_OFDM.animate (   i,
  num_samps_rd,
  rxStream,
  sdr,
  sdrTx,
  ofdm_params,
  tx_struct,
  ota,
  ofdm_obj,
  agc_en,
  infoTx 
)

◆ find_optimal_gain()

def SISO_OFDM.find_optimal_gain (   sdrTx,
  sdrRx 
)
    Brute force over multiple gain combinations to find best TX/RX gains.
    TODO: Fully automate this by checking symbol error rate rather than visually checking constellation

◆ init()

def SISO_OFDM.init ( )

Functions #.

Initialize plotting objects 

◆ main()

def SISO_OFDM.main ( )

Main #.

Here is the call graph for this function:

◆ txrx_app()

def SISO_OFDM.txrx_app (   args,
  rate,
  ampl,
  ant,
  txgain,
  rxgain,
  freq,
  bbfreq,
  serialTx,
  serialRx,
  ofdm_params,
  num_samps_rd,
  ota,
  ofdm_obj,
  agc_en 
)
Setup transmitter, generate TX signal, and write data into RAM for TX
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ animated

SISO_OFDM.animated

◆ APPLY_CFO_CORR

int SISO_OFDM.APPLY_CFO_CORR = 1

◆ APPLY_PHASE_CORR

int SISO_OFDM.APPLY_PHASE_CORR = 1

◆ APPLY_SFO_CORR

int SISO_OFDM.APPLY_SFO_CORR = 1

◆ ax1

SISO_OFDM.ax1 = fig.add_subplot(gs[0, :])

◆ ax2

SISO_OFDM.ax2 = fig.add_subplot(gs[1, :])

◆ ax3

SISO_OFDM.ax3 = fig.add_subplot(gs[2, :])

◆ ax4

SISO_OFDM.ax4 = fig.add_subplot(gs[3, :])

◆ ax5

SISO_OFDM.ax5 = fig.add_subplot(gs[4, 0:2])

◆ ax6

SISO_OFDM.ax6 = fig.add_subplot(gs[4, 2:4])

◆ bottom

SISO_OFDM.bottom

◆ fig

SISO_OFDM.fig = plt.figure(figsize=(10, 20), dpi=120)

Create Plots #.

◆ FIG_LEN

int SISO_OFDM.FIG_LEN = 2**13

◆ fontsize

SISO_OFDM.fontsize

◆ gs

SISO_OFDM.gs = gridspec.GridSpec(ncols=4, nrows=5)

◆ hspace

SISO_OFDM.hspace

◆ label

SISO_OFDM.label

◆ nextValRX

int SISO_OFDM.nextValRX = 0

◆ nextValTX

int SISO_OFDM.nextValTX = 0

◆ pkt_count

int SISO_OFDM.pkt_count = 0

◆ prevValTX

int SISO_OFDM.prevValTX = 0

◆ running

bool SISO_OFDM.running = True

Global Parameters #.

◆ title

SISO_OFDM.title = ax1.text(0.5, 1, '|', ha="center")

◆ top

SISO_OFDM.top