|
| 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...
|
| |
|
| 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]) |
| |
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
---------------------------------------------------------------------