Driver in Python
This piece of software serves as an intermediate between Matlab and the Iris nodes. It has the same functionalities described in the Python Basic Tutorial with the only difference being the repackaging of these functionalities in a class -properties - methods software scheme. Further explanations on each function are provided in the Matlab Driver where we comment on these functions' Matlab equivalents.
Click here for the complete code.
In writing this driver we made the following assumptions:
Transmission and reception follow a TDD pattern. This is set by defining a TDD schedule on the nodes used in the experiment. This schedule describes a slotted frame and defines the action in each slot. These actions, for now, are ‘P’, i.e., transmit a “pilot”, or better, transmit what is on the FPGA ram, ‘R’, read, and ‘G’ guard band. Further details on TDD framing may be found in Python Basic Tutorial.
The transmission of data is done in bursts through the ram memory on each node. Data to be transmitted is first burnt on the ram and is transmitted at every ‘P’ pilot slot in accordance with the predefined TDD schedule.
Chained and unchained modes
It is assumed that the boards may be chained and hence share control information directly without wireless transmission, or not. In the first case, a trigger signal initiated by the node assumed to be the base station will signal the start of the frame. In the second case, at each pilot slot of the frame, the base station will send a beacon sequence known to and pre-installed on the UE. The UE will correlate the received signal with the local replica and when this correlation successfully passes a threshold, the UE assumes the frame has started and will read or transmit data according to the predefined TDD schedule.