Matlab RENEW Design Flow
RENEW offers a Matlab-based development flow for physical-layer and signal processing analysis. This framework allows users to generate various types of signals on Matlab, manipulate, write it to one or multiple Iris boards (SDR hardware), trigger an over-the-air transmission, and then receive it on another board. After the reception, the user may analyze and employ channel and carrier offset estimation, and plot and visualize the received samples. In this section, we provide the following:
- A tutorial on some of the basic functionalities of the Matlab-based framework to transmit and recieve a simple pilot waveform.
- A more advanced tutorial on various functionalities of the Matlab-based framework when the boards are separated and one of the boards need to detect the start of the transmission frame over the air.
- A tutorial on various functionalities of the Matlab-based framework when the boards are chained together.
- An object-oriented (O-O) driver in Pyhton that allows the communication between Matlab and the SDR framework the Iris boards are configured with.
- A driver in O-O Matlab that enables object oriented Matlab scripts, such as our tutorials. This way Matlab can communicate easily with the python driver and use an O-O abstraction of the Iris boards.
Matlab Design Logic
Before looking into individual files and tutorials, it is good to have a big-picture understanding of the design flow. Iris nodes can be set up and configured directly through a framework called SoapySDR. This framework offers handles to its functions in either C++ or Python. Therefore, to use Matlab on Iris nodes we need a layer facilitating the communication between a Matlab experiment script and the hardware. We went with Python and gathered various hardware configuration and operation functions in a single file. This is what we call the Python Driver.
This driver follows a standard object-oriented logic. Instances of Iris nodes are created and configured via various methods/functions. To accommodate for maximum flexibility and ease-of-use we intersected another layer between the experiment scripts and the Python driver. This way, creating and handling Python objects and calling their methods is done in a different collection of Matlab functions we call Matlab Driver. Thus, Matlab experiment scripts remain clean of anything besides the familiar Matlab function calling format and communication with Python objects is done separately.
We provide the code to both drivers and the user is welcome to extend their functionalities as needed. The logic of this design is shown in the figure below.