RENEWLab  1.1.0
RENEW project
SOUNDER_TXRX Namespace Reference

Functions

def tx_thread (sdr, rate, txStream, rxStream, waveTx, numSamps, numSyms, txSymNum, startSymbol)
 Functions #. More...
 
def rx_thread (sdr, rxStream, numSamps, txSymNum, both_channels)
 
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)
 
def signal_handler (rate, numSyms, use_trig, signal, frame)
 
def main ()
 Main #. More...
 

Variables

bool running = True
 Global Parameters #. More...
 
bool record = True
 
 bsdr = None
 
 msdr = None
 
 txStreamM = None
 
 rxStreamB = None
 
 rxStreamM = None
 

Detailed Description

SOUNDER_TXRX.py

 Basic channel sounding test:
 It program two Irises in TDD mode (one as a base station node,
 and the other as a UE/client node) to transmit and receive according
 to the following schedule/frame:

   Node 1 (BS) schedule PGRGGGGGGGGGGGGGGGRG
   Node 2 (UE) schedule GGPGGGGGGGGGGGGGGGTG

 where the BS is required to first send a beacon signal (initial "P").
 This beacon consists of a signal that has been pre-loaded to the
 BS FPGA buffer. Similarly, the conjugate of the beacon signal has
 been pre-loaded to the UE's buffer in order to enable any correlation
 operation on the UE side.

 The BS node is configured for non-recurring triggers,
 i.e., a trigger is used only for starting frame counting.
 On the other hand, the UE will rely on an FPGA-based correlator
 to trigger itself and count frames. Given the delay between base station
 and UE (group delay at front-end, and RF path delay) there is a
 mechanism for adjusting the frame time using setHardwareTime
 which sets the start symbol and start count within the
 symbol at the time of a correlator trigger. This frame-time also
 accounts for the time advance between the UE and base station
 node.

 The pilot signal (currently a programmable repition of a WiFi LTS)
 transmitted from the UE to the BS is pre-loaded into the FPGA buffer
 and is transmitted in symbol 3 of each frame ("P" in third slot).

 The symbol "T" shown in the second-to-last slot corresponds to
 a sinusoid signal `streamed` from the host to the UE Iris using a
 separate thread. The UE thus transmits this symbol (configured using
 the txSymNum option) right after sending a pilot.

 The "use_trig" flag, allows for two chained Irises to do the same
 operation described above, except that correlator is not
 needed and both nodes are configured for automatic frame counting
 using a non-recurring trigger.

 TDD operation starts with a trigger and runs perpetually
 until it stopped by the user (Ctrl-c). Received pilots and data are
 stored in binary files and they can be inspected using plt_simp.py
 in the IrisUtils folder

 Example:
   python3 SOUNDER_TXRX.py --bsnode="RF3C000042" --clnode="RF3C000025"

 where bsnode corresponds to a base station node and clnode corresponds
 to a client node.

 OUTPUT:
 The script will generate binary files that can be analyzed using the
 plt_simp.py script in folder PYTHON/IrisUtils/

 IMPORTANT NOTE:
 The client firmware has different features than the base station node
 firmware. Therefore, ONLY bsnode can transmit a beacon whereas ONLY
 cnode can correlate against such beacon. This means it is critical to
 set bsnode to the serial number of a base station node and clnode to the 
 serial number of a client node!

 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.
 Also, currently AGC only supports the CBRS RF frontend. It cannot be used
 with the Iris Dev Board or UHF board

---------------------------------------------------------------------
Copyright (c) 2018-2019, Rice University
RENEW OPEN SOURCE LICENSE: http://renew-wireless.org/license
---------------------------------------------------------------------

Function Documentation

◆ main()

def SOUNDER_TXRX.main ( )

Main #.

Here is the call graph for this function:

◆ rx_thread()

def SOUNDER_TXRX.rx_thread (   sdr,
  rxStream,
  numSamps,
  txSymNum,
  both_channels 
)

◆ signal_handler()

def SOUNDER_TXRX.signal_handler (   rate,
  numSyms,
  use_trig,
  signal,
  frame 
)

◆ siso_sounder()

def SOUNDER_TXRX.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 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ tx_thread()

def SOUNDER_TXRX.tx_thread (   sdr,
  rate,
  txStream,
  rxStream,
  waveTx,
  numSamps,
  numSyms,
  txSymNum,
  startSymbol 
)

Functions #.

Variable Documentation

◆ bsdr

SOUNDER_TXRX.bsdr = None

◆ msdr

SOUNDER_TXRX.msdr = None

◆ record

bool SOUNDER_TXRX.record = True

◆ running

bool SOUNDER_TXRX.running = True

Global Parameters #.

◆ rxStreamB

SOUNDER_TXRX.rxStreamB = None

◆ rxStreamM

SOUNDER_TXRX.rxStreamM = None

◆ txStreamM

SOUNDER_TXRX.txStreamM = None