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.
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.
|–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].|
Please see the usage examples in the Sounder experiment.