Agora is a complete software realization of real-time massive MIMO baseband processing.
For the most up-to-date information on the Agora framework, including instruction on how to get started, please refer to the code repository README and the Agora section in our Software Architecture wiki page.
In contrast to RENEWLab, Agora requires more advanced knowledge of the different tools needed to utilize it:
Refer to the powder quick start guide located here
Description: Continuous transmission from
N_UE clients to
N_BS_NODE base station radios using Agora. We define two modes: OTA (Over-the-air) and SIM_MOD (simulation). In simulation mode we simply use a Rayleigh channel whereas the OTA mode relies on the Iris hardware for transmission and reception. In both cases the clients transmit an OFDM signal that resembles a typical 802.11 WLAN waveform. A schedule is specified to tell all clients when to transmit in a frame. In each frame, the base station initiates the schedule by sending a beacon signal that synchronizes clients. After that, all clients will transmit simultaneously. The same schedule is repeated as continuous frames until the maximum frame number is reached. We implement a frame structure that allows the base station to capture clean (non-overlapping) training sequences for equalization and demultiplexing of the concurrent data streams.
First, build Agora:
mkdir build cd build/ cmake .. -DUSE_SPDLOG=True -DENABLE_CSV_LOGGER=True make -j cd ..
./build/data_generator --conf_file path/to/config.json
Now, we are ready to start the Agora clients:
./build/user --conf_file path/to/config.json
After the clients terminal is steady, start the Agora base station in another terminal:
./build/agora --conf_file path/to/config.json
The Agora base station process will record its received uplink statistics into *.csv files (e.g., log-ber-ul-BS.csv and log-evmsnr-ul-BS.csv). When the transmission is finished, we can load the csv files in Matlab (or other software) and plot the data.
The following figures are plotted in Matlab for BER (Bit Error Rate) and EVM SNR (Error-Vector-Magnitude Signal-to-Noise Ratio) collected for 5000 frames on POWDER MEB testbed using the example config file and topology file.
Test 1: using 26 BS radios and 4 UE radios, hard demodulation without error-correction coding. Overall uplink BER for each UE is 0.061, 0.022, 0.093, 0.086. High BER at the first a few frames when the experiment has just started (expected behavior to stabilize).
Test 2: using 30 BS radios (different radios than Test 1) and 4 UE radios, soft demodulation with LDPC error-correction coding. Overall uplink BER for each UE is 0.00058, 0.00048, 0.00049, 0.00049. BER for most frames is 0 except for a few beginning frames. We see different levels of EVM SNR compared to Test 1 because we used a different set of BS radios. Note, using LDPC does not affect the EVM SNR measurements.