RENEW Project Documentation

Version 1.0

Reconfigurable Ecosystem for Next-generation End-to-end Wireless

Manual: MMIMO_RECEIVER.py

This script is particularly useful for plotting the offline massive MIMO data collected with the Sounder. The output of the Sounder is an HDF5 file with metadata and TX/RX IQ samples. This script takes the HDF5 file as input and analyzes it. If the uplink data is transmitted, the script shall show the RX constellation. On the shell output, it also shows the number of good and bad frames.

Although this script is written to analyze up to two clients, the user can easily expand it to more clients. Currently only the one-cell system, i.e. one base station, is supported. The number of BS Iris modules is only limited by the base station physical setup. This script is for analyzing datasets collected when both BS and clients run at the same time by using TDD frame schedules.

Note: The script locks the time offset when acquiring a good pilot and then applies that time offset for all the rest of the frames from that point on.

Usage format:

python3 MMIMO_RECEIVER.py –file=<hdf5_file_path_filename> –option(s)

Available options: Users can use “python3 MMIMO_RECEIVER.py –help” in the terminal to get a list of short option descriptions.

Option                               Description Default Available Range
–file=<hdf5_file_path_filename> This option must be included when issuing the command. NA User-specified HDF5 file.
–mode=<MODE_OPTION> It specifies the analyzing mode. Three modes are available. AWGN AWGN, REPLAY, OTA
1. AWGN: This is a simulation mode. It takes the time domain TX samples in the HDF5 file and passes them through the AWGN channel.
2. REPLAY: This mode reads the RX IQ samples in the HDF5 file and then runs the massive MIMO receiver on the collected data.
3. OTA: Realtime over-the-air mode. The script shall continuously read the RX buffer as clients are transmitting. This mode is currently not supported.
–bfScheme=<BF_SCHEME> Specify the type of beamforming scheme. Two types are available: zero forcing (ZF) and minimum mean-square error (MMSE). ZF ZF, MMSE
–cfoCorr Specify whether to apply the carrier frequency offset or not. Disabled Use this option to enable it.
–sfoCorr Specify whether to apply the sample frequency offset or not. Disabled Use this option to enable it.
–phaseCorr Specify whether to apply phase correction or not. Enabled Since there is no way to disable it in the command, this option is always enabled.
–fftOfset= Specify the FFT offset which is the number of CP samples for FFT. 6
–numClPlot= Specify the number of clients to plot. 2 [1, 2] Note: If specifying 0, it will default to 1.
–frame= Specify the range of frames to analyze. The default means [0, 100) frames. 0:100 [0, the total number of frames collected]
Examples: 5:200 means [5, 200) and 5:end means [5, the last frame].

Usage examples:

Please see the usage examples in the Sounder experiment.

Last updated on 30 Jun 2020 / Published on 1 Jan 0001